49 StdSegExp::StdSegExp()
92 bool returnval =
false;
125 int nquad0 =
m_base[0]->GetNumPoints();
168 ASSERTL1(dir==0,
"input dir is out of range");
188 ASSERTL1(dir==0,
"input dir is out of range");
222 int nquad =
m_base[0]->GetNumPoints();
224 if(
m_base[0]->Collocation())
231 #ifdef NEKTAR_USING_DIRECT_BLAS_CALLS
233 Blas::Dgemv(
'N',nquad,
m_base[0]->GetNumModes(),1.0, (
m_base[0]->GetBdata()).
get(),
234 nquad,&inarray[0],1,0.0,&outarray[0],1);
236 #else //NEKTAR_USING_DIRECT_BLAS_CALLS
243 #endif //NEKTAR_USING_DIRECT_BLAS_CALLS
253 int n_coeffs = inarray.num_elements();
260 int nmodes0 =
m_base[0]->GetNumModes();
261 int numMax = nmodes0;
273 b0, coeff_tmp, bortho0, coeff);
282 bortho0, coeff_tmp, b0, outarray);
306 if(
m_base[0]->Collocation())
329 if(
m_base[0]->Collocation())
358 ASSERTL0(
false,
"This type of FwdTrans is not defined for this expansion type");
361 fill(outarray.get(), outarray.get()+
m_ncoeffs, 0.0 );
385 Blas::Dgemv(
'N',nInteriorDofs,nInteriorDofs,1.0,
386 &(matsys->GetPtr())[0],nInteriorDofs,tmp1.get()
387 +offset,1,0.0,outarray.get()+offset,1);
440 int nquad =
m_base[0]->GetNumPoints();
458 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
459 &tmp[0],1,0.0,outarray.get(),1);
483 ASSERTL1(dir >= 0 && dir < 1,
"input dir is out of range");
490 bool multiplybyweights)
492 int nquad =
m_base[0]->GetNumPoints();
497 if(multiplybyweights)
501 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
502 &tmp[0],1,0.0,outarray.get(),1);
506 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
507 &inarray[0],1,0.0,outarray.get(),1);
521 int nquad =
m_base[0]->GetNumPoints();
525 "calling argument mode is larger than total expansion order");
543 int nquad =
m_base[0]->GetNumPoints();
561 int nquad =
m_base[0]->GetNumPoints();
583 int nquad0 =
m_base[0]->GetNumPoints();
588 w0.get(),1,outarray.get(),1);
624 const std::vector<unsigned int> &nummodes,
627 int nmodes = nummodes[modes_offset];
652 (*Mat) = Imass*Iprod;
694 int nummodes =
m_base[0]->GetNumModes();
704 outarray[1]= nummodes-1;
711 ASSERTL0(0,
"Mapping array is not defined for this expansion");
744 ASSERTL0(0,
"Mapping array is not defined for this expansion");
751 ASSERTL0((localVertexId==0)||(localVertexId==1),
"local vertex id"
752 "must be between 0 or 1");
754 int localDOF = localVertexId;
759 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)
void InterpCoeff1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
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
Principle Orthogonal Functions .
Defines a specification for a set of points.
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 void v_ReduceOrderCoeffs(int numMin, 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)
void Zero(int n, T *x, const int incx)
Zero vector.
#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)
1D Gauss-Lobatto-Legendre quadrature points
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)