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 | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
sierra::nalu::Hex27SCS Class Reference

#include <Hex27CVFEM.h>

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

Public Member Functions

 Hex27SCS ()
 
virtual ~Hex27SCS ()
 
void shape_fcn (SharedMemView< DoubleType ** > &shpfc)
 
void shifted_shape_fcn (SharedMemView< DoubleType ** > &shpfc)
 
void grad_op (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv)
 
void shifted_grad_op (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType *** > &gradop, SharedMemView< DoubleType *** > &deriv)
 
void determinant (SharedMemView< DoubleType ** > &coords, SharedMemView< DoubleType ** > &areav)
 
void gij (SharedMemView< DoubleType ** > coords, SharedMemView< DoubleType *** > gupper, SharedMemView< DoubleType *** > glower, SharedMemView< DoubleType *** > deriv)
 
void determinant (const int nelem, const double *coords, double *areav, double *error)
 
void grad_op (const int nelem, const double *coords, double *gradop, double *deriv, double *det_j, double *error)
 
void shifted_grad_op (const int nelem, const double *coords, double *gradop, double *deriv, double *det_j, double *error)
 
void face_grad_op (const int nelem, const int face_ordinal, const double *coords, double *gradop, double *det_j, double *error)
 
void gij (const double *coords, double *gupperij, double *glowerij, double *deriv)
 
void general_face_grad_op (const int face_ordinal, const double *isoParCoord, const double *coords, double *gradop, double *det_j, double *error)
 
void sidePcoords_to_elemPcoords (const int &side_ordinal, const int &npoints, const double *side_pcoords, double *elem_pcoords)
 
const int * adjacentNodes ()
 
const int * ipNodeMap (int ordinal=0)
 
int opposingNodes (const int ordinal, const int node)
 
int opposingFace (const int ordinal, const int node)
 
const int * side_node_ordinals (int sideOrdinal) final
 
const InterpWeightTypeshape_function_values ()
 
const GradWeightTypeshape_function_derivatives ()
 
template<typename GradViewType , typename CoordViewType , typename OutputViewType >
void weighted_area_vectors (GradViewType referenceGradWeights, CoordViewType coords, OutputViewType areav)
 
- 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_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 * > volume)
 
virtual void nodal_grad_op (const int nelem, double *deriv, 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 void general_shape_fcn (const int numIp, const double *isoParCoord, double *shpfc)
 
virtual void general_normal (const double *isoParCoord, const double *coords, double *normal)
 
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)
 

Protected Attributes

std::vector< ContourDataipInfo_
 
- 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_
 

Private Types

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

Private Member Functions

void set_interior_info ()
 
void set_boundary_info ()
 
template<Jacobian::Direction dir>
void area_vector (const double *POINTER_RESTRICT elemNodalCoords, double *POINTER_RESTRICT shapeDeriv, double *POINTER_RESTRICT areaVector) const
 
void gradient (const double *POINTER_RESTRICT elemNodalCoords, const double *POINTER_RESTRICT shapeDeriv, double *POINTER_RESTRICT grad, double *POINTER_RESTRICT det_j) const
 
template<int direction, typename GradViewType , typename CoordViewType , typename OutputViewType >
void area_vector (int ip, GradViewType referenceGradWeights, CoordViewType coords, OutputViewType areav)
 

Private Attributes

InterpWeightType interpWeights_
 
GradWeightType referenceGradWeights_
 
InterpWeightType shiftedInterpWeights_
 
GradWeightType shiftedReferenceGradWeights_
 
int ipsPerFace_
 

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)
 

Member Typedef Documentation

Constructor & Destructor Documentation

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

Member Function Documentation

const int * sierra::nalu::Hex27SCS::adjacentNodes ( )
virtual
template<Jacobian::Direction direction>
void sierra::nalu::Hex27SCS::area_vector ( const double *POINTER_RESTRICT  elemNodalCoords,
double *POINTER_RESTRICT  shapeDeriv,
double *POINTER_RESTRICT  areaVector 
) const
private
template<int direction, typename GradViewType , typename CoordViewType , typename OutputViewType >
void sierra::nalu::Hex27SCS::area_vector ( int  ip,
GradViewType  referenceGradWeights,
CoordViewType  coords,
OutputViewType  areav 
)
inlineprivate
void sierra::nalu::Hex27SCS::determinant ( SharedMemView< DoubleType ** > &  coords,
SharedMemView< DoubleType ** > &  areav 
)
virtual
void sierra::nalu::Hex27SCS::determinant ( const int  nelem,
const double *  coords,
double *  areav,
double *  error 
)
virtual
void sierra::nalu::Hex27SCS::face_grad_op ( const int  nelem,
const int  face_ordinal,
const double *  coords,
double *  gradop,
double *  det_j,
double *  error 
)
virtual
void sierra::nalu::Hex27SCS::general_face_grad_op ( const int  face_ordinal,
const double *  isoParCoord,
const double *  coords,
double *  gradop,
double *  det_j,
double *  error 
)
virtual
void sierra::nalu::Hex27SCS::gij ( SharedMemView< DoubleType ** >  coords,
SharedMemView< DoubleType *** >  gupper,
SharedMemView< DoubleType *** >  glower,
SharedMemView< DoubleType *** >  deriv 
)
virtual

Reimplemented from sierra::nalu::MasterElement.

References referenceGradWeights_.

void sierra::nalu::Hex27SCS::gij ( const double *  coords,
double *  gupperij,
double *  glowerij,
double *  deriv 
)
virtual
void sierra::nalu::Hex27SCS::grad_op ( SharedMemView< DoubleType ** > &  coords,
SharedMemView< DoubleType *** > &  gradop,
SharedMemView< DoubleType *** > &  deriv 
)
virtual
void sierra::nalu::Hex27SCS::grad_op ( const int  nelem,
const double *  coords,
double *  gradop,
double *  deriv,
double *  det_j,
double *  error 
)
virtual
void sierra::nalu::Hex27SCS::gradient ( const double *POINTER_RESTRICT  elemNodalCoords,
const double *POINTER_RESTRICT  shapeDeriv,
double *POINTER_RESTRICT  grad,
double *POINTER_RESTRICT  det_j 
) const
private
const int * sierra::nalu::Hex27SCS::ipNodeMap ( int  ordinal = 0)
virtual
int sierra::nalu::Hex27SCS::opposingFace ( const int  ordinal,
const int  node 
)
virtual
int sierra::nalu::Hex27SCS::opposingNodes ( const int  ordinal,
const int  node 
)
virtual
void sierra::nalu::Hex27SCS::set_boundary_info ( )
private
void sierra::nalu::Hex27SCS::set_interior_info ( )
private
void sierra::nalu::Hex27SCS::shape_fcn ( SharedMemView< DoubleType ** > &  shpfc)
virtual
const GradWeightType& sierra::nalu::Hex27SCS::shape_function_derivatives ( )
inline
const InterpWeightType& sierra::nalu::Hex27SCS::shape_function_values ( )
inline
void sierra::nalu::Hex27SCS::shifted_grad_op ( SharedMemView< DoubleType ** > &  coords,
SharedMemView< DoubleType *** > &  gradop,
SharedMemView< DoubleType *** > &  deriv 
)
virtual
void sierra::nalu::Hex27SCS::shifted_grad_op ( const int  nelem,
const double *  coords,
double *  gradop,
double *  deriv,
double *  det_j,
double *  error 
)
virtual
void sierra::nalu::Hex27SCS::shifted_shape_fcn ( SharedMemView< DoubleType ** > &  shpfc)
virtual
const int * sierra::nalu::Hex27SCS::side_node_ordinals ( int  sideOrdinal)
finalvirtual
void sierra::nalu::Hex27SCS::sidePcoords_to_elemPcoords ( const int &  side_ordinal,
const int &  npoints,
const double *  side_pcoords,
double *  elem_pcoords 
)
virtual

Reimplemented from sierra::nalu::MasterElement.

template<typename GradViewType , typename CoordViewType , typename OutputViewType >
void sierra::nalu::Hex27SCS::weighted_area_vectors ( GradViewType  referenceGradWeights,
CoordViewType  coords,
OutputViewType  areav 
)
inline

Member Data Documentation

InterpWeightType sierra::nalu::Hex27SCS::interpWeights_
private

Referenced by Hex27SCS(), and shape_fcn().

std::vector<ContourData> sierra::nalu::Hex27SCS::ipInfo_
protected

Referenced by determinant(), and set_interior_info().

int sierra::nalu::Hex27SCS::ipsPerFace_
private
GradWeightType sierra::nalu::Hex27SCS::referenceGradWeights_
private

Referenced by determinant(), gij(), grad_op(), and Hex27SCS().

InterpWeightType sierra::nalu::Hex27SCS::shiftedInterpWeights_
private

Referenced by shifted_shape_fcn().

GradWeightType sierra::nalu::Hex27SCS::shiftedReferenceGradWeights_
private

Referenced by Hex27SCS(), and shifted_grad_op().


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