35 #include <boost/core/ignore_unused.hpp>
45 namespace LocalRegions
61 StdExpansion(Ba.GetNumModes(), 1, Ba),
62 StdExpansion1D(Ba.GetNumModes(), Ba),
63 StdRegions::StdSegExp(Ba),
67 std::bind(&
SegExp::CreateMatrix, this, std::placeholders::_1),
68 std::string(
"SegExpMatrix")),
69 m_staticCondMatrixManager(
70 std::bind(&
SegExp::CreateStaticCondMatrix, this, std::placeholders::_1),
71 std::string(
"SegExpStaticCondMatrix"))
83 StdRegions::StdSegExp(S),
86 m_matrixManager(S.m_matrixManager),
87 m_staticCondMatrixManager(S.m_staticCondMatrixManager)
121 int nquad0 =
m_base[0]->GetNumPoints();
137 ival = StdSegExp::v_Integral(tmp);
172 int nquad0 =
m_base[0]->GetNumPoints();
233 int nquad0 =
m_base[0]->GetNumPoints();
234 int coordim =
m_geom->GetCoordim();
273 int nquad0 =
m_base[0]->GetNumPoints();
276 int coordim =
m_geom->GetCoordim();
289 for(
int k=0; k<coordim; ++k)
296 for(
int i=0; i<nquad0; i++)
298 cout<<
"nx= "<<normals[0][i]<<
" ny="<<normals[1][i]<<endl;
301 "normal vectors do not exist: check if a"
302 "boundary region is defined as I ");
304 Vmath::Vmul(nquad0,normals[0],1,inarray_d0,1,out_dn_tmp,1);
305 Vmath::Vadd(nquad0,out_dn_tmp,1,out_dn,1,out_dn,1);
307 Vmath::Vmul(nquad0,normals[1],1,inarray_d1,1,out_dn_tmp,1);
308 Vmath::Vadd(nquad0,out_dn_tmp,1,out_dn,1,out_dn,1);
310 for(
int i=0; i<nquad0; i++)
312 cout<<
"deps/dx ="<<inarray_d0[i]<<
" deps/dy="<<inarray_d1[i]<<endl;
345 ASSERTL1(
false,
"input dir is out of range");
381 if (
m_base[0]->Collocation())
405 if(
m_base[0]->Collocation())
432 "Cannot use FwdTrans_BndConstrained with these points.");
437 ASSERTL0(
false,
"This type of FwdTrans is not defined"
438 "for this expansion type");
441 fill(outarray.get(), outarray.get()+
m_ncoeffs, 0.0 );
448 inarray[
m_base[0]->GetNumPoints()-1];
473 &((matsys->GetOwnedMatrix())->GetPtr())[0],
474 nInteriorDofs,tmp1.get()+offset,1,0.0,
475 outarray.get()+offset,1);
547 int nquad0 =
m_base[0]->GetNumPoints();
561 StdSegExp::v_IProductWRTBase(base,tmp,outarray,coll_check);
570 int nquad =
m_base[0]->GetNumPoints();
586 Vmath::Smul(nquad, gmat[0][0], inarray, 1, tmp1, 1);
598 Vmath::Smul(nquad, gmat[1][0], inarray, 1, tmp1, 1);
611 Vmath::Smul(nquad, gmat[2][0], inarray, 1, tmp1, 1);
617 ASSERTL1(
false,
"input dir is out of range");
629 int nq =
m_base[0]->GetNumPoints();
637 Vmath::Vmul (nq, &Fx[0], 1, &normals[0][0], 1, &Fn[0], 1);
638 Vmath::Vvtvp(nq, &Fy[0], 1, &normals[1][0], 1, &Fn[0], 1, &Fn[0], 1);
665 return StdSegExp::v_PhysEvaluate(Lcoord,physvals);
675 m_geom->GetLocCoords(coord,Lcoord);
677 return StdSegExp::v_PhysEvaluate(Lcoord, physvals);
687 ASSERTL1(Lcoords[0] >= -1.0&& Lcoords[0] <= 1.0,
688 "Local coordinates are not in region [-1,1]");
691 for(i = 0; i <
m_geom->GetCoordim(); ++i)
693 coords[i] =
m_geom->GetCoord(i,Lcoords);
711 int nquad =
m_base[0]->GetNumPoints();
718 outarray = inarray[0];
721 outarray = inarray[nquad - 1];
736 outarray =
Blas::Ddot(nquad, mat_gauss->GetOwnedMatrix()
737 ->GetPtr().get(), 1, &inarray[0], 1);
747 size_t nquad =
m_base[0]->GetNumPoints();
754 outarray[0] += inarray;
757 outarray[nquad - 1] += inarray;
773 mat_gauss->GetOwnedMatrix()->GetPtr().get(), 1,
774 &outarray[0], 1, &outarray[0], 1);
785 boost::ignore_unused(EdgeExp, orient);
789 outarray[0] = result;
797 int nquad =
m_base[0]->GetNumPoints();
799 ASSERTL1(vertex == 0 || vertex == 1,
800 "Vertex value should be 0 or 1");
804 map[0] = vertex == 0 ? 0: nquad - 1;
819 if (&inarray[0] != &outarray[0])
840 2,
m_base[0]->GetPointsKey());
848 return m_geom->GetCoordim();
894 const std::vector<unsigned int > &nummodes,
895 const int mode_offset,
897 std::vector<LibUtilities::BasisType> &fromType)
899 boost::ignore_unused(fromType);
905 int fillorder = min((
int) nummodes[mode_offset],
m_ncoeffs);
916 nummodes[mode_offset],
922 f0,data, t0, coeffs);
930 nummodes[mode_offset],
936 f0,data, t0, coeffs);
941 "basis is either not set up or not hierarchicial");
960 for (i = 0; i < vCoordDim; ++i)
980 for(i = 0; i < vCoordDim; ++i)
986 for(i = 0; i < vCoordDim; ++i)
993 "point is out of range (point < 2)");
998 for (i =0 ; i < vCoordDim; ++i)
1000 vert += normal[i][0]*normal[i][0];
1002 vert = 1.0/
sqrt(vert);
1006 for (i = 0; i < vCoordDim; ++i)
1008 Vmath::Smul(nqe, vert, normal[i], 1, normal[i], 1);
1023 boost::ignore_unused(mkey);
1025 int nquad =
m_base[0]->GetNumPoints();
1035 switch (
m_geom->GetCoordim())
1045 &gmat[0][0],1,dPhysValuesdx.get(),1,
1046 dPhysValuesdx.get(),1);
1051 gmat[0][0], dPhysValuesdx.get(), 1);
1059 PhysDeriv(physValues,dPhysValuesdx,dPhysValuesdy);
1065 &gmat[0][0],1,dPhysValuesdx.get(),1,
1066 dPhysValuesdx.get(),1);
1068 &gmat[1][0],1,dPhysValuesdy.get(),1,
1069 dPhysValuesdx.get(),1,
1070 dPhysValuesdx.get(),1);
1075 gmat[0][0], dPhysValuesdx.get(), 1);
1077 gmat[1][0], dPhysValuesdy.get(), 1,
1078 dPhysValuesdx.get(), 1);
1088 dPhysValuesdy,dPhysValuesdz);
1094 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1095 dPhysValuesdx.get(),1);
1097 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1098 dPhysValuesdx.get(),1,
1099 dPhysValuesdx.get(),1);
1101 &gmat[2][0], 1, dPhysValuesdz.get(), 1,
1102 dPhysValuesdx.get(),1,
1103 dPhysValuesdx.get(),1);
1107 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1109 gmat[1][0], dPhysValuesdy.get(), 1,
1110 dPhysValuesdx.get(), 1);
1112 gmat[2][0], dPhysValuesdz.get(), 1,
1113 dPhysValuesdx.get(), 1);
1118 ASSERTL0(
false,
"Wrong number of dimensions");
1131 int nquad =
m_base[0]->GetNumPoints();
1147 switch (
m_geom->GetCoordim())
1157 &gmat[0][0],1,dPhysValuesdx.get(),1,
1158 dPhysValuesdx.get(),1);
1162 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1170 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy);
1176 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1177 dPhysValuesdx.get(), 1);
1179 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1180 dPhysValuesdx.get(), 1,
1181 dPhysValuesdx.get(), 1);
1185 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1187 gmat[1][0], dPhysValuesdy.get(), 1,
1188 dPhysValuesdx.get(), 1);
1198 dPhysValuesdy, dPhysValuesdz);
1204 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1205 dPhysValuesdx.get(), 1);
1207 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1208 dPhysValuesdx.get(), 1,
1209 dPhysValuesdx.get(), 1);
1211 &gmat[2][0], 1, dPhysValuesdz.get(), 1,
1212 dPhysValuesdx.get(), 1,
1213 dPhysValuesdx.get(), 1);
1217 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1219 gmat[1][0], dPhysValuesdy.get(), 1,
1220 dPhysValuesdx.get(), 1);
1222 gmat[2][0], dPhysValuesdz.get(),
1223 1, dPhysValuesdx.get(), 1);
1228 ASSERTL0(
false,
"Wrong number of dimensions");
1265 return tmp->GetStdMatrix(mkey);
1277 "Geometric information is not set up");
1287 goto UseLocRegionsMatrix;
1292 goto UseStdRegionsMatrix;
1313 goto UseStdRegionsMatrix;
1325 goto UseLocRegionsMatrix;
1337 "Cannot call eWeakDeriv2 in a "
1338 "coordinate system which is not at "
1339 "least two-dimensional");
1344 "Cannot call eWeakDeriv2 in a "
1345 "coordinate system which is not "
1346 "three-dimensional");
1370 goto UseLocRegionsMatrix;
1374 int coordim =
m_geom->GetCoordim();
1376 for (
int i = 0; i < coordim; ++i)
1382 goto UseStdRegionsMatrix;
1398 int rows = LapMat.GetRows();
1399 int cols = LapMat.GetColumns();
1405 (*helm) = LapMat + factor*MassMat;
1449 coords[0] = (vertex == 0) ? -1.0 : 1.0;
1451 m_Ix =
m_base[0]->GetI(coords);
1457 UseLocRegionsMatrix:
1464 UseStdRegionsMatrix:
1495 returnval = StdSegExp::v_GenMatrix(mkey);
1510 "Geometric information is not set up");
1516 exp_size[0] = nbdry;
1532 goto UseLocRegionsMatrix;
1538 goto UseLocRegionsMatrix;
1543 factor = mat->Scale();
1544 goto UseStdRegionsMatrix;
1547 UseStdRegionsMatrix:
1555 returnval->SetBlock(0,0,Atmp =
1557 factor,Asubmat = mat->GetBlock(0,0)));
1558 returnval->SetBlock(0,1,Atmp =
1560 one,Asubmat = mat->GetBlock(0,1)));
1561 returnval->SetBlock(1,0,Atmp =
1563 factor,Asubmat = mat->GetBlock(1,0)));
1564 returnval->SetBlock(1,1,Atmp =
1566 invfactor,Asubmat = mat->GetBlock(1,1)));
1569 UseLocRegionsMatrix:
1589 for (i = 0; i < nbdry; ++i)
1591 for (j = 0; j < nbdry; ++j)
1593 (*A)(i,j) = mat(bmap[i],bmap[j]);
1596 for (j = 0; j < nint; ++j)
1598 (*B)(i,j) = mat(bmap[i],imap[j]);
1602 for (i = 0; i < nint; ++i)
1604 for (j = 0; j < nbdry; ++j)
1606 (*C)(i,j) = mat(imap[i],bmap[j]);
1609 for (j = 0; j < nint; ++j)
1611 (*D)(i,j) = mat(imap[i],imap[j]);
1620 (*A) = (*A) - (*B)*(*C);
1626 AllocateSharedPtr(factor,
A));
1628 AllocateSharedPtr(one,B));
1630 AllocateSharedPtr(factor,C));
1632 AllocateSharedPtr(invfactor,D));
1658 ASSERTL1(&inarray[0] != &outarray[0],
1659 "inarray and outarray can not be the same");
1664 outarray[0] = inarray[1];
1665 outarray[1] = inarray[0];
1669 outarray[m] = sgn*inarray[m];
1681 ASSERTL0(
false,
"This basis is not allowed in this method");
#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.
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey)
std::map< int, NormalVector > m_vertexNormals
std::map< int, Array< OneD, NekDouble > > m_elmtBndNormDirElmtLen
the element length in each element boundary(Vertex, edge or face) normal direction calculated based o...
SpatialDomains::GeometrySharedPtr GetGeom() const
SpatialDomains::GeometrySharedPtr m_geom
ExpansionSharedPtr GetLeftAdjacentElementExp() const
const NormalVector & GetTraceNormal(const int id) const
int GetLeftAdjacentElementTrace() const
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
virtual void v_FwdTrans_BndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
virtual 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 StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const override
virtual void v_GetTracePhysVals(const int edge, const StdRegions::StdExpansionSharedPtr &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient) override
virtual 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 .
virtual int v_GetNumPoints(const int dir) const
virtual void v_GetVertexPhysVals(const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray) override
virtual 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...
virtual 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)
virtual int v_GetCoordim() override
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const override
virtual 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 ...
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey) override
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray) override
Integrate the physical point list inarray over region and return the value.
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey) override
virtual 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 .
virtual 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.
virtual 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.
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3) override
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey) override
void MultiplyByElmtInvMass(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual int v_NumBndryCoeffs() const override
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coord, const Array< OneD, const NekDouble > &physvals) override
virtual void v_GetTracePhysMap(const int vertex, Array< OneD, int > &map) override
virtual int v_NumDGBndryCoeffs() const override
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey) override
virtual void v_SetCoeffsToOrientation(StdRegions::Orientation dir, Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_DropLocStaticCondMatrix(const MatrixKey &mkey) override
virtual DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey) override
virtual void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords) override
virtual void v_AddVertexPhysVals(const int vertex, const NekDouble &inarray, Array< OneD, NekDouble > &outarray)
virtual int v_GetNcoeffs(void) const
virtual const LibUtilities::BasisSharedPtr & v_GetBasis(int dir) const
virtual SpatialDomains::GeomType v_MetricInfoType()
virtual void v_ComputeTraceNormal(const int vertex) override
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals(void) override
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
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.
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.
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
const LibUtilities::BasisSharedPtr & GetBasis(int dir) const
This function gets the shared point to basis in the dir direction.
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
int NumBndryCoeffs(void) const
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
const LibUtilities::PointsKeyVector GetPointsKeys() const
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
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 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.
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
const ConstFactorMap & GetConstFactors() const
LibUtilities::ShapeType GetShapeType() const
const VarCoeffMap & GetVarCoeffs() const
MatrixType GetMatrixType() 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 = A x 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.
std::shared_ptr< Basis > BasisSharedPtr
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
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ ePolyEvenlySpaced
1D Evenly-spaced points using Lagrange polynomial
@ eGaussGaussLegendre
1D Gauss-Gauss-Legendre quadrature points
@ eModified_B
Principle Modified Functions .
@ eGauss_Lagrange
Lagrange Polynomials using the Gauss points .
@ 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< Geometry1D > Geometry1DSharedPtr
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
std::shared_ptr< StdSegExp > StdSegExpSharedPtr
The above copyright notice and this permission notice shall be included.
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
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 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 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 > sqrt(scalarT< T > in)