46     namespace MultiRegions
 
   58         DisContField1D::DisContField1D():
 
   60             m_bndCondExpansions(),
 
   81             const std::string &variable,
 
   82             const bool         SetUpJustDG,
 
   84             : 
ExpList1D(pSession,graph1D,true, ImpType),
 
   85               m_bndCondExpansions(),
 
   88             if (variable.compare(
"DefaultVar") != 0)
 
  114                             (*m_exp)[ElmtID[i]]->
 
  115                                     as<LocalRegions::Expansion1D>();
 
  117                             locExpList->GetExp(0)->
 
  118                                     as<LocalRegions::Expansion0D>();
 
  120                     exp0d->SetAdjacentElementExp(VertexID[i], exp1d);
 
  156             if (
m_session->DefinesCmdLineArgument(
"verbose"))
 
  158                 m_traceMap->PrintStats(std::cout, variable);
 
  167             int ElmtPointGeom  = 0;
 
  168             int TracePointGeom = 0;
 
  171             for (
int i = 0; i < 
m_exp->size(); ++i)
 
  174                 for (
int j = 0; j < exp1d->GetNverts(); ++j)
 
  176                     ElmtPointGeom  = (exp1d->GetGeom1D())->GetVid(j);
 
  178                     for (
int k = 0; k < 
m_trace->GetExpSize(); ++k)
 
  180                         TracePointGeom = 
m_trace->GetExp(k)->GetGeom()->GetVid(0);
 
  182                         if (TracePointGeom == ElmtPointGeom)
 
  205                             m_traceMap->GetBndCondTraceToGlobalTraceMap(cnt+e));
 
  210                     ASSERTL0(
false,
"Periodic verts need setting up");
 
  219             for (cnt = n = 0; n < 
m_exp->size(); ++n)
 
  221                 for (
int v = 0; v < (*m_exp)[n]->GetNverts(); ++v, ++cnt)
 
  228             boost::unordered_map<int,pair<int,int> > perVertToExpMap;
 
  229             boost::unordered_map<int,pair<int,int> >
::iterator it2;
 
  230             for (n = 0; n < 
m_exp->size(); ++n)
 
  232                 for (
int v = 0; v < (*m_exp)[n]->GetNverts(); ++v)
 
  235                                          (*
m_exp)[n]->GetGeom()->GetVid(v));
 
  239                         perVertToExpMap[it->first] = make_pair(n,v);
 
  246             for (n = 0; n < 
m_exp->size(); ++n)
 
  248                 for (
int v = 0; v < (*m_exp)[n]->GetNverts(); ++v)
 
  250                     int vertGeomId = (*m_exp)[n]->GetGeom()->GetVid(v);
 
  258                         it2 = perVertToExpMap.find(ent.
id);
 
  260                         if (it2 == perVertToExpMap.end())
 
  262                             if (
m_session->GetComm()->GetRowComm()->GetSize() > 1 &&
 
  269                                 ASSERTL1(
false, 
"Periodic vert not found!");
 
  273                         int offset  = 
m_trace->GetPhys_Offset((m_traceMap->GetElmtToTrace())
 
  274                                                               [n][v]->GetElmtId());
 
  277                         int offset2 = 
m_trace->GetPhys_Offset((m_traceMap->GetElmtToTrace())
 
  279                                                               [it2->second.second]->GetElmtId());
 
  295             if (traceEl->GetLeftAdjacentElementVertex () == -1 ||
 
  296                 traceEl->GetRightAdjacentElementVertex() == -1)
 
  306                     int traceGeomId = traceEl->GetGeom0D()->GetGlobalID();
 
  312                         fwd = traceGeomId == min(traceGeomId,pIt->second[0].id);
 
  316                         int offset = 
m_trace->GetPhys_Offset(traceEl->GetElmtId());
 
  318                             GetTraceToUniversalMapUnique(offset) >= 0;
 
  322             else if (traceEl->GetLeftAdjacentElementVertex () != -1 &&
 
  323                      traceEl->GetRightAdjacentElementVertex() != -1)
 
  327                     (traceEl->GetLeftAdjacentElementExp().get()) ==
 
  332                 ASSERTL2(
false, 
"Unconnected trace element!");
 
  345             const std::string &variable)
 
  352             map<int,int> GeometryToRegionsMap;
 
  354             SpatialDomains::BoundaryRegionCollection::const_iterator it;
 
  362             for(it = bregions.begin(); it != bregions.end(); ++it)
 
  365                 for (bregionIt  = it->second->begin();
 
  366                      bregionIt != it->second->end(); bregionIt++)
 
  370                     int id = (*(bregionIt->second))[0]->GetGlobalID();
 
  371                     GeometryToRegionsMap[id] = it->first;
 
  376             map<int,SpatialDomains::GeometrySharedPtr> EndOfDomain;
 
  379             for(domIt = domain.begin(); domIt != domain.end(); ++domIt)
 
  382                 for(
int i = 0; i < geomvector->size(); ++i)
 
  384                     for(
int j = 0; j < 2; ++j)
 
  386                         int vid = (*geomvector)[i]->GetVid(j); 
 
  387                         if(EndOfDomain.count(vid) == 0)
 
  389                             EndOfDomain[vid] = (*geomvector)[i]->GetVertex(j);
 
  393                             EndOfDomain.erase(vid);
 
  398             ASSERTL1(EndOfDomain.size() == 2,
"Did not find two ends of domain");
 
  402             for(regIt = EndOfDomain.begin(); regIt != EndOfDomain.end(); ++regIt)
 
  404                 if(GeometryToRegionsMap.count(regIt->first) != 0) 
 
  407                     ASSERTL1(iter != GeometryToRegionsMap.end(),
"Failied to find GeometryToRegionMap");
 
  408                     int regionId = iter->second;
 
  409                     SpatialDomains::BoundaryRegionCollection::const_iterator bregionsIter = bregions.find(regionId);
 
  410                     ASSERTL1(bregionsIter != bregions.end(),
"Failed to find boundary region");
 
  412                     returnval->AddBoundaryRegions   (regionId,breg);
 
  414                     SpatialDomains::BoundaryConditionCollection::const_iterator bconditionsIter = bconditions.find(regionId);
 
  415                     ASSERTL1(bconditionsIter != bconditions.end(),
"Failed to find boundary collection");
 
  417                     returnval->AddBoundaryConditions(regionId,bcond);
 
  425                     gvec->push_back(regIt->second);
 
  426                     (*breg)[regIt->first] = gvec;
 
  428                     returnval->AddBoundaryRegions(bregions.size()+numNewBc,breg);
 
  434                     (*bCondition)[variable] = notDefinedCondition;
 
  436                     returnval->AddBoundaryConditions(bregions.size()+numNewBc,bCondition);
 
  457                     const std::string &variable,
 
  458                     bool SetToOneSpaceDimension,
 
  460             ExpList1D(pSession,graph1D,domain, true,variable,SetToOneSpaceDimension,ImpType),
 
  461             m_bndCondExpansions(),
 
  464             if (variable.compare(
"DefaultVar") != 0)
 
  483             m_bndCondExpansions(In.m_bndCondExpansions),
 
  484             m_bndConditions(In.m_bndConditions),
 
  485             m_globalBndMat(In.m_globalBndMat),
 
  487             m_traceMap(In.m_traceMap),
 
  488             m_boundaryVerts(In.m_boundaryVerts),
 
  489             m_periodicVerts(In.m_periodicVerts),
 
  490             m_periodicFwdCopy(In.m_periodicFwdCopy),
 
  491             m_periodicBwdCopy(In.m_periodicBwdCopy),
 
  492             m_leftAdjacentVerts(In.m_leftAdjacentVerts)
 
  526             const std::string variable)
 
  534             SpatialDomains::BoundaryRegionCollection::const_iterator it;
 
  537             for (it = bregions.begin(); it != bregions.end(); ++it)
 
  541                 if (boundaryCondition->GetBoundaryConditionType() !=
 
  545                     for (bregionIt  = it->second->begin();
 
  546                          bregionIt != it->second->end(); bregionIt++)
 
  548                         cnt += bregionIt->second->size();
 
  575             const std::string variable)
 
  583                 = boost::dynamic_pointer_cast<
 
  585             SpatialDomains::BoundaryRegionCollection::const_iterator it;
 
  590             int i, region1ID, region2ID;
 
  594             map<int,int> BregionToVertMap;
 
  598             for (it = bregions.begin(); it != bregions.end(); ++it)
 
  602                 if (locBCond->GetBoundaryConditionType()
 
  608                 int id = (*(it->second->begin()->second))[0]->GetGlobalID();
 
  610                 BregionToVertMap[it->first] = id;
 
  616             int n = vComm->GetSize();
 
  617             int p = vComm->GetRank();
 
  620             nregions[
p] = BregionToVertMap.size();
 
  627             for (i = 1; i < n; ++i)
 
  629                 regOffset[i] = regOffset[i-1] + nregions[i-1];
 
  634             for(i = regOffset[p], iit = BregionToVertMap.begin();
 
  635                 iit != BregionToVertMap.end(); ++iit, ++i)
 
  637                 bregid [i] = iit->first;
 
  638                 bregmap[i] = iit->second;
 
  639                 islocal.insert(iit->first);
 
  645             for (
int i = 0; i < totRegions; ++i)
 
  647                 BregionToVertMap[bregid[i]] = bregmap[i];
 
  651             for (it = bregions.begin(); it != bregions.end(); ++it)
 
  655                 if (locBCond->GetBoundaryConditionType()
 
  662                 region1ID = it->first;
 
  663                 region2ID = boost::static_pointer_cast<
 
  665                         locBCond)->m_connectedBoundaryRegion;
 
  667                 ASSERTL0(BregionToVertMap.count(region1ID) != 0, 
 
  668                          "Cannot determine vertex of region1ID");
 
  670                 ASSERTL0(BregionToVertMap.count(region2ID) != 0, 
 
  671                          "Cannot determine vertex of region2ID");
 
  675                                    islocal.count(region2ID) != 0);
 
  697             const std::string variable,
 
  710             SpatialDomains::BoundaryRegionCollection::const_iterator it;
 
  717             for (it = bregions.begin(); it != bregions.end(); ++it)
 
  721                 if (locBCond->GetBoundaryConditionType() !=
 
  725                     for (bregionIt  = it->second->begin();
 
  726                          bregionIt != it->second->end(); bregionIt++)
 
  728                         for (k = 0; k < bregionIt->second->size(); k++)
 
  730                             if((vert = boost::dynamic_pointer_cast
 
  732                                         (*bregionIt->second)[k])))
 
  737                                 bndCondExpansions[cnt]  = locPointExp;
 
  738                                 bndConditions[cnt++]    = locBCond;
 
  743                                     "dynamic cast to a vertex failed");
 
  758                      "Routine currently only tested for HybridDGHelmholtz");
 
  761                      "Full matrix global systems are not supported for HDG " 
  766                      "The local to global map is not set up for the requested " 
  775                  (*m_globalBndMat)[mkey] = glo_matrix;
 
  779                 glo_matrix = matrixIter->second;
 
  798                     for(
int v = 0; v < 2; ++v)
 
  804                         if(vertExp->GetLeftAdjacentElementExp()->GetGeom()->GetGlobalID() != (*m_exp)[i]->GetGeom()->GetGlobalID())
 
  882             for (cnt = n = 0; n < nElements; ++n)
 
  887                 for(v = 0; v < 2; ++v, ++cnt)
 
  889                     int offset = 
m_trace->GetPhys_Offset(elmtToTrace[n][v]->GetElmtId());
 
  893                         (*m_exp)[n]->GetVertexPhysVals(v, field + phys_offset,
 
  898                         (*m_exp)[n]->GetVertexPhysVals(v, field + phys_offset,
 
  922                              "Method not set up for non-zero Neumann " 
  923                              "boundary condition");
 
  938                              "Method not set up for this boundary condition.");
 
  981             int n,
p,offset,phys_offset;
 
  984                 "input array is of insufficient length");
 
  986             for (n  = 0; n < nexp; ++n)
 
  990                 for (p = 0; p < (*m_exp)[n]->GetNverts(); ++
p)
 
  992                     offset = 
m_trace->GetPhys_Offset(
 
  993                                  (
m_traceMap->GetElmtToTrace())[n][p]->GetElmtId());
 
  994                     (*m_exp)[n]->GetVertexPhysVals(p,  inarray + phys_offset,
 
 1004             int n,offset, t_offset;
 
 1014                 int e_ncoeffs = (*m_exp)[n]->GetNcoeffs();
 
 1019                 if ((*
m_exp)[n]->GetBasis(0)->GetBasisType() !=
 
 1022                     t_offset = 
GetTrace()->GetCoeff_Offset(elmtToTrace[n][0]->GetElmtId());
 
 1023                     if(negatedFluxNormal[2*n])
 
 1025                         outarray[offset] -= Fn[t_offset];
 
 1029                         outarray[offset] += Fn[t_offset];
 
 1032                     t_offset = 
GetTrace()->GetCoeff_Offset(elmtToTrace[n][1]->GetElmtId());
 
 1034                     if(negatedFluxNormal[2*n+1])
 
 1036                         outarray[offset+(*m_exp)[n]->GetVertexMap(1)] -= Fn[t_offset];
 
 1040                         outarray[offset+(*m_exp)[n]->GetVertexMap(1)] += Fn[t_offset];
 
 1060                     for(
p = 0; 
p < 2; ++
p)
 
 1063                         for (
int i=0; i<((*m_exp)[n]->
 
 1064                              GetVertexNormal(
p)).num_elements(); i++)
 
 1066                             vertnorm += ((*m_exp)[n]->GetVertexNormal(
p))[i][0];
 
 1067                             coords[0] = vertnorm ;
 
 1070                         t_offset = 
GetTrace()->GetPhys_Offset(n+
p);
 
 1072                         if (vertnorm >= 0.0)
 
 1074                             m_Ixm = BASE->GetI(coords);
 
 1077                             for (j = 0; j < e_ncoeffs; j++)
 
 1079                                 outarray[offset + j]  +=
 
 1080                                     (m_Ixm->GetPtr())[j] * Fn[t_offset];
 
 1086                             m_Ixm = BASE->GetI(coords);
 
 1088                             for (j = 0; j < e_ncoeffs; j++)
 
 1090                                 outarray[offset + j] -=
 
 1091                                     (m_Ixm->GetPtr())[j] * Fn[t_offset];
 
 1098                     static int sav_ncoeffs = 0;
 
 1099                     if(!m_Ixm.get() || e_ncoeffs != sav_ncoeffs)
 
 1112                         m_Ixm = BASE->GetI(coords); 
 
 1115                         m_Ixp = BASE->GetI(coords); 
 
 1117                         sav_ncoeffs = e_ncoeffs; 
 
 1120                     t_offset = 
GetTrace()->GetCoeff_Offset(elmtToTrace[n][0]->GetElmtId());
 
 1121                     if(negatedFluxNormal[2*n])
 
 1123                         for (j = 0; j < e_ncoeffs; j++)
 
 1125                             outarray[offset + j]  -=
 
 1126                                 (m_Ixm->GetPtr())[j] * Fn[t_offset];
 
 1131                         for (j = 0; j < e_ncoeffs; j++)
 
 1133                             outarray[offset + j]  +=
 
 1134                                 (m_Ixm->GetPtr())[j] * Fn[t_offset];
 
 1138                     t_offset = 
GetTrace()->GetCoeff_Offset(elmtToTrace[n][1]->GetElmtId());
 
 1139                     if (negatedFluxNormal[2*n+1])
 
 1141                         for (j = 0; j < e_ncoeffs; j++)
 
 1143                             outarray[offset + j] -=
 
 1144                                 (m_Ixp->GetPtr())[j] * Fn[t_offset];
 
 1149                         for (j = 0; j < e_ncoeffs; j++)
 
 1151                             outarray[offset + j] +=
 
 1152                                 (m_Ixp->GetPtr())[j] * Fn[t_offset];
 
 1168             const bool PhysSpaceForcing)
 
 1179             if(PhysSpaceForcing)
 
 1192             int GloBndDofs = 
m_traceMap->GetNumGlobalBndCoeffs();
 
 1193             int NumDirBCs  = 
m_traceMap->GetNumLocalDirBndCoeffs();
 
 1214             int     LocBndCoeffs = 
m_traceMap->GetNumLocalBndCoeffs();
 
 1222             for (cnt = n = 0; n < nexp; ++n)
 
 1224                 nbndry = (*m_exp)[n]->NumDGBndryCoeffs();
 
 1226                 e_ncoeffs = (*m_exp)[n]->GetNcoeffs();
 
 1228                 e_l       = loc_lambda + cnt;
 
 1233                 Floc = 
Transpose(*(HDGLamToU->GetBlock(n,n)))*ElmtFce;
 
 1248                     id = 
m_traceMap->GetBndCondCoeffsToGlobalCoeffsMap(i);
 
 1253                     id = 
m_traceMap->GetBndCondCoeffsToGlobalCoeffsMap(i);
 
 1261             if (GloBndDofs - NumDirBCs > 0)
 
 1282             m_traceMap->GlobalToLocalBnd(BndSol,loc_lambda);
 
 1285             out = (*InvHDGHelm)*F + (*HDGLamToU)*LocLambda;
 
 1299             const std::string varName,
 
 1326                             (boost::static_pointer_cast<SpatialDomains
 
 1328                              ->m_dirichletCondition).Evaluate(x0[0],x1[0],x2[0],time));
 
 1335                             (boost::static_pointer_cast<SpatialDomains
 
 1337                              ->m_neumannCondition).Evaluate(x0[0],x1[0],x2[0],time));
 
 1343                             (boost::static_pointer_cast<SpatialDomains
 
 1345                              ->m_robinFunction).Evaluate(x0[0],x1[0],x2[0],time));
 
 1354                         ASSERTL0(
false, 
"This type of BC not implemented yet");
 
 1365             map<int, int> VertGID;
 
 1371             if (ElmtID.num_elements() != nbcs)
 
 1377                 fill(ElmtID.get(), ElmtID.get()+nbcs, -1);
 
 1380             if (VertID.num_elements() != nbcs)
 
 1389                 VertGID[Vid] = cnt++;
 
 1397                 for(i = 0; i < exp->GetNverts(); ++i)
 
 1399                     id = exp->GetGeom()->GetVid(i);
 
 1401                     if (VertGID.count(
id) > 0)
 
 1403                         bid = VertGID.find(
id)->second;
 
 1404                         ASSERTL1(ElmtID[bid] == -1,
"Edge already set");
 
 1412             ASSERTL1(cnt == nbcs,
"Failed to visit all boundary condtiions");
 
 1416                             boost::shared_ptr<ExpList> &result,
 
 1417                             const bool DeclareCoeffPhysArrays)
 
 1420             int offsetOld, offsetNew;
 
 1421             std::vector<unsigned int> eIDs;
 
 1427             for (cnt = n = 0; n < i; ++n)
 
 1435                 eIDs.push_back(ElmtID[cnt+n]);
 
 1441                     (*
this, eIDs, DeclareCoeffPhysArrays);
 
 1444             if( DeclareCoeffPhysArrays)
 
 1447                 for (n = 0; n < result->GetExpSize(); ++n)
 
 1449                     nq = 
GetExp(ElmtID[cnt+n])->GetTotPoints();
 
 1451                     offsetNew = result->GetPhys_Offset(n);
 
 1453                                 tmp2 = result->UpdatePhys()+ offsetNew, 1);
 
 1455                     nq = 
GetExp(ElmtID[cnt+n])->GetNcoeffs();
 
 1457                     offsetNew = result->GetCoeff_Offset(n);
 
 1459                                 tmp2 = result->UpdateCoeffs()+ offsetNew, 1);
 
 1495             map<int, RobinBCInfoSharedPtr> returnval;
 
 1515                          ->m_robinPrimitiveCoeff).Evaluate(x0[0],x1[0],x2[0],0.0);
 
 1524                     if(returnval.count(elmtid) != 0)
 
 1526                         rInfo->next = returnval.find(elmtid)->second;
 
 1528                     returnval[elmtid] = rInfo;
 
virtual void v_GetBndElmtExpansion(int i, boost::shared_ptr< ExpList > &result, const bool DeclareCoeffPhysArrays)
GlobalSysSolnType GetGlobalSysSolnType() const 
Return the associated solution type. 
const DNekScalBlkMatSharedPtr & GetBlockMatrix(const GlobalMatrixKey &gkey)
const Array< OneD, const NekDouble > & GetCoeffs() const 
This function returns (a reference to) the array  (implemented as m_coeffs) containing all local expa...
#define ASSERTL0(condition, msg)
virtual void v_Reset()
Reset geometry information, metrics, matrix managers and geometry information. 
std::vector< bool > m_negatedFluxNormal
int GetCoeff_Offset(int n) const 
Get the start offset position for a global list of m_coeffs correspoinding to element n...
virtual void v_EvaluateBoundaryConditions(const NekDouble time=0.0, const std::string varName="", const NekDouble x2_in=NekConstants::kNekUnsetDouble, const NekDouble x3_in=NekConstants::kNekUnsetDouble)
Evaluate all boundary conditions at a given time.. 
static ExpListSharedPtr NullExpListSharedPtr
void EvaluateBoundaryConditions(const NekDouble time=0.0, const std::string varName="", const NekDouble=NekConstants::kNekUnsetDouble, const NekDouble=NekConstants::kNekUnsetDouble)
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool. 
virtual void v_AddTraceIntegral(const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
bool isLocal
Flag specifying if this entity is local to this partition. 
int GetPhys_Offset(int n) const 
Get the start offset position for a global list of m_phys correspoinding to element n...
const BoundaryConditionCollection & GetBoundaryConditions(void) const 
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
Array< OneD, SpatialDomains::BoundaryConditionShPtr > m_bndConditions
An array which contains the information about the boundary condition on the different boundary region...
boost::shared_ptr< RobinBCInfo > RobinBCInfoSharedPtr
virtual std::map< int, RobinBCInfoSharedPtr > v_GetRobinBCInfo()
void FindPeriodicVertices(const SpatialDomains::BoundaryConditions &bcs, const std::string variable)
Generate a associative map of periodic vertices in a mesh. 
const boost::shared_ptr< LocalRegions::ExpansionVector > GetExp() const 
This function returns the vector of elements in the expansion. 
Lagrange Polynomials using the Gauss points . 
SpatialDomains::BoundaryConditionsSharedPtr GetDomainBCs(const SpatialDomains::CompositeMap &domain, const SpatialDomains::BoundaryConditions &Allbcs, const std::string &variable)
std::map< ConstFactorType, NekDouble > ConstFactorMap
void SetUpDG(const std::string &variable)
void GetBoundaryToElmtMap(Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
Array< OneD, NekDouble > m_phys
The global expansion evaluated at the quadrature points. 
void ApplyGeomInfo()
Apply geometry information to each expansion. 
boost::shared_ptr< DNekMat > DNekMatSharedPtr
int GetExpSize(void)
This function returns the number of elements in the expansion. 
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
boost::shared_ptr< Expansion0D > Expansion0DSharedPtr
boost::shared_ptr< GlobalLinSys > GenGlobalBndLinSys(const GlobalLinSysKey &mkey, const AssemblyMapSharedPtr &locToGloMap)
Generate a GlobalLinSys from information provided by the key "mkey" and the mapping provided in LocTo...
void SetAdjacentElementExp(int vertex, Expansion1DSharedPtr &v)
1D Gauss-Gauss-Legendre quadrature points 
virtual void v_GetFwdBwdTracePhys(Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
BasisManagerT & BasisManager(void)
GlobalLinSysSharedPtr GetGlobalBndLinSys(const GlobalLinSysKey &mkey)
For a given key, returns the associated global linear system. 
std::vector< bool > m_leftAdjacentVerts
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs. 
void SetBoundaryConditionExpansion(const SpatialDomains::MeshGraphSharedPtr &graph1D, const SpatialDomains::BoundaryConditions &bcs, const std::string variable, Array< OneD, MultiRegions::ExpListSharedPtr > &bndCondExpansions, Array< OneD, SpatialDomains::BoundaryConditionShPtr > &bndConditions)
Populates the list of boundary condition expansions. 
Base class for all multi-elemental spectral/hp expansions. 
boost::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object. 
The base class for all shapes. 
boost::shared_ptr< ExpList > & GetTrace()
virtual void v_ExtractTracePhys(Array< OneD, NekDouble > &outarray)
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y. 
boost::shared_ptr< LocalRegions::ExpansionVector > m_exp
The list of local expansions. 
DisContField1D()
Default constructor. 
std::map< StdRegions::VarCoeffType, Array< OneD, NekDouble > > VarCoeffMap
virtual ~DisContField1D()
Destructor. 
int id
Geometry ID of entity. 
bool m_physState
The state of the array m_phys. 
int m_ncoeffs
The total number of local degrees of freedom. m_ncoeffs . 
std::map< int, Composite >::const_iterator CompositeMapConstIter
std::map< int, BoundaryRegionShPtr > BoundaryRegionCollection
boost::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
boost::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object. 
This class is the abstraction of a global discontinuous two- dimensional spectral/hp element expansio...
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
SpatialDomains::MeshGraphSharedPtr m_graph
Mesh associated with this expansion list. 
void GenerateBoundaryConditionExpansion(const SpatialDomains::MeshGraphSharedPtr &graph1D, const SpatialDomains::BoundaryConditions &bcs, const std::string variable)
Discretises the boundary conditions. 
LibUtilities::SessionReaderSharedPtr m_session
Session. 
AssemblyMapDGSharedPtr m_traceMap
Local to global DG mapping for trace space. 
Defines a specification for a set of points. 
void Neg(int n, T *x, const int incx)
Negate x = -x. 
boost::shared_ptr< Expansion > ExpansionSharedPtr
std::map< int, BoundaryConditionMapShPtr > BoundaryConditionCollection
boost::shared_ptr< GeometryVector > Composite
static const NekDouble kNekUnsetDouble
virtual void v_HelmSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const FlagList &flags, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing)
Solve the Helmholtz equation. 
Describe a linear system. 
std::map< int, Composite > CompositeMap
StdRegions::MatrixType GetMatrixType() const 
Return the matrix type. 
std::vector< int > m_periodicBwdCopy
Describes a matrix with ordering defined by a local to global map. 
const Array< OneD, const NekDouble > & GetPhys() const 
This function returns (a reference to) the array  (implemented as m_phys) containing the function  ev...
bool IsLeftAdjacentVertex(const int n, const int e)
GlobalLinSysMapShPtr m_globalBndMat
Global boundary matrix. 
boost::shared_ptr< ExpList0D > ExpList0DSharedPtr
Shared pointer to an ExpList0D object. 
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
static AssemblyMapSharedPtr NullAssemblyMapSharedPtr
boost::shared_ptr< BoundaryConditionMap > BoundaryConditionMapShPtr
std::vector< bool > & GetNegatedFluxNormal(void)
Array< OneD, MultiRegions::ExpListSharedPtr > m_bndCondExpansions
Discretised boundary conditions. 
virtual void v_Reset()
Reset this field, so that geometry information can be updated. 
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
NekDouble GetCoeff(int i)
Get the i th value (coefficient) of m_coeffs. 
boost::shared_ptr< MeshGraph1D > MeshGraph1DSharedPtr
std::set< int > m_boundaryVerts
A set storing the global IDs of any boundary edges. 
boost::shared_ptr< BoundaryConditions > BoundaryConditionsSharedPtr
void IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
This class is the abstraction of a one-dimensional multi-elemental expansions which is merely a colle...
ExpListSharedPtr m_trace
Trace space storage for points between elements. 
std::vector< int > m_periodicFwdCopy
A vector indicating degress of freedom which need to be copied from forwards to backwards space in ca...
static SpatialDomains::BoundaryConditionShPtr GetBoundaryCondition(const SpatialDomains::BoundaryConditionCollection &collection, unsigned int index, const std::string &variable)
boost::shared_ptr< GlobalLinSys > GlobalLinSysSharedPtr
Pointer to a GlobalLinSys object. 
const BoundaryRegionCollection & GetBoundaryRegions(void) const 
boost::shared_ptr< BoundaryConditionBase > BoundaryConditionShPtr
boost::shared_ptr< Basis > BasisSharedPtr
PeriodicMap m_periodicVerts
A map which identifies groups of periodic vertices. 
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. 
#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
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
boost::shared_ptr< BoundaryRegion > BoundaryRegionShPtr
Describes the specification for a Basis. 
boost::shared_ptr< PointGeom > PointGeomSharedPtr
virtual void v_GetBoundaryToElmtMap(Array< OneD, int > &ElmtID, Array< OneD, int > &VertID)