35#ifndef NEKTAR_LIBS_MULTIREGIONS_EXPLIST_H
36#define NEKTAR_LIBS_MULTIREGIONS_EXPLIST_H
65class GJPStabilisation;
97class ExpList :
public std::enable_shared_from_this<ExpList>
105 const bool DeclareCoeffPhysArrays =
true);
109 const std::vector<unsigned int> &eIDs,
110 const bool DeclareCoeffPhysArrays =
true,
118 const bool DeclareCoeffPhysArrays =
true,
119 const std::string &var =
"DefaultVar",
127 const bool DeclareCoeffPhysArrays =
true,
148 const bool DeclareCoeffPhysArrays =
true,
149 const std::string variable =
"DefaultVar",
158 const bool DeclareCoeffPhysArrays,
const std::string variable,
168 const bool DeclareCoeffPhysArrays =
true,
169 const std::string variable =
"DefaultVar",
170 bool SetToOneSpaceDimension =
false,
317 const bool PhysSpaceForcing =
true);
328 const bool PhysSpaceForcing =
true);
339 const bool PhysSpaceForcing =
true);
364 bool Shuff =
true,
bool UnShuff =
true);
368 bool Shuff =
true,
bool UnShuff =
true);
424 std::string var =
"v")
531 return v_L2(inarray, soln);
672 inline const std::shared_ptr<LocalRegions::ExpansionVector>
GetExp()
const;
714 bool returnNearestElmt =
false,
int cachedId = -1,
725 bool returnNearestElmt =
false,
int cachedId = -1,
795 inline std::shared_ptr<ExpList> &
GetTrace();
796 inline std::shared_ptr<AssemblyMapDG> &
GetTraceMap(
void);
818 bool PutFwdInBwdOnBCs =
false,
819 bool DoExchange =
true);
822 bool PutFwdInBwdOnBCs =
false);
860 bool gridVelocity =
false);
866 const NekDouble time = 0.0,
const std::string varName =
"",
884 const bool DeclareCoeffPhysArrays =
true);
901 std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef,
906 bool homoStrips =
false,
907 std::vector<unsigned int> &HomoSIDs =
909 std::vector<unsigned int> &HomoZIDs =
911 std::vector<unsigned int> &HomoYIDs =
932 std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef)
940 std::vector<NekDouble> &fielddata)
947 std::vector<NekDouble> &fielddata,
958 std::vector<NekDouble> &fielddata, std::string &field,
966 const std::shared_ptr<ExpList> &fromExpList,
973 std::vector<NekDouble> &fielddata, std::string &field,
975 std::unordered_map<int, int> zIdToPlane =
976 std::unordered_map<int, int>());
987 return shared_from_this();
990 std::shared_ptr<LibUtilities::SessionReader>
GetSession()
const
995 std::shared_ptr<LibUtilities::Comm>
GetComm()
const
1078 std::to_string(elmtId) +
1079 " not found in element ID to "
1080 "expansion ID map.")
1120 const std::shared_ptr<AssemblyMapCG> &locToGloMap);
1184 std::shared_ptr<LocalRegions::ExpansionVector>
m_exp;
1216 const std::shared_ptr<AssemblyMapCG> &locToGloMap);
1218 const std::shared_ptr<DNekMat> &Gmat,
1226 const std::shared_ptr<AssemblyMapCG> &locToGloMap);
1234 return (*m_exp).size();
1269 bool FillBnd =
true,
1270 bool PutFwdInBwdOnBCs =
false,
1271 bool DoExchange =
true);
1274 bool PutFwdInBwdOnBCs);
1301 bool gridVelocity =
false);
1313 const bool PhysSpaceForcing);
1322 const bool PhysSpaceForcing);
1331 const bool PhysSpaceForcing);
1411 bool UnShuff =
true);
1415 bool UnShuff =
true);
1438 const bool DeclareCoeffPhysArrays);
1455 virtual std::vector<LibUtilities::FieldDefinitionsSharedPtr>
1459 std::vector<LibUtilities::FieldDefinitionsSharedPtr> &fielddef);
1463 std::vector<NekDouble> &fielddata);
1469 std::vector<NekDouble> &fielddata, std::string &field,
1471 std::unordered_map<int, int> zIdToPlane);
1473 const std::shared_ptr<ExpList> &fromExpList,
1477 std::string var =
"");
1523 const std::string &varName,
1524 const std::shared_ptr<ExpList> locExpList);
1531 unsigned int index,
const std::string &variable);
1540 const NekDouble time = 0.0,
const std::string varName =
"",
1556 "This method is not defined or valid for this class type");
1565 "This method is not defined or valid for this class type");
1585 bool SetupOffsets =
true);
1614 return (*
m_exp)[eid]->GetNcoeffs();
1625 for (
size_t i = 0; i < (*m_exp).size(); ++i)
1627 returnval = (std::max)(returnval, (*
m_exp)[i]->EvalBasisNumModesMax());
1640 for (
size_t i = 0; i < (*m_exp).size(); ++i)
1643 (std::max)(returnval[i], (*
m_exp)[i]->EvalBasisNumModesMax());
1659 return (*
m_exp)[eid]->GetTotPoints();
1666 size_t nbase = (*m_exp)[0]->GetNumBases();
1668 for (
size_t i = 0; i < (*m_exp).size(); ++i)
1670 int npt0 = (*m_exp)[i]->GetNumPoints(0);
1673 for (
size_t j = 0; j < nbase; ++j)
1675 int npt = (*m_exp)[i]->GetNumPoints(j);
1676 cnt *= (npt0 - npt == 1) ? (
size_t)(scale * npt0 - 1)
1677 : (size_t)(scale * npt);
1724 "Input array does not have correct number of elements.");
1840 return v_HelmSolve(inarray, outarray, factors, varcoeff, varfactors,
1841 dirForcing, PhysSpaceForcing);
1854 inarray, outarray, factors, varcoeff, varfactors, dirForcing,
1866 varfactors, dirForcing,
2007 ASSERTL2(eid <= (*m_exp).size(),
"eid is larger than number of elements");
2008 return (*
m_exp)[eid]->GetCoordim();
2016 return (*
m_exp)[0]->GetShapeDimension();
2159 return (*m_exp).size();
2182 " not found in element ID to "
2183 "expansion ID map.")
2184 return (*
m_exp)[it->second];
2318 bool PutFwdInBwdOnBCs)
2390 const std::string varName,
2412 std::shared_ptr<ExpList> &result,
2413 const bool DeclareCoeffPhysArrays)
#define ASSERTL0(condition, msg)
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed to...
#define MULTI_REGIONS_EXPORT
Base class for all multi-elemental spectral/hp expansions.
Array< OneD, NekDouble > m_coeffs
Concatenation of all local expansion coefficients.
Array< OneD, NekDouble > & UpdateCoeffs()
This function returns (a reference to) the array (implemented as m_coeffs) containing all local expa...
void AddTraceJacToElmtJac(const Array< OneD, const DNekMatSharedPtr > &FwdMat, const Array< OneD, const DNekMatSharedPtr > &BwdMat, Array< OneD, DNekMatSharedPtr > &fieldMat)
void IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function calculates the inner product of a function with respect to all local expansion modes .
virtual void v_DealiasedDotProd(const int num_dofs, const Array< OneD, Array< OneD, NekDouble > > &inarray1, const Array< OneD, Array< OneD, NekDouble > > &inarray2, Array< OneD, Array< OneD, NekDouble > > &outarray)
const Array< OneD, const std::shared_ptr< ExpList > > & GetBndCondExpansions()
std::shared_ptr< ExpList > & GetTrace()
virtual std::shared_ptr< ExpList > & v_GetTrace()
void WriteTecplotConnectivity(std::ostream &outfile, int expansion=-1)
virtual void v_PeriodicBwdCopy(const Array< OneD, const NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
int GetNcoeffs(void) const
Returns the total number of local degrees of freedom .
std::shared_ptr< GlobalLinSys > GenGlobalLinSys(const GlobalLinSysKey &mkey, const std::shared_ptr< AssemblyMapCG > &locToGloMap)
This operation constructs the global linear system of type mkey.
const DNekScalBlkMatSharedPtr & GetBlockMatrix(const GlobalMatrixKey &gkey)
LibUtilities::NekManager< GlobalLinSysKey, GlobalLinSys > & GetGlobalLinSysManager(void)
ExpList(const ExpansionType Type=eNoType)
The default constructor using a type.
virtual void v_ImposeNeumannConditions(Array< OneD, NekDouble > &outarray)
void SetCoeffs(int i, NekDouble val)
Set the i th coefficiient in m_coeffs to value val.
virtual void v_FillBndCondFromField(const Array< OneD, NekDouble > coeffs)
ExpList(const ExpList &in, const std::vector< unsigned int > &eIDs, const bool DeclareCoeffPhysArrays=true, const Collections::ImplementationType ImpType=Collections::eNoImpType)
Constructor copying only elements defined in eIds.
virtual ~ExpList()
The default destructor.
void CreateCollections(Collections::ImplementationType ImpType=Collections::eNoImpType)
void ExponentialFilter(Array< OneD, NekDouble > &array, const NekDouble alpha, const NekDouble exponent, const NekDouble cutoff)
virtual Array< OneD, const NekDouble > v_HomogeneousEnergy(void)
virtual void v_AddFwdBwdTraceIntegral(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &outarray)
virtual void v_WriteTecplotHeader(std::ostream &outfile, std::string var="")
virtual void v_SetHomoLen(const NekDouble lhom)
void MultiplyByMassMatrix(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GlobalEigenSystem(const std::shared_ptr< DNekMat > &Gmat, Array< OneD, NekDouble > &EigValsReal, Array< OneD, NekDouble > &EigValsImag, Array< OneD, NekDouble > &EigVecs=NullNekDouble1DArray)
void FillBwdWithBoundCond(const Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd, bool PutFwdInBwdOnBCs=false)
virtual void v_RotLocalBwdTrace(Array< OneD, Array< OneD, NekDouble > > &Bwd)
void AddRightIPTPhysDerivBase(const int dir, const Array< OneD, const DNekMatSharedPtr > ElmtJacQuad, Array< OneD, DNekMatSharedPtr > ElmtJacCoef)
void ExtractPhysToBndElmt(int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bndElmt)
virtual void v_SetUpPhysNormals()
void Reset()
Reset geometry information and reset matrices.
int GetExpIndex(const Array< OneD, const NekDouble > &gloCoord, NekDouble tol=0.0, bool returnNearestElmt=false, int cachedId=-1, NekDouble maxDistance=1e6)
This function returns the index of the local elemental expansion containing the arbitrary point given...
void GetFieldDefinitions(std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
virtual const std::shared_ptr< GJPStabilisation > v_GetGJPData(void)
BlockMatrixMapShPtr m_blockMat
virtual void v_UnsetGlobalLinSys(GlobalLinSysKey, bool)
void MultiplyByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
multiply the metric jacobi and quadrature weights
void SetPhys(int i, NekDouble val)
Set the i th value of m_phys to value val.
void ExtractTracePhys(Array< OneD, NekDouble > &outarray)
LocalRegions::ExpansionSharedPtr & GetExp(const Array< OneD, const NekDouble > &gloCoord)
This function returns (a shared pointer to) the local elemental expansion containing the arbitrary po...
void GetBoundaryToElmtMap(Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
void PeriodicBwdCopy(const Array< OneD, const NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
Copy and fill the Periodic boundaries.
void WriteVtkPieceFooter(std::ostream &outfile, int expansion)
GlobalLinSysKey HelmSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff=StdRegions::NullVarCoeffMap, const StdRegions::VarFactorsMap &varfactors=StdRegions::NullVarFactorsMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray, const bool PhysSpaceForcing=true)
Solve helmholtz problem.
virtual LibUtilities::TranspositionSharedPtr v_GetTransposition(void)
std::shared_ptr< DNekMat > GenGlobalMatrixFull(const GlobalLinSysKey &mkey, const std::shared_ptr< AssemblyMapCG > &locToGloMap)
std::shared_ptr< InterfaceMapDG > & GetInterfaceMap(void)
void GetBwdWeight(Array< OneD, NekDouble > &weightAver, Array< OneD, NekDouble > &weightJump)
Get the weight value for boundary conditions for boundary average and jump calculations.
virtual void v_WriteTecplotField(std::ostream &outfile, int expansion)
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)
virtual std::map< int, RobinBCInfoSharedPtr > v_GetRobinBCInfo(void)
virtual void v_ExtractTracePhys(Array< OneD, NekDouble > &outarray)
virtual void v_WriteVtkPieceData(std::ostream &outfile, int expansion, std::string var)
void InitialiseExpVector(const SpatialDomains::ExpansionInfoMap &expmap)
Define a list of elements using the geometry and basis key information in expmap;.
void SetupCoeffPhys(bool DeclareCoeffPhysArrays=true, bool SetupOffsets=true)
Definition of the total number of degrees of freedom and quadrature points and offsets to access data...
void RotLocalBwdTrace(Array< OneD, Array< OneD, NekDouble > > &Bwd)
Rotate local Bwd trace across a rotational interface when the flow is perpendicular to the rotation a...
virtual LibUtilities::BasisSharedPtr v_GetHomogeneousBasis(void)
virtual void v_ExtractPhysToBndElmt(const int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bndElmt)
const Array< OneD, const NekDouble > & GetCoeffs() const
This function returns (a reference to) the array (implemented as m_coeffs) containing all local expa...
const Array< OneD, const Array< OneD, NekDouble > > & GetGridVelocity()
virtual void v_IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void GetBndElmtExpansion(int i, std::shared_ptr< ExpList > &result, const bool DeclareCoeffPhysArrays=true)
void SetPhysArray(Array< OneD, NekDouble > &inarray)
Sets the array m_phys.
const Collections::CollectionVector & GetCollections() const
This function returns collections.
virtual void v_ClearGlobalLinSysManager(void)
void FillBndCondFromField(const Array< OneD, NekDouble > coeffs)
Fill Bnd Condition expansion from the values stored in expansion.
const Array< OneD, const std::pair< int, int > > & GetCoeffsToElmt() const
Get m_coeffs to elemental value map.
const Array< OneD, const NekDouble > & GetPhys() const
This function returns (a reference to) the array (implemented as m_phys) containing the function ev...
ExpList(const LibUtilities::SessionReaderSharedPtr &pSession, const LocalRegions::ExpansionVector &locexp, const SpatialDomains::MeshGraphSharedPtr &graph, const bool DeclareCoeffPhysArrays, const std::string variable, const Collections::ImplementationType ImpType=Collections::eNoImpType)
Generate an trace ExpList from a meshgraph graph and session file.
std::shared_ptr< ExpList > & UpdateBndCondExpansion(int i)
void NormVectorIProductWRTBase(Array< OneD, const NekDouble > &V1, Array< OneD, const NekDouble > &V2, Array< OneD, NekDouble > &outarray, int BndID)
int GetCoeff_Offset(int n) const
Get the start offset position for a local contiguous list of coeffs correspoinding to element n.
virtual void v_SetBndCondBwdWeight(const int index, const NekDouble value)
virtual void v_NormVectorIProductWRTBase(Array< OneD, Array< OneD, NekDouble > > &V, Array< OneD, NekDouble > &outarray)
int GetExpSize(void)
This function returns the number of elements in the expansion.
virtual void v_CurlCurl(Array< OneD, Array< OneD, NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q)
SpatialDomains::EntityHolder1D m_holder
Pointer holder for PulseWaveSolver.
std::shared_ptr< LibUtilities::SessionReader > GetSession() const
Returns the session object.
std::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 GetMatIpwrtDeriveBase(const TensorOfArray3D< NekDouble > &inarray, Array< OneD, DNekMatSharedPtr > &mtxPerVar)
void GeneralGetFieldDefinitions(std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef, int NumHomoDir=0, Array< OneD, LibUtilities::BasisSharedPtr > &HomoBasis=LibUtilities::NullBasisSharedPtr1DArray, std::vector< NekDouble > &HomoLen=LibUtilities::NullNekDoubleVector, bool homoStrips=false, std::vector< unsigned int > &HomoSIDs=LibUtilities::NullUnsignedIntVector, std::vector< unsigned int > &HomoZIDs=LibUtilities::NullUnsignedIntVector, std::vector< unsigned int > &HomoYIDs=LibUtilities::NullUnsignedIntVector)
virtual void v_PhysDeriv(Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
void IProductWRTDerivBase(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function calculates the inner product of a function with respect to the derivative (in directio...
void SetCoeffsArray(Array< OneD, NekDouble > &inarray)
Set the m_coeffs array to inarray.
LibUtilities::TranspositionSharedPtr GetTransposition(void)
This function returns the transposition class associated with the homogeneous expansion.
virtual void v_ImposeDirichletConditions(Array< OneD, NekDouble > &outarray)
void SetBndCondBwdWeight(const int index, const NekDouble value)
Set the weight value for boundary conditions.
void SetHomoLen(const NekDouble lhom)
This function sets the Width of homogeneous direction associated with the homogeneous expansion.
virtual void v_AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
virtual void v_IProductWRTDerivBase(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_WriteTecplotConnectivity(std::ostream &outfile, int expansion)
virtual std::shared_ptr< ExpList > & v_UpdateBndCondExpansion(int i)
int GetNpoints(void) const
Returns the total number of quadrature points m_npoints .
SpatialDomains::MeshGraphSharedPtr GetGraph()
virtual const std::shared_ptr< LocTraceToTraceMap > & v_GetLocTraceToTraceMap(void) const
void GetFwdBwdTracePhys(Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
int GetElmtToExpId(int elmtId)
This function returns the index inside m_exp for a given geom id.
const Array< OneD, const int > & GetTraceBndMap(void)
virtual GlobalLinSysKey v_HelmSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const StdRegions::VarFactorsMap &varfactors, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing)
virtual void v_PhysDeriv(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2)
Array< OneD, Array< OneD, NekDouble > > m_gridVelocity
Grid velocity at quadrature points.
int GetPoolCount(std::string)
void FwdTransLocalElmt(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function elementally evaluates the forward transformation of a function onto the global spectra...
Array< OneD, const unsigned int > GetZIDs(void)
This function returns a vector containing the wave numbers in z-direction associated with the 3D homo...
const std::shared_ptr< GJPStabilisation > GetGJPData(void)
void ClearGlobalLinSysManager(void)
void FwdTransBndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual size_t v_GetNumElmts(void)
virtual std::shared_ptr< AssemblyMapDG > & v_GetTraceMap()
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
int EvalBasisNumModesMax(void) const
Evaulates the maximum number of modes in the elemental basis order over all elements.
void AddFwdBwdTraceIntegral(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &outarray)
virtual void v_GetLocTraceFromTracePts(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &locTraceFwd, Array< OneD, NekDouble > &locTraceBwd)
std::shared_ptr< AssemblyMapDG > & GetTraceMap(void)
void WriteTecplotField(std::ostream &outfile, int expansion=-1)
virtual void v_AddTraceQuadPhysToOffDiag(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &field)
size_t GetNumElmts(void)
This function returns the number of elements in the expansion which may be different for a homogeoeno...
virtual LibUtilities::NekManager< GlobalLinSysKey, GlobalLinSys > & v_GetGlobalLinSysManager(void)
Array< OneD, std::pair< int, int > > m_coeffsToElmt
m_coeffs to elemental value map
virtual void v_Upwind(const Array< OneD, const Array< OneD, NekDouble > > &Vec, const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &Upwind)
NekDouble PhysEvaluate(const Array< OneD, const NekDouble > &coords, const Array< OneD, const NekDouble > &phys)
const std::unordered_map< int, int > & GetElmtToExpId(void)
This function returns the map of index inside m_exp to geom id.
virtual void v_GetPeriodicEntities(PeriodicMap &periodicVerts, PeriodicMap &periodicEdges, PeriodicMap &periodicFaces)
virtual GlobalLinSysKey v_LinearAdvectionReactionSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const StdRegions::VarFactorsMap &varfactors, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing)
void PhysDirectionalDeriv(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual NekDouble v_Integral(const Array< OneD, const NekDouble > &inarray)
virtual void v_IProductWRTBase(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GetBoundaryNormals(int i, Array< OneD, Array< OneD, NekDouble > > &normals)
virtual void v_RotLocalBwdDeriveTrace(TensorOfArray3D< NekDouble > &Bwd)
GlobalLinSysKey LinearAdvectionDiffusionReactionSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff=StdRegions::NullVarCoeffMap, const StdRegions::VarFactorsMap &varfactors=StdRegions::NullVarFactorsMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray, const bool PhysSpaceForcing=true)
Solve Advection Diffusion Reaction.
virtual void v_LocalToGlobal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseComm)
void ExtractFileBCs(const std::string &fileName, LibUtilities::CommSharedPtr comm, const std::string &varName, const std::shared_ptr< ExpList > locExpList)
virtual const Array< OneD, const std::shared_ptr< ExpList > > & v_GetBndCondExpansions(void)
void GetMovingFrames(const SpatialDomains::GeomMMF MMFdir, const Array< OneD, const NekDouble > &CircCentre, Array< OneD, Array< OneD, NekDouble > > &outarray)
const LocTraceToTraceMapSharedPtr & GetLocTraceToTraceMap() const
Array< OneD, const NekDouble > HomogeneousEnergy(void)
This function calculates the energy associated with each one of the modesof a 3D homogeneous nD expan...
void SetHomo1DSpecVanVisc(Array< OneD, NekDouble > visc)
This function sets the Spectral Vanishing Viscosity in homogeneous1D expansion.
virtual void v_HomogeneousFwdTrans(const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Shuff=true, bool UnShuff=true)
void ExtractCoeffsToCoeffs(const std::shared_ptr< ExpList > &fromExpList, const Array< OneD, const NekDouble > &fromCoeffs, Array< OneD, NekDouble > &toCoeffs)
Extract the data from fromField using fromExpList the coeffs using the basic ExpList Elemental expans...
virtual void v_GlobalToLocal(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GetCoords(Array< OneD, NekDouble > &coord_0, Array< OneD, NekDouble > &coord_1=NullNekDouble1DArray, Array< OneD, NekDouble > &coord_2=NullNekDouble1DArray)
This function calculates the coordinates of all the elemental quadrature points .
void ResetMatrices()
Reset matrices.
const Array< OneD, int > EvalBasisNumModesMaxPerExp(void) const
Returns the vector of the number of modes in the elemental basis order over all elements.
void PeriodicBwdRot(Array< OneD, Array< OneD, NekDouble > > &Bwd)
Rotate Bwd trace for rotational periodicity boundaries when the flow is perpendicular to the rotation...
virtual void v_HomogeneousBwdTrans(const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Shuff=true, bool UnShuff=true)
virtual void v_GetBndElmtExpansion(int i, std::shared_ptr< ExpList > &result, const bool DeclareCoeffPhysArrays)
virtual std::shared_ptr< InterfaceMapDG > & v_GetInterfaceMap()
void UnsetGlobalLinSys(GlobalLinSysKey, bool)
ExpList(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::CompositeMap &domain, const SpatialDomains::MeshGraphSharedPtr &graph, const bool DeclareCoeffPhysArrays=true, const std::string variable="DefaultVar", bool SetToOneSpaceDimension=false, const LibUtilities::CommSharedPtr comm=LibUtilities::CommSharedPtr(), const Collections::ImplementationType ImpType=Collections::eNoImpType)
Constructor based on domain information only for 1D & 2D boundary conditions.
void DealiasedProd(const int num_dofs, const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray)
void GetNormals(Array< OneD, Array< OneD, NekDouble > > &normals)
void ExtractPhysToBnd(int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bnd)
virtual void v_GlobalToLocal(void)
std::vector< bool > m_collectionsDoInit
Vector of bools to act as an initialise on first call flag.
NekDouble GetCoeff(int i)
Get the i th value (coefficient) of m_coeffs.
bool m_physState
The state of the array m_phys.
virtual void v_SmoothField(Array< OneD, NekDouble > &field)
void ExtractCoeffsFromFile(const std::string &fileName, LibUtilities::CommSharedPtr comm, const std::string &varName, Array< OneD, NekDouble > &coeffs)
NekDouble Integral()
Calculates the error of the global spectral/hp element approximation.
std::shared_ptr< ExpList > & GetPlane(int n)
void AddRightIPTBaseMatrix(const Array< OneD, const DNekMatSharedPtr > ElmtJacQuad, Array< OneD, DNekMatSharedPtr > ElmtJacCoef)
virtual std::vector< bool > & v_GetLeftAdjacentTraces(void)
void GetLocTraceFromTracePts(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &locTraceFwd, Array< OneD, NekDouble > &locTraceBwd)
virtual void v_PeriodicBwdRot(Array< OneD, Array< OneD, NekDouble > > &Bwd)
std::shared_ptr< ExpList > GetSharedThisPtr()
Returns a shared pointer to the current object.
int GetShapeDimension()
This function returns the dimension of the shape of the element eid.
void ExtractElmtDataToCoeffs(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs)
Extract the data in fielddata into the coeffs using the basic ExpList Elemental expansions rather tha...
NekDouble H1(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
Calculates the error of the global spectral/hp element approximation.
virtual void v_ExtractCoeffsToCoeffs(const std::shared_ptr< ExpList > &fromExpList, const Array< OneD, const NekDouble > &fromCoeffs, Array< OneD, NekDouble > &toCoeffs)
std::vector< int > m_coll_phys_offset
Offset of elemental data into the array m_phys.
LibUtilities::CommSharedPtr m_comm
Communicator.
void WriteVtkHeader(std::ostream &outfile)
bool GetPhysState(void) const
This function indicates whether the array of physical values (implemented as m_phys) is filled or no...
std::shared_ptr< LocalRegions::ExpansionVector > m_exp
The list of local expansions.
virtual NekDouble v_VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &inarray)
ExpList(const ExpList &in, const bool DeclareCoeffPhysArrays=true)
The copy constructor.
int m_ncoeffs
The total number of local degrees of freedom. m_ncoeffs .
virtual void v_AddTraceQuadPhysToField(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &field)
void GenerateElementVector(const int ElementID, const NekDouble scalar1, const NekDouble scalar2, Array< OneD, NekDouble > &outarray)
NekDouble VectorFlux(const Array< OneD, Array< OneD, NekDouble > > &inarray)
void AddTraceIntegralToOffDiag(const Array< OneD, const NekDouble > &FwdFlux, const Array< OneD, const NekDouble > &BwdFlux, Array< OneD, NekDouble > &outarray)
virtual void v_ExtractDataToCoeffs(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs, std::unordered_map< int, int > zIdToPlane)
const Array< OneD, const SpatialDomains::BoundaryConditionShPtr > & GetBndConditions()
virtual Array< OneD, SpatialDomains::BoundaryConditionShPtr > & v_UpdateBndConditions()
LocalRegions::ExpansionSharedPtr & GetExpFromGeomId(int n)
This function returns (a shared pointer to) the local elemental expansion of the element given a glo...
virtual void v_DealiasedProd(const int num_dofs, const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray)
void SetPhysState(const bool physState)
This function manually sets whether the array of physical values (implemented as m_phys) is filled o...
void PhysGalerkinProjection1DScaled(const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function Galerkin projects the physical space points in inarray to outarray where inarray is ass...
virtual void v_WriteVtkPieceHeader(std::ostream &outfile, int expansion, int istrip)
void CurlCurl(Array< OneD, Array< OneD, NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q)
std::map< int, RobinBCInfoSharedPtr > GetRobinBCInfo()
virtual void v_GetBoundaryNormals(int i, Array< OneD, Array< OneD, NekDouble > > &normals)
virtual void v_AvgAssemble(bool UseComm)
int Get_coll_coeff_offset(int n) const
void EvaluateBoundaryConditions(const NekDouble time=0.0, const std::string varName="", const NekDouble=NekConstants::kNekUnsetDouble, const NekDouble=NekConstants::kNekUnsetDouble)
std::vector< LibUtilities::FieldDefinitionsSharedPtr > GetFieldDefinitions()
virtual void v_PeriodicDeriveBwdRot(TensorOfArray3D< NekDouble > &Bwd)
Array< OneD, NekDouble > & UpdatePhys()
This function returns (a reference to) the array (implemented as m_phys) containing the function ev...
void ImposeRobinConditions(Array< OneD, NekDouble > &outarray)
Add Robin Boundary Condition forcing to Array.
virtual const Array< OneD, const int > & v_GetTraceBndMap()
void GeneralMatrixOp(const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function calculates the result of the multiplication of a matrix of type specified by mkey with ...
void ExtractElmtToBndPhys(int i, const Array< OneD, NekDouble > &elmt, Array< OneD, NekDouble > &boundary)
virtual void v_GetBoundaryToElmtMap(Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
void HomogeneousBwdTrans(const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Shuff=true, bool UnShuff=true)
void SetWaveSpace(const bool wavespace)
Sets the wave space to the one of the possible configuration true or false.
virtual void v_AvgAssemble(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseComm)
const std::shared_ptr< LocalRegions::ExpansionVector > GetExp() const
This function returns the vector of elements in the expansion.
SpatialDomains::MeshGraphSharedPtr m_graph
Mesh associated with this expansion list.
virtual void v_AddTraceIntegral(const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_GetCoords(const int eid, Array< OneD, NekDouble > &xc0, Array< OneD, NekDouble > &xc1, Array< OneD, NekDouble > &xc2)
virtual void v_GetBCValues(Array< OneD, NekDouble > &BndVals, const Array< OneD, NekDouble > &TotField, int BndID)
virtual NekDouble v_L2(const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
void GlobalToLocal(void)
Scatters from the global coefficients to the local coefficients .
const Array< OneD, const NekDouble > & GetBndCondBwdWeight()
Get the weight value for boundary conditions.
void WriteVtkFooter(std::ostream &outfile)
virtual void v_PhysDeriv(const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
void AvgAssemble(bool useComm=true)
Assemble the average global coefficients from the local coefficients .
virtual void v_WriteTecplotZone(std::ostream &outfile, int expansion)
virtual void v_FwdTransBndConstrained(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void GetElmtNormalLength(Array< OneD, NekDouble > &lengthsFwd, Array< OneD, NekDouble > &lengthsBwd)
Get the length of elements in boundary normal direction.
virtual void v_ExtractPhysToBnd(const int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bnd)
virtual void v_ExtractTracePhys(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool gridVelocity=false)
int Get1DScaledTotPoints(const NekDouble scale) const
Returns the total number of qudature points scaled by the factor scale on each 1D direction.
ExpList(SpatialDomains::PointGeom *geom)
Specialised constructors for 0D Expansions Wrapper around LocalRegion::PointExp - used in PrePacing....
virtual void v_AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, Array< OneD, NekDouble > &coeffs)
virtual void v_FillBndCondFromField(const int nreg, const Array< OneD, NekDouble > coeffs)
void PhysInterp1DScaled(const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function interpolates the physical space points in inarray to outarray using the same points def...
NekDouble L2(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
This function calculates the error of the global This function calculates the error with respect to...
void PeriodicDeriveBwdRot(TensorOfArray3D< NekDouble > &Bwd)
Rotate Bwd trace derivative for rotational periodicity boundaries when the flow is perpendicular to t...
virtual void v_FwdTransLocalElmt(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
std::vector< int > m_coll_coeff_offset
Offset of elemental data into the array m_coeffs.
void IProductWRTDirectionalDerivBase(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void WriteVtkPieceData(std::ostream &outfile, int expansion, std::string var="v")
void FillBwdWithBwdWeight(Array< OneD, NekDouble > &weightave, Array< OneD, NekDouble > &weightjmp)
Fill Bwd with boundary conditions.
void SetCoeff(int i, NekDouble val)
Set the i th coefficiient in m_coeffs to value val.
void GetMatIpwrtDeriveBase(const Array< OneD, const Array< OneD, NekDouble > > &inarray, const int nDirctn, Array< OneD, DNekMatSharedPtr > &mtxPerVar)
void LocalToGlobal(bool useComm=true)
Gathers the global coefficients from the local coefficients .
void GetPeriodicEntities(PeriodicMap &periodicVerts, PeriodicMap &periodicEdges, PeriodicMap &periodicFaces=NullPeriodicMap)
void MultiplyByBlockMatrix(const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Transpose=false)
NekDouble Integral(const Array< OneD, const NekDouble > &inarray)
virtual std::shared_ptr< ExpList > & v_GetPlane(int n)
virtual void v_AddTraceIntegralToOffDiag(const Array< OneD, const NekDouble > &FwdFlux, const Array< OneD, const NekDouble > &BwdFlux, Array< OneD, NekDouble > &outarray)
ExpList(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &graph, const bool DeclareCoeffPhysArrays=true, const std::string &var="DefaultVar", const Collections::ImplementationType ImpType=Collections::eNoImpType)
Generate an ExpList from a meshgraph graph and session file.
Collections::CollectionVector m_collections
virtual const Array< OneD, const NekDouble > & v_GetBndCondBwdWeight()
void AddTraceQuadPhysToField(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &field)
Add Fwd and Bwd value to field, a reverse procedure of GetFwdBwdTracePhys.
virtual void v_SetBCsToHomogeneous(void)
virtual void v_MultiplyByInvMassMatrix(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual int v_GetPoolCount(std::string)
int GetExpIndex(const Array< OneD, const NekDouble > &gloCoords, Array< OneD, NekDouble > &locCoords, NekDouble tol=0.0, bool returnNearestElmt=false, int cachedId=-1, NekDouble maxDistance=1e6)
virtual void v_PhysDirectionalDeriv(const Array< OneD, const NekDouble > &direction, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void ApplyGeomInfo()
Apply geometry information to each expansion.
void AddTraceIntegral(const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_GetFieldDefinitions(std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
std::unordered_map< int, int > m_elmtToExpId
Mapping from geometry ID of element to index inside m_exp.
virtual GlobalLinSysKey v_LinearAdvectionDiffusionReactionSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const StdRegions::VarFactorsMap &varfactors, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing)
void FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_ImposeRobinConditions(Array< OneD, NekDouble > &outarray)
virtual void v_GetFwdBwdTracePhys(const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd, bool FillBnd=true, bool PutFwdInBwdOnBCs=false, bool DoExchange=true)
virtual void v_BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_ExtractElmtToBndPhys(const int i, const Array< OneD, NekDouble > &elmt, Array< OneD, NekDouble > &boundary)
void SmoothField(Array< OneD, NekDouble > &field)
Smooth a field across elements.
virtual void v_GetFwdBwdTracePhys(Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
virtual const Array< OneD, const SpatialDomains::BoundaryConditionShPtr > & v_GetBndConditions()
Array< OneD, const unsigned int > GetYIDs(void)
This function returns a vector containing the wave numbers in y-direction associated with the 3D homo...
virtual std::vector< LibUtilities::FieldDefinitionsSharedPtr > v_GetFieldDefinitions(void)
LibUtilities::SessionReaderSharedPtr m_session
Session.
static SpatialDomains::BoundaryConditionShPtr GetBoundaryCondition(const SpatialDomains::BoundaryConditionCollection &collection, unsigned int index, const std::string &variable)
virtual void v_FillBwdWithBoundCond(const Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd, bool PutFwdInBwdOnBCs)
virtual void v_GetMovingFrames(const SpatialDomains::GeomMMF MMFdir, const Array< OneD, const NekDouble > &CircCentre, Array< OneD, Array< OneD, NekDouble > > &outarray)
void MultiplyByInvMassMatrix(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void SetBCsToHomogeneous(void)
Set boundary conditions to be homogeneous.
virtual void v_GetNormals(Array< OneD, Array< OneD, NekDouble > > &normals)
Populate normals with the normals of all expansions.
void AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, Array< OneD, NekDouble > &coeffs)
Append the data in coeffs listed in elements fielddef->m_ElementIDs onto fielddata.
virtual Array< OneD, const unsigned int > v_GetZIDs(void)
void DivideByQuadratureMetric(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Divided by the metric jacobi and quadrature weights.
void ImposeDirichletConditions(Array< OneD, NekDouble > &outarray)
Impose Dirichlet Boundary Conditions onto Array.
virtual void v_FwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
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)
Array< OneD, int > m_phys_offset
Offset of elemental data into the array m_phys.
void Upwind(const Array< OneD, const NekDouble > &Vn, const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &Upwind)
void RotLocalBwdDeriveTrace(TensorOfArray3D< NekDouble > &Bwd)
Rotate local Bwd trace derivatives across a rotational interface when the flow is perpendicular to th...
Array< OneD, SpatialDomains::BoundaryConditionShPtr > & UpdateBndConditions()
virtual void v_GetCoords(Array< OneD, NekDouble > &coord_0, Array< OneD, NekDouble > &coord_1=NullNekDouble1DArray, Array< OneD, NekDouble > &coord_2=NullNekDouble1DArray)
const DNekScalBlkMatSharedPtr GenBlockMatrix(const GlobalMatrixKey &gkey)
This function assembles the block diagonal matrix of local matrices of the type mtype.
void PhysDeriv(Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
int Get_coll_phys_offset(int n) const
void MultiplyByElmtInvMass(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function elementally mulplies the coefficient space of Sin my the elemental inverse of the mass ...
void BwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
This function elementally evaluates the backward transformation of the global spectral/hp element exp...
virtual NekDouble v_GetHomoLen(void)
NekDouble GetHomoLen(void)
This function returns the Width of homogeneous direction associated with the homogeneous expansion.
virtual void v_LocalToGlobal(bool UseComm)
virtual void v_PhysGalerkinProjection1DScaled(const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
ExpList(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::ExpansionInfoMap &expansions, const bool DeclareCoeffPhysArrays=true, const Collections::ImplementationType ImpType=Collections::eNoImpType)
Sets up a list of local expansions based on an expansion Map.
GlobalLinSysKey LinearAdvectionReactionSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff=StdRegions::NullVarCoeffMap, const StdRegions::VarFactorsMap &varfactors=StdRegions::NullVarFactorsMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray, const bool PhysSpaceForcing=true)
Solve Advection Diffusion Reaction.
bool GetWaveSpace(void) const
This function returns the third direction expansion condition, which can be in wave space (coefficien...
int GetPhys_Offset(int n) const
Get the start offset position for a local contiguous list of quadrature points in a full array corres...
void ExtractDataToCoeffs(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs, std::unordered_map< int, int > zIdToPlane=std::unordered_map< int, int >())
void SetModifiedBasis(const bool modbasis)
Set Modified Basis for the stability analysis.
ExpansionType m_expType
Expansion type.
void WriteTecplotHeader(std::ostream &outfile, std::string var="")
virtual void v_PhysInterp1DScaled(const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
const std::vector< bool > & GetLeftAdjacentFaces(void) const
void DealiasedDotProd(const int num_dofs, const Array< OneD, Array< OneD, NekDouble > > &inarray1, const Array< OneD, Array< OneD, NekDouble > > &inarray2, Array< OneD, Array< OneD, NekDouble > > &outarray)
std::shared_ptr< GlobalMatrix > GenGlobalMatrix(const GlobalMatrixKey &mkey, const std::shared_ptr< AssemblyMapCG > &locToGloMap)
Generates a global matrix from the given key and map.
void AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
Append the element data listed in elements fielddef->m_ElementIDs onto fielddata.
std::shared_ptr< LibUtilities::Comm > GetComm() const
Returns the comm object.
Array< OneD, NekDouble > m_phys
The global expansion evaluated at the quadrature points.
std::vector< bool > & GetLeftAdjacentTraces(void)
ExpansionType GetExpType(void)
Returns the type of the expansion.
void AddTraceQuadPhysToOffDiag(const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &field)
NekDouble Linf(const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
This function calculates the error of the global spectral/hp element approximation.
void HomogeneousFwdTrans(const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Shuff=true, bool UnShuff=true)
virtual void v_Curl(Array< OneD, Array< OneD, NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q)
void WriteVtkPieceHeader(std::ostream &outfile, int expansion, int istrip=0)
virtual void v_FillBwdWithBwdWeight(Array< OneD, NekDouble > &weightave, Array< OneD, NekDouble > &weightjmp)
virtual void v_NormVectorIProductWRTBase(Array< OneD, const NekDouble > &V1, Array< OneD, const NekDouble > &V2, Array< OneD, NekDouble > &outarray, int BndID)
void ImposeNeumannConditions(Array< OneD, NekDouble > &outarray)
Add Neumann Boundary Condition forcing to Array.
int GetTotPoints(void) const
Returns the total number of quadrature points m_npoints .
void SetExpType(ExpansionType Type)
Returns the type of the expansion.
virtual Array< OneD, const unsigned int > v_GetYIDs(void)
LibUtilities::BasisSharedPtr GetHomogeneousBasis(void)
void WriteTecplotZone(std::ostream &outfile, int expansion=-1)
ExpList(const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, const ExpListSharedPtr > &bndConstraint, const Array< OneD, const SpatialDomains ::BoundaryConditionShPtr > &bndCond, const LocalRegions::ExpansionVector &locexp, const SpatialDomains::MeshGraphSharedPtr &graph, const LibUtilities::CommSharedPtr &comm, const bool DeclareCoeffPhysArrays=true, const std::string variable="DefaultVar", const Collections::ImplementationType ImpType=Collections::eNoImpType)
Generate expansions for the trace space expansions used in DisContField.
virtual const std::vector< bool > & v_GetLeftAdjacentFaces(void) const
virtual void v_SetHomo1DSpecVanVisc(Array< OneD, NekDouble > visc)
void GetBCValues(Array< OneD, NekDouble > &BndVals, const Array< OneD, NekDouble > &TotField, int BndID)
int GetCoordim(int eid)
This function returns the dimension of the coordinates of the element eid.
void GetDiagMatIpwrtBase(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, DNekMatSharedPtr > &mtxPerVar)
Describe a linear system.
Describes a matrix with ordering defined by a local to global map.
std::vector< Collection > CollectionVector
static BasisSharedPtr NullBasisSharedPtr
static std::vector< unsigned int > NullUnsignedIntVector
std::shared_ptr< Basis > BasisSharedPtr
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< FieldDefinitions > FieldDefinitionsSharedPtr
static std::vector< NekDouble > NullNekDoubleVector
std::shared_ptr< Transposition > TranspositionSharedPtr
static Array< OneD, BasisSharedPtr > NullBasisSharedPtr1DArray
std::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
std::shared_ptr< Expansion > ExpansionSharedPtr
std::vector< ExpansionSharedPtr > ExpansionVector
static ExpList NullExpList
An empty ExpList object.
static PeriodicMap NullPeriodicMap
MultiRegions::Direction const DirCartesianMap[]
std::shared_ptr< BlockMatrixMap > BlockMatrixMapShPtr
A shared pointer to a BlockMatrixMap.
static ExpListSharedPtr NullExpListSharedPtr
static LibUtilities::NekManager< GlobalLinSysKey, GlobalLinSys > NullGlobalLinSysManager
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
static GlobalLinSysKey NullGlobalLinSysKey(StdRegions::eNoMatrixType)
std::shared_ptr< LocTraceToTraceMap > LocTraceToTraceMapSharedPtr
static const Array< OneD, ExpListSharedPtr > NullExpListSharedPtrArray
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
std::map< int, std::vector< PeriodicEntity > > PeriodicMap
std::map< GlobalMatrixKey, DNekScalBlkMatSharedPtr > BlockMatrixMap
A map between global matrix keys and their associated block matrices.
static const NekDouble kNekUnsetDouble
GeomMMF
Principle direction for MMF.
std::shared_ptr< BoundaryConditionBase > BoundaryConditionShPtr
std::map< int, BoundaryConditionMapShPtr > BoundaryConditionCollection
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
std::map< int, CompositeSharedPtr > CompositeMap
std::map< StdRegions::ConstFactorType, Array< OneD, NekDouble > > VarFactorsMap
static VarFactorsMap NullVarFactorsMap
std::map< ConstFactorType, NekDouble > ConstFactorMap
static VarCoeffMap NullVarCoeffMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)