40 namespace MultiRegions
57 ExpList(In,DeclareCoeffPhysArrays)
74 (*m_exp).push_back(Point);
102 const bool DeclareCoeffPhysArrays)
107 int i, j, id, elmtid=0;
108 map<int,int> EdgeDone;
109 map<int,int> NormalSet;
116 for(i = 0; i < bndCond.num_elements(); ++i)
120 for(j = 0; j < bndConstraint[i]->GetExpSize(); ++j)
122 PointGeom = bndConstraint[i]->GetExp(0)->GetGeom()->GetVertex(0);
125 EdgeDone[PointGeom->GetVid()] = elmtid;
127 Point->SetElmtId(elmtid++);
128 (*m_exp).push_back(Point);
134 for(i = 0; i < locexp.size(); ++i)
136 for(j = 0; j < 2; ++j)
139 PointGeom = (exp->GetGeom1D())->GetVertex(j);
140 id = PointGeom->GetVid();
142 if(EdgeDone.count(
id)==0)
145 EdgeDone[id] = elmtid;
152 Point->SetElmtId(elmtid++);
153 (*m_exp).push_back(Point);
192 if(DeclareCoeffPhysArrays)
211 for(i = 0; i <
m_exp->size(); ++i)
215 m_offset_elmt_id[i] = i;
216 m_ncoeffs += (*m_exp)[i]->GetNcoeffs();
217 m_npoints += (*m_exp)[i]->GetTotPoints();
236 int i,j,k,e_npoints,offset;
240 int coordim = (*m_exp)[0]->GetGeom()->GetCoordim();
242 ASSERTL1(normals.num_elements() >= coordim,
243 "Output vector does not have sufficient dimensions to "
247 for(i = 0; i <
m_exp->size(); ++i)
255 locnormals = loc_elmt->GetVertexNormal(loc_exp->GetLeftAdjacentElementVertex());
261 for(j = 0; j < e_npoints; ++j)
265 for(k = 0; k < coordim; ++k)
267 normals[k][offset] = locnormals[k][0];
288 for(
int j = 0; j < Fwd.num_elements(); ++j)
virtual void v_Upwind(const Array< OneD, const NekDouble > &Vn, const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &Upwind)
virtual void v_GetNormals(Array< OneD, Array< OneD, NekDouble > > &normals)
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
std::map< int, vector< PeriodicEntity > > PeriodicMap
NekOptimize::GlobalOptParamSharedPtr m_globalOptParam
Expansion1DSharedPtr GetLeftAdjacentElementExp() const
Array< OneD, NekDouble > m_phys
The global expansion evaluated at the quadrature points.
Array< OneD, NekDouble > m_coeffs
Concatenation of all local expansion coefficients.
int GetExpSize(void)
This function returns the number of elements in the expansion.
boost::shared_ptr< Expansion0D > Expansion0DSharedPtr
void SetCoeffPhysOffsets(void)
std::vector< ExpansionSharedPtr > ExpansionVector
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
Base class for all multi-elemental spectral/hp expansions.
boost::shared_ptr< LocalRegions::ExpansionVector > m_exp
The list of local expansions.
Array< OneD, int > m_phys_offset
Offset of elemental data into the array m_phys.
int m_ncoeffs
The total number of local degrees of freedom. m_ncoeffs .
Array< OneD, int > m_offset_elmt_id
Array containing the element id m_offset_elmt_id[n] that the n^th consecutive block of data in m_coef...
boost::shared_ptr< PointExp > PointExpSharedPtr
ExpList0D()
The defualt constructor.
This class is the abstraction of a collection of zero-dimensional expansions which is merely a collec...
virtual ~ExpList0D()
Destructor.
void SetExpType(ExpansionType Type)
Returns the type of the expansion.
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
boost::shared_ptr< MeshGraph > MeshGraphSharedPtr
boost::shared_ptr< Expansion1D > Expansion1DSharedPtr
boost::shared_ptr< PointGeom > PointGeomSharedPtr