MOAB: Mesh Oriented datABase  (version 5.3.1)
moab::ElemUtil::LinearHexMap Class Reference

Shape function for trilinear hexahedron. More...

+ Inheritance diagram for moab::ElemUtil::LinearHexMap:
+ Collaboration diagram for moab::ElemUtil::LinearHexMap:

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 double evaluate_scalar_field (const CartVect &xi, const double *f_vals) const
virtual Matrix3 jacobian (const CartVect &xi) const
 Evaluate Jacobian of mapping function.

Private Attributes

const CartVectcorners

Static Private Attributes

static const double corner_xi [8][3]

Detailed Description

Shape function for trilinear hexahedron.

Definition at line 48 of file ElemUtil.cpp.


Constructor & Destructor Documentation

moab::ElemUtil::LinearHexMap::LinearHexMap ( const CartVect corner_coords) [inline]

Definition at line 51 of file ElemUtil.cpp.

: corners( corner_coords ) {}

Member Function Documentation

Return \(\vec \xi\) corresponding to logical center of element.

Implements moab::ElemUtil::VolMap.

Definition at line 64 of file ElemUtil.cpp.

    {
        return CartVect( 0.0 );
    }
CartVect moab::ElemUtil::LinearHexMap::evaluate ( const CartVect xi) const [virtual]

Evaluate mapping function (calculate \(\vec x = F($\vec \xi)\) )

Implements moab::ElemUtil::VolMap.

Definition at line 69 of file ElemUtil.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;
    }
double moab::ElemUtil::LinearHexMap::evaluate_scalar_field ( const CartVect xi,
const double *  f_vals 
) const [virtual]

Definition at line 82 of file ElemUtil.cpp.

References corner_xi.

Referenced by moab::ElemUtil::integrate_trilinear_hex().

    {
        double f( 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] );
            f += N_i * f_vals[i];
        }
        f *= 0.125;
        return f;
    }
Matrix3 moab::ElemUtil::LinearHexMap::jacobian ( const CartVect xi) const [virtual]

Evaluate Jacobian of mapping function.

Implements moab::ElemUtil::VolMap.

Definition at line 95 of file ElemUtil.cpp.

References corner_xi, and corners.

Referenced by moab::ElemUtil::integrate_trilinear_hex().

    {
        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;
    }

Member Data Documentation

const double moab::ElemUtil::LinearHexMap::corner_xi [static, private]
Initial value:
 { { -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 59 of file ElemUtil.cpp.

Referenced by evaluate(), evaluate_scalar_field(), and jacobian().

Definition at line 58 of file ElemUtil.cpp.

Referenced by evaluate(), and jacobian().

List of all members.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines