![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
Shape function for trilinear hexahedron. More...
Public Member Functions | |
LinearHexMap (const CartVect *corner_coords) | |
virtual CartVect | center_xi () const |
Return \(\vec \xi\) corresponding to logical center of element. | |
virtual CartVect | evaluate (const CartVect &xi) const |
Evaluate mapping function (calculate \(\vec x = F($\vec \xi)\) ) | |
virtual Matrix3 | jacobian (const CartVect &xi) const |
Evaluate Jacobian of mapping function. | |
Private Attributes | |
const CartVect * | corners |
Static Private Attributes | |
static const double | corner_xi [8][3] |
Shape function for trilinear hexahedron.
Definition at line 1459 of file GeomUtil.cpp.
moab::GeomUtil::LinearHexMap::LinearHexMap | ( | const CartVect * | corner_coords | ) | [inline] |
Definition at line 1462 of file GeomUtil.cpp.
: corners( corner_coords ) {}
CartVect moab::GeomUtil::LinearHexMap::center_xi | ( | ) | const [virtual] |
Return \(\vec \xi\) corresponding to logical center of element.
Implements moab::GeomUtil::VolMap.
Definition at line 1474 of file GeomUtil.cpp.
{
return CartVect( 0.0 );
}
CartVect moab::GeomUtil::LinearHexMap::evaluate | ( | const CartVect & | xi | ) | const [virtual] |
Evaluate mapping function (calculate \(\vec x = F($\vec \xi)\) )
Implements moab::GeomUtil::VolMap.
Definition at line 1479 of file GeomUtil.cpp.
References corner_xi, and corners.
{
CartVect x( 0.0 );
for( unsigned i = 0; i < 8; ++i )
{
const double N_i =
( 1 + xi[0] * corner_xi[i][0] ) * ( 1 + xi[1] * corner_xi[i][1] ) * ( 1 + xi[2] * corner_xi[i][2] );
x += N_i * corners[i];
}
x *= 0.125;
return x;
}
Matrix3 moab::GeomUtil::LinearHexMap::jacobian | ( | const CartVect & | xi | ) | const [virtual] |
Evaluate Jacobian of mapping function.
Implements moab::GeomUtil::VolMap.
Definition at line 1492 of file GeomUtil.cpp.
References corner_xi, and corners.
{
Matrix3 J( 0.0 );
for( unsigned i = 0; i < 8; ++i )
{
const double xi_p = 1 + xi[0] * corner_xi[i][0];
const double eta_p = 1 + xi[1] * corner_xi[i][1];
const double zeta_p = 1 + xi[2] * corner_xi[i][2];
const double dNi_dxi = corner_xi[i][0] * eta_p * zeta_p;
const double dNi_deta = corner_xi[i][1] * xi_p * zeta_p;
const double dNi_dzeta = corner_xi[i][2] * xi_p * eta_p;
J( 0, 0 ) += dNi_dxi * corners[i][0];
J( 1, 0 ) += dNi_dxi * corners[i][1];
J( 2, 0 ) += dNi_dxi * corners[i][2];
J( 0, 1 ) += dNi_deta * corners[i][0];
J( 1, 1 ) += dNi_deta * corners[i][1];
J( 2, 1 ) += dNi_deta * corners[i][2];
J( 0, 2 ) += dNi_dzeta * corners[i][0];
J( 1, 2 ) += dNi_dzeta * corners[i][1];
J( 2, 2 ) += dNi_dzeta * corners[i][2];
}
return J *= 0.125;
}
const double moab::GeomUtil::LinearHexMap::corner_xi [static, private] |
{ { -1, -1, -1 }, { 1, -1, -1 }, { 1, 1, -1 }, { -1, 1, -1 },
{ -1, -1, 1 }, { 1, -1, 1 }, { 1, 1, 1 }, { -1, 1, 1 } }
Definition at line 1469 of file GeomUtil.cpp.
Referenced by evaluate(), and jacobian().
const CartVect* moab::GeomUtil::LinearHexMap::corners [private] |
Definition at line 1468 of file GeomUtil.cpp.
Referenced by evaluate(), and jacobian().