36 #include <boost/core/ignore_unused.hpp> 60 std::string(
"StdExpansionStdMatrix")),
63 std::string(
"StdExpansionStdStaticCondMatrix")),
66 std::string(
"StdExpansionIndexMap"))
68 switch(
m_base.num_elements())
72 "NULL Basis attempting to be used.");
77 "NULL Basis attempting to be used.");
82 "NULL Basis attempting to be used.");
137 if (sol.num_elements() == 0)
183 for(i = 0; i < coordim; ++i)
214 for(i = 0; i < nbdry; ++i)
216 for(j = 0; j < nbdry; ++j)
218 (*A)(i,j) = (*mat)(bmap[i],bmap[j]);
221 for(j = 0; j < nint; ++j)
223 (*B)(i,j) = (*mat)(bmap[i],imap[j]);
227 for(i = 0; i < nint; ++i)
229 for(j = 0; j < nbdry; ++j)
231 (*C)(i,j) = (*mat)(imap[i],bmap[j]);
234 for(j = 0; j < nint; ++j)
236 (*D)(i,j) = (*mat)(imap[i],imap[j]);
245 (*A) = (*A) - (*B)*(*C);
254 returnval->SetBlock(0,0,A);
255 returnval->SetBlock(0,1,B);
256 returnval->SetBlock(1,0,C);
257 returnval->SetBlock(1,1,D);
299 ASSERTL0(
false,
"Boundary Index Map not implemented yet.");
304 ASSERTL0(
false,
"Vertex Index Map not implemented yet.");
309 ASSERTL0(
false,
"The Index Map you are requiring is not between the possible options.");
315 for(
int i = 0; i < map.num_elements(); i++)
317 (*returnval)[i].index = map[i];
318 (*returnval)[i].sign = sign[i];
364 returnval->GetRawPtr()+i*nq,1);
376 for(i=0; i < nq; ++i)
396 for(i=0; i < nq; ++i)
416 for(i=0; i < nq; ++i)
436 for(i=0; i < nq; ++i)
451 int nummodes =
m_base[0]->GetNumModes();
452 bool equispaced =
true;
453 for(
int i = 1; i <
m_base.num_elements(); ++i)
455 if(
m_base[i]->GetNumModes() != nummodes)
462 "Currently need to have same num modes in all " 463 "directionmodes to use EquiSpacedToCoeff method");
481 returnval->GetRawPtr() + i*
m_ncoeffs, 1);
517 &(Mat.GetPtr())[0]+i*m_ncoeffs,1);
758 for(i = 0; i < dim; ++i)
772 for(i = 0; i < dim; i++)
774 for(j = 0; j < dim; j++)
838 boost::ignore_unused(inarray, outarray, mkey);
889 bool addDiffusionTerm)
894 ASSERTL0(ndir,
"Must define at least one advection velocity");
903 ASSERTL1(ndir <=
GetCoordim(),
"Number of constants is larger than coordinate dimensions");
911 for(i = 0; i < ndir; ++i)
965 nq, inarray.get(), 1, 0.0, outarray.get(), 1);
994 boost::ignore_unused(normal);
1000 boost::ignore_unused(edge);
1006 boost::ignore_unused(nummodes, modes_offset);
1013 boost::ignore_unused(Fx, outarray);
1019 boost::ignore_unused(Fx, Fy, outarray);
1028 boost::ignore_unused(Fx, Fy, Fz, outarray);
1034 boost::ignore_unused(Fvec, outarray);
1041 boost::ignore_unused(mkey);
1048 boost::ignore_unused(mkey);
1055 boost::ignore_unused(face);
1062 boost::ignore_unused(edge);
1071 boost::ignore_unused(dir, inarray, outarray);
1079 boost::ignore_unused(coeffs, dir);
1088 boost::ignore_unused(Lcoord, physvals);
1095 boost::ignore_unused(xi, eta);
1101 ASSERTL0(
false,
"This function is needs defining for this shape");
1107 ASSERTL0(
false,
"This function is needs defining for this shape");
1113 ASSERTL0(
false,
"This function is needs defining for this shape");
1119 ASSERTL0(
false,
"This function is needs defining for this shape");
1125 boost::ignore_unused(i);
1126 ASSERTL0(
false,
"This function is not valid or not defined");
1132 ASSERTL0(
false,
"This function is not valid or not defined");
1138 boost::ignore_unused(i);
1139 ASSERTL0(
false,
"This function is not valid or not defined");
1145 boost::ignore_unused(edge);
1146 ASSERTL0(
false,
"This function is not valid or not defined");
1152 boost::ignore_unused(i);
1153 ASSERTL0(
false,
"This function is not valid or not defined");
1159 boost::ignore_unused(i, k);
1160 ASSERTL0(
false,
"This function is not valid or not defined");
1166 boost::ignore_unused(i);
1167 ASSERTL0(
false,
"This function is not valid or not defined");
1173 boost::ignore_unused(i);
1174 ASSERTL0(
false,
"This function is not valid or not defined");
1180 boost::ignore_unused(i);
1181 ASSERTL0(
false,
"This function is not valid or not defined");
1187 ASSERTL0(
false,
"This function is not valid or not defined");
1193 boost::ignore_unused(i);
1194 ASSERTL0(
false,
"This function is not valid or not defined");
1201 boost::ignore_unused(i, j);
1202 ASSERTL0(
false,
"This function is not valid or not defined");
1208 boost::ignore_unused(i);
1209 ASSERTL0(
false,
"This function is not valid or not defined");
1216 ASSERTL0(
false,
"This function is not valid or not defined");
1223 ASSERTL0(
false,
"This expansion does not have a shape type defined");
1227 std::shared_ptr<StdExpansion>
1230 ASSERTL0(
false,
"This method is not defined for this expansion");
1235 std::shared_ptr<StdExpansion>
1238 ASSERTL0(
false,
"This method is not defined for this expansion");
1245 ASSERTL0(
false,
"This function is not valid or not defined");
1251 ASSERTL0(
false,
"This function has not been defined for this expansion");
1265 boost::ignore_unused(dir, inarray, outarray);
1278 boost::ignore_unused(direction, inarray, outarray);
1289 boost::ignore_unused(inarray, outarray);
1300 boost::ignore_unused(inarray);
1302 "local expansions");
1309 boost::ignore_unused(edgeid, primCoeffs, inoutmat);
1311 "specific element types");
1316 boost::ignore_unused(edgeid, primCoeffs, coeffs);
1318 "specific element types");
1330 boost::ignore_unused(inarray, out_d1, out_d2, out_d3);
1332 "local expansions");
1338 boost::ignore_unused(inarray, out_ds);
1340 "local expansions");
1345 boost::ignore_unused(inarray, out_dn);
1347 "local expansions");
1360 boost::ignore_unused(dir, inarray, out_d0);
1362 "specific element types");
1373 boost::ignore_unused(inarray, direction, outarray);
1375 "specific element types");
1383 boost::ignore_unused(inarray, out_d1, out_d2, out_d3);
1391 boost::ignore_unused(dir, inarray, outarray);
1398 boost::ignore_unused(coords, physvals);
1406 boost::ignore_unused(I, physvals);
1414 boost::ignore_unused(mode, outarray);
1416 "been defined for this shape");
1421 boost::ignore_unused(mkey);
1423 "been defined for this element");
1430 boost::ignore_unused(mkey);
1432 "been defined for this element");
1441 boost::ignore_unused(coords_0, coords_1, coords_2);
1448 boost::ignore_unused(Lcoord, coord);
1460 boost::ignore_unused(outarray);
1466 boost::ignore_unused(outarray);
1471 bool useCoeffPacking)
1473 boost::ignore_unused(localVertexId, useCoeffPacking);
1482 boost::ignore_unused(eid, edgeOrient, maparray, signarray);
1492 boost::ignore_unused(fid, faceOrient, numModes0, numModes1);
1500 boost::ignore_unused(fid, faceOrient, maparray, signarray);
1511 boost::ignore_unused(eid, edgeOrient, maparray, signarray, P);
1518 int nummodesA,
int nummodesB)
1520 boost::ignore_unused(fid, faceOrient, maparray, signarray,
1521 nummodesA, nummodesB);
1527 boost::ignore_unused(edge, inarray, outarray);
1533 boost::ignore_unused(edge, EdgeExp, inarray, outarray);
1539 boost::ignore_unused(edge, EdgeExp, inarray, outarray, orient);
1545 boost::ignore_unused(vertex, inarray, outarray);
1551 boost::ignore_unused(edge, inarray, outarray);
1559 boost::ignore_unused(edge, outarray);
1561 "Method does not exist for this shape or library");
1565 const std::shared_ptr<StdExpansion> &FaceExp,
1570 boost::ignore_unused(face, FaceExp, inarray, outarray, orient);
1578 boost::ignore_unused(edge, outarray);
1580 "Method does not exist for this shape or library" );
1586 boost::ignore_unused(face, outarray);
1594 boost::ignore_unused(inarray, outarray);
1602 boost::ignore_unused(inarray, outarray);
1609 boost::ignore_unused(inarray, outarray);
1615 bool multiplybyweights)
1617 boost::ignore_unused(inarray, outarray, multiplybyweights);
1629 boost::ignore_unused(direction, inarray, outarray);
1631 "Method does not exist for this shape" );
1638 boost::ignore_unused(dir, inarray, outarray);
1664 boost::ignore_unused(array, mkey);
1665 ASSERTL0(
false,
"This function is not defined in StdExpansion.");
1674 boost::ignore_unused(array, alpha, exponent, cutoff);
1675 ASSERTL0(
false,
"This function is not defined in StdExpansion.");
1682 boost::ignore_unused(numMin, inarray, outarray);
1683 ASSERTL0(
false,
"This function is not defined in StdExpansion.");
1760 boost::ignore_unused(inarray, outarray, wsp);
1761 ASSERTL0(
false,
"Not implemented.");
1775 boost::ignore_unused(edge);
1776 ASSERTL0(
false,
"Cannot get edge normals for this expansion.");
1783 boost::ignore_unused(edge);
1784 ASSERTL0(
false,
"Cannot compute edge normal for this expansion.");
1789 boost::ignore_unused(edge);
1790 ASSERTL0(
false,
"Not implemented.");
1795 boost::ignore_unused(edge);
1796 ASSERTL0(
false,
"Not implemented.");
1802 boost::ignore_unused(face);
1803 ASSERTL0(
false,
"Cannot compute face normal for this expansion.");
1808 boost::ignore_unused(face);
1809 ASSERTL0(
false,
"Not implemented.");
1814 boost::ignore_unused(face);
1815 ASSERTL0(
false,
"Not implemented.");
1821 boost::ignore_unused(vertex);
1822 ASSERTL0(
false,
"Cannot compute vertex normal for this expansion.");
1827 boost::ignore_unused(vertex);
1828 ASSERTL0(
false,
"Not implemented.");
1833 boost::ignore_unused(vertex);
1834 ASSERTL0(
false,
"Not implemented.");
1840 boost::ignore_unused(face);
1841 ASSERTL0(
false,
"Cannot get face normals for this expansion.");
1848 boost::ignore_unused(vertex);
1849 ASSERTL0(
false,
"Cannot get vertex normals for this expansion.");
1856 boost::ignore_unused(
id);
1857 ASSERTL0(
false,
"Cannot get face normals for this expansion.");
1865 boost::ignore_unused(eid);
1866 ASSERTL0(
false,
"Not implemented.");
1868 return noinversemap;
1877 boost::ignore_unused(fid, faceOrient, P1, P2);
1878 ASSERTL0(
false,
"Not implemented.");
1880 return noinversemap;
1888 boost::ignore_unused(vmap, emap, fmap);
1889 ASSERTL0(
false,
"Not implemented.");
1896 boost::ignore_unused(m_transformationmatrix);
1914 for(
int i = 0; i <
m_base.num_elements(); ++i)
1916 nqbase =
m_base[i]->GetNumPoints();
1917 np = std::max(np,nqbase);
1936 out = (*intmat) * in;
1943 boost::ignore_unused(conn, standard);
1944 ASSERTL0(
false,
"Not implemented.");
1964 out = (*intmat) * in;
virtual bool v_EdgeNormalNegated(const int edge)
virtual int v_GetNfaces() const
void HelmholtzMatrixOp_MatFree_GenericImpl(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_GetFaceNumModes(const int fid, const Orientation faceOrient, int &numModes0, int &numModes1)
virtual const LibUtilities::BasisKey v_DetFaceBasisKey(const int i, const int k) const
static const PointsKey NullPointsKey(0, eNoPointsType)
virtual int v_GetVertexMap(int localVertexId, bool useCoeffPacking=false)
virtual void v_ComputeFaceNormal(const int face)
virtual LibUtilities::BasisType v_GetEdgeBasisType(const int i) const
#define ASSERTL0(condition, msg)
virtual void v_GetInteriorMap(Array< OneD, unsigned int > &outarray)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
virtual int v_GetTotalFaceIntNcoeffs() const
void LaplacianMatrixOp_MatFree_GenericImpl(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_LaplacianMatrixOp_MatFree_Kernel(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp)
virtual void v_NegateFaceNormal(const int face)
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.
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.
virtual void v_FwdTrans_BndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
#define sign(a, b)
return the sign(b)*a
void IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
int NumBndryCoeffs(void) const
virtual int v_GetNedges() const
virtual void v_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...
virtual void v_FillMode(const int mode, Array< OneD, NekDouble > &outarray)
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
virtual void v_GetFaceInteriorMap(const int fid, const Orientation faceOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray)
virtual int v_NumBndryCoeffs() const
virtual int v_GetFaceNumPoints(const int i) const
void WeakDirectionalDerivMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_PhysDeriv_n(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_dn)
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
LibUtilities::NekManager< IndexMapKey, IndexMapValues, IndexMapKey::opLess > m_IndexMapManager
virtual int v_GetShapeDimension() const
virtual void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void LaplacianMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_GetBoundaryMap(Array< OneD, unsigned int > &outarray)
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
virtual int v_GetTraceNcoeffs(const int i) const
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
Orientation GetIndexOrientation() const
virtual void v_IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual const NormalVector & v_GetFaceNormal(const int face) const
static const NekDouble kNekSqrtTol
virtual void v_DropLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
virtual ~StdExpansion()
Destructor.
virtual void v_GetEdgeToElementMap(const int eid, const Orientation edgeOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, int P=-1)
virtual int v_GetFaceIntNcoeffs(const int i) const
std::map< ConstFactorType, NekDouble > ConstFactorMap
virtual DNekMatSharedPtr v_GenMatrix(const StdMatrixKey &mkey)
virtual void v_PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2, Array< OneD, NekDouble > &out_d3)
Calculate the derivative of the physical points.
std::shared_ptr< DNekMat > DNekMatSharedPtr
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess > m_stdStaticCondMatrixManager
virtual StdRegions::Orientation v_GetForient(int face)
virtual void v_GetEdgeInteriorMap(const int eid, const Orientation edgeOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray)
MatrixType GetMatrixType() const
const Array< OneD, const NekDouble > & GetVarCoeff(const StdRegions::VarCoeffType &coeff) const
virtual bool v_IsNodalNonTensorialExp()
virtual void v_NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
virtual void v_PhysDirectionalDeriv(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &direction, Array< OneD, NekDouble > &outarray)
Physical derivative along a direction vector.
virtual int v_GetFaceNcoeffs(const int i) const
void Vabs(int n, const T *x, const int incx, T *y, const int incy)
vabs: y = |x|
bool HasVarCoeff(const StdRegions::VarCoeffType &coeff) const
virtual const NormalVector & v_GetSurfaceNormal(const int id) const
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
virtual int v_GetEdgeNcoeffs(const int i) const
void IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true)
virtual void v_IProductWRTDirectionalDerivBase(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_GetTracePhysVals(const int edge, const std::shared_ptr< StdExpansion > &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient=eNoOrientation)
int GetNumberOfCoefficients(ShapeType shape, std::vector< unsigned int > &modes, int offset)
virtual void v_GetEdgePhysMap(const int edge, Array< OneD, int > &outarray)
static DNekMatSharedPtr NullDNekMatSharedPtr
NekDouble L2(const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
Function to evaluate the discrete error, where is given by the array sol.
virtual bool v_VertexNormalNegated(const int vertex)
virtual void v_AddRobinMassMatrix(const int edgeid, const Array< OneD, const NekDouble > &primCoeffs, DNekMatSharedPtr &inoutmat)
void WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
BasisManagerT & BasisManager(void)
virtual void v_GetInverseBoundaryMaps(Array< OneD, unsigned int > &vmap, Array< OneD, Array< OneD, unsigned int > > &emap, Array< OneD, Array< OneD, unsigned int > > &fmap)
virtual void v_BwdTrans_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_MassLevelCurvatureMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void LinearAdvectionDiffusionReactionMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)
virtual void v_LaplacianMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual int v_GetElmtId()
Get the element id of this expansion when used in a list by returning value of m_elmt_id.
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
virtual void v_SetUpPhysNormals(const int edge)
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray)
Integrates the specified function over the domain.
virtual void v_GetEdgeInterpVals(const int edge, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
The base class for all shapes.
virtual void SetUpPhysNormals(const int edge)
virtual int v_GetEdgeNumPoints(const int i) const
virtual void v_NegateEdgeNormal(const int edge)
virtual void v_AddRobinEdgeContribution(const int edgeid, const Array< OneD, const NekDouble > &primCoeffs, Array< OneD, NekDouble > &coeffs)
void GeneralMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_NegateVertexNormal(const int vertex)
virtual void v_GetCoord(const Array< OneD, const NekDouble > &Lcoord, Array< OneD, NekDouble > &coord)
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdMatrixKey &mkey)
virtual LibUtilities::ShapeType v_DetShapeType() const
virtual std::shared_ptr< StdExpansion > v_GetLinStdExp(void) const
IndexMapValuesSharedPtr CreateIndexMap(const IndexMapKey &ikey)
Create an IndexMap which contains mapping information linking any specific element shape with either ...
IndexMapType GetIndexMapType() const
virtual void v_PhysDeriv_s(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_ds)
virtual void v_GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true)
virtual const NormalVector & v_GetEdgeNormal(const int edge) const
virtual void v_WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_HelmholtzMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
virtual void v_GetVertexPhysVals(const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray)
void WeakDerivMatrixOp_MatFree(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
DNekMatSharedPtr CreateGeneralMatrix(const StdMatrixKey &mkey)
this function generates the mass matrix
virtual void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey)
Defines a specification for a set of points.
virtual const LibUtilities::BasisKey v_DetEdgeBasisKey(const int i) const
virtual bool v_IsBoundaryInteriorExpansion()
static void Dgemv(const char &trans, const int &m, const int &n, const double &alpha, const double *a, const int &lda, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = A x where A[m x n].
void BwdTrans_MatOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual LibUtilities::PointsKey v_GetFacePointsKey(const int i, const int j) const
T Vamax(int n, const T *x, const int incx)
Return the maximum absolute element in x called vamax to avoid conflict with max. ...
virtual void v_GetEdgeQFactors(const int edge, Array< OneD, NekDouble > &outarray)
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...
virtual void v_StdPhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2, Array< OneD, NekDouble > &out_d3)
virtual void v_GetFaceToElementMap(const int fid, const Orientation faceOrient, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, int nummodesA=-1, int nummodesB=-1)
NekDouble StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
virtual void v_IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true)
NekDouble GetConstFactor(const ConstFactorType &factor) const
virtual void v_LocCoordToLocCollapsed(const Array< OneD, const NekDouble > &xi, Array< OneD, NekDouble > &eta)
void HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
NekDouble H1(const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
Function to evaluate the discrete error, where is given by the array sol.
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
virtual int v_NumDGBndryCoeffs() const
void MassLevelCurvatureMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual Array< OneD, unsigned int > v_GetEdgeInverseBoundaryMap(int eid)
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const LocalRegions::MatrixKey &mkey)
virtual void v_ComputeEdgeNormal(const int edge)
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y.
void EquiSpacedToCoeffs(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs a projection/interpolation from the equispaced points sometimes used in post-p...
virtual int v_DetCartesianDirOfEdge(const int edge)
void LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual const LibUtilities::PointsKey v_GetNodalPointsKey() const
virtual void v_ComputeVertexNormal(const int vertex)
virtual void v_IProductWRTDirectionalDerivBase_SumFac(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_GetFacePhysMap(const int face, Array< OneD, int > &outarray)
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
bool ConstFactorExists(const ConstFactorType &factor) const
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
virtual StdRegions::Orientation v_GetEorient(int edge)
void MassMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
NekDouble Linf(const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &sol=NullNekDouble1DArray)
Function to evaluate the discrete error where is given by the array sol.
virtual int v_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)
int GetIndexEntity() const
virtual void v_WeakDerivMatrixOp(const int i, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_GetFacePhysVals(const int face, const std::shared_ptr< StdExpansion > &FaceExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
virtual bool v_FaceNormalNegated(const int face)
virtual int v_GetTotalEdgeIntNcoeffs() const
virtual void v_SetPhysNormals(Array< OneD, const NekDouble > &normal)
DNekBlkMatSharedPtr CreateStdStaticCondMatrix(const StdMatrixKey &mkey)
Create the static condensation of a matrix when using a boundary interior decomposition.
static DNekScalBlkMatSharedPtr NullDNekScalBlkMatSharedPtr
virtual void v_ExponentialFilter(Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)
static const BasisKey NullBasisKey(eNoBasisType, 0, NullPointsKey)
Defines a null basis with no type or points.
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals(void)
LibUtilities::NekManager< StdMatrixKey, DNekMat, StdMatrixKey::opLess > m_stdMatrixManager
virtual const NormalVector & v_GetVertexNormal(const int vertex) const
StdExpansion()
Default Constructor.
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
virtual int v_GetCoordim(void)
std::shared_ptr< IndexMapValues > IndexMapValuesSharedPtr
void WeakDirectionalDerivMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void Zero(int n, T *x, const int incx)
Zero vector.
void PhysInterpToSimplexEquiSpaced(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, int npset=-1)
This function performs an interpolation from the physical space points provided at input into an arra...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Array< OneD, LibUtilities::BasisSharedPtr > m_base
virtual Array< OneD, unsigned int > v_GetFaceInverseBoundaryMap(int fid, StdRegions::Orientation faceOrient=eNoOrientation, int P1=-1, int P2=-1)
void GeneralMatrixOp_MatFree(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
LibUtilities::PointsType GetNodalPointsType() const
std::shared_ptr< StdMatrixKey > StdMatrixKeySharedPtr
static void Daxpy(const int &n, const double &alpha, const double *x, const int &incx, const double *y, const int &incy)
BLAS level 1: y = alpha x plus y.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
LibUtilities::ShapeType GetShapeType() const
virtual void v_LinearAdvectionDiffusionReactionMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_0, Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2)
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual std::shared_ptr< StdExpansion > v_GetStdExp(void) const
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
virtual DNekMatSharedPtr v_BuildInverseTransformationMatrix(const DNekScalMatSharedPtr &m_transformationmatrix)
Describes the specification for a Basis.
virtual void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)=0
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
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 BwdTrans_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
static VarCoeffMap NullVarCoeffMap
static ConstFactorMap NullConstFactorMap
void LinearAdvectionDiffusionReactionMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey, bool addDiffusionTerm=true)