44 namespace LocalRegions
48 m_metricinfo(m_geom->GetGeomFactors())
57 int nDim =
m_base.num_elements();
58 string type =
"regular";
65 err << nDim <<
"D " << type <<
" Jacobian not positive "
66 <<
"(element ID = " <<
m_geom->GetGlobalID() <<
") "
67 <<
"(first vertex ID = " <<
m_geom->GetVid(0) <<
")";
74 m_metricinfo(pSrc.m_metricinfo)
104 const boost::shared_ptr<Expansion> &EdgeExp,
114 const boost::shared_ptr<Expansion> &EdgeExp,
123 const boost::shared_ptr<Expansion> &FaceExp,
137 v_DGDeriv(dir, inarray, EdgeExp, coeffs, outarray);
221 const int expDim =
m_base.num_elements();
228 for (
int i = 0; i < expDim; ++i)
230 CBasis[i] =
m_geom->GetBasis(i);
231 nqGeom *= CBasis[i]->GetNumPoints();
232 doCopy = doCopy &&
m_base[i]->GetBasisKey().SamePoints(
233 CBasis[i]->GetBasisKey());
242 for (
int i = 0; i <
m_geom->GetCoordim(); ++i)
244 m_geom->GetXmap()->BwdTrans(
m_geom->GetCoeffs(i), tmp[i]);
249 for (
int i = 0; i <
m_geom->GetCoordim(); ++i)
252 m_geom->GetXmap()->BwdTrans(
m_geom->GetCoeffs(i), tmpGeom);
259 CBasis[0]->GetPointsKey(), &tmpGeom[0],
260 m_base[0]->GetPointsKey(), &tmp[i][0]);
266 CBasis[0]->GetPointsKey(),
267 CBasis[1]->GetPointsKey(),
269 m_base[0]->GetPointsKey(),
270 m_base[1]->GetPointsKey(),
277 CBasis[0]->GetPointsKey(),
278 CBasis[1]->GetPointsKey(),
279 CBasis[2]->GetPointsKey(),
281 m_base[0]->GetPointsKey(),
282 m_base[1]->GetPointsKey(),
283 m_base[2]->GetPointsKey(),
309 const boost::shared_ptr<Expansion> &EdgeExp,
319 const boost::shared_ptr<Expansion> &EdgeExp,
328 const boost::shared_ptr<Expansion> &FaceExp,
void ComputeLaplacianMetric()
const LibUtilities::PointsKeyVector GetPointsKeys() const
LibUtilities::ShapeType DetShapeType() const
This function returns the shape of the expansion domain.
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mod...
std::vector< PointsKey > PointsKeyVector
DNekMatSharedPtr BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
void MultiplyByStdQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
SpatialDomains::GeomFactorsSharedPtr m_metricinfo
static DNekScalMatSharedPtr NullDNekScalMatSharedPtr
DNekMatSharedPtr BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
std::map< ConstFactorType, NekDouble > ConstFactorMap
SpatialDomains::GeometrySharedPtr m_geom
boost::shared_ptr< DNekMat > DNekMatSharedPtr
boost::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
virtual DNekMatSharedPtr v_BuildTransformationMatrix(const DNekScalMatSharedPtr &r_bnd, const StdRegions::MatrixType matrixType)
virtual DNekMatSharedPtr v_BuildVertexMatrix(const DNekScalMatSharedPtr &r_bnd)
static DNekMatSharedPtr NullDNekMatSharedPtr
int GetTotPoints() const
This function returns the total number of quadrature points used in the element.
void Interp2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
this function interpolates a 2D function evaluated at the quadrature points of the 2D basis...
void AddFaceNormBoundaryInt(const int face, const boost::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
Expansion(SpatialDomains::GeometrySharedPtr pGeom)
virtual void v_ComputeLaplacianMetric()
std::map< StdRegions::VarCoeffType, Array< OneD, NekDouble > > VarCoeffMap
virtual void v_GetCoords(Array< OneD, NekDouble > &coords_1, Array< OneD, NekDouble > &coords_2, Array< OneD, NekDouble > &coords_3)
virtual DNekScalMatSharedPtr v_GetLocMatrix(const LocalRegions::MatrixKey &mkey)
void DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
virtual const SpatialDomains::GeomFactorsSharedPtr & v_GetMetricInfo() const
virtual void v_AddFaceNormBoundaryInt(const int face, const boost::shared_ptr< Expansion > &FaceExp, const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
DNekScalMatSharedPtr GetLocMatrix(const LocalRegions::MatrixKey &mkey)
void Interp3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
this function interpolates a 3D function evaluated at the quadrature points of the 3D basis...
SpatialDomains::GeometrySharedPtr GetGeom() const
boost::shared_ptr< GeomFactors > GeomFactorsSharedPtr
Pointer to a GeomFactors object.
virtual void v_DGDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, ExpansionSharedPtr > &EdgeExp, Array< OneD, Array< OneD, NekDouble > > &coeffs, Array< OneD, NekDouble > &outarray)
Geometry is straight-sided with constant geometric factors.
void Interp1D(const BasisKey &fbasis0, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, Array< OneD, NekDouble > &to)
this function interpolates a 1D function evaluated at the quadrature points of the basis fbasis0 to ...
void ComputeQuadratureMetric()
GeomType
Indicates the type of element geometry.
#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 AddEdgeNormBoundaryInt(const int edge, const boost::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
Geometry is curved or has non-constant factors.
boost::shared_ptr< Geometry > GeometrySharedPtr
virtual void v_AddEdgeNormBoundaryInt(const int edge, const boost::shared_ptr< Expansion > &EdgeExp, const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &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.