28 LOG_SCOPE(
"compute_face_map()",
"FEXYZMap");
31 const unsigned int n_qp = cast_int<unsigned int>(qw.size());
40 this->
xyz.resize(n_qp);
47 this->
JxW.resize(n_qp);
52 for (
unsigned int p=0; p<n_qp; p++)
54 this->
tangents[p].resize(LIBMESH_DIM-1);
61 for (
unsigned int i=0,
62 n_psi_map = cast_int<unsigned int>(this->
psi_map.size());
65 const Point & side_point =
side->point(i);
67 for (
unsigned int p=0; p<n_qp; p++)
69 this->
xyz[p].add_scaled (side_point, this->
psi_map[i][p]);
76 for (
unsigned int p=0; p<n_qp; p++)
82 #if LIBMESH_DIM == 3 // Only good in 3D space 96 libmesh_assert_not_equal_to (denominator, 0);
101 for (
unsigned int p=0; p<n_qp; p++)
106 libmesh_assert_greater (the_jac, 0.);
108 this->
JxW[p] = the_jac*qw[p];
118 this->
xyz.resize(n_qp);
128 this->
JxW.resize(n_qp);
132 for (
unsigned int p=0; p<n_qp; p++)
134 this->
tangents[p].resize(LIBMESH_DIM-1);
144 for (
unsigned int i=0,
145 n_psi_map = cast_int<unsigned int>(this->
psi_map.size());
148 const Point & side_point =
side->point(i);
150 for (
unsigned int p=0; p<n_qp; p++)
152 this->
xyz[p].add_scaled (side_point, this->
psi_map[i][p]);
162 for (
unsigned int p=0; p<n_qp; p++)
180 const Real G = this->dxyzdeta_map[p].norm_sq();
182 const Real numerator = E*N -2.*F*M + G*L;
183 const Real denominator = E*G - F*F;
184 libmesh_assert_not_equal_to (denominator, 0.);
185 this->
curvatures[p] = 0.5*numerator/denominator;
190 for (
unsigned int p=0; p<n_qp; p++)
200 const Real g21 = g12;
207 const Real the_jac = std::sqrt(g11*g22 - g12*g21);
209 libmesh_assert_greater (the_jac, 0.);
211 this->
JxW[p] = the_jac*qw[p];
217 libmesh_error_msg(
"Invalid dim = " << dim);
Real dzdeta_map(const unsigned int p) const
std::vector< std::vector< Real > > dpsideta_map
std::vector< std::vector< Real > > psi_map
std::vector< std::vector< Real > > d2psideta2_map
Real dxdeta_map(const unsigned int p) const
Real dzdxi_map(const unsigned int p) const
The base class for all geometric element types.
std::vector< std::vector< Real > > d2psidxideta_map
std::vector< RealGradient > d2xyzdxideta_map
std::vector< RealGradient > dxyzdxi_map
TypeVector< T > unit() const
std::vector< RealGradient > d2xyzdeta2_map
std::vector< RealGradient > d2xyzdxi2_map
TypeVector< typename CompareTypes< T, T2 >::supertype > cross(const TypeVector< T2 > &v) const
std::vector< Real > curvatures
std::vector< std::vector< Real > > d2psidxi2_map
virtual void compute_face_map(int dim, const std::vector< Real > &qw, const Elem *side) override
std::vector< Point > normals
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real dydeta_map(const unsigned int p) const
std::vector< std::vector< Real > > dpsidxi_map
std::vector< std::vector< Point > > tangents
std::vector< RealGradient > dxyzdeta_map
Real dxdxi_map(const unsigned int p) const
Real dydxi_map(const unsigned int p) const
A geometric point in (x,y,z) space.