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();
272 b0, coeff_tmp, bortho0, coeff);
281 bortho0, coeff_tmp, b0, outarray);
305 if(
m_base[0]->Collocation())
328 if(
m_base[0]->Collocation())
357 ASSERTL0(
false,
"This type of FwdTrans is not defined for this expansion type");
360 fill(outarray.get(), outarray.get()+
m_ncoeffs, 0.0 );
384 Blas::Dgemv(
'N',nInteriorDofs,nInteriorDofs,1.0,
385 &(matsys->GetPtr())[0],nInteriorDofs,tmp1.get()
386 +offset,1,0.0,outarray.get()+offset,1);
439 int nquad =
m_base[0]->GetNumPoints();
457 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
458 &tmp[0],1,0.0,outarray.get(),1);
482 ASSERTL1(dir >= 0 && dir < 1,
"input dir is out of range");
489 bool multiplybyweights)
491 int nquad =
m_base[0]->GetNumPoints();
496 if(multiplybyweights)
500 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
501 &tmp[0],1,0.0,outarray.get(),1);
505 Blas::Dgemv(
'T',nquad,
m_ncoeffs,1.0,base.get(),nquad,
506 &inarray[0],1,0.0,outarray.get(),1);
520 int nquad =
m_base[0]->GetNumPoints();
524 "calling argument mode is larger than total expansion order");
542 int nquad =
m_base[0]->GetNumPoints();
560 int nquad =
m_base[0]->GetNumPoints();
582 int nquad0 =
m_base[0]->GetNumPoints();
587 w0.get(),1,outarray.get(),1);
623 const std::vector<unsigned int> &nummodes,
626 int nmodes = nummodes[modes_offset];
645 int nq =
m_base[0]->GetNumPoints();
660 for(
int i = 0; i < neq; ++i)
662 coords[0] = -1.0 + 2*i/(
NekDouble)(neq-1);
663 I =
m_base[0]->GetI(coords);
665 Mat->GetRawPtr()+i,neq);
677 (*Mat) = Imass*Iprod;
719 int nummodes =
m_base[0]->GetNumModes();
729 outarray[1]= nummodes-1;
736 ASSERTL0(0,
"Mapping array is not defined for this expansion");
769 ASSERTL0(0,
"Mapping array is not defined for this expansion");
776 ASSERTL0((localVertexId==0)||(localVertexId==1),
"local vertex id"
777 "must be between 0 or 1");
779 int localDOF = localVertexId;
784 localDOF =
m_base[0]->GetNumModes()-1;
793 int np =
m_base[0]->GetNumPoints();
797 for(
int i = 0; i < np-1; ++i)
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)
bool ConstFactorExists(const ConstFactorType &factor) const
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)
int getNumberOfCoefficients(int Na)
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 void v_GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true)
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)