48 namespace SolverUtils {
 
   71         set<int> updatedVerts, updatedEdges, updatedFaces;
 
   73         dim = graph->GetSpaceDimension();
 
   77         for (i = 0; i < fields[0]->GetExpSize(); ++i)
 
   80             int offset = fields[0]->GetPhys_Offset(i);
 
   81             int nquad  = exp->GetTotPoints();
 
   85             for (j = 0; j < dim; ++j)
 
   88                     nquad, fields[j]->UpdatePhys() + offset);
 
   95                 exp->GetCoords(coord[0], coord[1]);
 
  101                 for (j = 0; j < exp->GetNedges(); ++j)
 
  106                     if (updatedEdges.find(edge->GetGlobalID()) !=
 
  113                     int nEdgePts = exp->GetEdgeNumPoints(j);
 
  124                     for (k = 0; k < dim; ++k)
 
  128                         exp->GetEdgePhysVals(j, seg, phys [k], edgePhys [k]);
 
  129                         exp->GetEdgePhysVals(j, seg, coord[k], edgeCoord[k]);
 
  133                     for (k = 0; k < 2; ++k)
 
  135                         int id = edge->GetVid(k);
 
  136                         if (updatedVerts.find(
id) != updatedVerts.end())
 
  145                             (*pt)(0) + edgePhys[0][k*(nEdgePts-1)],
 
  146                             (*pt)(1) + edgePhys[1][k*(nEdgePts-1)],
 
  149                         updatedVerts.insert(
id);
 
  158                     for (k = 0; k < nEdgePts; ++k)
 
  163                                 dim, edge->GetGlobalID(),
 
  164                                 edgeCoord[0][k] + edgePhys[0][k],
 
  165                                 edgeCoord[1][k] + edgePhys[1][k], 0.0);
 
  167                         curve->m_points.push_back(vert);
 
  170                     curvedEdges[edge->GetGlobalID()] = 
curve;
 
  171                     updatedEdges.insert(edge->GetGlobalID());
 
  176                 exp->GetCoords(coord[0], coord[1], coord[2]);
 
  182                 for (j = 0; j < exp->GetNfaces(); ++j)
 
  187                     if (updatedFaces.find(face->GetGlobalID()) !=
 
  203                              "Deformation requires GLL points in both " 
  204                              "directions on a face.");
 
  222                     for (k = 0; k < dim; ++k)
 
  226                         exp->GetFacePhysVals(
 
  227                             j, faceexp, phys [k], tmp,       orient);
 
  228                         exp->GetFacePhysVals(
 
  229                             j, faceexp, coord[k], newPos[k], orient);
 
  231                             nq0*nq1, tmp, 1, newPos[k], 1, newPos[k], 1);
 
  236                     int nq = max(nq0, nq1);
 
  247                     for (k = 0; k < dim; ++k)
 
  251                             faceexp->GetPointsKeys()[0],
 
  252                             faceexp->GetPointsKeys()[1],
 
  253                             newPos[k], edgePts, edgePts, intPos[k]);
 
  256                     int edgeOff[2][4][2] = {
 
  271                     for (k = 0; k < face->GetNumVerts(); ++k)
 
  274                         int id = face->GetVid(k);
 
  278                         if (updatedVerts.find(
id) == updatedVerts.end())
 
  283                                 intPos[0][edgeOff[o][k][0]],
 
  284                                 intPos[1][edgeOff[o][k][0]],
 
  285                                 intPos[2][edgeOff[o][k][0]]);
 
  286                             updatedVerts.insert(
id);
 
  290                         id = face->GetEid(k);
 
  291                         if (updatedEdges.find(
id) == updatedEdges.end())
 
  301                             const int offset = edgeOff[o][k][0];
 
  302                             const int pos    = edgeOff[o][k][1];
 
  306                                 for (l = nq-1; l >= 0; --l)
 
  308                                     int m = offset + pos*l;
 
  312                                             dim, edge->GetGlobalID(),
 
  313                                             intPos[0][m], intPos[1][m],
 
  315                                     curve->m_points.push_back(vert);
 
  320                                 for (l = 0; l < nq; ++l)
 
  322                                     int m = offset + pos*l;
 
  326                                             dim, edge->GetGlobalID(),
 
  327                                             intPos[0][m], intPos[1][m],
 
  329                                     curve->m_points.push_back(vert);
 
  333                             curvedEdges[edge->GetGlobalID()] = 
curve;
 
  334                             updatedEdges.insert(edge->GetGlobalID());
 
  365                         for (k = 0; k < dim; ++k)
 
  370                                 faceexp->GetBasis(0)->GetBasisKey(),
 
  371                                 faceexp->GetBasis(1)->GetBasisKey(),
 
  372                                 newPos[k], B0, B1, nodal);
 
  382                         for (l = 0; l < nq*(nq+1)/2; ++l)
 
  387                                     dim, face->GetGlobalID(),
 
  388                                     newPos[0][l], newPos[1][l], newPos[2][l]);
 
  389                             curve->m_points.push_back(vert);
 
  394                         for (l = 0; l < nq*nq; ++l)
 
  399                                     dim, face->GetGlobalID(),
 
  400                                     intPos[0][l], intPos[1][l], intPos[2][l]);
 
  401                             curve->m_points.push_back(vert);
 
  405                     curvedFaces[face->GetGlobalID()] = 
curve;
 
  406                     updatedFaces.insert(face->GetGlobalID());
 
  412         for (i = 0; i < fields.num_elements(); ++i)
 
void ModalToNodal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool. 
 
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
 
void UpdateGeometry(SpatialDomains::MeshGraphSharedPtr graph, Array< OneD, MultiRegions::ExpListSharedPtr > &fields, bool modal)
Update geometry according to displacement that is in current fields. 
 
Principle Modified Functions . 
 
Geometry2DSharedPtr GetFace(int i)
Return face i in this element. 
 
PointsType GetPointsType() const 
Return type of quadrature. 
 
boost::shared_ptr< Curve > CurveSharedPtr
 
Gauss Radau pinned at x=-1, . 
 
Principle Orthogonal Functions . 
 
Class representing a segment element in reference space. 
 
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...
 
boost::shared_ptr< StdExpansion2D > StdExpansion2DSharedPtr
 
int GetNumPoints() const 
Return points order at which basis is defined. 
 
boost::shared_ptr< StdExpansion1D > StdExpansion1DSharedPtr
 
Principle Orthogonal Functions . 
 
Defines a specification for a set of points. 
 
boost::shared_ptr< Expansion > ExpansionSharedPtr
 
boost::shared_ptr< Geometry2D > Geometry2DSharedPtr
 
const Geometry1DSharedPtr GetEdge(int i) const 
 
boost::shared_ptr< Geometry1D > Geometry1DSharedPtr
 
boost::unordered_map< int, CurveSharedPtr > CurveMap
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
 
boost::shared_ptr< MeshGraph > MeshGraphSharedPtr
 
Describes the specification for a Basis. 
 
boost::shared_ptr< PointGeom > PointGeomSharedPtr
 
1D Gauss-Lobatto-Legendre quadrature points 
 
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y. 
 
2D Nodal Electrostatic Points on a Triangle 
 
boost::shared_ptr< Geometry3D > Geometry3DSharedPtr
 
void FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function performs the Forward transformation from physical space to coefficient space...