36 #ifndef NEKTAR_LIB_STDREGIONS_STANDARDEXPANSION_H 37 #define NEKTAR_LIB_STDREGIONS_STANDARDEXPANSION_H 43 #include <boost/core/ignore_unused.hpp> 68 class StdExpansion :
public std::enable_shared_from_this<StdExpansion>
99 return m_base.num_elements();
119 ASSERTL1(dir < m_base.num_elements(),
120 "dir is larger than number of bases");
145 for(i=0; i < m_base.num_elements(); ++i)
147 nqtot *= m_base[i]->GetNumPoints();
166 ASSERTL1(dir < m_base.num_elements(),
"dir is larger than m_numbases");
167 return(m_base[dir]->GetBasisType());
179 ASSERTL1(dir < m_base.num_elements(),
"dir is larger than m_numbases");
180 return(m_base[dir]->GetNumModes());
195 for(i = 0; i < m_base.num_elements(); ++i)
197 returnval = std::max(returnval, m_base[i]->GetNumModes());
217 ASSERTL1(dir < m_base.num_elements(),
"dir is larger than m_numbases");
218 return(m_base[dir]->GetPointsType());
230 ASSERTL1(dir < m_base.num_elements() || dir == 0,
231 "dir is larger than m_numbases");
232 return(m_base.num_elements() > 0 ? m_base[dir]->GetNumPoints() : 1);
244 return m_base[dir]->GetZ();
260 return v_GetNverts();
273 return v_GetNedges();
288 return v_GetEdgeNcoeffs(i);
294 return v_GetTotalEdgeIntNcoeffs();
309 return v_GetEdgeNumPoints(i);
315 return v_DetCartesianDirOfEdge(edge);
320 return v_DetEdgeBasisKey(i);
325 return v_DetFaceBasisKey(i, k);
340 return v_GetFaceNumPoints(i);
355 return v_GetFaceNcoeffs(i);
360 return v_GetFaceIntNcoeffs(i);
365 return v_GetTotalFaceIntNcoeffs();
380 return v_GetTraceNcoeffs(i);
386 return v_GetFacePointsKey(i, j);
391 return v_NumBndryCoeffs();
396 return v_NumDGBndryCoeffs();
414 return v_GetEdgeBasisType(i);
426 return v_GetNodalPointsKey();
439 return v_GetNfaces();
451 const size_t nBase = m_base.num_elements();
454 nBase == 2 ? GetNedges() :
455 nBase == 3 ? GetNfaces() : 0;
471 return v_DetShapeType();
476 return v_GetStdExp();
482 return v_GetLinStdExp();
488 return v_GetShapeDimension();
493 return v_IsBoundaryInteriorExpansion();
499 return v_IsNodalNonTensorialExp();
533 v_BwdTrans (inarray, outarray);
546 v_FwdTrans_BndConstrained(inarray,outarray);
581 return v_Integral(inarray);
599 v_FillMode(mode, outarray);
637 v_IProductWRTBase(inarray, outarray);
646 v_IProductWRTBase(base, inarray, outarray, coll_check);
655 v_IProductWRTDerivBase(dir,inarray, outarray);
663 v_IProductWRTDirectionalDerivBase(direction, inarray, outarray);
694 v_GetCoords(coords_1,coords_2,coords_3);
711 v_GetCoord(Lcoord, coord);
716 return m_stdMatrixManager[mkey];
721 return m_stdStaticCondMatrixManager[mkey];
726 return m_IndexMapManager[ikey];
731 return v_GetPhysNormals();
736 v_SetPhysNormals(normal);
743 v_NormVectorIProductWRTBase(Fx,outarray);
748 v_NormVectorIProductWRTBase(Fx,Fy,outarray);
753 v_NormVectorIProductWRTBase(Fx,Fy,Fz,outarray);
758 v_NormVectorIProductWRTBase(Fvec, outarray);
763 return v_GetLocStaticCondMatrix(mkey);
768 return v_DropLocStaticCondMatrix(mkey);
773 return v_GetForient(face);
778 return v_GetEorient(edge);
785 v_SetCoeffsToOrientation(coeffs, dir);
793 v_SetCoeffsToOrientation(dir,inarray,outarray);
798 return v_CalcNumberOfCoefficients(nummodes,modes_offset);
809 return v_GetCoordim();
814 v_GetBoundaryMap(outarray);
819 v_GetInteriorMap(outarray);
823 bool useCoeffPacking =
false)
825 return v_GetVertexMap(localVertexId,useCoeffPacking);
832 v_GetEdgeInteriorMap(eid,edgeOrient,maparray,signarray);
839 v_GetFaceNumModes(fid,faceOrient,numModes0,numModes1);
846 v_GetFaceInteriorMap(fid,faceOrient,maparray,signarray);
855 v_GetEdgeToElementMap(eid, edgeOrient, maparray, signarray,
P);
861 int nummodesA = -1,
int nummodesB = -1)
863 v_GetFaceToElementMap(fid,faceOrient,maparray,signarray,
864 nummodesA,nummodesB);
878 v_GetEdgePhysVals(edge,inarray,outarray);
882 const std::shared_ptr<StdExpansion> &EdgeExp,
886 v_GetEdgePhysVals(edge,EdgeExp,inarray,outarray);
891 v_GetTracePhysVals(edge,EdgeExp,inarray,outarray);
898 v_GetVertexPhysVals(vertex, inarray, outarray);
905 v_GetEdgeInterpVals(edge, inarray, outarray);
918 v_GetEdgeQFactors(edge, outarray);
923 const std::shared_ptr<StdExpansion> &FaceExp,
928 v_GetFacePhysVals(face, FaceExp, inarray, outarray, orient);
935 v_GetEdgePhysMap(edge, outarray);
942 v_GetFacePhysMap(face, outarray);
949 v_MultiplyByQuadratureMetric(inarray, outarray);
956 v_MultiplyByStdQuadratureMetric(inarray, outarray);
978 v_MassMatrixOp(inarray,outarray,mkey);
985 v_LaplacianMatrixOp(inarray,outarray,mkey);
992 v_ReduceOrderCoeffs(numMin,inarray,outarray);
998 v_SVVLaplacianFilter(array,mkey);
1006 v_ExponentialFilter(array, alpha, exponent, cutoff);
1014 v_LaplacianMatrixOp(k1,k2,inarray,outarray,mkey);
1022 v_WeakDerivMatrixOp(i,inarray,outarray,mkey);
1029 v_WeakDirectionalDerivMatrixOp(inarray,outarray,mkey);
1036 v_MassLevelCurvatureMatrixOp(inarray,outarray,mkey);
1042 bool addDiffusionTerm =
true)
1044 v_LinearAdvectionDiffusionReactionMatrixOp(inarray,outarray,mkey,addDiffusionTerm);
1057 v_HelmholtzMatrixOp(inarray,outarray,mkey);
1062 return v_GenMatrix(mkey);
1070 v_PhysDeriv (inarray, out_d0, out_d1, out_d2);
1077 v_PhysDeriv (dir, inarray, outarray);
1083 v_PhysDeriv_s(inarray,out_ds);
1089 v_PhysDeriv_n(inarray,out_dn);
1096 v_PhysDirectionalDeriv (inarray, direction, outarray);
1104 v_StdPhysDeriv(inarray, out_d0, out_d1, out_d2);
1111 v_StdPhysDeriv(dir,inarray,outarray);
1116 v_AddRobinMassMatrix(edgeid,primCoeffs,inoutmat);
1121 v_AddRobinEdgeContribution(edgeid, primCoeffs, coeffs);
1149 return v_PhysEvaluate(coords,physvals);
1176 return v_PhysEvaluate(I,physvals);
1187 v_LocCoordToLocCollapsed(xi,eta);
1200 STD_REGIONS_EXPORT virtual int v_CalcNumberOfCoefficients(
const std::vector<unsigned int> &nummodes,
int &modes_offset);
1267 return v_GetEdgeNormal(edge);
1272 v_ComputeEdgeNormal(edge);
1277 v_NegateEdgeNormal(edge);
1282 return v_EdgeNormalNegated(edge);
1287 v_ComputeFaceNormal(face);
1292 v_NegateFaceNormal(face);
1297 return v_FaceNormalNegated(face);
1302 v_ComputeVertexNormal(vertex);
1307 v_NegateVertexNormal(vertex);
1312 return v_VertexNormalNegated(vertex);
1317 return v_GetFaceNormal(face);
1322 return v_GetVertexNormal(vertex);
1327 return v_GetSurfaceNormal(
id);
1333 p.reserve(m_base.num_elements());
1334 for (
int i = 0; i < m_base.num_elements(); ++i)
1336 p.push_back(m_base[i]->GetPointsKey());
1344 return v_GetEdgeInverseBoundaryMap(eid);
1351 return v_GetFaceInverseBoundaryMap(fid,faceOrient,P1,P2);
1361 v_GetInverseBoundaryMaps(vmap,emap,fmap);
1367 return v_BuildInverseTransformationMatrix(
1368 m_transformationmatrix);
1397 bool standard =
true)
1399 v_GetSimplexEquiSpacedConnectivity(conn,standard);
1418 return std::dynamic_pointer_cast<T>( shared_from_this() );
1423 bool multiplybyweights =
true)
1425 v_IProductWRTBase_SumFac(inarray,outarray,multiplybyweights);
1438 return v_CreateStdMatrix(mkey);
1470 v_BwdTrans_SumFac(inarray,outarray);
1479 v_IProductWRTDerivBase_SumFac(dir,inarray,outarray);
1488 v_IProductWRTDirectionalDerivBase_SumFac(direction,
1512 v_LaplacianMatrixOp_MatFree(inarray,outarray,mkey);
1520 v_LaplacianMatrixOp_MatFree_Kernel(inarray, outarray, wsp);
1548 bool addDiffusionTerm =
true);
1554 v_HelmholtzMatrixOp_MatFree(inarray,outarray,mkey);
1616 v_GetStdExp(
void)
const;
1619 v_GetLinStdExp(
void)
const;
1653 boost::ignore_unused(base, inarray, outarray, coll_check);
1655 "StdExpansion::v_IProductWRTBase has no (and should have no) implementation");
1730 bool useCoeffPacking =
false);
1756 int nummodesA = -1,
int nummodesB = -1);
1780 const std::shared_ptr<StdExpansion> &FaceExp,
1813 v_IProductWRTDirectionalDerivBase_SumFac(
1862 bool addDiffusionTerm=
true);
1881 STD_REGIONS_EXPORT virtual const NormalVector & v_GetEdgeNormal(
const int edge)
const;
1895 STD_REGIONS_EXPORT virtual const NormalVector & v_GetVertexNormal(
const int vertex)
const;
1903 STD_REGIONS_EXPORT virtual const NormalVector & v_GetFaceNormal(
const int face)
const;
1905 v_GetSurfaceNormal(
const int id)
const;
1908 v_GetEdgeInverseBoundaryMap(
int eid);
1922 bool standard =
true);
1960 v_FwdTrans(inarray,outarray);
1966 #endif //STANDARDDEXPANSION_H const Array< OneD, const NekDouble > & GetPoints(const int dir) const
This function returns a pointer to the array containing the quadrature points in dir direction...
void NegateVertexNormal(const int vertex)
const NormalVector & GetVertexNormal(const int vertex) const
DNekMatSharedPtr GenMatrix(const StdMatrixKey &mkey)
int GetNumBases() const
This function returns the number of 1D bases used in the expansion.
int EvalBasisNumModesMax(void) const
This function returns the maximum number of expansion modes over all local directions.
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
const LibUtilities::BasisKey DetEdgeBasisKey(const int i) const
void GetFaceNumModes(const int fid, const Orientation faceOrient, int &numModes0, int &numModes1)
std::vector< PointsKey > PointsKeyVector
int GetElmtId()
Get the element id of this expansion when used in a list by returning value of m_elmt_id.
DNekMatSharedPtr CreateStdMatrix(const StdMatrixKey &mkey)
void FillMode(const int mode, Array< OneD, NekDouble > &outarray)
This function fills the array outarray with the mode-th mode of the expansion.
int GetNtrace() const
Returns the number of trace elements connected to this element.
void MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
static Array< OneD, NekDouble > NullNekDouble1DArray
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
const Array< OneD, const NekDouble > & GetPhysNormals(void)
void IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
IndexMapValuesSharedPtr GetIndexMap(const IndexMapKey &ikey)
void MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int NumBndryCoeffs(void) const
void PhysDirectionalDeriv(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &direction, Array< OneD, NekDouble > &outarray)
void GetEdgeInteriorMap(const int eid, const Orientation edgeOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray)
int GetBasisNumModes(const int dir) const
This function returns the number of expansion modes in the dir direction.
void GetFacePhysMap(const int face, Array< OneD, int > &outarray)
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
void MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
this function calculates the inner product of a given function f with the different modes of the expa...
NekDouble Integral(const Array< OneD, const NekDouble > &inarray)
This function integrates the specified function over the domain.
void SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_IndexMapManager
void LaplacianMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void DropLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
void NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
void IProductWRTDirectionalDerivBase(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
StdRegions::Orientation GetEorient(int edge)
int GetTotalFaceIntNcoeffs() const
void LocCoordToLocCollapsed(const Array< OneD, const NekDouble > &xi, Array< OneD, NekDouble > &eta)
Convert local cartesian coordinate xi into local collapsed coordinates eta.
void ComputeFaceNormal(const int face)
std::shared_ptr< DNekMat > DNekMatSharedPtr
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess > m_stdStaticCondMatrixManager
StdRegions::Orientation GetForient(int face)
int GetNverts() const
This function returns the number of vertices of the expansion domain.
std::shared_ptr< Basis > BasisSharedPtr
void GetEdgePhysMap(const int edge, Array< OneD, int > &outarray)
void GetEdgeQFactors(const int edge, Array< OneD, NekDouble > &outarray)
Extract the metric factors to compute the contravariant fluxes along edge edge and stores them into o...
DNekScalBlkMatSharedPtr GetLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
void ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
void PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &base, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int coll_check)
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
void GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2=NullNekDouble1DArray, Array< OneD, NekDouble > &coords_3=NullNekDouble1DArray)
this function returns the physical coordinates of the quadrature points of the expansion ...
void NormVectorIProductWRTBase(const Array< OneD, const Array< OneD, NekDouble > > &Fvec, Array< OneD, NekDouble > &outarray)
void IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true)
void SetPhysNormals(Array< OneD, const NekDouble > &normal)
int GetFaceNcoeffs(const int i) const
This function returns the number of expansion coefficients belonging to the i-th face.
const LibUtilities::PointsKey GetNodalPointsKey() const
This function returns the type of expansion Nodal point type if defined.
void NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, const Array< OneD, NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
void WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
Array< OneD, Array< OneD, NekDouble > > NormalVector
void MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
const NormalVector & GetFaceNormal(const int face) const
const LibUtilities::PointsKeyVector GetPointsKeys() const
LibUtilities::PointsKey GetFacePointsKey(const int i, const int j) const
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
bool IsBoundaryInteriorExpansion()
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
Array< OneD, unsigned int > GetEdgeInverseBoundaryMap(int eid)
The base class for all shapes.
NekDouble PhysEvaluate(const Array< OneD, DNekMatSharedPtr > &I, const Array< OneD, const NekDouble > &physvals)
This function evaluates the expansion at a single (arbitrary) point of the domain.
void ComputeVertexNormal(const int vertex)
int GetEdgeNcoeffs(const int i) const
This function returns the number of expansion coefficients belonging to the i-th edge.
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
void FwdTrans_BndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void StdPhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
const NormalVector & GetSurfaceNormal(const int id) const
void IProductWRTDirectionalDerivBase_SumFac(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetTraceNcoeffs(const int i) const
This function returns the number of expansion coefficients belonging to the i-th edge/face.
void GetFaceToElementMap(const int fid, const Orientation faceOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, int nummodesA=-1, int nummodesB=-1)
const LibUtilities::BasisSharedPtr & GetBasis(int dir) const
This function gets the shared point to basis in the dir direction.
std::shared_ptr< StdExpansion > GetLinStdExp(void) const
Array< OneD, unsigned int > GetFaceInverseBoundaryMap(int fid, StdRegions::Orientation faceOrient=eNoOrientation, int P1=-1, int P2=-1)
const Array< OneD, const LibUtilities::BasisSharedPtr > & GetBase() const
This function gets the shared point to basis.
void GetVertexPhysVals(const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray)
void StdPhysDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetFaceIntNcoeffs(const int i) const
void AddRobinEdgeContribution(const int edgeid, const Array< OneD, const NekDouble > &primCoeffs, Array< OneD, NekDouble > &coeffs)
int NumDGBndryCoeffs(void) const
void NegateFaceNormal(const int face)
void LaplacianMatrixOp(const int k1, const int k2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void GetEdgePhysVals(const int edge, const std::shared_ptr< StdExpansion > &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GetCoord(const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)
given the coordinates of a point of the element in the local collapsed coordinate system...
int GetFaceNumPoints(const int i) const
This function returns the number of quadrature points belonging to the i-th face. ...
void PhysDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetTotalEdgeIntNcoeffs() const
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
void SetElmtId(const int id)
Set the element id of this expansion when used in a list by returning value of m_elmt_id.
Defines a specification for a set of points.
void NegateEdgeNormal(const int edge)
int GetNedges() const
This function returns the number of edges of the expansion domain.
void GetInverseBoundaryMaps(Array< OneD, unsigned int > &vmap, Array< OneD, Array< OneD, unsigned int > > &emap, Array< OneD, Array< OneD, unsigned int > > &fmap)
void IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp)
NekDouble PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
This function evaluates the expansion at a single (arbitrary) point of the domain.
void GetFacePhysVals(const int face, const std::shared_ptr< StdExpansion > &FaceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=eNoOrientation)
int GetShapeDimension() const
void HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
int DetCartesianDirOfEdge(const int edge)
const NormalVector & GetEdgeNormal(const int edge) const
int GetEdgeNumPoints(const int i) const
This function returns the number of quadrature points belonging to the i-th edge. ...
void GetEdgePhysVals(const int edge, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Extract the physical values along edge edge from inarray into outarray following the local edge orien...
void LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
std::shared_ptr< StdExpansion > GetStdExp(void) const
bool EdgeNormalNegated(const int edge)
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
void ExponentialFilter(Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)
void AddRobinMassMatrix(const int edgeid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
void GetEdgeToElementMap(const int eid, const Orientation edgeOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, int P=-1)
#define STD_REGIONS_EXPORT
std::shared_ptr< T > as()
void NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, const Array< OneD, const NekDouble > &Fz, Array< OneD, NekDouble > &outarray)
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
int CalcNumberOfCoefficients(const std::vector< unsigned int > &nummodes, int &modes_offset)
void HelmholtzMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void GetTracePhysVals(const int edge, const std::shared_ptr< StdExpansion > &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
const LibUtilities::BasisKey DetFaceBasisKey(const int i, const int k) const
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space...
bool FaceNormalNegated(const int face)
void PhysDeriv_n(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_dn)
void GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true)
This function provides the connectivity of local simplices (triangles or tets) to connect the equispa...
void PhysDeriv_s(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_ds)
void SetCoeffsToOrientation(Array< OneD, NekDouble > &coeffs, StdRegions::Orientation dir)
static const BasisKey NullBasisKey(eNoBasisType, 0, NullPointsKey)
Defines a null basis with no type or points.
LibUtilities::NekManager< StdMatrixKey, DNekMat, StdMatrixKey::opLess > m_stdMatrixManager
bool VertexNormalNegated(const int vertex)
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
int GetNfaces() const
This function returns the number of faces of the expansion domain.
void IProductWRTBase(const Array< OneD, const NekDouble > &base, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int coll_check)
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
void WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void GetEdgeInterpVals(const int edge, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
DNekMatSharedPtr BuildInverseTransformationMatrix(const DNekScalMatSharedPtr &m_transformationmatrix)
std::vector< StdExpansionSharedPtr > StdExpansionVector
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Array< OneD, LibUtilities::BasisSharedPtr > m_base
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
LibUtilities::BasisType GetEdgeBasisType(const int i) const
This function returns the type of expansion basis on the i-th edge.
void GetFaceInteriorMap(const int fid, const Orientation faceOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray)
Describes the specification for a Basis.
void ComputeEdgeNormal(const int edge)
bool IsNodalNonTensorialExp()
void BwdTrans_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void LinearAdvectionDiffusionReactionMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)