Nalu
Nalu: a generalized unstructured massively parallel low Mach flow code designed to support a variety of energy applications of interest (most notably Wind ECP) built on the Sierra Toolkit and Trilinos solver Tpetra/Epetra stack. The open source BSD, clause 3 license model has been chosen for the code base. See LICENSE for more information. http://NaluCFD.org
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
sierra::nalu::Hex27SCV Class Reference

#include <Hex27CVFEM.h>

Inheritance diagram for sierra::nalu::Hex27SCV:
sierra::nalu::HexahedralP2Element sierra::nalu::MasterElement

Public Member Functions

 Hex27SCV ()
 
virtual ~Hex27SCV ()
 
const int * ipNodeMap (int ordinal=0)
 
void shape_fcn (SharedMemView< DoubleType ** > &shpfc) final
 
void shifted_shape_fcn (SharedMemView< DoubleType ** > &shpfc) final
 
void determinant (SharedMemView< DoubleType ** > coords, SharedMemView< DoubleType * > volume) final
 
void determinant (const int nelem, const double *coords, double *areav, double *error)
 
const InterpWeightTypeshape_function_values ()
 
const GradWeightTypeshape_function_derivatives ()
 
template<typename GradViewType , typename CoordViewType , typename OutputViewType >
void weighted_volumes (GradViewType referenceGradWeights, CoordViewType coords, OutputViewType volume)
 
- Public Member Functions inherited from sierra::nalu::HexahedralP2Element
 HexahedralP2Element ()
 
virtual ~HexahedralP2Element ()
 
void shape_fcn (double *shpfc)
 
void shifted_shape_fcn (double *shpfc)
 
template<typename ViewType >
ViewType copy_interpolation_weights_to_view (const std::vector< double > &interps)
 
template<typename ViewType >
ViewType copy_deriv_weights_to_view (const std::vector< double > &derivs)
 
template<typename ViewType >
ViewType copy_interpolation_weights_to_view ()
 
template<typename ViewType >
ViewType copy_deriv_weights_to_view ()
 
- Public Member Functions inherited from sierra::nalu::MasterElement
 MasterElement ()
 
virtual ~MasterElement ()
 
virtual void grad_op (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv)
 
virtual void shifted_grad_op (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv)
 
virtual void grad_op_fem (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv, SharedMemView< DoubleType * > &det_j)
 
virtual void shifted_grad_op_fem (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv, SharedMemView< DoubleType * > &det_j)
 
virtual void determinant (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType ** > &areav)
 
virtual void gij (SharedMemView< DoubleType ** > coords, SharedMemView< DoubleType *** > gupper, SharedMemView< DoubleType *** > glower, SharedMemView< DoubleType *** > deriv)
 
virtual void grad_op (const int nelem, const double *coords, double *gradop, double *deriv, double *det_j, double *error)
 
virtual void shifted_grad_op (const int nelem, const double *coords, double *gradop, double *deriv, double *det_j, double *error)
 
virtual void gij (const double *coords, double *gupperij, double *glowerij, double *deriv)
 
virtual void nodal_grad_op (const int nelem, double *deriv, double *error)
 
virtual void face_grad_op (const int nelem, const int face_ordinal, const double *coords, double *gradop, double *det_j, double *error)
 
virtual void shifted_face_grad_op (const int nelem, const int face_ordinal, const double *coords, double *gradop, double *det_j, double *error)
 
virtual const int * adjacentNodes ()
 
virtual int opposingNodes (const int ordinal, const int node)
 
virtual int opposingFace (const int ordinal, const int node)
 
virtual void general_shape_fcn (const int numIp, const double *isoParCoord, double *shpfc)
 
virtual void general_face_grad_op (const int face_ordinal, const double *isoParCoord, const double *coords, double *gradop, double *det_j, double *error)
 
virtual void general_normal (const double *isoParCoord, const double *coords, double *normal)
 
virtual void sidePcoords_to_elemPcoords (const int &side_ordinal, const int &npoints, const double *side_pcoords, double *elem_pcoords)
 
virtual const int * side_node_ordinals (int sideOrdinal)
 
double isoparametric_mapping (const double b, const double a, const double xi) const
 
bool within_tolerance (const double &val, const double &tol)
 
double vector_norm_sq (const double *vect, int len)
 

Private Types

using InterpWeightType = Kokkos::View< DoubleType[AlgTraits::numScvIp_][AlgTraits::nodesPerElement_]>
 
using GradWeightType = Kokkos::View< DoubleType[AlgTraits::numScvIp_][AlgTraits::nodesPerElement_][AlgTraits::nDim_]>
 

Private Member Functions

void set_interior_info ()
 
double jacobian_determinant (const double *POINTER_RESTRICT elemNodalCoords, const double *POINTER_RESTRICT shapeDerivs) const
 

Private Attributes

InterpWeightType interpWeights_
 
GradWeightType referenceGradWeights_
 
InterpWeightType shiftedInterpWeights_
 
GradWeightType shiftedReferenceGradWeights_
 
std::vector< double > ipWeight_
 

Additional Inherited Members

- Public Types inherited from sierra::nalu::HexahedralP2Element
using AlgTraits = AlgTraitsHex27
 
- Public Attributes inherited from sierra::nalu::MasterElement
int nDim_
 
int nodesPerElement_
 
int numIntPoints_
 
double scaleToStandardIsoFac_
 
std::vector< int > lrscv_
 
std::vector< int > ipNodeMap_
 
std::vector< int > oppNode_
 
std::vector< int > oppFace_
 
std::vector< double > intgLoc_
 
std::vector< double > intgLocShift_
 
std::vector< double > intgExpFace_
 
std::vector< double > intgExpFaceShift_
 
std::vector< double > nodeLoc_
 
std::vector< int > sideNodeOrdinals_
 
std::vector< int > sideOffset_
 
std::vector< double > weights_
 
- Protected Member Functions inherited from sierra::nalu::HexahedralP2Element
int tensor_product_node_map (int i, int j, int k) const
 
double gauss_point_location (int nodeOrdinal, int gaussPointOrdinal) const
 
double shifted_gauss_point_location (int nodeOrdinal, int gaussPointOrdinal) const
 
double tensor_product_weight (int s1Node, int s2Node, int s3Node, int s1Ip, int s2Ip, int s3Ip) const
 
double tensor_product_weight (int s1Node, int s2Node, int s1Ip, int s2Ip) const
 
virtual void eval_shape_functions_at_ips ()
 
virtual void eval_shape_functions_at_shifted_ips ()
 
virtual void eval_shape_derivs_at_ips ()
 
virtual void eval_shape_derivs_at_shifted_ips ()
 
void eval_shape_derivs_at_face_ips ()
 
void set_quadrature_rule ()
 
void GLLGLL_quadrature_weights ()
 
void hex27_shape_deriv (int npts, const double *par_coord, double *shape_fcn) const
 
double parametric_distance (const std::array< double, 3 > &x)
 
virtual void interpolatePoint (const int &nComp, const double *isoParCoord, const double *field, double *result)
 
virtual double isInElement (const double *elemNodalCoord, const double *pointCoord, double *isoParCoord)
 
- Protected Attributes inherited from sierra::nalu::HexahedralP2Element
const double scsDist_
 
const int nodes1D_
 
const int numQuad_
 
std::vector< double > gaussAbscissae1D_
 
std::vector< double > gaussAbscissae_
 
std::vector< double > gaussAbscissaeShift_
 
std::vector< double > gaussWeight_
 
std::vector< double > scsEndLoc_
 
std::vector< int > stkNodeMap_
 
std::vector< double > shapeFunctions_
 
std::vector< double > shapeFunctionsShift_
 
std::vector< double > shapeDerivs_
 
std::vector< double > shapeDerivsShift_
 
std::vector< double > expFaceShapeDerivs_
 

Member Typedef Documentation

Constructor & Destructor Documentation

sierra::nalu::Hex27SCV::Hex27SCV ( )
virtual sierra::nalu::Hex27SCV::~Hex27SCV ( )
inlinevirtual

Member Function Documentation

void sierra::nalu::Hex27SCV::determinant ( SharedMemView< DoubleType ** >  coords,
SharedMemView< DoubleType * >  volume 
)
finalvirtual
void sierra::nalu::Hex27SCV::determinant ( const int  nelem,
const double *  coords,
double *  areav,
double *  error 
)
virtual
const int * sierra::nalu::Hex27SCV::ipNodeMap ( int  ordinal = 0)
virtual
double sierra::nalu::Hex27SCV::jacobian_determinant ( const double *POINTER_RESTRICT  elemNodalCoords,
const double *POINTER_RESTRICT  shapeDerivs 
) const
private
void sierra::nalu::Hex27SCV::set_interior_info ( )
private
void sierra::nalu::Hex27SCV::shape_fcn ( SharedMemView< DoubleType ** > &  shpfc)
finalvirtual
const GradWeightType& sierra::nalu::Hex27SCV::shape_function_derivatives ( )
inline
const InterpWeightType& sierra::nalu::Hex27SCV::shape_function_values ( )
inline
void sierra::nalu::Hex27SCV::shifted_shape_fcn ( SharedMemView< DoubleType ** > &  shpfc)
finalvirtual
template<typename GradViewType , typename CoordViewType , typename OutputViewType >
void sierra::nalu::Hex27SCV::weighted_volumes ( GradViewType  referenceGradWeights,
CoordViewType  coords,
OutputViewType  volume 
)
inline

Member Data Documentation

InterpWeightType sierra::nalu::Hex27SCV::interpWeights_
private

Referenced by Hex27SCV(), and shape_fcn().

std::vector<double> sierra::nalu::Hex27SCV::ipWeight_
private

Referenced by determinant(), and set_interior_info().

GradWeightType sierra::nalu::Hex27SCV::referenceGradWeights_
private

Referenced by determinant(), and Hex27SCV().

InterpWeightType sierra::nalu::Hex27SCV::shiftedInterpWeights_
private

Referenced by Hex27SCV(), and shifted_shape_fcn().

GradWeightType sierra::nalu::Hex27SCV::shiftedReferenceGradWeights_
private

Referenced by Hex27SCV().


The documentation for this class was generated from the following files: