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"))
121 int nquad0 =
m_base[0]->GetNumPoints();
137 ival = StdSegExp::v_Integral(tmp);
172 int nquad0 =
m_base[0]->GetNumPoints();
181 if(out_d0.num_elements())
187 if(out_d1.num_elements())
193 if(out_d2.num_elements())
201 if(out_d0.num_elements())
207 if(out_d1.num_elements())
213 if(out_d2.num_elements())
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();
638 Vmath::Vmul (nq, &Fx[0], 1, &normals[0][0], 1, &Fn[0], 1);
639 Vmath::Vvtvp(nq, &Fy[0], 1, &normals[1][0], 1, &Fn[0], 1, &Fn[0], 1);
666 return StdSegExp::v_PhysEvaluate(Lcoord,physvals);
676 m_geom->GetLocCoords(coord,Lcoord);
678 return StdSegExp::v_PhysEvaluate(Lcoord, physvals);
688 ASSERTL1(Lcoords[0] >= -1.0&& Lcoords[0] <= 1.0,
689 "Local coordinates are not in region [-1,1]");
692 for(i = 0; i <
m_geom->GetCoordim(); ++i)
694 coords[i] =
m_geom->GetCoord(i,Lcoords);
712 int nquad =
m_base[0]->GetNumPoints();
719 outarray = inarray[0];
722 outarray = inarray[nquad - 1];
737 outarray =
Blas::Ddot(nquad, mat_gauss->GetOwnedMatrix()
738 ->GetPtr().get(), 1, &inarray[0], 1);
750 boost::ignore_unused(EdgeExp, orient);
754 outarray[0] = result;
776 if (&inarray[0] != &outarray[0])
797 2,
m_base[0]->GetPointsKey());
805 return m_geom->GetCoordim();
851 const std::vector<unsigned int > &nummodes,
852 const int mode_offset,
854 std::vector<LibUtilities::BasisType> &fromType)
856 boost::ignore_unused(fromType);
862 int fillorder = min((
int) nummodes[mode_offset],
m_ncoeffs);
873 nummodes[mode_offset],
879 f0,data, t0, coeffs);
887 nummodes[mode_offset],
893 f0,data, t0, coeffs);
898 "basis is either not set up or not hierarchicial");
917 for (i = 0; i < vCoordDim; ++i)
931 for(i = 0; i < vCoordDim; ++i)
937 for(i = 0; i < vCoordDim; ++i)
944 "point is out of range (point < 2)");
949 for (i =0 ; i < vCoordDim; ++i)
951 vert += normal[i][0]*normal[i][0];
953 vert = 1.0/sqrt(vert);
954 for (i = 0; i < vCoordDim; ++i)
956 Vmath::Smul(nqe, vert, normal[i], 1, normal[i], 1);
971 boost::ignore_unused(mkey);
973 int nquad =
m_base[0]->GetNumPoints();
983 switch (
m_geom->GetCoordim())
993 &gmat[0][0],1,dPhysValuesdx.get(),1,
994 dPhysValuesdx.get(),1);
999 gmat[0][0], dPhysValuesdx.get(), 1);
1007 PhysDeriv(physValues,dPhysValuesdx,dPhysValuesdy);
1013 &gmat[0][0],1,dPhysValuesdx.get(),1,
1014 dPhysValuesdx.get(),1);
1016 &gmat[1][0],1,dPhysValuesdy.get(),1,
1017 dPhysValuesdx.get(),1,
1018 dPhysValuesdx.get(),1);
1023 gmat[0][0], dPhysValuesdx.get(), 1);
1025 gmat[1][0], dPhysValuesdy.get(), 1,
1026 dPhysValuesdx.get(), 1);
1036 dPhysValuesdy,dPhysValuesdz);
1042 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1043 dPhysValuesdx.get(),1);
1045 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1046 dPhysValuesdx.get(),1,
1047 dPhysValuesdx.get(),1);
1049 &gmat[2][0], 1, dPhysValuesdz.get(), 1,
1050 dPhysValuesdx.get(),1,
1051 dPhysValuesdx.get(),1);
1055 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1057 gmat[1][0], dPhysValuesdy.get(), 1,
1058 dPhysValuesdx.get(), 1);
1060 gmat[2][0], dPhysValuesdz.get(), 1,
1061 dPhysValuesdx.get(), 1);
1066 ASSERTL0(
false,
"Wrong number of dimensions");
1079 int nquad =
m_base[0]->GetNumPoints();
1095 switch (
m_geom->GetCoordim())
1105 &gmat[0][0],1,dPhysValuesdx.get(),1,
1106 dPhysValuesdx.get(),1);
1110 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1118 PhysDeriv(physValues, dPhysValuesdx, dPhysValuesdy);
1124 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1125 dPhysValuesdx.get(), 1);
1127 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1128 dPhysValuesdx.get(), 1,
1129 dPhysValuesdx.get(), 1);
1133 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1135 gmat[1][0], dPhysValuesdy.get(), 1,
1136 dPhysValuesdx.get(), 1);
1146 dPhysValuesdy, dPhysValuesdz);
1152 &gmat[0][0], 1, dPhysValuesdx.get(), 1,
1153 dPhysValuesdx.get(), 1);
1155 &gmat[1][0], 1, dPhysValuesdy.get(), 1,
1156 dPhysValuesdx.get(), 1,
1157 dPhysValuesdx.get(), 1);
1159 &gmat[2][0], 1, dPhysValuesdz.get(), 1,
1160 dPhysValuesdx.get(), 1,
1161 dPhysValuesdx.get(), 1);
1165 Blas::Dscal(nquad, gmat[0][0], dPhysValuesdx.get(), 1);
1167 gmat[1][0], dPhysValuesdy.get(), 1,
1168 dPhysValuesdx.get(), 1);
1170 gmat[2][0], dPhysValuesdz.get(),
1171 1, dPhysValuesdx.get(), 1);
1176 ASSERTL0(
false,
"Wrong number of dimensions");
1213 return tmp->GetStdMatrix(mkey);
1225 "Geometric information is not set up");
1235 goto UseLocRegionsMatrix;
1240 goto UseStdRegionsMatrix;
1261 goto UseStdRegionsMatrix;
1273 goto UseLocRegionsMatrix;
1285 "Cannot call eWeakDeriv2 in a " 1286 "coordinate system which is not at " 1287 "least two-dimensional");
1292 "Cannot call eWeakDeriv2 in a " 1293 "coordinate system which is not " 1294 "three-dimensional");
1318 goto UseLocRegionsMatrix;
1322 int coordim =
m_geom->GetCoordim();
1324 for (
int i = 0; i < coordim; ++i)
1330 goto UseStdRegionsMatrix;
1346 int rows = LapMat.GetRows();
1347 int cols = LapMat.GetColumns();
1353 (*helm) = LapMat + factor*MassMat;
1397 coords[0] = (vertex == 0) ? -1.0 : 1.0;
1399 m_Ix =
m_base[0]->GetI(coords);
1405 UseLocRegionsMatrix:
1412 UseStdRegionsMatrix:
1443 returnval = StdSegExp::v_GenMatrix(mkey);
1458 "Geometric information is not set up");
1464 exp_size[0] = nbdry;
1480 goto UseLocRegionsMatrix;
1486 goto UseLocRegionsMatrix;
1491 factor = mat->Scale();
1492 goto UseStdRegionsMatrix;
1495 UseStdRegionsMatrix:
1503 returnval->SetBlock(0,0,Atmp =
1505 factor,Asubmat = mat->GetBlock(0,0)));
1506 returnval->SetBlock(0,1,Atmp =
1508 one,Asubmat = mat->GetBlock(0,1)));
1509 returnval->SetBlock(1,0,Atmp =
1511 factor,Asubmat = mat->GetBlock(1,0)));
1512 returnval->SetBlock(1,1,Atmp =
1514 invfactor,Asubmat = mat->GetBlock(1,1)));
1517 UseLocRegionsMatrix:
1537 for (i = 0; i < nbdry; ++i)
1539 for (j = 0; j < nbdry; ++j)
1541 (*A)(i,j) = mat(bmap[i],bmap[j]);
1544 for (j = 0; j < nint; ++j)
1546 (*B)(i,j) = mat(bmap[i],imap[j]);
1550 for (i = 0; i < nint; ++i)
1552 for (j = 0; j < nbdry; ++j)
1554 (*C)(i,j) = mat(imap[i],bmap[j]);
1557 for (j = 0; j < nint; ++j)
1559 (*D)(i,j) = mat(imap[i],imap[j]);
1568 (*A) = (*A) - (*B)*(*C);
1574 AllocateSharedPtr(factor,A));
1576 AllocateSharedPtr(one,B));
1578 AllocateSharedPtr(factor,C));
1580 AllocateSharedPtr(invfactor,D));
1606 ASSERTL1(&inarray[0] != &outarray[0],
1607 "inarray and outarray can not be the same");
1612 outarray[0] = inarray[1];
1613 outarray[1] = inarray[0];
1617 outarray[m] = sgn*inarray[m];
1625 outarray[m_ncoeffs-1-m] = inarray[m];
1629 ASSERTL0(
false,
"This basis is not allowed in this method");
virtual int v_GetNcoeffs(void) const
virtual DNekScalBlkMatSharedPtr v_GetLocStaticCondMatrix(const MatrixKey &mkey)
const VarCoeffMap & GetVarCoeffs() const
DNekMatSharedPtr GenMatrix(const StdMatrixKey &mkey)
#define ASSERTL0(condition, msg)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
virtual void v_GetCoord(const Array< OneD, const NekDouble > &Lcoords, Array< OneD, NekDouble > &coords)
std::vector< PointsKey > PointsKeyVector
void v_DropLocStaticCondMatrix(const MatrixKey &mkey)
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.
LibUtilities::NekManager< MatrixKey, DNekScalBlkMat, MatrixKey::opLess > m_staticCondMatrixManager
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
int NumBndryCoeffs(void) const
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey)
virtual NekDouble v_StdPhysEvaluate(const Array< OneD, const NekDouble > &Lcoord, const Array< OneD, const NekDouble > &physvals)
virtual int v_NumDGBndryCoeffs() const
std::map< int, NormalVector > m_vertexNormals
SpatialDomains::GeometrySharedPtr GetGeom() const
std::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
int GetLeftAdjacentElementEdge() const
virtual void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Forward transform from physical quadrature space stored in inarray and evaluate the expansion coeffic...
virtual void v_PhysDeriv_n(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_dn)
Evaluate the derivative normal to a line: . The derivative is calculated performing the product ...
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
Principle Modified Functions .
void NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, Array< OneD, NekDouble > &outarray)
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
Lagrange Polynomials using the Gauss points .
virtual void v_GetTracePhysVals(const int edge, const StdRegions::StdExpansionSharedPtr &EdgeExp, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, StdRegions::Orientation orient)
virtual void v_ExtractDataToCoeffs(const NekDouble *data, const std::vector< unsigned int > &nummodes, const int mode_offset, NekDouble *coeffs, std::vector< LibUtilities::BasisType > &fromType)
Unpack data from input file assuming it comes from.
std::map< ConstFactorType, NekDouble > ConstFactorMap
StdSegExp()
Default constructor.
std::shared_ptr< DNekMat > DNekMatSharedPtr
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.
SpatialDomains::GeometrySharedPtr m_geom
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Inner product of inarray over region with respect to the expansion basis (this)->_Base[0] and return ...
MatrixType GetMatrixType() const
virtual void v_PhysDeriv_s(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_ds)
Evaluate the derivative along a line: . The derivative is calculated performing the product ...
std::shared_ptr< Basis > BasisSharedPtr
std::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
void PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
virtual void v_NormVectorIProductWRTBase(const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
1D Gauss-Gauss-Legendre quadrature points
1D Evenly-spaced points using Lagrange polynomial
const LibUtilities::PointsKeyVector GetPointsKeys() const
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
DNekBlkMatSharedPtr GetStdStaticCondMatrix(const StdMatrixKey &mkey)
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
virtual StdRegions::StdExpansionSharedPtr v_GetLinStdExp(void) const
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...
const LibUtilities::BasisSharedPtr & GetBasis(int dir) const
This function gets the shared point to basis in the dir direction.
virtual SpatialDomains::GeomType v_MetricInfoType()
virtual DNekMatSharedPtr v_GenMatrix(const StdRegions::StdMatrixKey &mkey)
Principle Modified Functions .
virtual void v_ComputeVertexNormal(const int vertex)
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
virtual StdRegions::StdExpansionSharedPtr v_GetStdExp(void) const
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
void GetInteriorMap(Array< OneD, unsigned int > &outarray)
virtual int v_NumBndryCoeffs() const
Defines a specification for a set of points.
virtual const LibUtilities::BasisSharedPtr & v_GetBasis(int dir) 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].
virtual const Array< OneD, const NekDouble > & v_GetPhysNormals(void)
DNekScalBlkMatSharedPtr CreateStaticCondMatrix(const MatrixKey &mkey)
virtual void v_FwdTrans_BndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::StdMatrixKey &mkey)
DNekScalMatSharedPtr CreateMatrix(const MatrixKey &mkey)
NekDouble GetConstFactor(const ConstFactorType &factor) const
virtual int v_GetNumPoints(const int dir) const
virtual DNekScalMatSharedPtr v_GetLocMatrix(const MatrixKey &mkey)
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.
virtual void v_GetVertexPhysVals(const int vertex, const Array< OneD, const NekDouble > &inarray, NekDouble &outarray)
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
static void Dscal(const int &n, const double &alpha, double *x, const int &incx)
BLAS level 1: x = alpha x.
const NormalVector & GetEdgeNormal(const int edge) const
const ConstFactorMap & GetConstFactors() const
static double Ddot(const int &n, const double *x, const int &incx, const double *y, const int &incy)
BLAS level 1: output = .
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
virtual void v_SetCoeffsToOrientation(Array< OneD, NekDouble > &coeffs, StdRegions::Orientation dir)
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 MultiplyByElmtInvMass(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
Geometry is straight-sided with constant geometric factors.
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
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 ...
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)
Evaluate the derivative at the physical quadrature points given by inarray and return in 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 int v_GetCoordim()
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray)
Integrate the physical point list inarray over region and return the value.
std::shared_ptr< Geometry1D > Geometry1DSharedPtr
StdExpansion()
Default Constructor.
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdRegions::StdMatrixKey &mkey)
GeomType
Indicates the type of element geometry.
Expansion2DSharedPtr GetLeftAdjacentElementExp() const
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayofArray
std::shared_ptr< StdSegExp > StdSegExpSharedPtr
void Zero(int n, T *x, const int incx)
Zero vector.
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Array< OneD, LibUtilities::BasisSharedPtr > m_base
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)
Geometry is curved or has non-constant factors.
LibUtilities::ShapeType GetShapeType() const
void GetBoundaryMap(Array< OneD, unsigned int > &outarray)
Describes the specification for a Basis.
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coord, const Array< OneD, const NekDouble > &physvals)
1D Gauss-Lobatto-Legendre quadrature points
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.
LibUtilities::NekManager< MatrixKey, DNekScalMat, MatrixKey::opLess > m_matrixManager