40 namespace MultiRegions
57 ExpList(In,DeclareCoeffPhysArrays)
74 (*m_exp).push_back(Point);
96 const Array<OneD, const ExpListSharedPtr> &bndConstraint,
97 const Array<OneD, const SpatialDomains::BoundaryConditionShPtr>
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;
237 Array<OneD,Array<OneD,NekDouble> > locnormals;
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];
283 const Array<OneD, const NekDouble> &Fwd,
284 const Array<OneD, const NekDouble> &Bwd,
285 Array<OneD, NekDouble> &Upwind)
288 for(
int j = 0; j < Fwd.num_elements(); ++j)