57 : StdExpansion(Ba.GetNumModes(), 1, Ba),
58 StdExpansion1D(Ba.GetNumModes(), Ba), StdRegions::StdSegExp(Ba),
61 std::bind(&
SegExp::CreateMatrix, this,
std::placeholders::_1),
62 std::string(
"SegExpMatrix")),
63 m_staticCondMatrixManager(
std::bind(&
Expansion::CreateStaticCondMatrix,
64 this,
std::placeholders::_1),
65 std::string(
"SegExpStaticCondMatrix"))
74 : StdExpansion(S), StdExpansion1D(S), StdRegions::StdSegExp(S),
76 m_staticCondMatrixManager(S.m_staticCondMatrixManager)
116 ival = StdSegExp::v_Integral(tmp);
150 int nquad0 =
m_base[0]->GetNumPoints();
161 Vmath::Vmul(nquad0, &gmat[0][0], 1, &diff[0], 1, &out_d0[0], 1);
166 Vmath::Vmul(nquad0, &gmat[1][0], 1, &diff[0], 1, &out_d1[0], 1);
171 Vmath::Vmul(nquad0, &gmat[2][0], 1, &diff[0], 1, &out_d2[0], 1);
178 Vmath::Smul(nquad0, gmat[0][0], diff, 1, out_d0, 1);
183 Vmath::Smul(nquad0, gmat[1][0], diff, 1, out_d1, 1);
188 Vmath::Smul(nquad0, gmat[2][0], diff, 1, out_d2, 1);
204 int nquad0 =
m_base[0]->GetNumPoints();
243 int nquad0 =
m_base[0]->GetNumPoints();
258 cout <<
"der_n" << endl;
259 for (
int k = 0; k < coordim; ++k)
267 for (
int i = 0; i < nquad0; i++)
269 cout <<
"nx= " << normals[0][i] <<
" ny=" << normals[1][i]
273 "normal vectors do not exist: check if a"
274 "boundary region is defined as I ");
276 Vmath::Vmul(nquad0, normals[0], 1, inarray_d0, 1, out_dn_tmp, 1);
277 Vmath::Vadd(nquad0, out_dn_tmp, 1, out_dn, 1, out_dn, 1);
279 Vmath::Vmul(nquad0, normals[1], 1, inarray_d1, 1, out_dn_tmp, 1);
280 Vmath::Vadd(nquad0, out_dn_tmp, 1, out_dn, 1, out_dn, 1);
282 for (
int i = 0; i < nquad0; i++)
284 cout <<
"deps/dx =" << inarray_d0[i]
285 <<
" deps/dy=" << inarray_d1[i] << endl;
315 ASSERTL1(
false,
"input dir is out of range");
349 if (
m_base[0]->Collocation())
365 out = (*matsys) * in;
373 if (
m_base[0]->Collocation())
381 bool hasEndPoints =
true;
382 bool hasEndModes =
true;
410 ASSERTL0(
false,
"This type of FwdTrans is not defined"
411 "for this expansion type");
418 case LibUtilities::eGaussKronrodLegendre:
420 hasEndPoints =
false;
434 ASSERTL0(
false,
"FwdTransBndConstrained cannot be used "
435 "with this point type");
438 fill(outarray.data(), outarray.data() +
m_ncoeffs, 0.0);
440 if (hasEndPoints && hasEndModes)
466 Blas::Dgemv(
'N', nInteriorDofs, nInteriorDofs, matsys->Scale(),
467 &((matsys->GetOwnedMatrix())->GetPtr())[0],
468 nInteriorDofs, tmp1.data() + offset, 1, 0.0,
469 outarray.data() + offset, 1);
535 int nquad0 =
m_base[0]->GetNumPoints();
548 StdSegExp::v_IProductWRTBase(base, tmp, outarray, coll_check);
555 ASSERTL1(dir < 3,
"input dir is out of range");
557 "input dir is out of range");
559 int nquad =
m_base[0]->GetNumPoints();
567 Vmath::Vmul(nquad, gmat[dir], 1, inarray, 1, tmp1, 1);
571 Vmath::Smul(nquad, gmat[dir][0], inarray, 1, tmp1, 1);
581 int nq =
m_base[0]->GetNumPoints();
589 Vmath::Vmul(nq, &Fx[0], 1, &normals[0][0], 1, &Fn[0], 1);
590 Vmath::Vvtvp(nq, &Fy[0], 1, &normals[1][0], 1, &Fn[0], 1, &Fn[0], 1);
616 return StdExpansion1D::v_PhysEvaluate(Lcoord, physvals);
627 return StdExpansion1D::v_PhysEvaluate(Lcoord, physvals);
633 std::array<NekDouble, 3> &firstOrderDerivs)
638 return StdSegExp::v_PhysEvalFirstDeriv(Lcoord, inarray, firstOrderDerivs);
644 std::array<NekDouble, 3> &firstOrderDerivs,
645 std::array<NekDouble, 6> &secondOrderDerivs)
650 return StdSegExp::v_PhysEvalFirstSecondDeriv(
651 Lcoord, inarray, firstOrderDerivs, secondOrderDerivs);
659 ASSERTL1(Lcoords[0] >= -1.0 && Lcoords[0] <= 1.0,
660 "Local coordinates are not in region [-1,1]");
681 int nquad =
m_base[0]->GetNumPoints();
688 outarray = inarray[0];
691 outarray = inarray[nquad - 1];
706 Blas::Ddot(nquad, mat_gauss->GetOwnedMatrix()->GetPtr().data(), 1,
721 outarray[0] = result;
727 int nquad =
m_base[0]->GetNumPoints();
729 ASSERTL1(vertex == 0 || vertex == 1,
"Vertex value should be 0 or 1");
733 map[0] = vertex == 0 ? 0 : nquad - 1;
747 if (&inarray[0] != &outarray[0])
762 m_base[0]->GetBasisKey());
768 m_base[0]->GetPointsKey());
792 const NekDouble *data,
const std::vector<unsigned int> &nummodes,
793 const int mode_offset,
NekDouble *coeffs,
794 [[maybe_unused]] std::vector<LibUtilities::BasisType> &fromType)
800 int fillorder =
min((
int)nummodes[mode_offset],
m_ncoeffs);
829 ASSERTL0(
false,
"basis is either not set up or not hierarchicial");
846 for (i = 0; i < vCoordDim; ++i)
852 size_t nbnd = vertex;
865 for (i = 0; i < vCoordDim; ++i)
871 for (i = 0; i < vCoordDim; ++i)
877 ASSERTL0(
false,
"point is out of range (point < 2)");
882 for (i = 0; i < vCoordDim; ++i)
884 vert += normal[i][0] * normal[i][0];
886 vert = 1.0 /
sqrt(vert);
890 for (i = 0; i < vCoordDim; ++i)
892 Vmath::Smul(nqe, vert, normal[i], 1, normal[i], 1);
906 int nquad =
m_base[0]->GetNumPoints();
925 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
926 dPhysValuesdx.data(), 1);
930 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
938 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy);
943 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
944 dPhysValuesdx.data(), 1);
945 Vmath::Vvtvp(nquad, &gmat[1][0], 1, dPhysValuesdy.data(), 1,
946 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
950 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
951 Blas::Daxpy(nquad, gmat[1][0], dPhysValuesdy.data(), 1,
952 dPhysValuesdx.data(), 1);
961 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy, dPhysValuesdz);
966 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
967 dPhysValuesdx.data(), 1);
968 Vmath::Vvtvp(nquad, &gmat[1][0], 1, dPhysValuesdy.data(), 1,
969 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
970 Vmath::Vvtvp(nquad, &gmat[2][0], 1, dPhysValuesdz.data(), 1,
971 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
975 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
976 Blas::Daxpy(nquad, gmat[1][0], dPhysValuesdy.data(), 1,
977 dPhysValuesdx.data(), 1);
978 Blas::Daxpy(nquad, gmat[2][0], dPhysValuesdz.data(), 1,
979 dPhysValuesdx.data(), 1);
984 ASSERTL0(
false,
"Wrong number of dimensions");
996 StdExpansion::LaplacianMatrixOp_MatFree(k1, k2, inarray, outarray, mkey);
1003 int nquad =
m_base[0]->GetNumPoints();
1027 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
1028 dPhysValuesdx.data(), 1);
1032 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
1040 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy);
1045 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
1046 dPhysValuesdx.data(), 1);
1047 Vmath::Vvtvp(nquad, &gmat[1][0], 1, dPhysValuesdy.data(), 1,
1048 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
1052 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
1053 Blas::Daxpy(nquad, gmat[1][0], dPhysValuesdy.data(), 1,
1054 dPhysValuesdx.data(), 1);
1063 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy, dPhysValuesdz);
1068 Vmath::Vmul(nquad, &gmat[0][0], 1, dPhysValuesdx.data(), 1,
1069 dPhysValuesdx.data(), 1);
1070 Vmath::Vvtvp(nquad, &gmat[1][0], 1, dPhysValuesdy.data(), 1,
1071 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
1072 Vmath::Vvtvp(nquad, &gmat[2][0], 1, dPhysValuesdz.data(), 1,
1073 dPhysValuesdx.data(), 1, dPhysValuesdx.data(), 1);
1077 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.data(), 1);
1078 Blas::Daxpy(nquad, gmat[1][0], dPhysValuesdy.data(), 1,
1079 dPhysValuesdx.data(), 1);
1080 Blas::Daxpy(nquad, gmat[2][0], dPhysValuesdz.data(), 1,
1081 dPhysValuesdx.data(), 1);
1086 ASSERTL0(
false,
"Wrong number of dimensions");
1124 return tmp->GetStdMatrix(mkey);
1134 "Geometric information is not set up");
1144 goto UseLocRegionsMatrix;
1149 goto UseStdRegionsMatrix;
1170 goto UseStdRegionsMatrix;
1182 goto UseLocRegionsMatrix;
1194 "Cannot call eWeakDeriv2 in a "
1195 "coordinate system which is not at "
1196 "least two-dimensional");
1201 "Cannot call eWeakDeriv2 in a "
1202 "coordinate system which is not "
1203 "three-dimensional");
1227 goto UseLocRegionsMatrix;
1233 for (
int i = 0; i < coordim; ++i)
1239 goto UseStdRegionsMatrix;
1249 goto UseLocRegionsMatrix;
1254 goto UseStdRegionsMatrix;
1267 int rows = LapMat.GetRows();
1268 int cols = LapMat.GetColumns();
1274 (*helm) = LapMat + factor * MassMat;
1303 int rows = MassMat.GetRows();
1304 int cols = MassMat.GetColumns();
1310 (*adr) = -lambda * MassMat + AdvMat;
1316 if (!massVarcoeffs.empty())
1367 int rows = LapMat.GetRows();
1368 int cols = LapMat.GetColumns();
1374 (*adr) = LapMat - lambda * MassMat + AdvMat;
1380 if (!massVarcoeffs.empty())
1384 if (!lapVarcoeffs.empty())
1425 coords[0] = (vertex == 0) ? -1.0 : 1.0;
1427 m_Ix =
m_base[0]->GetI(coords);
1433 UseLocRegionsMatrix:
1439 UseStdRegionsMatrix:
1473 returnval = StdSegExp::v_GenMatrix(mkey);
1495 ASSERTL1(&inarray[0] != &outarray[0],
1496 "inarray and outarray can not be the same");
1501 outarray[0] = inarray[1];
1502 outarray[1] = inarray[0];
1506 outarray[m] = sgn * inarray[m];
1514 outarray[
m_ncoeffs - 1 - m] = inarray[m];
1518 ASSERTL0(
false,
"This basis is not allowed in this method");
1539 out = (*matsys) * in;
#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...
Describes the specification for a Basis.
Defines a specification for a set of points.
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
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...
void DropLocMatrix(const LocalRegions::MatrixKey &mkey)
SpatialDomains::Geometry * GetGeom() const
ExpansionSharedPtr GetLeftAdjacentElementExp() const
SpatialDomains::Geometry * m_geom
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
int GetLeftAdjacentElementTrace() const
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
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...
void v_DropLocMatrix(const MatrixKey &mkey) override
StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
void v_GetTracePhysVals(const int edge, const StdRegions::StdExpansionSharedPtr &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient) override
void v_PhysDeriv_s(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_ds) override
Evaluate the derivative along a line: . The derivative is calculated performing the product .
void v_GetVertexPhysVals(const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray) override
NekDouble v_PhysEvalFirstSecondDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs, std::array< NekDouble, 6 > &secondOrderDerivs) override
NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals) override
void ReverseCoeffsAndSign(const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Reverse the coefficients in a boundary interior expansion this routine is of use when we need the seg...
void v_NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray) override
DNekScalMatSharedPtr CreateMatrix(const MatrixKey &mkey)
StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
void v_FwdTransBndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Inner product of inarray over region with respect to the expansion basis (this)->_Base[0] and return ...
DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
SegExp(const LibUtilities::BasisKey &Ba, SpatialDomains::Geometry1D *geom)
Constructor using BasisKey class for quadrature points and order definition.
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray) override
Integrate the physical point list inarray over region and return the value.
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
void v_PhysDeriv_n(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_dn) override
Evaluate the derivative normal to a line: . The derivative is calculated performing the product .
void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int mode_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType) override
Unpack data from input file assuming it comes from.
void v_PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray) override
Evaluate the derivative at the physical quadrature points given by inarray and return in outarray.
void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
void MultiplyByElmtInvMass(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int v_NumBndryCoeffs() const override
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coord, const Array< OneD, const NekDouble > &physvals) override
void v_GetTracePhysMap(const int vertex, Array< OneD, int > &map) override
int v_NumDGBndryCoeffs() const override
DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_DropLocStaticCondMatrix(const MatrixKey &mkey) override
const Array< OneD, const NekDouble > & v_GetPhysNormals() override
DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
NekDouble v_PhysEvalFirstDeriv(const Array< OneD, NekDouble > &coord, const Array< OneD, const NekDouble > &inarray, std::array< NekDouble, 3 > &firstOrderDerivs) override
void v_ComputeTraceNormal(const int vertex) override
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
NekDouble GetCoord(const int i, const Array< OneD, const NekDouble > &Lcoord)
Given local collapsed coordinate Lcoord, return the value of physical coordinate in direction i.
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 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.
GeomFactorsSharedPtr GetMetricInfo()
Get the geometric factors for this object.
void PhysTensorDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Evaluate the derivative at the physical quadrature points given by inarray and return in outarray.
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
const LibUtilities::PointsKeyVector GetPointsKeys() const
void MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
void NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space.
DNekMatSharedPtr GenMatrix(const StdMatrixKey &mkey)
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
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
LibUtilities::ShapeType GetShapeType() const
const VarCoeffMap & GetVarCoeffs() const
MatrixType GetMatrixType() const
bool HasVarCoeff(const StdRegions::VarCoeffType &coeff) const
const ConstFactorMap & GetConstFactors() const
const Array< OneD, const NekDouble > & GetVarCoeff(const StdRegions::VarCoeffType &coeff) const
NekDouble GetConstFactor(const ConstFactorType &factor) const
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 = alpha A x plus beta y where A[m x n].
static void Dscal(const int &n, const double &alpha, double *x, const int &incx)
BLAS level 1: x = alpha x.
static double Ddot(const int &n, const double *x, const int &incx, const double *y, const int &incy)
BLAS level 1: output = .
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 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 ...
std::vector< PointsKey > PointsKeyVector
@ eGaussLegendreWithMP
1D Gauss-Legendre quadrature points with additional x=-1 and x=1 end points
@ eGaussLobattoChebyshev
1D Gauss-Lobatto-Legendre quadrature points
@ eFourierEvenlySpaced
1D Evenly-spaced points using Fourier Fit
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eGaussGaussChebyshev
1D Gauss-Gauss-Chebyshev quadrature points
@ ePolyEvenlySpaced
1D Evenly-spaced points using Lagrange polynomial
@ eGaussLobattoKronrodLegendre
1D Lobatto Kronrod quadrature points
@ eGaussGaussLegendre
1D Gauss-Gauss-Legendre quadrature points
@ eModified_B
Principle Modified Functions .
@ eGauss_Lagrange
Lagrange Polynomials using the Gauss points.
@ eOrtho_A
Principle Orthogonal Functions .
@ eGLL_Lagrange
Lagrange for SEM basis .
@ eModified_A
Principle Modified Functions .
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
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
@ eLinearAdvectionReaction
@ eLinearAdvectionDiffusionReaction
std::map< ConstFactorType, NekDouble > ConstFactorMap
static VarCoeffMap NullVarCoeffMap
std::shared_ptr< StdSegExp > StdSegExpSharedPtr
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayOfArray
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
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 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 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 Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
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 Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
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.
scalarT< T > min(scalarT< T > lhs, scalarT< T > rhs)
scalarT< T > sqrt(scalarT< T > in)