KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Typedefs | Functions
Kratos::CompressibleNavierStokesExplicitInternal Namespace Reference

Typedefs

template<unsigned int TDim, unsigned int TNumNodes>
using ElementDataStruct = typename CompressibleNavierStokesExplicit< TDim, TNumNodes >::ElementDataStruct
 

Functions

constexpr bool IsSimplex (const unsigned int dimensions, const unsigned int nnodes)
 
template<unsigned int TDim, unsigned int TNumNodes>
static std::enable_if< IsSimplex(TDim, TNumNodes), void >::type ComputeGeometryData (const Geometry< Node > &rGeometry, ElementDataStruct< TDim, TNumNodes > &rData)
 
template<unsigned int TDim, unsigned int TNumNodes>
static std::enable_if<!IsSimplex(TDim, TNumNodes), void >::type ComputeGeometryData (const Geometry< Node > &rGeometry, ElementDataStruct< TDim, TNumNodes > &rData)
 

Detailed Description

This namespace is used to implement the compile-time choice of:

  1. Shape function calculator
  2. Element size calculator

[1] This is necessary because simplex geometries' shape functions are known at compile-time whereas non-simplex's ones are not (because they depend on the actual shape of the element).

[2] This is useful because GradientsElementSize is only implemented for simplex types.

This problem is solved using SFINAE

Typedef Documentation

◆ ElementDataStruct

template<unsigned int TDim, unsigned int TNumNodes>
using Kratos::CompressibleNavierStokesExplicitInternal::ElementDataStruct = typedef typename CompressibleNavierStokesExplicit<TDim, TNumNodes>::ElementDataStruct

Function Documentation

◆ ComputeGeometryData() [1/2]

template<unsigned int TDim, unsigned int TNumNodes>
static std::enable_if<IsSimplex(TDim, TNumNodes), void>::type Kratos::CompressibleNavierStokesExplicitInternal::ComputeGeometryData ( const Geometry< Node > &  rGeometry,
ElementDataStruct< TDim, TNumNodes > &  rData 
)
static

◆ ComputeGeometryData() [2/2]

template<unsigned int TDim, unsigned int TNumNodes>
static std::enable_if<!IsSimplex(TDim, TNumNodes), void>::type Kratos::CompressibleNavierStokesExplicitInternal::ComputeGeometryData ( const Geometry< Node > &  rGeometry,
ElementDataStruct< TDim, TNumNodes > &  rData 
)
static

Specialization for geometries with non-uniform jacobian (non-simplex) Shape functions cannot be obtained here. They will need to be calculated during integration at each gauss point.

◆ IsSimplex()

constexpr bool Kratos::CompressibleNavierStokesExplicitInternal::IsSimplex ( const unsigned int  dimensions,
const unsigned int  nnodes 
)
constexpr