46 std::string(
"ExpansionIndexMap")),
47 m_geom(pGeom), m_elementTraceLeft(-1), m_elementTraceRight(-1)
59 string type =
"regular";
66 err << nDim <<
"D " << type <<
" Jacobian not positive "
76 : StdExpansion(pSrc), m_indexMapManager(pSrc.m_indexMapManager),
111 const NekDouble *data,
const std::vector<unsigned int> &nummodes,
112 const int nmodes_offset,
NekDouble *coeffs,
113 std::vector<LibUtilities::BasisType> &fromType)
119 const int edge,
const std::shared_ptr<Expansion> &EdgeExp,
127 const int edge,
const std::shared_ptr<Expansion> &EdgeExp,
134 const int face,
const std::shared_ptr<Expansion> &FaceExp,
146 v_DGDeriv(dir, inarray, EdgeExp, coeffs, outarray);
212 ASSERTL0(
false,
"Boundary Index Map not implemented yet.");
218 ASSERTL0(
false,
"Boundary Index Map not implemented yet.");
224 ASSERTL0(
false,
"Boundary Index Map not implemented yet.");
229 ASSERTL0(
false,
"Vertex Index Map not implemented yet.");
234 ASSERTL0(
false,
"The Index Map you are requiring "
235 "is not between the possible options.");
241 for (
int i = 0; i < map.size(); i++)
243 (*returnval)[i].index = map[i];
244 (*returnval)[i].sign =
sign[i];
252 std::map<int, NormalVector>::const_iterator x;
278 ASSERTL0(
false,
"This method is not defined for this expansion");
285 ASSERTL0(
false,
"This method is not defined for this expansion");
302 "Geometric information is not set up");
306 unsigned int nint = (
unsigned int)(
m_ncoeffs - nbdry);
307 unsigned int exp_size[] = {nbdry, nint};
308 unsigned int nblks = 2;
310 nblks, nblks, exp_size, exp_size);
323 goto UseLocRegionsMatrix;
328 goto UseStdRegionsMatrix;
334 goto UseLocRegionsMatrix;
347 factor, Asubmat = mat->GetBlock(0, 0)));
351 one, Asubmat = mat->GetBlock(0, 1)));
355 factor, Asubmat = mat->GetBlock(1, 0)));
359 invfactor, Asubmat = mat->GetBlock(1, 1)));
382 for (i = 0; i < nbdry; ++i)
384 for (j = 0; j < nbdry; ++j)
386 (*A)(i, j) = mat(bmap[i], bmap[j]);
389 for (j = 0; j < nint; ++j)
391 (*B)(i, j) = mat(bmap[i], imap[j]);
395 for (i = 0; i < nint; ++i)
397 for (j = 0; j < nbdry; ++j)
399 (*C)(i, j) = mat(imap[i], bmap[j]);
402 for (j = 0; j < nint; ++j)
404 (*D)(i, j) = mat(imap[i], imap[j]);
413 (*A) = (*A) - (*B) * (*C);
488 out = (*matsys) * in;
533 for (
int i = 0; i < nqtot; ++i)
535 if (std::isnan(outarray[i]) || std::isinf(outarray[i]))
578 for (
int i = 0; i < ntraces; ++i)
584 int ntpts = traceExp[i]->GetTotPoints();
585 maxtracepts =
max(maxtracepts, ntpts);
586 tottracepts += ntpts;
595 for (
int i = 0; i < ndir; ++i)
612 for (
int j = 0; j < ntraces; ++j)
617 int nTracePts = traceExp[j]->GetTotPoints();
619 for (
int d = 0; d < ndir; ++d)
626 for (
int k = 0; k < nTracePts; ++k)
628 (*DerivMat[d])(i, cnt + k) = traceDeriv[k];
655 for (
int d = 0; d < ndir; ++d)
669 PhysDeriv(phys, Deriv[0], Deriv[1], Deriv[2]);
671 for (
int k = 0; k < nTracePts; ++k)
673 for (
int d = 0; d < ndir; ++d)
675 (*DerivMat[d])(i, k) = Deriv[d][tracePhysIds[k]];
703 for (
int k = 0; k < nTracePts; ++k)
705 (*BdataMat)(i, k) = phys[tracePhysIds[k]];
719 const int expDim =
m_base.size();
726 for (
int i = 0; i < expDim; ++i)
729 nqGeom *= CBasis[i]->GetNumPoints();
731 m_base[i]->GetBasisKey().SamePoints(CBasis[i]->GetBasisKey());
757 CBasis[0]->GetPointsKey(), &tmpGeom[0],
758 m_base[0]->GetPointsKey(), &tmp[i][0]);
764 CBasis[0]->GetPointsKey(), CBasis[1]->GetPointsKey(),
765 &tmpGeom[0],
m_base[0]->GetPointsKey(),
766 m_base[1]->GetPointsKey(), &tmp[i][0]);
772 CBasis[0]->GetPointsKey(), CBasis[1]->GetPointsKey(),
773 CBasis[2]->GetPointsKey(), &tmpGeom[0],
775 m_base[2]->GetPointsKey(), &tmp[i][0]);
787 int shapedim = dfdir.size();
789 int nqtot = direction.size() / coordim;
791 for (
int j = 0; j < shapedim; j++)
794 for (
int k = 0; k < coordim; k++)
799 &direction[k * nqtot], 1, &dfdir[j][0], 1,
805 &direction[k * nqtot], 1, &dfdir[j][0], 1,
818 int nquad0, nquad1, nquad2;
824 nquad0 =
m_base[0]->GetNumPoints();
825 nquad1 =
m_base[1]->GetNumPoints();
826 nqtot = nquad0 * nquad1;
831 nquad0 =
m_base[0]->GetNumPoints();
832 nquad1 =
m_base[1]->GetNumPoints();
833 nquad2 =
m_base[2]->GetNumPoints();
834 nqtot = nquad0 * nquad1 * nquad2;
853 for (
int k = 0; k < coordim; k++)
855 StdRegions::VarCoeffMap::const_iterator MFdir =
856 varcoeffs.find(MMFCoeffs[5 * dir + k]);
857 tmp = MFdir->second.GetValue();
881 StdRegions::VarCoeffMap::const_iterator MFdir =
882 varcoeffs.find(MMFCoeffs[5 * dir + indxDiv]);
904 StdRegions::VarCoeffMap::const_iterator MFdir =
905 varcoeffs.find(MMFCoeffs[5 * dir + indxMag]);
928 [[maybe_unused]]
const std::vector<unsigned int> &nummodes,
929 [[maybe_unused]]
const int nmodes_offset,
931 [[maybe_unused]] std::vector<LibUtilities::BasisType> &fromType)
937 [[maybe_unused]]
const int edge,
938 [[maybe_unused]]
const std::shared_ptr<Expansion> &EdgeExp,
947 [[maybe_unused]]
const int edge,
948 [[maybe_unused]]
const std::shared_ptr<Expansion> &EdgeExp,
956 [[maybe_unused]]
const int face,
957 [[maybe_unused]]
const std::shared_ptr<Expansion> &FaceExp,
965 [[maybe_unused]]
const int dir,
978 "This function is only valid for "
979 "shape expansion in LocalRegions, not parant class");
989 "This function is only valid for "
990 "shape expansion in LocalRegions, not parant class");
1007 [[maybe_unused]]
const int trace,
1011 "Method does not exist for this shape or library");
1015 [[maybe_unused]]
const int trace,
1022 "Method does not exist for this shape or library");
1026 [[maybe_unused]]
const int trace,
1028 [[maybe_unused]]
const NekDouble *inarray,
1033 "Method does not exist for this shape or library");
1040 "Method does not exist for this shape or library");
1047 [[maybe_unused]]
const int nq0, [[maybe_unused]]
const int nq1,
1048 [[maybe_unused]]
bool Forwards)
1051 "Method does not exist for this shape or library");
1058 "Method does not exist for this shape or library");
1063 ASSERTL0(
false,
"Cannot compute trace normal for this expansion.");
1084 [[maybe_unused]]
const int trace,
1092 [[maybe_unused]]
const int traceid,
1108 const int nbnd)
const
1112 "m_elmtBndNormDirElmtLen normal not computed.");
1117 [[maybe_unused]]
const int dir,
1126 std::vector<int> &q_begin, std::vector<int> &q_end)
1135 q_begin[0], q_end[0]);
1143 q_begin[0], q_end[0]);
1145 q_begin[1], q_end[1]);
1152 q_begin[0], q_end[0]);
1154 q_begin[1], q_end[1]);
1156 q_begin[2], q_end[2]);
1175 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1176 q_end[0] = bkeys[0].GetNumPoints();
1205 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1206 q_end[0] = bkeys[0].GetNumPoints();
1211 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1212 q_end[1] = bkeys[1].GetNumPoints();
1247 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1248 q_end[0] = bkeys[0].GetNumPoints();
1253 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1254 q_end[1] = bkeys[1].GetNumPoints();
1265 q_begin[2] = bkeys[2].GetNumPoints() - 1;
1266 q_end[2] = bkeys[2].GetNumPoints();
1295 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1296 q_end[0] = bkeys[0].GetNumPoints();
1331 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1332 q_end[0] = bkeys[0].GetNumPoints();
1337 q_begin[1] = bkeys[1].GetNumPoints() - 1;
1338 q_end[1] = bkeys[1].GetNumPoints();
1373 q_begin[0] = bkeys[0].GetNumPoints() - 1;
1374 q_end[0] = bkeys[0].GetNumPoints();
1379 q_begin[0] = bkeys[1].GetNumPoints() - 1;
1380 q_end[0] = bkeys[1].GetNumPoints();
#define ASSERTL0(condition, msg)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
#define sign(a, b)
return the sign(b)*a
Describes the specification for a Basis.
static void GetEffectiveQuadRange(const LibUtilities::PointsKey &pkey, int &q_begin, int &q_end)
offset the m_nq_begin and m_nq_end according to the points type
PointsType GetPointsType() const
std::map< int, NormalVector > m_traceNormals
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
the element length in each element boundary(Vertex, edge or face) normal direction calculated based o...
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)
virtual void v_TraceNormLen(const int traceid, NekDouble &h, NekDouble &p)
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
Expansion(SpatialDomains::Geometry *pGeom)
void GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
void DropLocMatrix(const LocalRegions::MatrixKey &mkey)
SpatialDomains::Geometry * GetGeom() const
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
virtual void v_DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_GenTraceExp(const int traceid, ExpansionSharedPtr &exp)
void ComputeLaplacianMetric()
void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
SpatialDomains::Geometry * m_geom
virtual void v_AddRobinTraceContribution(const int traceid, const Array< OneD, const NekDouble > &primCoeffs, const Array< OneD, NekDouble > &incoeffs, Array< OneD, NekDouble > &coeffs)
void PhysDerivBaseOnTraceMat(const int traceid, Array< OneD, DNekMatSharedPtr > &DerivMat)
void ComputeGmatcdotMF(const Array< TwoD, const NekDouble > &df, const Array< OneD, const NekDouble > &direction, Array< OneD, Array< OneD, NekDouble > > &dfdir)
virtual void v_GetTraceQFactors(const int trace, Array< OneD, NekDouble > &outarray)
virtual void v_ComputeTraceNormal(const int id)
virtual StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
Array< OneD, NekDouble > GetMFMag(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp() const
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Forward transform from physical quadrature space stored in inarray and evaluate the expansion coeffic...
virtual DNekScalMatSharedPtr v_GetLocMatrix(const LocalRegions::MatrixKey &mkey)
virtual void v_GetLocTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const NekDouble *inarray, Array< OneD, NekDouble > &outarray)
void GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=StdRegions::eNoOrientation)
virtual void v_AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
const Array< OneD, const NekDouble > & GetElmtBndNormDirElmtLen(const int nbnd) const
virtual void v_AddRobinMassMatrix(const int face, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
std::map< int, ExpansionWeakPtr > m_traceExp
virtual void v_NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
void ComputeQuadratureMetric()
void AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
void AddFaceNormBoundaryInt(const int face, const std::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_DropLocMatrix(const LocalRegions::MatrixKey &mkey)
void PhysBaseOnTraceMat(const int traceid, DNekMatSharedPtr &BdataMat)
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
virtual StdRegions::Orientation v_GetTraceOrient(int trace)
void DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
void StdDerivBaseOnTraceMat(Array< OneD, DNekMatSharedPtr > &DerivMat)
void ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coord, const Array< OneD, const NekDouble > &physvals) override
virtual void v_ReOrientTracePhysVals(const StdRegions::Orientation orient, const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const int nq0, const int nq1, bool Forwards)
void NormalTraceDerivFactors(Array< OneD, Array< OneD, NekDouble > > &factors, Array< OneD, Array< OneD, NekDouble > > &d0factors, Array< OneD, Array< OneD, NekDouble > > &d1factors)
virtual void v_ComputeLaplacianMetric()
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals()
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int nmodes_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
virtual void v_AlignVectorToCollapsedDir(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
const std::map< int, NormalVector > & GetTraceNormals(void)
virtual void v_AddEdgeNormBoundaryInt(const int edge, const std::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
virtual void v_SetUpPhysNormals(const int id)
virtual void v_GetTracePhysMap(const int edge, Array< OneD, int > &outarray)
Array< OneD, NekDouble > GetMFDiv(const int dir, const StdRegions::VarCoeffMap &varcoeffs)
const NormalVector & GetTraceNormal(const int id)
Array< OneD, NekDouble > GetMF(const int dir, const int shapedim, const StdRegions::VarCoeffMap &varcoeffs)
SpatialDomains::GeomFactorsUniquePtr m_geomFactors
virtual void v_GetTracePhysVals(const int trace, const StdRegions::StdExpansionSharedPtr &TraceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
void GenGeomFactors()
Handles generation of geometry factors.
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &vec)
StdRegions::Orientation GetIndexOrientation() const
IndexMapType GetIndexMapType() const
int GetIndexEntity() const
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
static std::unique_ptr< DataType, UniquePtrDeleter > AllocateUniquePtr(const Args &...args)
Base class for shape geometry information.
NekDouble GetLocCoords(const Array< OneD, const NekDouble > &coords, Array< OneD, NekDouble > &Lcoords)
Determine the local collapsed coordinates that correspond to a given Cartesian coordinate for this ge...
int GetVid(int i) const
Returns global id of vertex i of this object.
const Array< OneD, const NekDouble > & GetCoeffs(const int i) const
Return the coefficients of the transformation Geometry::m_xmap in coordinate direction i.
int GetGlobalID(void) const
Get the ID of this object.
int GetCoordim() const
Return the coordinate dimension of this object (i.e. the dimension of the space in which this object ...
void FillGeom()
Populate the coordinate mapping Geometry::m_coeffs information from any children geometry elements.
StdRegions::StdExpansionSharedPtr GetXmap() const
Return the mapping object Geometry::m_xmap that represents the coordinate transformation from standar...
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
int GetTraceNumPoints(const int i) const
This function returns the number of quadrature points belonging to the i-th trace.
int NumBndryCoeffs(void) const
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
virtual bool v_IsCollocatedBasis() const =0
int GetNtraces() const
Returns the number of trace elements connected to this element.
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GetTraceToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation traceOrient=eForwards, int P=-1, int Q=-1)
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space.
virtual const LibUtilities::PointsKey v_GetNodalPointsKey() const
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0
Calculates the inner product of a given function f with the different modes of the expansion.
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 LibUtilities::BasisKey GetTraceBasisKey(const int i, int k=-1, bool UseGLL=false) const
This function returns the basis key belonging to the i-th trace.
int GetShapeDimension() const
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)
Array< OneD, LibUtilities::BasisSharedPtr > m_base
MatrixType GetMatrixType() const
std::vector< BasisKey > BasisKeyVector
Name for a vector of BasisKeys.
void Interp1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
this function interpolates a 1D function evaluated at the quadrature points of the basis fbasis0 to ...
void Interp3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
this function interpolates a 3D function evaluated at the quadrature points of the 3D basis,...
void Interp2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
this function interpolates a 2D function evaluated at the quadrature points of the 2D basis,...
constexpr unsigned int ShapeTypeDimMap[SIZE_ShapeType]
static const PointsKey NullPointsKey(0, eNoPointsType)
std::shared_ptr< Expansion > ExpansionSharedPtr
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
void GetTraceQuadRange(const LibUtilities::ShapeType shapeType, const LibUtilities::BasisKeyVector &bkeys, int traceid, std::vector< int > &q_begin, std::vector< int > &q_end)
Array< OneD, Array< OneD, NekDouble > > NormalVector
GeomType
Indicates the type of element geometry.
@ eRegular
Geometry is straight-sided with constant geometric factors.
@ eNoGeomType
No type defined.
@ eMovingRegular
Currently unused.
@ eDeformed
Geometry is curved or has non-constant factors.
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
static VarFactorsMap NullVarFactorsMap
std::map< ConstFactorType, NekDouble > ConstFactorMap
static ConstFactorMap NullConstFactorMap
@ eDir1FwdDir1_Dir2FwdDir2
static VarCoeffMap NullVarCoeffMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
static DNekMatSharedPtr NullDNekMatSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
static DNekScalMatSharedPtr NullDNekScalMatSharedPtr
std::shared_ptr< DNekMat > DNekMatSharedPtr
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Svtvp (scalar times vector plus vector): z = alpha*x + y.
void Vvtvp(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvp (vector times vector plus vector): z = w*x + y
void Vdiv(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x/y.
void Zero(int n, T *x, const int incx)
Zero vector.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
scalarT< T > max(scalarT< T > lhs, scalarT< T > rhs)