47 StdSegExp::StdSegExp()
90 bool returnval =
false;
123 int nquad0 =
m_base[0]->GetNumPoints();
166 ASSERTL1(dir==0,
"input dir is out of range");
186 ASSERTL1(dir==0,
"input dir is out of range");
220 int nquad =
m_base[0]->GetNumPoints();
222 if(
m_base[0]->Collocation())
229 #ifdef NEKTAR_USING_DIRECT_BLAS_CALLS
231 Blas::Dgemv(
'N',nquad,
m_base[0]->GetNumModes(),1.0, (
m_base[0]->GetBdata()).
get(),
232 nquad,&inarray[0],1,0.0,&outarray[0],1);
234 #else //NEKTAR_USING_DIRECT_BLAS_CALLS
241 #endif //NEKTAR_USING_DIRECT_BLAS_CALLS
268 if(
m_base[0]->Collocation())
291 if(
m_base[0]->Collocation())
320 ASSERTL0(
false,
"This type of FwdTrans is not defined for this expansion type");
323 fill(outarray.get(), outarray.get()+
m_ncoeffs, 0.0 );
347 Blas::Dgemv(
'N',nInteriorDofs,nInteriorDofs,1.0,
348 &(matsys->GetPtr())[0],nInteriorDofs,tmp1.get()
349 +offset,1,0.0,outarray.get()+offset,1);
402 int nquad =
m_base[0]->GetNumPoints();
420 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
421 &tmp[0],1,0.0,outarray.get(),1);
445 ASSERTL1(dir >= 0 && dir < 1,
"input dir is out of range");
452 bool multiplybyweights)
454 int nquad =
m_base[0]->GetNumPoints();
459 if(multiplybyweights)
463 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
464 &tmp[0],1,0.0,outarray.get(),1);
468 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
469 &inarray[0],1,0.0,outarray.get(),1);
483 int nquad =
m_base[0]->GetNumPoints();
487 "calling argument mode is larger than total expansion order");
505 int nquad =
m_base[0]->GetNumPoints();
523 int nquad =
m_base[0]->GetNumPoints();
545 int nquad0 =
m_base[0]->GetNumPoints();
550 w0.get(),1,outarray.get(),1);
586 const std::vector<unsigned int> &nummodes,
589 int nmodes = nummodes[modes_offset];
614 (*Mat) = Imass*Iprod;
656 int nummodes =
m_base[0]->GetNumModes();
666 outarray[1]= nummodes-1;
673 ASSERTL0(0,
"Mapping array is not defined for this expansion");
706 ASSERTL0(0,
"Mapping array is not defined for this expansion");
713 ASSERTL0((localVertexId==0)||(localVertexId==1),
"local vertex id"
714 "must be between 0 or 1");
716 int localDOF = localVertexId;
721 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)