35#include <boost/core/ignore_unused.hpp> 
   84    bool returnval = 
false;
 
  114    int nquad0    = 
m_base[0]->GetNumPoints();
 
  145    boost::ignore_unused(out_d1, out_d2);
 
  153    boost::ignore_unused(dir);
 
  154    ASSERTL1(dir == 0, 
"input dir is out of range");
 
  164    boost::ignore_unused(out_d1, out_d2);
 
  173    boost::ignore_unused(dir);
 
  174    ASSERTL1(dir == 0, 
"input dir is out of range");
 
  205    int nquad = 
m_base[0]->GetNumPoints();
 
  207    if (
m_base[0]->Collocation())
 
  215                    (
m_base[0]->GetBdata()).get(), nquad, &inarray[0], 1, 0.0,
 
  224    int n_coeffs = inarray.size();
 
  231    int nmodes0 = 
m_base[0]->GetNumModes();
 
  246    Vmath::Vcopy(numMin, tmp = coeff, 1, tmp2 = coeff_tmp, 1);
 
  272    if (
m_base[0]->Collocation())
 
  287        out = (*matsys) * in;
 
  295    if (
m_base[0]->Collocation())
 
  324                ASSERTL0(
false, 
"This type of FwdTrans is not defined for this " 
  328        fill(outarray.get(), outarray.get() + 
m_ncoeffs, 0.0);
 
  352                Blas::Dgemv(
'N', nInteriorDofs, nInteriorDofs, 1.0,
 
  353                            &(matsys->GetPtr())[0], nInteriorDofs,
 
  354                            tmp1.get() + offset, 1, 0.0,
 
  355                            outarray.get() + offset, 1);
 
  401    boost::ignore_unused(coll_check);
 
  403    int nquad = 
m_base[0]->GetNumPoints();
 
  452    boost::ignore_unused(dir);
 
  453    ASSERTL1(dir == 0, 
"input dir is out of range");
 
  461    int nquad = 
m_base[0]->GetNumPoints();
 
  466    if (multiplybyweights)
 
  471                    0.0, outarray.get(), 1);
 
  476                    1, 0.0, outarray.get(), 1);
 
  497    int nquad             = 
m_base[0]->GetNumPoints();
 
  501             "calling argument mode is larger than total expansion order");
 
  509    return StdExpansion::BaryEvaluateBasis<0>(coords[0], mode);
 
  516    boost::ignore_unused(mkey);
 
  518    int nquad = 
m_base[0]->GetNumPoints();
 
  534    int nquad = 
m_base[0]->GetNumPoints();
 
  556    int nq     = 
m_base[0]->GetNumPoints();
 
  557    int nmodes = 
m_base[0]->GetNumModes();
 
  571    OrthoExp.
FwdTrans(array, orthocoeffs);
 
  574    for (
int j = 0; j < nmodes; ++j)
 
  580                 exp(-(j - nmodes) * (j - nmodes) /
 
  581                     ((
NekDouble)((j - cutoff + 1) * (j - cutoff + 1)))));
 
  585            orthocoeffs[j] *= 0.0;
 
  590    OrthoExp.
BwdTrans(orthocoeffs, array);
 
  599    int nq     = 
m_base[0]->GetNumPoints();
 
  600    int nmodes = 
m_base[0]->GetNumModes();
 
  609    int Pcut = cutoff * 
P;
 
  613    OrthoExp.
FwdTrans(array, orthocoeffs);
 
  617    for (
int j = 0; j < nmodes; ++j)
 
  623            fac = pow(fac, exponent);
 
  624            orthocoeffs[j] *= exp(-alpha * fac);
 
  629    OrthoExp.
BwdTrans(orthocoeffs, array);
 
  637    int nquad0 = 
m_base[0]->GetNumPoints();
 
  641    Vmath::Vmul(nquad0, inarray.get(), 1, w0.get(), 1, outarray.get(), 1);
 
  648    boost::ignore_unused(coords_1, coords_2);
 
  668    boost::ignore_unused(i);
 
  674    boost::ignore_unused(i);
 
  680    boost::ignore_unused(i);
 
  695    const std::vector<unsigned int> &nummodes, 
int &modes_offset)
 
  697    int nmodes = nummodes[modes_offset];
 
  716            int nq = 
m_base[0]->GetNumPoints();
 
  729            for (
int i = 0; i < neq; ++i)
 
  731                coords[0] = -1.0 + 2 * i / (
NekDouble)(neq - 1);
 
  732                I         = 
m_base[0]->GetI(coords);
 
  733                Vmath::Vcopy(nq, I->GetRawPtr(), 1, Mat->GetRawPtr() + i, neq);
 
  746            (*Mat) = Imass * Iprod;
 
  753            if (mattype == 
eMass)
 
  786    int nummodes                        = 
m_base[0]->GetNumModes();
 
  796            outarray[1] = nummodes - 1;
 
  803            ASSERTL0(0, 
"Mapping array is not defined for this expansion");
 
  836            ASSERTL0(0, 
"Mapping array is not defined for this expansion");
 
  843    boost::ignore_unused(useCoeffPacking);
 
  844    ASSERTL0((localVertexId == 0) || (localVertexId == 1),
 
  846             "must be between 0 or 1");
 
  848    int localDOF = localVertexId;
 
  851        (localVertexId == 1))
 
  853        localDOF = 
m_base[0]->GetNumModes() - 1;
 
  861    boost::ignore_unused(standard);
 
  862    int np = 
m_base[0]->GetNumPoints();
 
  866    for (
int i = 0; i < np - 1; ++i)
 
  880    int order0 = 
m_base[0]->GetNumModes();
 
  882    ASSERTL0(traceid < 2, 
"eid must be between 0 and 1");
 
  884    if (maparray.size() != 1)
 
  893        maparray[0] = (traceid == 0) ? 0 : 1;
 
  898        maparray[0] = (traceid == 0) ? 0 : order0 - 1;
 
  911    boost::ignore_unused(orient, 
P, Q);
 
  915    if (signarray.size() != 1)
 
  931    boost::ignore_unused(eid, orient, 
P, Q);
 
  932    if (maparray.size() != 1)
 
  939    if (signarray.size() != 1)
 
#define ASSERTL0(condition, msg)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
Describes the specification for a Basis.
Defines a specification for a set of points.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
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.
The base class for all shapes.
int GetNcoeffs(void) const
This function returns the total number of coefficients used in the expansion.
LibUtilities::BasisType GetBasisType(const int dir) const
This function returns the type of basis used in the dir direction.
int NumBndryCoeffs(void) const
DNekMatSharedPtr GetStdMatrix(const StdMatrixKey &mkey)
void MassMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey)
void IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
int GetVertexMap(const int localVertexId, bool useCoeffPacking=false)
DNekMatSharedPtr CreateGeneralMatrix(const StdMatrixKey &mkey)
this function generates the mass matrix
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Backward transformation from coefficient space to physical space.
LibUtilities::PointsType GetPointsType(const int dir) const
This function returns the type of quadrature points used in the dir direction.
void FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Forward transformation from physical space to coefficient space.
LibUtilities::NekManager< StdMatrixKey, DNekBlkMat, StdMatrixKey::opLess > m_stdStaticCondMatrixManager
int GetNumPoints(const int dir) const
This function returns the number of quadrature points in the dir direction.
Array< OneD, LibUtilities::BasisSharedPtr > m_base
MatrixType GetMatrixType() const
NekDouble GetConstFactor(const ConstFactorType &factor) const
bool ConstFactorExists(const ConstFactorType &factor) const
Class representing a segment element in reference space All interface of this class sits in StdExpans...
virtual int v_GetTraceIntNcoeffs(const int i) const final override
void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Inner product of inarray over region with respect to the expansion basis (this)->m_base[0] and return...
virtual int v_NumDGBndryCoeffs() const override
virtual int v_GetTraceNumPoints(const int i) const final override
NekDouble v_PhysEvaluateBasis(const Array< OneD, const NekDouble > &coords, int mode) final override
virtual void v_LaplacianMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey) override
void v_ReduceOrderCoeffs(int numMin, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
virtual void v_SVVLaplacianFilter(Array< OneD, NekDouble > &array, const StdMatrixKey &mkey) override
void v_IProductWRTBase_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool multiplybyweights=true) override
virtual void v_GetInteriorMap(Array< OneD, unsigned int > &outarray) override
virtual LibUtilities::ShapeType v_DetShapeType() const override
Return Shape of region, using ShapeType enum list. i.e. Segment.
virtual int v_GetNverts() const final override
virtual int v_NumBndryCoeffs() const override
void v_HelmholtzMatrixOp(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdMatrixKey &mkey) override
void v_BwdTrans_SumFac(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
virtual void v_LocCollapsedToLocCoord(const Array< OneD, const NekDouble > &eta, Array< OneD, NekDouble > &xi) override
virtual void v_GetTraceCoeffMap(const unsigned int traceid, Array< OneD, unsigned int > &maparray) override
Get the map of the coefficient location to teh local trace coefficients.
void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Forward transform from physical quadrature space stored in inarray and evaluate the expansion coeffic...
StdSegExp()
defult constructor
virtual void v_FillMode(const int mode, Array< OneD, NekDouble > &outarray) override
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) override
Evaluate the derivative  at the physical quadrature points given by inarray and return in outarray.
virtual void v_GetSimplexEquiSpacedConnectivity(Array< OneD, int > &conn, bool standard=true) override
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_0, Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2) override
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray) override
Integrate the physical point list inarray over region and return the value.
virtual int v_GetTraceNcoeffs(const int i) const final override
virtual ~StdSegExp() override
Destructor.
virtual int v_GetVertexMap(int localVertexId, bool useCoeffPacking=false) override
virtual void v_ExponentialFilter(Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff) override
virtual DNekMatSharedPtr v_CreateStdMatrix(const StdMatrixKey &mkey) override
void v_IProductWRTDerivBase_SumFac(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
virtual void v_MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
Backward transform from coefficient space given in inarray and evaluate at the physical quadrature po...
virtual int v_GetNtraces() const final override
virtual void v_GetBoundaryMap(Array< OneD, unsigned int > &outarray) override
void v_GetTraceToElementMap(const int tid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation edgeOrient, int P, int Q) override
void v_GetElmtTraceToTraceMap(const unsigned int eid, Array< OneD, unsigned int > &maparray, Array< OneD, int > &signarray, Orientation edgeOrient, int P, int Q) override
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) override
virtual void v_LocCoordToLocCollapsed(const Array< OneD, const NekDouble > &xi, Array< OneD, NekDouble > &eta) override
virtual bool v_IsBoundaryInteriorExpansion() const override
virtual int v_CalcNumberOfCoefficients(const std::vector< unsigned int > &nummodes, int &modes_offset) override
virtual DNekMatSharedPtr v_GenMatrix(const StdMatrixKey &mkey) override
void v_FwdTransBndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray) override
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 = alpha A x plus beta y where A[m x n].
static void Dcopy(const int &n, const double *x, const int &incx, double *y, const int &incy)
BLAS level 1: Copy x to y.
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.
int getNumberOfCoefficients(int Na)
void InterpCoeff1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eModified_B
Principle Modified Functions .
@ P
Monomial polynomials .
@ eGauss_Lagrange
Lagrange Polynomials using the Gauss points.
@ eOrtho_A
Principle Orthogonal Functions .
@ eGLL_Lagrange
Lagrange for SEM basis .
@ eChebyshev
Chebyshev Polynomials.
@ eModified_A
Principle Modified Functions .
@ eFourier
Fourier Expansion .
@ ePhysInterpToEquiSpaced
std::vector< double > w(NPUPPER)
std::vector< double > z(NPUPPER)
The above copyright notice and this permission notice shall be included.
std::shared_ptr< DNekMat > DNekMatSharedPtr
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.
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.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
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.