88 bool returnval =
false;
121 int nquad0 =
m_base[0]->GetNumPoints();
164 ASSERTL1(dir==0,
"input dir is out of range");
184 ASSERTL1(dir==0,
"input dir is out of range");
218 int nquad =
m_base[0]->GetNumPoints();
220 if(
m_base[0]->Collocation())
227 #ifdef NEKTAR_USING_DIRECT_BLAS_CALLS
229 Blas::Dgemv(
'N',nquad,
m_base[0]->GetNumModes(),1.0, (
m_base[0]->GetBdata()).
get(),
230 nquad,&inarray[0],1,0.0,&outarray[0],1);
232 #else //NEKTAR_USING_DIRECT_BLAS_CALLS
239 #endif //NEKTAR_USING_DIRECT_BLAS_CALLS
266 if(
m_base[0]->Collocation())
289 if(
m_base[0]->Collocation())
318 ASSERTL0(
false,
"This type of FwdTrans is not defined for this expansion type");
321 fill(outarray.get(), outarray.get()+
m_ncoeffs, 0.0 );
345 Blas::Dgemv(
'N',nInteriorDofs,nInteriorDofs,1.0,
346 &(matsys->GetPtr())[0],nInteriorDofs,tmp1.get()
347 +offset,1,0.0,outarray.get()+offset,1);
400 int nquad =
m_base[0]->GetNumPoints();
418 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
419 &tmp[0],1,0.0,outarray.get(),1);
443 ASSERTL1(dir >= 0 && dir < 1,
"input dir is out of range");
450 bool multiplybyweights)
452 int nquad =
m_base[0]->GetNumPoints();
457 if(multiplybyweights)
461 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
462 &tmp[0],1,0.0,outarray.get(),1);
466 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
467 &inarray[0],1,0.0,outarray.get(),1);
481 int nquad =
m_base[0]->GetNumPoints();
485 "calling argument mode is larger than total expansion order");
503 int nquad =
m_base[0]->GetNumPoints();
521 int nquad =
m_base[0]->GetNumPoints();
543 int nquad0 =
m_base[0]->GetNumPoints();
548 w0.get(),1,outarray.get(),1);
584 const std::vector<unsigned int> &nummodes,
587 int nmodes = nummodes[modes_offset];
612 (*Mat) = Imass*Iprod;
654 int nummodes =
m_base[0]->GetNumModes();
664 outarray[1]= nummodes-1;
671 ASSERTL0(0,
"Mapping array is not defined for this expansion");
704 ASSERTL0(0,
"Mapping array is not defined for this expansion");
711 ASSERTL0((localVertexId==0)||(localVertexId==1),
"local vertex id"
712 "must be between 0 or 1");
714 int localDOF = localVertexId;
719 localDOF =
m_base[0]->GetNumModes()-1;
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray)
Integrate the physical point list inarray over region and return the value.
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
NekDouble GetConstFactor(const ConstFactorType &factor) const
#define ASSERTL0(condition, msg)
virtual void v_GetBoundaryMap(Array< OneD, unsigned int > &outarray)
virtual int v_NumDGBndryCoeffs() const
virtual void v_StdPhysDeriv(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_GetCoords(Array< OneD, NekDouble > &coords_0, Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2)
MatrixType GetMatrixType() const
void MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
virtual void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Backward transform from coefficient space given in inarray and evaluate at the physical quadrature po...
virtual void v_BwdTrans_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual int v_NumBndryCoeffs() const
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
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...
Principle Modified Functions .
Lagrange Polynomials using the Gauss points .
virtual void v_FillMode(const int mode, Array< OneD, NekDouble > &outarray)
StdSegExp()
Default constructor.
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess > m_stdStaticCondMatrixManager
boost::shared_ptr< DNekMat > DNekMatSharedPtr
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
virtual bool v_IsBoundaryInteriorExpansion()
virtual int v_GetVertexMap(int localVertexId, bool useCoeffPacking=false)
virtual int v_CalcNumberOfCoefficients(const std::vector< unsigned int > &nummodes, int &modes_offset)
Class representing a segment element in reference space.
int NumBndryCoeffs(void) const
The base class for all shapes.
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
virtual int v_GetNverts() const
virtual DNekMatSharedPtr v_GenMatrix(const StdMatrixKey &mkey)
Principle Modified Functions .
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdMatrixKey &mkey)
DNekMatSharedPtr CreateGeneralMatrix(const StdMatrixKey &mkey)
this function generates the mass matrix
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)->m_base[0] and return...
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &Lcoords, const Array< OneD, const NekDouble > &physvals)
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
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 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...
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
virtual void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
virtual void v_FwdTrans_BndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual LibUtilities::ShapeType v_DetShapeType() const
Return Shape of region, using ShapeType enum list. i.e. Segment.
T Vsum(int n, const T *x, const int incx)
Subtract return sum(x)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Array< OneD, LibUtilities::BasisSharedPtr > m_base
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
Describes the specification for a Basis.
virtual NekDouble v_PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &physvals)
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 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.
virtual void v_IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true)
virtual void v_GetInteriorMap(Array< OneD, unsigned int > &outarray)