Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
Nektar::MultiRegions::ExpList Class Reference

Base class for all multi-elemental spectral/hp expansions. More...

#include <ExpList.h>

Inheritance diagram for Nektar::MultiRegions::ExpList:
Inheritance graph
[legend]

Public Member Functions

 ExpList ()
 The default constructor.
 ExpList (const LibUtilities::SessionReaderSharedPtr &pSession)
 The default constructor.
 ExpList (const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
 The default constructor.
 ExpList (const ExpList &in, const bool DeclareCoeffPhysArrays=true)
 The copy constructor.
virtual ~ExpList ()
 The default destructor.
int GetNcoeffs (void) const
 Returns the total number of local degrees of freedom $N_{\mathrm{eof}}=\sum_{e=1}^{{N_{\mathrm{el}}}}N^{e}_m$.
int GetNcoeffs (const int eid) const
 Returns the total number of local degrees of freedom for element eid.
ExpansionType GetExpType (void)
 Returns the type of the expansion.
void SetExpType (ExpansionType Type)
 Returns the type of the expansion.
int EvalBasisNumModesMax (void) const
 Evaulates the maximum number of modes in the elemental basis order over all elements.
const Array< OneD, int > EvalBasisNumModesMaxPerExp (void) const
 Returns the vector of the number of modes in the elemental basis order over all elements.
int GetTotPoints (void) const
 Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$.
int GetTotPoints (const int eid) const
 Returns the total number of quadrature points for eid's element $=Q_{\mathrm{tot}}$.
int GetNpoints (void) const
 Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$.
int Get1DScaledTotPoints (const NekDouble scale) const
 Returns the total number of qudature points scaled by the factor scale on each 1D direction.
void SetWaveSpace (const bool wavespace)
 Sets the wave space to the one of the possible configuration true or false.
void SetModifiedBasis (const bool modbasis)
 Set Modified Basis for the stability analysis.
void SetPhys (int i, NekDouble val)
 Set the i th value of m_phys to value val.
bool GetWaveSpace (void) const
 This function returns the third direction expansion condition, which can be in wave space (coefficient) or not It is stored in the variable m_WaveSpace.
void SetPhys (const Array< OneD, const NekDouble > &inarray)
 Fills the array m_phys.
void SetPhysArray (Array< OneD, NekDouble > &inarray)
 Sets the array m_phys.
void SetPhysState (const bool physState)
 This function manually sets whether the array of physical values $\boldsymbol{u}_l$ (implemented as m_phys) is filled or not.
bool GetPhysState (void) const
 This function indicates whether the array of physical values $\boldsymbol{u}_l$ (implemented as m_phys) is filled or not.
NekDouble PhysIntegral (void)
 This function integrates a function $f(\boldsymbol{x})$ over the domain consisting of all the elements of the expansion.
NekDouble PhysIntegral (const Array< OneD, const NekDouble > &inarray)
 This function integrates a function $f(\boldsymbol{x})$ over the domain consisting of all the elements of the expansion.
void IProductWRTBase_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function calculates the inner product of a function $f(\boldsymbol{x})$ with respect to all {local} expansion modes $\phi_n^e(\boldsymbol{x})$.
void IProductWRTBase (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
void IProductWRTDerivBase (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function calculates the inner product of a function $f(\boldsymbol{x})$ with respect to the derivative (in direction.
void FwdTrans_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function elementally evaluates the forward transformation of a function $u(\boldsymbol{x})$ onto the global spectral/hp expansion.
void FwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
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 matrix.
void MultiplyByInvMassMatrix (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
void SmoothField (Array< OneD, NekDouble > &field)
 Smooth a field across elements.
void HelmSolve (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const FlagList &flags, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff=StdRegions::NullVarCoeffMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
 Solve helmholtz problem.
void LinearAdvectionDiffusionReactionSolve (const Array< OneD, Array< OneD, NekDouble > > &velocity, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const NekDouble lambda, CoeffState coeffstate=eLocal, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
 Solve Advection Diffusion Reaction.
void LinearAdvectionReactionSolve (const Array< OneD, Array< OneD, NekDouble > > &velocity, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const NekDouble lambda, CoeffState coeffstate=eLocal, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
 Solve Advection Diffusion Reaction.
void FwdTrans_BndConstrained (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void BwdTrans_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 This function elementally evaluates the backward transformation of the global spectral/hp element expansion.
void BwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
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 $\boldsymbol{x}_i$.
void HomogeneousFwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void HomogeneousBwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void DealiasedProd (const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
void GetBCValues (Array< OneD, NekDouble > &BndVals, const Array< OneD, NekDouble > &TotField, int BndID)
void NormVectorIProductWRTBase (Array< OneD, const NekDouble > &V1, Array< OneD, const NekDouble > &V2, Array< OneD, NekDouble > &outarray, int BndID)
void ApplyGeomInfo ()
 Apply geometry information to each expansion.
void WriteTecplotHeader (std::ofstream &outfile, std::string var="")
void WriteTecplotZone (std::ofstream &outfile, int expansion=-1)
void WriteTecplotField (std::ofstream &outfile, int expansion=-1)
void WriteTecplotConnectivity (std::ofstream &outfile, int expansion=-1)
void WriteVtkHeader (std::ofstream &outfile)
void WriteVtkFooter (std::ofstream &outfile)
void WriteVtkPieceHeader (std::ofstream &outfile, int expansion)
void WriteVtkPieceFooter (std::ofstream &outfile, int expansion)
void WriteVtkPieceData (std::ofstream &outfile, int expansion, std::string var="v")
int GetCoordim (int eid)
 This function returns the dimension of the coordinates of the element eid.
void SetCoeff (int i, NekDouble val)
 Set the i th coefficiient in m_coeffs to value val.
void SetCoeffs (int i, NekDouble val)
 Set the i th coefficiient in m_coeffs to value val.
void SetCoeffsArray (Array< OneD, NekDouble > &inarray)
 Set the m_coeffs array to inarray.
const Array< OneD, const
NekDouble > & 
GetCoeffs () const
 This function returns (a reference to) the array $\boldsymbol{\hat{u}}_l$ (implemented as m_coeffs) containing all local expansion coefficients.
void ImposeDirichletConditions (Array< OneD, NekDouble > &outarray)
 Impose Dirichlet Boundary Conditions onto Array.
void FillBndCondFromField (void)
 Fill Bnd Condition expansion from the values stored in expansion.
void LocalToGlobal (void)
 Put the coefficients into global ordering using m_coeffs.
void GlobalToLocal (void)
 Put the coefficients into local ordering and place in m_coeffs.
NekDouble GetCoeff (int i)
 Get the i th value (coefficient) of m_coeffs.
NekDouble GetCoeffs (int i)
 Get the i th value (coefficient) of m_coeffs.
const Array< OneD, const
NekDouble > & 
GetPhys () const
 This function returns (a reference to) the array $\boldsymbol{u}_l$ (implemented as m_phys) containing the function $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points.
NekDouble Linf (const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
 This function calculates the $L_\infty$ error of the global spectral/hp element approximation.
NekDouble L2 (const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
 This function calculates the $L_2$ error with respect to soln of the global spectral/hp element approximation.
NekDouble H1 (const Array< OneD, const NekDouble > &inarray, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
 Calculates the $H^1$ error of the global spectral/hp element approximation.
NekDouble Integral (const Array< OneD, const NekDouble > &inarray)
Array< OneD, const NekDoubleHomogeneousEnergy (void)
 This function calculates the energy associated with each one of the modesof a 3D homogeneous nD expansion.
void SetHomo1DSpecVanVisc (Array< OneD, NekDouble > visc)
 This function sets the Spectral Vanishing Viscosity in homogeneous1D expansion.
Array< OneD, const unsigned int > GetZIDs (void)
 This function returns a vector containing the wave numbers in z-direction associated with the 3D homogenous expansion. Required if a parellelisation is applied in the Fourier direction.
LibUtilities::TranspositionSharedPtr GetTransposition (void)
 This function returns the transposition class associaed with the homogeneous expansion.
NekDouble GetHomoLen (void)
 This function returns the Width of homogeneous direction associaed with the homogeneous expansion.
Array< OneD, const unsigned int > GetYIDs (void)
 This function returns a vector containing the wave numbers in y-direction associated with the 3D homogenous expansion. Required if a parellelisation is applied in the Fourier direction.
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 defined in the expansion but where the number of points are rescaled by 1DScale.
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 assumed to be defined in the expansion but where the number of points are rescaled by 1DScale.
int GetExpSize (void)
 This function returns the number of elements in the expansion.
int GetNumElmts (void)
 This function returns the number of elements in the expansion which may be different for a homogeoenous extended expansionp.
const boost::shared_ptr
< LocalRegions::ExpansionVector
GetExp () const
 This function returns the vector of elements in the expansion.
LocalRegions::ExpansionSharedPtrGetExp (int n) const
 This function returns (a shared pointer to) the local elemental expansion of the $n^{\mathrm{th}}$ element.
LocalRegions::ExpansionSharedPtrGetExp (const Array< OneD, const NekDouble > &gloCoord)
 This function returns (a shared pointer to) the local elemental expansion containing the arbitrary point given by gloCoord.
int GetExpIndex (const Array< OneD, const NekDouble > &gloCoord, NekDouble tol=0.0, bool returnNearestElmt=false)
int GetExpIndex (const Array< OneD, const NekDouble > &gloCoords, Array< OneD, NekDouble > &locCoords, NekDouble tol=0.0, bool returnNearestElmt=false)
int GetCoeff_Offset (int n) const
 Get the start offset position for a global list of m_coeffs correspoinding to element n.
int GetPhys_Offset (int n) const
 Get the start offset position for a global list of m_phys correspoinding to element n.
int GetOffset_Elmt_Id (int n) const
 Get the element id associated with the n th consecutive block of data in m_phys and m_coeffs.
Array< OneD, NekDouble > & UpdateCoeffs ()
 This function returns (a reference to) the array $\boldsymbol{\hat{u}}_l$ (implemented as m_coeffs) containing all local expansion coefficients.
Array< OneD, NekDouble > & UpdatePhys ()
 This function returns (a reference to) the array $\boldsymbol{u}_l$ (implemented as m_phys) containing the function $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points.
void PhysDeriv (Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
void PhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1=NullNekDouble1DArray, Array< OneD, NekDouble > &out_d2=NullNekDouble1DArray)
 This function discretely evaluates the derivative of a function $f(\boldsymbol{x})$ on the domain consisting of all elements of the expansion.
void PhysDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
const Array< OneD, const
boost::shared_ptr< ExpList > > & 
GetBndCondExpansions ()
boost::shared_ptr< ExpList > & UpdateBndCondExpansion (int i)
void 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)
void Upwind (const Array< OneD, const NekDouble > &Vn, const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &Upwind)
boost::shared_ptr< ExpList > & GetTrace ()
boost::shared_ptr
< AssemblyMapDG > & 
GetTraceMap (void)
const Array< OneD, const int > & GetTraceBndMap (void)
void GetNormals (Array< OneD, Array< OneD, NekDouble > > &normals)
void AddTraceIntegral (const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
void AddTraceIntegral (const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
void AddFwdBwdTraceIntegral (const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &outarray)
void GetFwdBwdTracePhys (Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
void GetFwdBwdTracePhys (const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
void ExtractTracePhys (Array< OneD, NekDouble > &outarray)
void ExtractTracePhys (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
const Array< OneD, const
SpatialDomains::BoundaryConditionShPtr > & 
GetBndConditions ()
Array< OneD,
SpatialDomains::BoundaryConditionShPtr > & 
UpdateBndConditions ()
void EvaluateBoundaryConditions (const NekDouble time=0.0, const std::string varName="", const NekDouble=NekConstants::kNekUnsetDouble, const NekDouble=NekConstants::kNekUnsetDouble)
void GeneralMatrixOp (const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
 This function calculates the result of the multiplication of a matrix of type specified by mkey with a vector given by inarray.
void GeneralMatrixOp_IterPerExp (const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void SetUpPhysNormals ()
void GetBoundaryToElmtMap (Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
void GeneralGetFieldDefinitions (std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef, int NumHomoDir=0, Array< OneD, LibUtilities::BasisSharedPtr > &HomoBasis=LibUtilities::NullBasisSharedPtr1DArray, std::vector< NekDouble > &HomoLen=LibUtilities::NullNekDoubleVector, std::vector< unsigned int > &HomoZIDs=LibUtilities::NullUnsignedIntVector, std::vector< unsigned int > &HomoYIDs=LibUtilities::NullUnsignedIntVector)
const
NekOptimize::GlobalOptParamSharedPtr
GetGlobalOptParam (void)
map< int, RobinBCInfoSharedPtrGetRobinBCInfo ()
void GetPeriodicEntities (PeriodicMap &periodicVerts, PeriodicMap &periodicEdges, PeriodicMap &periodicFaces=NullPeriodicMap)
std::vector
< LibUtilities::FieldDefinitionsSharedPtr
GetFieldDefinitions ()
void GetFieldDefinitions (std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
void AppendFieldData (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
 Append the element data listed in elements fielddef->m_ElementIDs onto fielddata.
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.
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 than planes in homogeneous case.
void ExtractCoeffsToCoeffs (const boost::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 expansions rather than planes in homogeneous case.
void ExtractDataToCoeffs (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs)
 Extract the data in fielddata into the coeffs.
boost::shared_ptr< ExpListGetSharedThisPtr ()
 Returns a shared pointer to the current object.
boost::shared_ptr
< LibUtilities::SessionReader
GetSession ()
 Returns the session object.
boost::shared_ptr
< LibUtilities::Comm
GetComm ()
 Returns the comm object.
SpatialDomains::MeshGraphSharedPtr GetGraph ()
LibUtilities::BasisSharedPtr GetHomogeneousBasis (void)
boost::shared_ptr< ExpList > & GetPlane (int n)

Public Attributes

ExpansionType m_expType

Protected Member Functions

boost::shared_ptr< DNekMatGenGlobalMatrixFull (const GlobalLinSysKey &mkey, const boost::shared_ptr< AssemblyMapCG > &locToGloMap)
const DNekScalBlkMatSharedPtr GenBlockMatrix (const GlobalMatrixKey &gkey)
 This function assembles the block diagonal matrix of local matrices of the type mtype.
const DNekScalBlkMatSharedPtrGetBlockMatrix (const GlobalMatrixKey &gkey)
void MultiplyByBlockMatrix (const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
boost::shared_ptr< GlobalMatrixGenGlobalMatrix (const GlobalMatrixKey &mkey, const boost::shared_ptr< AssemblyMapCG > &locToGloMap)
 Generates a global matrix from the given key and map.
void GlobalEigenSystem (const boost::shared_ptr< DNekMat > &Gmat, Array< OneD, NekDouble > &EigValsReal, Array< OneD, NekDouble > &EigValsImag, Array< OneD, NekDouble > &EigVecs=NullNekDouble1DArray)
boost::shared_ptr< GlobalLinSysGenGlobalLinSys (const GlobalLinSysKey &mkey, const boost::shared_ptr< AssemblyMapCG > &locToGloMap)
 This operation constructs the global linear system of type mkey.
boost::shared_ptr< GlobalLinSysGenGlobalBndLinSys (const GlobalLinSysKey &mkey, const AssemblyMapSharedPtr &locToGloMap)
 Generate a GlobalLinSys from information provided by the key "mkey" and the mapping provided in LocToGloBaseMap.
void ReadGlobalOptimizationParameters ()
virtual int v_GetNumElmts (void)
virtual const Array< OneD,
const boost::shared_ptr
< ExpList > > & 
v_GetBndCondExpansions (void)
virtual boost::shared_ptr
< ExpList > & 
v_UpdateBndCondExpansion (int i)
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)
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 boost::shared_ptr
< ExpList > & 
v_GetTrace ()
virtual boost::shared_ptr
< AssemblyMapDG > & 
v_GetTraceMap ()
virtual const Array< OneD,
const int > & 
v_GetTraceBndMap ()
virtual void v_GetNormals (Array< OneD, Array< OneD, NekDouble > > &normals)
virtual void v_AddTraceIntegral (const Array< OneD, const NekDouble > &Fx, const Array< OneD, const NekDouble > &Fy, Array< OneD, NekDouble > &outarray)
virtual void v_AddTraceIntegral (const Array< OneD, const NekDouble > &Fn, Array< OneD, NekDouble > &outarray)
virtual void v_AddFwdBwdTraceIntegral (const Array< OneD, const NekDouble > &Fwd, const Array< OneD, const NekDouble > &Bwd, Array< OneD, NekDouble > &outarray)
virtual void v_GetFwdBwdTracePhys (Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
virtual void v_GetFwdBwdTracePhys (const Array< OneD, const NekDouble > &field, Array< OneD, NekDouble > &Fwd, Array< OneD, NekDouble > &Bwd)
virtual void v_ExtractTracePhys (Array< OneD, NekDouble > &outarray)
virtual void v_ExtractTracePhys (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_MultiplyByInvMassMatrix (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate)
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)
virtual void v_LinearAdvectionDiffusionReactionSolve (const Array< OneD, Array< OneD, NekDouble > > &velocity, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const NekDouble lambda, CoeffState coeffstate=eLocal, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
virtual void v_LinearAdvectionReactionSolve (const Array< OneD, Array< OneD, NekDouble > > &velocity, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const NekDouble lambda, CoeffState coeffstate=eLocal, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
virtual void v_ImposeDirichletConditions (Array< OneD, NekDouble > &outarray)
virtual void v_FillBndCondFromField ()
virtual void v_LocalToGlobal (void)
virtual void v_GlobalToLocal (void)
virtual void v_BwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate)
virtual void v_BwdTrans_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_FwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate)
virtual void v_FwdTrans_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_SmoothField (Array< OneD, NekDouble > &field)
virtual void v_IProductWRTBase (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate)
virtual void v_IProductWRTBase_IterPerExp (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_GeneralMatrixOp (const GlobalMatrixKey &gkey, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate)
virtual void v_GetCoords (Array< OneD, NekDouble > &coord_0, Array< OneD, NekDouble > &coord_1, Array< OneD, NekDouble > &coord_2=NullNekDouble1DArray)
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)
virtual void v_PhysDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
virtual void v_PhysDeriv (Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
virtual void v_HomogeneousFwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
virtual void v_HomogeneousBwdTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
virtual void v_DealiasedProd (const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
virtual void v_GetBCValues (Array< OneD, NekDouble > &BndVals, const Array< OneD, NekDouble > &TotField, int BndID)
virtual void v_NormVectorIProductWRTBase (Array< OneD, const NekDouble > &V1, Array< OneD, const NekDouble > &V2, Array< OneD, NekDouble > &outarray, int BndID)
virtual void v_SetUpPhysNormals ()
virtual void v_GetBoundaryToElmtMap (Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
virtual void v_ReadGlobalOptimizationParameters ()
virtual std::vector
< LibUtilities::FieldDefinitionsSharedPtr
v_GetFieldDefinitions (void)
virtual void v_GetFieldDefinitions (std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef)
virtual void v_AppendFieldData (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
virtual void v_AppendFieldData (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, Array< OneD, NekDouble > &coeffs)
virtual void v_ExtractDataToCoeffs (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs)
 Extract data from raw field data into expansion list.
virtual void v_ExtractCoeffsToCoeffs (const boost::shared_ptr< ExpList > &fromExpList, const Array< OneD, const NekDouble > &fromCoeffs, Array< OneD, NekDouble > &toCoeffs)
virtual void v_WriteTecplotHeader (std::ofstream &outfile, std::string var="")
virtual void v_WriteTecplotZone (std::ofstream &outfile, int expansion)
virtual void v_WriteTecplotField (std::ofstream &outfile, int expansion)
virtual void v_WriteTecplotConnectivity (std::ofstream &outfile, int expansion)
virtual void v_WriteVtkPieceHeader (std::ofstream &outfile, int expansion)
virtual void v_WriteVtkPieceData (std::ofstream &outfile, int expansion, std::string var)
virtual NekDouble v_L2 (const Array< OneD, const NekDouble > &phys, const Array< OneD, const NekDouble > &soln=NullNekDouble1DArray)
virtual NekDouble v_Integral (const Array< OneD, const NekDouble > &inarray)
virtual Array< OneD, const
NekDouble
v_HomogeneousEnergy (void)
virtual
LibUtilities::TranspositionSharedPtr 
v_GetTransposition (void)
virtual NekDouble v_GetHomoLen (void)
virtual Array< OneD, const
unsigned int > 
v_GetZIDs (void)
virtual Array< OneD, const
unsigned int > 
v_GetYIDs (void)
virtual void v_PhysInterp1DScaled (const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
virtual void v_PhysGalerkinProjection1DScaled (const NekDouble scale, const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
void ExtractFileBCs (const std::string &fileName, const std::string &varName, const boost::shared_ptr< ExpList > locExpList)

Static Protected Member Functions

static
SpatialDomains::BoundaryConditionShPtr 
GetBoundaryCondition (const SpatialDomains::BoundaryConditionCollection &collection, unsigned int index, const std::string &variable)

Protected Attributes

LibUtilities::CommSharedPtr m_comm
 Communicator.
LibUtilities::SessionReaderSharedPtr m_session
 Session.
SpatialDomains::MeshGraphSharedPtr m_graph
 Mesh associated with this expansion list.
int m_ncoeffs
 The total number of local degrees of freedom. m_ncoeffs $=N_{\mathrm{eof}}=\sum_{e=1}^{{N_{\mathrm{el}}}}N^{e}_l$.
int m_npoints
Array< OneD, NekDoublem_coeffs
 Concatenation of all local expansion coefficients.
Array< OneD, NekDoublem_phys
 The global expansion evaluated at the quadrature points.
bool m_physState
 The state of the array m_phys.
boost::shared_ptr
< LocalRegions::ExpansionVector
m_exp
 The list of local expansions.
Array< OneD, int > m_coeff_offset
 Offset of elemental data into the array m_coeffs.
Array< OneD, int > m_phys_offset
 Offset of elemental data into the array m_phys.
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_coeffs and m_phys is associated, i.e. for an array of constant expansion size and single shape elements m_phys[n*m_npoints] is the data related to m_exp[m_offset_elmt_id[n]];.
NekOptimize::GlobalOptParamSharedPtr m_globalOptParam
BlockMatrixMapShPtr m_blockMat
bool m_WaveSpace

Private Member Functions

virtual const Array< OneD,
const
SpatialDomains::BoundaryConditionShPtr > & 
v_GetBndConditions ()
virtual Array< OneD,
SpatialDomains::BoundaryConditionShPtr > & 
v_UpdateBndConditions ()
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 map< int,
RobinBCInfoSharedPtr
v_GetRobinBCInfo (void)
virtual void v_GetPeriodicEntities (PeriodicMap &periodicVerts, PeriodicMap &periodicEdges, PeriodicMap &periodicFaces)
virtual
LibUtilities::BasisSharedPtr 
v_GetHomogeneousBasis (void)
virtual void v_SetHomo1DSpecVanVisc (Array< OneD, NekDouble > visc)
virtual boost::shared_ptr
< ExpList > & 
v_GetPlane (int n)

Detailed Description

Base class for all multi-elemental spectral/hp expansions.

All multi-elemental expansions $u^{\delta}(\boldsymbol{x})$ can be considered as the assembly of the various elemental contributions. On a discrete level, this yields,

\[u^{\delta}(\boldsymbol{x}_i)=\sum_{e=1}^{{N_{\mathrm{el}}}} \sum_{n=0}^{N^{e}_m-1}\hat{u}_n^e\phi_n^e(\boldsymbol{x}_i).\]

where ${N_{\mathrm{el}}}$ is the number of elements and $N^{e}_m$ is the local elemental number of expansion modes. As it is the lowest level class, it contains the definition of the common data and common routines to all multi-elemental expansions.

The class stores a vector of expansions, m_exp, (each derived from StdRegions::StdExpansion) which define the constituent components of the domain. The coefficients from these expansions are concatenated in m_coeffs, while the expansion evaluated at the quadrature points is stored in m_phys.

Definition at line 102 of file ExpList.h.

Constructor & Destructor Documentation

Nektar::MultiRegions::ExpList::ExpList ( )

The default constructor.

Creates an empty expansion list. The expansion list will typically be populated by a derived class (namely one of MultiRegions::ExpList1D, MultiRegions::ExpList2D or MultiRegions::ExpList3D).

Definition at line 82 of file ExpList.cpp.

References Nektar::MultiRegions::eNoType, and SetExpType().

Nektar::MultiRegions::ExpList::ExpList ( const LibUtilities::SessionReaderSharedPtr pSession)

The default constructor.

Creates an empty expansion list. The expansion list will typically be populated by a derived class (namely one of MultiRegions::ExpList1D, MultiRegions::ExpList2D or MultiRegions::ExpList3D).

Definition at line 108 of file ExpList.cpp.

References Nektar::MultiRegions::eNoType, and SetExpType().

Nektar::MultiRegions::ExpList::ExpList ( const LibUtilities::SessionReaderSharedPtr pSession,
const SpatialDomains::MeshGraphSharedPtr pGraph 
)

The default constructor.

Creates an empty expansion list. The expansion list will typically be populated by a derived class (namely one of MultiRegions::ExpList1D, MultiRegions::ExpList2D or MultiRegions::ExpList3D).

Definition at line 135 of file ExpList.cpp.

References Nektar::MultiRegions::eNoType, and SetExpType().

Nektar::MultiRegions::ExpList::ExpList ( const ExpList in,
const bool  DeclareCoeffPhysArrays = true 
)

The copy constructor.

Copies an existing expansion list.

Parameters
inSource expansion list.

Definition at line 162 of file ExpList.cpp.

References Nektar::MultiRegions::eNoType, m_coeffs, m_ncoeffs, m_npoints, m_phys, and SetExpType().

:
m_comm(in.m_comm),
m_session(in.m_session),
m_graph(in.m_graph),
m_ncoeffs(in.m_ncoeffs),
m_npoints(in.m_npoints),
m_physState(false),
m_exp(in.m_exp),
m_coeff_offset(in.m_coeff_offset),
m_phys_offset(in.m_phys_offset),
m_offset_elmt_id(in.m_offset_elmt_id),
m_globalOptParam(in.m_globalOptParam),
m_blockMat(in.m_blockMat),
m_WaveSpace(false)
{
if(DeclareCoeffPhysArrays)
{
m_coeffs = Array<OneD, NekDouble>(m_ncoeffs);
m_phys = Array<OneD, NekDouble>(m_npoints);
}
}
Nektar::MultiRegions::ExpList::~ExpList ( )
virtual

The default destructor.

Definition at line 202 of file ExpList.cpp.

{
}

Member Function Documentation

void Nektar::MultiRegions::ExpList::AddFwdBwdTraceIntegral ( const Array< OneD, const NekDouble > &  Fwd,
const Array< OneD, const NekDouble > &  Bwd,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 1943 of file ExpList.h.

References v_AddFwdBwdTraceIntegral().

{
v_AddFwdBwdTraceIntegral(Fwd,Bwd,outarray);
}
void Nektar::MultiRegions::ExpList::AddTraceIntegral ( const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 1928 of file ExpList.h.

References v_AddTraceIntegral().

{
v_AddTraceIntegral(Fx,Fy,outarray);
}
void Nektar::MultiRegions::ExpList::AddTraceIntegral ( const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 1936 of file ExpList.h.

References v_AddTraceIntegral().

{
v_AddTraceIntegral(Fn,outarray);
}
void Nektar::MultiRegions::ExpList::AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata 
)
inline

Append the element data listed in elements fielddef->m_ElementIDs onto fielddata.

Definition at line 766 of file ExpList.h.

References v_AppendFieldData().

{
v_AppendFieldData(fielddef,fielddata);
}
void Nektar::MultiRegions::ExpList::AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
Array< OneD, NekDouble > &  coeffs 
)
inline

Append the data in coeffs listed in elements fielddef->m_ElementIDs onto fielddata.

Definition at line 776 of file ExpList.h.

References v_AppendFieldData().

{
v_AppendFieldData(fielddef,fielddata,coeffs);
}
void Nektar::MultiRegions::ExpList::ApplyGeomInfo ( )

Apply geometry information to each expansion.

Configures geometric info, such as tangent direction, on each expansion.

Parameters
graph2DMesh

Definition at line 1349 of file ExpList.cpp.

Referenced by Nektar::MultiRegions::DisContField1D::DisContField1D(), and Nektar::MultiRegions::DisContField3D::DisContField3D().

{
}
void Nektar::MultiRegions::ExpList::BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Reimplemented in Nektar::MultiRegions::ContField2D, and Nektar::MultiRegions::ContField1D.

Definition at line 1522 of file ExpList.h.

References v_BwdTrans().

Referenced by Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), and v_WriteTecplotField().

{
v_BwdTrans(inarray,outarray,coeffstate);
}
void Nektar::MultiRegions::ExpList::BwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function elementally evaluates the backward transformation of the global spectral/hp element expansion.

Definition at line 1533 of file ExpList.h.

References v_BwdTrans_IterPerExp().

Referenced by Nektar::MultiRegions::ContField1D::BwdTrans(), Nektar::MultiRegions::ContField2D::BwdTrans(), and Nektar::MultiRegions::ContField3D::v_BwdTrans().

{
v_BwdTrans_IterPerExp(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::DealiasedProd ( const Array< OneD, NekDouble > &  inarray1,
const Array< OneD, NekDouble > &  inarray2,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1664 of file ExpList.h.

References v_DealiasedProd().

{
v_DealiasedProd(inarray1,inarray2,outarray,coeffstate);
}
int Nektar::MultiRegions::ExpList::EvalBasisNumModesMax ( void  ) const
inline

Evaulates the maximum number of modes in the elemental basis order over all elements.

Evaulates the maximum number of modes in the elemental basis order over all elements

Definition at line 1330 of file ExpList.h.

References m_exp.

Referenced by EvalBasisNumModesMaxPerExp().

{
unsigned int i;
int returnval = 0;
for(i= 0; i < (*m_exp).size(); ++i)
{
returnval = max(returnval,
}
return returnval;
}
const Array< OneD, int > Nektar::MultiRegions::ExpList::EvalBasisNumModesMaxPerExp ( void  ) const
inline

Returns the vector of the number of modes in the elemental basis order over all elements.

Definition at line 1347 of file ExpList.h.

References EvalBasisNumModesMax(), and m_exp.

{
unsigned int i;
Array<OneD,int> returnval((*m_exp).size(),0);
for(i= 0; i < (*m_exp).size(); ++i)
{
returnval[i]
= max(returnval[i],(*m_exp)[i]->EvalBasisNumModesMax());
}
return returnval;
}
void Nektar::MultiRegions::ExpList::EvaluateBoundaryConditions ( const NekDouble  time = 0.0,
const std::string  varName = "",
const NekDouble  x2_in = NekConstants::kNekUnsetDouble,
const NekDouble  x3_in = NekConstants::kNekUnsetDouble 
)
inline

Definition at line 1992 of file ExpList.h.

References v_EvaluateBoundaryConditions().

Referenced by Nektar::MultiRegions::DisContField1D::DisContField1D(), Nektar::MultiRegions::DisContField2D::DisContField2D(), and Nektar::MultiRegions::DisContField3D::DisContField3D().

{
v_EvaluateBoundaryConditions(time, varName, x2_in, x3_in);
}
void Nektar::MultiRegions::ExpList::ExtractCoeffsToCoeffs ( const boost::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 expansions rather than planes in homogeneous case.

Definition at line 2022 of file ExpList.cpp.

References v_ExtractCoeffsToCoeffs().

{
v_ExtractCoeffsToCoeffs(fromExpList,fromCoeffs,toCoeffs);
}
void Nektar::MultiRegions::ExpList::ExtractDataToCoeffs ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
std::string &  field,
Array< OneD, NekDouble > &  coeffs 
)

Extract the data in fielddata into the coeffs.

Definition at line 2013 of file ExpList.cpp.

References v_ExtractDataToCoeffs().

{
v_ExtractDataToCoeffs(fielddef,fielddata,field,coeffs);
}
void Nektar::MultiRegions::ExpList::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 than planes in homogeneous case.

void Nektar::MultiRegions::ExpList::ExtractFileBCs ( const std::string &  fileName,
const std::string &  varName,
const boost::shared_ptr< ExpList locExpList 
)
protected

Definition at line 1798 of file ExpList.cpp.

References ASSERTL0, Nektar::LibUtilities::FieldIO::Import(), and m_session.

Referenced by Nektar::MultiRegions::DisContField3D::v_EvaluateBoundaryConditions(), and Nektar::MultiRegions::DisContField2D::v_EvaluateBoundaryConditions().

{
string varString = fileName.substr(0, fileName.find_last_of("."));
int j, k, len = varString.length();
varString = varString.substr(len-1, len);
std::vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
std::vector<std::vector<NekDouble> > FieldData;
f.Import(fileName, FieldDef, FieldData);
bool found = false;
for (j = 0; j < FieldDef.size(); ++j)
{
for (k = 0; k < FieldDef[j]->m_fields.size(); ++k)
{
if (FieldDef[j]->m_fields[k] == varName)
{
// Copy FieldData into locExpList
locExpList->ExtractDataToCoeffs(
FieldDef[j], FieldData[j],
FieldDef[j]->m_fields[k],
locExpList->UpdateCoeffs());
found = true;
}
}
}
ASSERTL0(found, "Could not find variable '"+varName+
"' in file boundary condition "+fileName);
locExpList->BwdTrans_IterPerExp(
locExpList->GetCoeffs(),
locExpList->UpdatePhys());
}
void Nektar::MultiRegions::ExpList::ExtractTracePhys ( Array< OneD, NekDouble > &  outarray)
inline

Definition at line 1966 of file ExpList.h.

References v_ExtractTracePhys().

{
v_ExtractTracePhys(outarray);
}
void Nektar::MultiRegions::ExpList::ExtractTracePhys ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

Definition at line 1972 of file ExpList.h.

References v_ExtractTracePhys().

{
v_ExtractTracePhys(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::FillBndCondFromField ( void  )
inline

Fill Bnd Condition expansion from the values stored in expansion.

Definition at line 1751 of file ExpList.h.

References v_FillBndCondFromField().

void Nektar::MultiRegions::ExpList::FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Reimplemented in Nektar::MultiRegions::ContField2D, and Nektar::MultiRegions::ContField1D.

Definition at line 1493 of file ExpList.h.

References v_FwdTrans().

{
v_FwdTrans(inarray,outarray,coeffstate);
}
void Nektar::MultiRegions::ExpList::FwdTrans_BndConstrained ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 531 of file ExpList.cpp.

References m_coeff_offset, and m_phys_offset.

{
int i;
Array<OneD,NekDouble> e_outarray;
for(i= 0; i < (*m_exp).size(); ++i)
{
(*m_exp)[i]->FwdTrans_BndConstrained(inarray+m_phys_offset[i],
e_outarray = outarray+m_coeff_offset[i]);
}
}
void Nektar::MultiRegions::ExpList::FwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function elementally evaluates the forward transformation of a function $u(\boldsymbol{x})$ onto the global spectral/hp expansion.

Definition at line 1504 of file ExpList.h.

References v_FwdTrans_IterPerExp().

{
v_FwdTrans_IterPerExp(inarray,outarray);
}
const DNekScalBlkMatSharedPtr Nektar::MultiRegions::ExpList::GenBlockMatrix ( const GlobalMatrixKey gkey)
protected

This function assembles the block diagonal matrix of local matrices of the type mtype.

This function assembles the block diagonal matrix $\underline{\boldsymbol{M}}^e$, which is the concatenation of the local matrices $\boldsymbol{M}^e$ of the type mtype, that is

\[ \underline{\boldsymbol{M}}^e = \left[ \begin{array}{cccc} \boldsymbol{M}^1 & 0 & \hspace{3mm}0 \hspace{3mm}& 0 \\ 0 & \boldsymbol{M}^2 & 0 & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \boldsymbol{M}^{N_{\mathrm{el}}} \end{array}\right].\]

Parameters
mtypethe type of matrix to be assembled
scalaran optional parameter
constantan optional parameter

Definition at line 595 of file ExpList.cpp.

References Nektar::StdRegions::eBwdTrans, Nektar::eDIAGONAL, ErrorUtil::efatal, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eHybridDGHelmBndLam, Nektar::StdRegions::eHybridDGLamToU, Nektar::StdRegions::eInvHybridDGHelmholtz, Nektar::StdRegions::eInvMass, Nektar::StdRegions::eIProductWRTBase, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eMass, Nektar::LibUtilities::eNoShapeType, Nektar::MultiRegions::GlobalMatrixKey::GetConstFactors(), Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), Nektar::MultiRegions::GlobalMatrixKey::GetNVarCoeffs(), Nektar::MultiRegions::GlobalMatrixKey::GetShapeType(), Nektar::MultiRegions::GlobalMatrixKey::GetVarCoeffs(), m_exp, m_offset_elmt_id, m_phys_offset, and NEKERROR.

Referenced by GetBlockMatrix().

{
int i,cnt1;
int n_exp = 0;
map<int,int> elmt_id;
LibUtilities::ShapeType ShapeType = gkey.GetShapeType();
if(ShapeType != LibUtilities::eNoShapeType)
{
for(i = 0 ; i < (*m_exp).size(); ++i)
{
if((*m_exp)[m_offset_elmt_id[i]]->DetShapeType()
{
elmt_id[n_exp++] = m_offset_elmt_id[i];
}
}
}
else
{
n_exp = (*m_exp).size();
for(i = 0; i < n_exp; ++i)
{
elmt_id[i] = m_offset_elmt_id[i];
}
}
Array<OneD,unsigned int> nrows(n_exp);
Array<OneD,unsigned int> ncols(n_exp);
switch(gkey.GetMatrixType())
{
{
// set up an array of integers for block matrix construction
for(i = 0; i < n_exp; ++i)
{
nrows[i] = (*m_exp)[elmt_id.find(i)->second]->GetTotPoints();
ncols[i] = (*m_exp)[elmt_id.find(i)->second]->GetNcoeffs();
}
}
break;
{
// set up an array of integers for block matrix construction
for(i = 0; i < n_exp; ++i)
{
nrows[i] = (*m_exp)[elmt_id.find(i)->second]->GetNcoeffs();
ncols[i] = (*m_exp)[elmt_id.find(i)->second]->GetTotPoints();
}
}
break;
{
// set up an array of integers for block matrix construction
for(i = 0; i < n_exp; ++i)
{
nrows[i] = (*m_exp)[elmt_id.find(i)->second]->GetNcoeffs();
ncols[i] = (*m_exp)[elmt_id.find(i)->second]->GetNcoeffs();
}
}
break;
{
// set up an array of integers for block matrix construction
for(i = 0; i < n_exp; ++i)
{
nrows[i] = (*m_exp)[elmt_id.find(i)->second]->GetNcoeffs();
ncols[i] = (*m_exp)[elmt_id.find(i)->second]->NumDGBndryCoeffs();
}
}
break;
{
// set up an array of integers for block matrix construction
for(i = 0; i < n_exp; ++i)
{
nrows[i] = (*m_exp)[elmt_id.find(i)->second]->NumDGBndryCoeffs();
ncols[i] = (*m_exp)[elmt_id.find(i)->second]->NumDGBndryCoeffs();
}
}
break;
default:
{
"Global Matrix creation not defined for this type "
"of matrix");
}
}
MatrixStorage blkmatStorage = eDIAGONAL;
::AllocateSharedPtr(nrows,ncols,blkmatStorage);
int nvarcoeffs = gkey.GetNVarCoeffs();
int eid;
Array<OneD, NekDouble> varcoeffs_wk;
for(i = cnt1 = 0; i < n_exp; ++i)
{
// need to be initialised with zero size for non variable coefficient case
eid = elmt_id[i];
if(nvarcoeffs>0)
{
StdRegions::VarCoeffMap::const_iterator x;
for (x = gkey.GetVarCoeffs().begin(); x != gkey.GetVarCoeffs().end(); ++x)
{
varcoeffs[x->first] = x->second + m_phys_offset[eid];
}
}
LocalRegions::MatrixKey matkey(gkey.GetMatrixType(),
(*m_exp)[eid]->DetShapeType(),
*(*m_exp)[eid],
gkey.GetConstFactors(),
varcoeffs );
loc_mat = boost::dynamic_pointer_cast<LocalRegions::Expansion>((*m_exp)[elmt_id.find(i)->second])->GetLocMatrix(matkey);
BlkMatrix->SetBlock(i,i,loc_mat);
}
return BlkMatrix;
}
void Nektar::MultiRegions::ExpList::GeneralGetFieldDefinitions ( std::vector< LibUtilities::FieldDefinitionsSharedPtr > &  fielddef,
int  NumHomoDir = 0,
Array< OneD, LibUtilities::BasisSharedPtr > &  HomoBasis = LibUtilities::NullBasisSharedPtr1DArray,
std::vector< NekDouble > &  HomoLen = LibUtilities::NullNekDoubleVector,
std::vector< unsigned int > &  HomoZIDs = LibUtilities::NullUnsignedIntVector,
std::vector< unsigned int > &  HomoYIDs = LibUtilities::NullUnsignedIntVector 
)

Definition at line 1873 of file ExpList.cpp.

References ASSERTL0, ASSERTL1, Nektar::LibUtilities::eHexahedron, Nektar::LibUtilities::eQuadrilateral, Nektar::LibUtilities::eSegment, Nektar::LibUtilities::eTetrahedron, Nektar::LibUtilities::eTriangle, and m_exp.

Referenced by v_GetFieldDefinitions().

{
int startenum, endenum, s;
ASSERTL1(NumHomoDir == HomoBasis.num_elements(),"Homogeneous basis is not the same length as NumHomoDir");
ASSERTL1(NumHomoDir == HomoLen.size(),"Homogeneous length vector is not the same length as NumHomDir");
// count number of shapes
switch((*m_exp)[0]->GetShapeDimension())
{
case 1:
startenum = (int) LibUtilities::eSegment;
endenum = (int) LibUtilities::eSegment;
break;
case 2:
startenum = (int) LibUtilities::eTriangle;
break;
case 3:
startenum = (int) LibUtilities::eTetrahedron;
endenum = (int) LibUtilities::eHexahedron;
break;
}
for(s = startenum; s <= endenum; ++s)
{
std::vector<unsigned int> elementIDs;
std::vector<LibUtilities::BasisType> basis;
std::vector<unsigned int> numModes;
std::vector<std::string> fields;
bool first = true;
bool UniOrder = true;
int n;
for(int i = 0; i < (*m_exp).size(); ++i)
{
if((*m_exp)[i]->GetGeom()->GetShapeType() == (LibUtilities::ShapeType) s)
{
elementIDs.push_back((*m_exp)[i]->GetGeom()->GetGlobalID());
if(first)
{
for(int j = 0; j < (*m_exp)[i]->GetNumBases(); ++j)
{
basis.push_back((*m_exp)[i]->GetBasis(j)->GetBasisType());
numModes.push_back((*m_exp)[i]->GetBasis(j)->GetNumModes());
}
// add homogeneous direction details if defined
for(n = 0 ; n < NumHomoDir; ++n)
{
basis.push_back(HomoBasis[n]->GetBasisType());
numModes.push_back(HomoBasis[n]->GetNumModes());
}
first = false;
}
else
{
ASSERTL0((*m_exp)[i]->GetBasis(0)->GetBasisType() == basis[0],"Routine is not set up for multiple bases definitions");
for(int j = 0; j < (*m_exp)[i]->GetNumBases(); ++j)
{
numModes.push_back((*m_exp)[i]->GetBasis(j)->GetNumModes());
if(numModes[j] != (*m_exp)[i]->GetBasis(j)->GetNumModes())
{
UniOrder = false;
}
}
// add homogeneous direction details if defined
for(n = 0 ; n < NumHomoDir; ++n)
{
numModes.push_back(HomoBasis[n]->GetNumModes());
}
}
}
}
if(elementIDs.size() > 0)
{
LibUtilities::FieldDefinitionsSharedPtr fdef = MemoryManager<LibUtilities::FieldDefinitions>::AllocateSharedPtr(shape, elementIDs, basis, UniOrder, numModes,fields, NumHomoDir, HomoLen, HomoZIDs, HomoYIDs);
fielddef.push_back(fdef);
}
}
}
void Nektar::MultiRegions::ExpList::GeneralMatrixOp ( const GlobalMatrixKey gkey,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

This function calculates the result of the multiplication of a matrix of type specified by mkey with a vector given by inarray.

This operation is equivalent to the evaluation of $\underline{\boldsymbol{M}}^e\boldsymbol{\hat{u}}_l$, that is,

\[ \left[ \begin{array}{cccc} \boldsymbol{M}^1 & 0 & \hspace{3mm}0 \hspace{3mm}& 0 \\ 0 & \boldsymbol{M}^2 & 0 & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \boldsymbol{M}^{N_{\mathrm{el}}} \end{array} \right] *\left [ \begin{array}{c} \boldsymbol{\hat{u}}^{1} \\ \boldsymbol{\hat{u}}^{2} \\ \vdots \\ \boldsymbol{\hat{u}}^{{{N_{\mathrm{el}}}}} \end{array} \right ]\]

where $\boldsymbol{M}^e$ are the local matrices of type specified by the key mkey. The decoupling of the local matrices allows for a local evaluation of the operation. However, rather than a local matrix-vector multiplication, the local operations are evaluated as implemented in the function StdRegions::StdExpansion::GeneralMatrixOp.

Parameters
mkeyThis key uniquely defines the type matrix required for the operation.
inarrayThe vector $\boldsymbol{\hat{u}}_l$ of size $N_{\mathrm{eof}}$.
outarrayThe resulting vector of size $N_{\mathrm{eof}}$.

Reimplemented in Nektar::MultiRegions::ContField1D.

Definition at line 2030 of file ExpList.h.

References v_GeneralMatrixOp().

Referenced by Nektar::MultiRegions::ContField3D::GenerateDirBndCondForcing().

{
v_GeneralMatrixOp(gkey,inarray,outarray,coeffstate);
}
void Nektar::MultiRegions::ExpList::GeneralMatrixOp_IterPerExp ( const GlobalMatrixKey gkey,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)

Definition at line 746 of file ExpList.cpp.

References Nektar::MultiRegions::GlobalMatrixKey::GetConstFactors(), Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), Nektar::MultiRegions::GlobalMatrixKey::GetNVarCoeffs(), Nektar::MultiRegions::GlobalMatrixKey::GetVarCoeffs(), m_coeff_offset, m_globalOptParam, m_offset_elmt_id, m_phys_offset, and MultiplyByBlockMatrix().

Referenced by Nektar::MultiRegions::ContField3D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField1D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField2D::v_GeneralMatrixOp(), and v_GeneralMatrixOp().

{
const Array<OneD, const bool> doBlockMatOp
= m_globalOptParam->DoBlockMatOp(gkey.GetMatrixType());
const Array<OneD, const int> num_elmts
= m_globalOptParam->GetShapeNumElements();
Array<OneD,NekDouble> tmp_outarray;
int cnt = 0;
int eid;
for(int n = 0; n < num_elmts.num_elements(); ++n)
{
if(doBlockMatOp[n])
{
= m_globalOptParam->GetShapeList()[n];
const MultiRegions::GlobalMatrixKey vKey(gkey, vType);
if (cnt < m_offset_elmt_id.num_elements())
{
eid = m_offset_elmt_id[cnt];
tmp_outarray = outarray + m_coeff_offset[eid]);
cnt += num_elmts[n];
}
}
else
{
int i;
int nvarcoeffs = gkey.GetNVarCoeffs();
for(i= 0; i < num_elmts[n]; ++i)
{
// need to be initialised with zero size for non variable coefficient case
eid = m_offset_elmt_id[cnt++];
if(nvarcoeffs>0)
{
StdRegions::VarCoeffMap::const_iterator x;
for (x = gkey.GetVarCoeffs().begin(); x != gkey.GetVarCoeffs().end(); ++x)
{
varcoeffs[x->first] = x->second + m_phys_offset[eid];
}
}
StdRegions::StdMatrixKey mkey(gkey.GetMatrixType(),
(*m_exp)[eid]->DetShapeType(),
*((*m_exp)[eid]),
gkey.GetConstFactors(),varcoeffs);
(*m_exp)[eid]->GeneralMatrixOp(inarray + m_coeff_offset[eid],
tmp_outarray = outarray+m_coeff_offset[eid],
mkey);
}
}
}
}
GlobalLinSysSharedPtr Nektar::MultiRegions::ExpList::GenGlobalBndLinSys ( const GlobalLinSysKey mkey,
const AssemblyMapSharedPtr locToGloMap 
)
protected

Generate a GlobalLinSys from information provided by the key "mkey" and the mapping provided in LocToGloBaseMap.

Definition at line 1111 of file ExpList.cpp.

References ASSERTL0, Nektar::LibUtilities::NekFactory< tKey, tBase, >::CreateInstance(), Nektar::MultiRegions::eSIZE_GlobalSysSolnType, Nektar::MultiRegions::GetGlobalLinSysFactory(), Nektar::MultiRegions::GlobalLinSysKey::GetGlobalSysSolnType(), GetRobinBCInfo(), GetSharedThisPtr(), and Nektar::MultiRegions::GlobalSysSolnTypeMap.

Referenced by Nektar::MultiRegions::DisContField3D::GetGlobalBndLinSys(), Nektar::MultiRegions::DisContField2D::GetGlobalBndLinSys(), and Nektar::MultiRegions::DisContField1D::GetGlobalBndLinSys().

{
boost::shared_ptr<ExpList> vExpList = GetSharedThisPtr();
const map<int,RobinBCInfoSharedPtr> vRobinBCInfo = GetRobinBCInfo();
MultiRegions::GlobalSysSolnType vType = mkey.GetGlobalSysSolnType();
{
ASSERTL0(false,"Matrix solution type not defined");
}
std::string vSolnType = MultiRegions::GlobalSysSolnTypeMap[vType];
return GetGlobalLinSysFactory().CreateInstance(vSolnType,mkey,
vExpList,locToGloMap);
}
GlobalLinSysSharedPtr Nektar::MultiRegions::ExpList::GenGlobalLinSys ( const GlobalLinSysKey mkey,
const boost::shared_ptr< AssemblyMapCG > &  locToGloMap 
)
protected

This operation constructs the global linear system of type mkey.

Consider a linear system $\boldsymbol{M\hat{u}}_g=\boldsymbol{f}$ to be solved. Dependent on the solution method, this function constructs

Parameters
mkeyA key which uniquely defines the global matrix to be constructed.
locToGloMapContains the mapping array and required information for the transformation from local to global degrees of freedom.
Returns
(A shared pointer to) the global linear system in required format.

Definition at line 1092 of file ExpList.cpp.

References ASSERTL0, Nektar::LibUtilities::NekFactory< tKey, tBase, >::CreateInstance(), Nektar::MultiRegions::eSIZE_GlobalSysSolnType, Nektar::MultiRegions::GetGlobalLinSysFactory(), Nektar::MultiRegions::GlobalLinSysKey::GetGlobalSysSolnType(), GetSharedThisPtr(), and Nektar::MultiRegions::GlobalSysSolnTypeMap.

{
GlobalLinSysSharedPtr returnlinsys;
boost::shared_ptr<ExpList> vExpList = GetSharedThisPtr();
MultiRegions::GlobalSysSolnType vType = mkey.GetGlobalSysSolnType();
{
ASSERTL0(false,"Matrix solution type not defined");
}
std::string vSolnType = MultiRegions::GlobalSysSolnTypeMap[vType];
return GetGlobalLinSysFactory().CreateInstance( vSolnType, mkey,
vExpList, locToGloMap);
}
GlobalMatrixSharedPtr Nektar::MultiRegions::ExpList::GenGlobalMatrix ( const GlobalMatrixKey mkey,
const boost::shared_ptr< AssemblyMapCG > &  locToGloMap 
)
protected

Generates a global matrix from the given key and map.

Retrieves local matrices from each expansion in the expansion list and combines them together to generate a global matrix system.

Parameters
mkeyMatrix key for the matrix to be generated.
locToGloMapLocal to global mapping.
Returns
Shared pointer to the generated global matrix.

Definition at line 814 of file ExpList.cpp.

References Nektar::StdRegions::eBwdTrans, ErrorUtil::efatal, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eHybridDGHelmBndLam, Nektar::StdRegions::eIProductWRTBase, Nektar::StdRegions::eLaplacian, Nektar::StdRegions::eMass, Nektar::MultiRegions::GlobalMatrixKey::GetConstFactors(), Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), Nektar::MultiRegions::GlobalMatrixKey::GetNVarCoeffs(), Nektar::MultiRegions::GlobalMatrixKey::GetVarCoeffs(), m_npoints, m_offset_elmt_id, m_phys_offset, m_session, and NEKERROR.

Referenced by Nektar::MultiRegions::ContField3D::GetGlobalMatrix(), and Nektar::MultiRegions::ContField2D::GetGlobalMatrix().

{
int i,j,n,gid1,gid2,cntdim1,cntdim2;
NekDouble sign1,sign2;
unsigned int glob_rows;
unsigned int glob_cols;
unsigned int loc_rows;
unsigned int loc_cols;
bool assembleFirstDim;
bool assembleSecondDim;
switch(mkey.GetMatrixType())
{
{
glob_rows = m_npoints;
glob_cols = locToGloMap->GetNumGlobalCoeffs();
assembleFirstDim = false;
assembleSecondDim = true;
}
break;
{
glob_rows = locToGloMap->GetNumGlobalCoeffs();
glob_cols = m_npoints;
assembleFirstDim = true;
assembleSecondDim = false;
}
break;
{
glob_rows = locToGloMap->GetNumGlobalCoeffs();
glob_cols = locToGloMap->GetNumGlobalCoeffs();
assembleFirstDim = true;
assembleSecondDim = true;
}
break;
default:
{
"Global Matrix creation not defined for this type "
"of matrix");
}
}
COOMatType spcoomat;
CoordType coord;
int nvarcoeffs = mkey.GetNVarCoeffs();
int eid;
// fill global matrix
for(n = cntdim1 = cntdim2 = 0; n < (*m_exp).size(); ++n)
{
// need to be initialised with zero size for non variable coefficient case
eid = m_offset_elmt_id[n];
if(nvarcoeffs>0)
{
StdRegions::VarCoeffMap::const_iterator x;
for (x = mkey.GetVarCoeffs().begin(); x != mkey.GetVarCoeffs().end(); ++x)
{
varcoeffs[x->first] = x->second + m_phys_offset[eid];
}
}
LocalRegions::MatrixKey matkey(mkey.GetMatrixType(),
(*m_exp)[eid]->DetShapeType(),
*((*m_exp)[eid]),
mkey.GetConstFactors(),varcoeffs);
loc_mat = boost::dynamic_pointer_cast<LocalRegions::Expansion>((*m_exp)[m_offset_elmt_id[n]])->GetLocMatrix(matkey);
loc_rows = loc_mat->GetRows();
loc_cols = loc_mat->GetColumns();
for(i = 0; i < loc_rows; ++i)
{
if(assembleFirstDim)
{
gid1 = locToGloMap->GetLocalToGlobalMap (cntdim1 + i);
sign1 = locToGloMap->GetLocalToGlobalSign(cntdim1 + i);
}
else
{
gid1 = cntdim1 + i;
sign1 = 1.0;
}
for(j = 0; j < loc_cols; ++j)
{
if(assembleSecondDim)
{
gid2 = locToGloMap
->GetLocalToGlobalMap(cntdim2 + j);
sign2 = locToGloMap
->GetLocalToGlobalSign(cntdim2 + j);
}
else
{
gid2 = cntdim2 + j;
sign2 = 1.0;
}
// sparse matrix fill
coord = make_pair(gid1,gid2);
if( spcoomat.count(coord) == 0 )
{
spcoomat[coord] = sign1*sign2*(*loc_mat)(i,j);
}
else
{
spcoomat[coord] += sign1*sign2*(*loc_mat)(i,j);
}
}
}
cntdim1 += loc_rows;
cntdim2 += loc_cols;
}
::AllocateSharedPtr(m_session,glob_rows,glob_cols,spcoomat);
}
DNekMatSharedPtr Nektar::MultiRegions::ExpList::GenGlobalMatrixFull ( const GlobalLinSysKey mkey,
const boost::shared_ptr< AssemblyMapCG > &  locToGloMap 
)
protected

Definition at line 951 of file ExpList.cpp.

References Nektar::eFULL, Nektar::StdRegions::eHelmholtz, Nektar::StdRegions::eLaplacian, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC, Nektar::ePOSITIVE_DEFINITE_SYMMETRIC_BANDED, Nektar::MultiRegions::GlobalMatrixKey::GetConstFactors(), Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), Nektar::MultiRegions::GlobalMatrixKey::GetNVarCoeffs(), GetRobinBCInfo(), Nektar::MultiRegions::GlobalMatrixKey::GetVarCoeffs(), m_coeff_offset, m_offset_elmt_id, and m_phys_offset.

Referenced by Nektar::MultiRegions::ContField2D::LinearAdvectionEigs().

{
int i,j,n,gid1,gid2,loc_lda,eid;
NekDouble sign1,sign2,value;
int totDofs = locToGloMap->GetNumGlobalCoeffs();
int NumDirBCs = locToGloMap->GetNumGlobalDirBndCoeffs();
unsigned int rows = totDofs - NumDirBCs;
unsigned int cols = totDofs - NumDirBCs;
NekDouble zero = 0.0;
int bwidth = locToGloMap->GetFullSystemBandWidth();
int nvarcoeffs = mkey.GetNVarCoeffs();
MatrixStorage matStorage;
map<int, RobinBCInfoSharedPtr> RobinBCInfo = GetRobinBCInfo();
switch(mkey.GetMatrixType())
{
// case for all symmetric matices
if( (2*(bwidth+1)) < rows)
{
Gmat = MemoryManager<DNekMat>::AllocateSharedPtr(rows,cols,zero,matStorage,bwidth,bwidth);
}
else
{
Gmat = MemoryManager<DNekMat>::AllocateSharedPtr(rows,cols,zero,matStorage);
}
break;
default: // Assume general matrix - currently only set up for full invert
{
matStorage = eFULL;
Gmat = MemoryManager<DNekMat>::AllocateSharedPtr(rows,cols,zero,matStorage);
}
}
// fill global symmetric matrix
for(n = 0; n < (*m_exp).size(); ++n)
{
// need to be initialised with zero size for non variable coefficient case
eid = m_offset_elmt_id[n];
if(nvarcoeffs>0)
{
StdRegions::VarCoeffMap::const_iterator x;
for (x = mkey.GetVarCoeffs().begin(); x != mkey.GetVarCoeffs().end(); ++x)
{
varcoeffs[x->first] = x->second + m_phys_offset[eid];
}
}
LocalRegions::MatrixKey matkey(mkey.GetMatrixType(),
(*m_exp)[eid]->DetShapeType(),
*((*m_exp)[eid]),
mkey.GetConstFactors(),varcoeffs);
loc_mat = boost::dynamic_pointer_cast<LocalRegions::Expansion>((*m_exp)[n])->GetLocMatrix(matkey);
if(RobinBCInfo.count(n) != 0) // add robin mass matrix
{
// declare local matrix from scaled matrix.
int rows = loc_mat->GetRows();
int cols = loc_mat->GetColumns();
const NekDouble *dat = loc_mat->GetRawPtr();
Blas::Dscal(rows*cols,loc_mat->Scale(),new_mat->GetRawPtr(),1);
// add local matrix contribution
for(rBC = RobinBCInfo.find(n)->second;rBC; rBC = rBC->next)
{
(*m_exp)[n]->AddRobinMassMatrix(rBC->m_robinID,rBC->m_robinPrimitiveCoeffs,new_mat);
}
NekDouble one = 1.0;
// redeclare loc_mat to point to new_mat plus the scalar.
}
loc_lda = loc_mat->GetColumns();
for(i = 0; i < loc_lda; ++i)
{
gid1 = locToGloMap->GetLocalToGlobalMap(m_coeff_offset[n] + i) - NumDirBCs;
sign1 = locToGloMap->GetLocalToGlobalSign(m_coeff_offset[n] + i);
if(gid1 >= 0)
{
for(j = 0; j < loc_lda; ++j)
{
gid2 = locToGloMap->GetLocalToGlobalMap(m_coeff_offset[n] + j) - NumDirBCs;
sign2 = locToGloMap->GetLocalToGlobalSign(m_coeff_offset[n] + j);
if(gid2 >= 0)
{
// When global matrix is symmetric,
// only add the value for the upper
// triangular part in order to avoid
// entries to be entered twice
if((matStorage == eFULL)||(gid2 >= gid1))
{
value = Gmat->GetValue(gid1,gid2) + sign1*sign2*(*loc_mat)(i,j);
Gmat->SetValue(gid1,gid2,value);
}
}
}
}
}
}
return Gmat;
}
int Nektar::MultiRegions::ExpList::Get1DScaledTotPoints ( const NekDouble  scale) const
inline

Returns the total number of qudature points scaled by the factor scale on each 1D direction.

Definition at line 1377 of file ExpList.h.

References m_exp.

{
int returnval = 0;
int cnt;
int nbase = (*m_exp)[0]->GetNumBases();
for(int i = 0; i < (*m_exp).size(); ++i)
{
cnt = 1;
for(int j = 0; j < nbase; ++j)
{
cnt *= (int)(scale*((*m_exp)[i]->GetNumPoints(j)));
}
returnval += cnt;
}
return returnval;
}
void Nektar::MultiRegions::ExpList::GetBCValues ( Array< OneD, NekDouble > &  BndVals,
const Array< OneD, NekDouble > &  TotField,
int  BndID 
)
inline

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D.

Definition at line 1676 of file ExpList.h.

References v_GetBCValues().

{
v_GetBCValues(BndVals,TotField,BndID);
}
const DNekScalBlkMatSharedPtr & Nektar::MultiRegions::ExpList::GetBlockMatrix ( const GlobalMatrixKey gkey)
protected

Definition at line 731 of file ExpList.cpp.

References GenBlockMatrix(), Nektar::iterator, and m_blockMat.

Referenced by MultiplyByBlockMatrix(), MultiplyByElmtInvMass(), Nektar::MultiRegions::DisContField3D::v_GeneralMatrixOp(), Nektar::MultiRegions::DisContField2D::v_GeneralMatrixOp(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), and Nektar::MultiRegions::DisContField1D::v_HelmSolve().

{
BlockMatrixMap::iterator matrixIter = m_blockMat->find(gkey);
if(matrixIter == m_blockMat->end())
{
return ((*m_blockMat)[gkey] = GenBlockMatrix(gkey));
}
else
{
return matrixIter->second;
}
}
const Array< OneD, const boost::shared_ptr< ExpList > > & Nektar::MultiRegions::ExpList::GetBndCondExpansions ( )
inline

Reimplemented in Nektar::MultiRegions::ContField2D, Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::ContField1D, Nektar::MultiRegions::DisContField3DHomogeneous2D, and Nektar::MultiRegions::ContField3D.

Definition at line 1879 of file ExpList.h.

References v_GetBndCondExpansions().

{
}
const Array< OneD, const SpatialDomains::BoundaryConditionShPtr > & Nektar::MultiRegions::ExpList::GetBndConditions ( )
inline

Reimplemented in Nektar::MultiRegions::ContField2D, Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::ContField1D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 1980 of file ExpList.h.

References v_GetBndConditions().

{
}
SpatialDomains::BoundaryConditionShPtr Nektar::MultiRegions::ExpList::GetBoundaryCondition ( const SpatialDomains::BoundaryConditionCollection collection,
unsigned int  index,
const std::string &  variable 
)
staticprotected

Definition at line 2544 of file ExpList.cpp.

References ASSERTL1.

Referenced by Nektar::MultiRegions::DisContField2D::FindPeriodicEdges(), Nektar::MultiRegions::DisContField3D::FindPeriodicFaces(), Nektar::MultiRegions::DisContField1D::FindPeriodicVertices(), Nektar::MultiRegions::DisContField3D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::DisContField1D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::DisContField2D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::DisContField1D::SetBoundaryConditionExpansion(), and Nektar::MultiRegions::DisContField3DHomogeneous1D::SetupBoundaryConditions().

{
SpatialDomains::BoundaryConditionCollection::const_iterator collectionIter = collection.find(regionId);
ASSERTL1(collectionIter != collection.end(), "Unable to locate collection "+boost::lexical_cast<string>(regionId));
const SpatialDomains::BoundaryConditionMapShPtr boundaryConditionMap = (*collectionIter).second;
SpatialDomains::BoundaryConditionMap::const_iterator conditionMapIter = boundaryConditionMap->find(variable);
ASSERTL1(conditionMapIter != boundaryConditionMap->end(), "Unable to locate condition map.");
const SpatialDomains::BoundaryConditionShPtr boundaryCondition = (*conditionMapIter).second;
return boundaryCondition;
}
void Nektar::MultiRegions::ExpList::GetBoundaryToElmtMap ( Array< OneD, int > &  ElmtID,
Array< OneD, int > &  EdgeID 
)
inline

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 2045 of file ExpList.h.

References v_GetBoundaryToElmtMap().

Referenced by Nektar::MultiRegions::DisContField2D::DisContField2D(), Nektar::MultiRegions::DisContField3D::DisContField3D(), Nektar::MultiRegions::DisContField1D::v_GetRobinBCInfo(), Nektar::MultiRegions::DisContField3D::v_GetRobinBCInfo(), and Nektar::MultiRegions::DisContField2D::v_GetRobinBCInfo().

{
v_GetBoundaryToElmtMap(ElmtID,EdgeID);
}
NekDouble Nektar::MultiRegions::ExpList::GetCoeff ( int  i)
inline

Get the i th value (coefficient) of m_coeffs.

Parameters
iThe index of m_coeffs to be returned
Returns
The NekDouble held in m_coeffs[i].

Definition at line 1771 of file ExpList.h.

References m_coeffs.

Referenced by Nektar::MultiRegions::DisContField1D::v_EvaluateBoundaryConditions().

{
return m_coeffs[i];
}
int Nektar::MultiRegions::ExpList::GetCoeff_Offset ( int  n) const
inline

Get the start offset position for a global list of m_coeffs correspoinding to element n.

Definition at line 1832 of file ExpList.h.

References m_coeff_offset.

Referenced by Nektar::MultiRegions::DisContField3DHomogeneous1D::NormVectorIProductWRTBase(), Nektar::MultiRegions::AssemblyMapCG1D::SetUp1DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG2D::SetUp2DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG3D::SetUp3DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::MultiRegions::DisContField3D::v_AddFwdBwdTraceIntegral(), Nektar::MultiRegions::DisContField2D::v_AddFwdBwdTraceIntegral(), Nektar::MultiRegions::DisContField3D::v_AddTraceIntegral(), Nektar::MultiRegions::DisContField1D::v_AddTraceIntegral(), Nektar::MultiRegions::DisContField2D::v_AddTraceIntegral(), and Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy().

{
return m_coeff_offset[n];
}
const Array< OneD, const NekDouble > & Nektar::MultiRegions::ExpList::GetCoeffs ( void  ) const
inline

This function returns (a reference to) the array $\boldsymbol{\hat{u}}_l$ (implemented as m_coeffs) containing all local expansion coefficients.

As the function returns a constant reference to a const Array, it is not possible to modify the underlying data of the array m_coeffs. In order to do so, use the function UpdateCoeffs instead.

Returns
(A constant reference to) the array m_coeffs.

Definition at line 1740 of file ExpList.h.

References m_coeffs.

Referenced by Nektar::MultiRegions::DisContField3DHomogeneous2D::EvaluateBoundaryConditions(), Nektar::MultiRegions::DisContField3DHomogeneous1D::EvaluateBoundaryConditions(), Nektar::MultiRegions::ExpList1D::PostProcess(), and Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy().

{
return m_coeffs;
}
NekDouble Nektar::MultiRegions::ExpList::GetCoeffs ( int  i)
inline

Get the i th value (coefficient) of m_coeffs.

Parameters
iThe index of m_coeffs to be returned
Returns
The NekDouble held in m_coeffs[i].

Definition at line 1780 of file ExpList.h.

References m_coeffs.

{
return m_coeffs[i];
}
boost::shared_ptr<LibUtilities::Comm> Nektar::MultiRegions::ExpList::GetComm ( )
inline

Returns the comm object.

Definition at line 828 of file ExpList.h.

References m_comm.

{
return m_comm;
}
int Nektar::MultiRegions::ExpList::GetCoordim ( int  eid)
inline

This function returns the dimension of the coordinates of the element eid.

Parameters
eidThe index of the element to be checked.
Returns
The dimension of the coordinates of the specific element.

Definition at line 1700 of file ExpList.h.

References ASSERTL2, and m_exp.

Referenced by Nektar::MultiRegions::ExpList2DHomogeneous1D::GetCoords(), GetExp(), GetExpIndex(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_GetCoords(), v_GetCoords(), Nektar::MultiRegions::ExpList2D::v_GetNormals(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_GetNormals(), Nektar::MultiRegions::ExpList1D::v_GetNormals(), Nektar::MultiRegions::ExpList1D::v_Upwind(), Nektar::MultiRegions::ExpList1DHomogeneous2D::v_WriteTecplotZone(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_WriteTecplotZone(), and v_WriteTecplotZone().

{
ASSERTL2(eid <= (*m_exp).size(),
"eid is larger than number of elements");
return (*m_exp)[eid]->GetCoordim();
}
void Nektar::MultiRegions::ExpList::GetCoords ( Array< OneD, NekDouble > &  coord_0,
Array< OneD, NekDouble > &  coord_1 = NullNekDouble1DArray,
Array< OneD, NekDouble > &  coord_2 = NullNekDouble1DArray 
)
inline

This function calculates the coordinates of all the elemental quadrature points $\boldsymbol{x}_i$.

Reimplemented in Nektar::MultiRegions::ExpList3DHomogeneous1D, Nektar::MultiRegions::ExpList2DHomogeneous1D, Nektar::MultiRegions::ExpList3DHomogeneous2D, and Nektar::MultiRegions::ExpList1DHomogeneous2D.

Definition at line 1597 of file ExpList.h.

References v_GetCoords().

Referenced by v_WriteTecplotZone().

{
v_GetCoords(coord_0,coord_1,coord_2);
}
const boost::shared_ptr< LocalRegions::ExpansionVector > Nektar::MultiRegions::ExpList::GetExp ( void  ) const
inline

This function returns the vector of elements in the expansion.

Returns
(A const shared pointer to) the local expansion vector m_exp

Definition at line 1823 of file ExpList.h.

References m_exp.

Referenced by Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::ContField3DHomogeneous2D::ContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::DisContField3DHomogeneous2D(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::GetBCValues(), GetExpIndex(), Nektar::MultiRegions::DisContField3DHomogeneous1D::NormVectorIProductWRTBase(), Nektar::MultiRegions::ExpList1D::PostProcess(), Nektar::MultiRegions::AssemblyMapCG1D::SetUp1DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG2D::SetUp2DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG2D::SetUp2DGraphC0ContMap(), Nektar::MultiRegions::AssemblyMapCG3D::SetUp3DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalDGMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalTraceMap(), v_GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy(), Nektar::MultiRegions::AssemblyMapCG::v_LinearSpaceMap(), and v_WriteTecplotHeader().

{
return m_exp;
}
LocalRegions::ExpansionSharedPtr & Nektar::MultiRegions::ExpList::GetExp ( int  n) const
inline

This function returns (a shared pointer to) the local elemental expansion of the $n^{\mathrm{th}}$ element.

Parameters
nThe index of the element concerned.
Returns
(A shared pointer to) the local expansion of the $n^{\mathrm{th}}$ element.

Definition at line 1814 of file ExpList.h.

References m_exp.

{
return (*m_exp)[n];
}
LocalRegions::ExpansionSharedPtr & Nektar::MultiRegions::ExpList::GetExp ( const Array< OneD, const NekDouble > &  gloCoord)

This function returns (a shared pointer to) the local elemental expansion containing the arbitrary point given by gloCoord.

Definition at line 1188 of file ExpList.cpp.

References ASSERTL0, GetCoordim(), and m_exp.

{
Array<OneD, NekDouble> stdCoord(GetCoordim(0),0.0);
for (int i = 0; i < (*m_exp).size(); ++i)
{
if ((*m_exp)[i]->GetGeom()->ContainsPoint(gloCoord))
{
return (*m_exp)[i];
}
}
ASSERTL0(false, "Cannot find element for this point.");
return (*m_exp)[0]; // avoid warnings
}
int Nektar::MultiRegions::ExpList::GetExpIndex ( const Array< OneD, const NekDouble > &  gloCoord,
NekDouble  tol = 0.0,
bool  returnNearestElmt = false 
)

This function returns the index of the local elemental expansion containing the arbitrary point given by gloCoord.

Todo:
need a smarter search here that first just looks at bounding vertices - suggest first seeing if point is within 10% of region defined by vertices. The do point search.

Definition at line 1209 of file ExpList.cpp.

{
Array<OneD, NekDouble> Lcoords(gloCoord.num_elements());
return GetExpIndex(gloCoord,Lcoords,tol,returnNearestElmt);
}
int Nektar::MultiRegions::ExpList::GetExpIndex ( const Array< OneD, const NekDouble > &  gloCoords,
Array< OneD, NekDouble > &  locCoords,
NekDouble  tol = 0.0,
bool  returnNearestElmt = false 
)

This function returns the index and the Local Cartesian Coordinates locCoords of the local elemental expansion containing the arbitrary point given by gloCoords.

Definition at line 1220 of file ExpList.cpp.

References GetCoordim(), GetExp(), GetNumElmts(), m_exp, m_graph, Nektar::NekPoint< data_type >::SetX(), Nektar::NekPoint< data_type >::SetY(), Nektar::NekPoint< data_type >::SetZ(), Vmath::Vcopy(), and WARNINGL0.

{
NekDouble resid;
if (GetNumElmts() == 0)
{
return -1;
}
std::vector<std::pair<int,NekDouble> > elmtIdDist;
// Manifold case (point may match multiple elements)
if (GetExp(0)->GetCoordim() > GetExp(0)->GetShapeDimension())
{
NekDouble x, y, z;
// Scan all elements and store those which may contain the point
for (int i = 0; i < (*m_exp).size(); ++i)
{
if ((*m_exp)[i]->GetGeom()->ContainsPoint(gloCoords, locCoords,
tol, resid))
{
v = m_graph->GetVertex((*m_exp)[i]->GetGeom()->GetVid(0));
w.SetX(gloCoords[0]);
w.SetY(gloCoords[1]);
w.SetZ(gloCoords[2]);
v->GetCoords(x,y,z);
elmtIdDist.push_back(std::pair<int, NekDouble>(i, v->dist(w)));
}
}
// Find nearest element
if (!elmtIdDist.empty())
{
NekDouble min_d = elmtIdDist[0].first;
int min_id = elmtIdDist[0].second;
for (int i = 1; i < elmtIdDist.size(); ++i)
{
if (elmtIdDist[i].second < min_d) {
min_d = elmtIdDist[i].second;
min_id = elmtIdDist[i].first;
}
}
return min_id;
}
else
{
return -1;
}
}
// non-embedded mesh (point can only match one element)
else
{
static int start = 0;
int min_id = 0;
NekDouble resid_min = 1e6;
Array<OneD, NekDouble> savLocCoords(locCoords.num_elements());
// restart search from last found value
for (int i = start; i < (*m_exp).size(); ++i)
{
if ((*m_exp)[i]->GetGeom()->ContainsPoint(gloCoords, locCoords,
tol, resid))
{
start = i;
return i;
}
else
{
if(resid < resid_min)
{
min_id = i;
resid_min = resid;
Vmath::Vcopy(locCoords.num_elements(),savLocCoords,1,locCoords,1);
}
}
}
for (int i = 0; i < start; ++i)
{
if ((*m_exp)[i]->GetGeom()->ContainsPoint(gloCoords, locCoords,
tol, resid))
{
start = i;
return i;
}
else
{
if(resid < resid_min)
{
min_id = i;
resid_min = resid;
Vmath::Vcopy(locCoords.num_elements(),savLocCoords,1,locCoords,1);
}
}
}
std::string msg = "Failed to find point in element to tolerance of "
+ boost::lexical_cast<std::string>(resid)
+ " using nearest point found";
WARNINGL0(true,msg.c_str());
if(returnNearestElmt)
{
Vmath::Vcopy(locCoords.num_elements(),locCoords,1,savLocCoords,1);
return min_id;
}
else
{
return -1;
}
}
}
int Nektar::MultiRegions::ExpList::GetExpSize ( void  )
inline

This function returns the number of elements in the expansion.

Returns
$N_{\mathrm{el}}$, the number of elements in the expansion.

Definition at line 1802 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::ContField3DHomogeneous2D::ContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::DisContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3D::EvaluateHDGPostProcessing(), Nektar::MultiRegions::DisContField2D::EvaluateHDGPostProcessing(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3D::ExpList3D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), Nektar::MultiRegions::DisContField1D::GetNegatedFluxNormal(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), Nektar::MultiRegions::ExpList1D::PeriodicEval(), Nektar::MultiRegions::DisContField3D::SameTypeOfBoundaryConditions(), Nektar::MultiRegions::DisContField2D::SameTypeOfBoundaryConditions(), Nektar::MultiRegions::DisContField3D::v_AddFwdBwdTraceIntegral(), Nektar::MultiRegions::DisContField2D::v_AddFwdBwdTraceIntegral(), Nektar::MultiRegions::DisContField3D::v_AddTraceIntegral(), Nektar::MultiRegions::DisContField1D::v_AddTraceIntegral(), Nektar::MultiRegions::DisContField2D::v_AddTraceIntegral(), Nektar::MultiRegions::DisContField3D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField2D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField1D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField3D::v_GetBoundaryToElmtMap(), Nektar::MultiRegions::DisContField2D::v_GetBoundaryToElmtMap(), Nektar::MultiRegions::DisContField1D::v_GetBoundaryToElmtMap(), Nektar::MultiRegions::DisContField3D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField2D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField1D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), Nektar::MultiRegions::DisContField1D::v_HelmSolve(), Nektar::MultiRegions::ExpList3D::v_PhysGalerkinProjection1DScaled(), Nektar::MultiRegions::ExpList2D::v_PhysGalerkinProjection1DScaled(), Nektar::MultiRegions::ExpList3D::v_PhysInterp1DScaled(), Nektar::MultiRegions::ExpList2D::v_PhysInterp1DScaled(), Nektar::MultiRegions::ExpList3D::v_ReadGlobalOptimizationParameters(), and Nektar::MultiRegions::ExpList2D::v_ReadGlobalOptimizationParameters().

{
return (*m_exp).size();
}
ExpansionType Nektar::MultiRegions::ExpList::GetExpType ( void  )

Returns the type of the expansion.

Definition at line 189 of file ExpList.cpp.

References m_expType.

{
return m_expType;
}
std::vector<LibUtilities::FieldDefinitionsSharedPtr> Nektar::MultiRegions::ExpList::GetFieldDefinitions ( )
inline

Definition at line 751 of file ExpList.h.

References v_GetFieldDefinitions().

{
}
void Nektar::MultiRegions::ExpList::GetFieldDefinitions ( std::vector< LibUtilities::FieldDefinitionsSharedPtr > &  fielddef)
inline

Definition at line 757 of file ExpList.h.

References v_GetFieldDefinitions().

{
}
void Nektar::MultiRegions::ExpList::GetFwdBwdTracePhys ( Array< OneD, NekDouble > &  Fwd,
Array< OneD, NekDouble > &  Bwd 
)
inline

Definition at line 1951 of file ExpList.h.

References v_GetFwdBwdTracePhys().

{
}
void Nektar::MultiRegions::ExpList::GetFwdBwdTracePhys ( const Array< OneD, const NekDouble > &  field,
Array< OneD, NekDouble > &  Fwd,
Array< OneD, NekDouble > &  Bwd 
)
inline

Definition at line 1958 of file ExpList.h.

References v_GetFwdBwdTracePhys().

{
v_GetFwdBwdTracePhys(field,Fwd,Bwd);
}
const NekOptimize::GlobalOptParamSharedPtr& Nektar::MultiRegions::ExpList::GetGlobalOptParam ( void  )
inline

Definition at line 732 of file ExpList.h.

References m_globalOptParam.

{
}
SpatialDomains::MeshGraphSharedPtr Nektar::MultiRegions::ExpList::GetGraph ( )
inline

Definition at line 833 of file ExpList.h.

References m_graph.

{
return m_graph;
}
LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpList::GetHomogeneousBasis ( void  )
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 839 of file ExpList.h.

References v_GetHomogeneousBasis().

{
}
NekDouble Nektar::MultiRegions::ExpList::GetHomoLen ( void  )
inline

This function returns the Width of homogeneous direction associaed with the homogeneous expansion.

Definition at line 503 of file ExpList.h.

References v_GetHomoLen().

{
return v_GetHomoLen();
}
int Nektar::MultiRegions::ExpList::GetNcoeffs ( void  ) const
inline

Returns the total number of local degrees of freedom $N_{\mathrm{eof}}=\sum_{e=1}^{{N_{\mathrm{el}}}}N^{e}_m$.

Definition at line 1316 of file ExpList.h.

References m_ncoeffs.

Referenced by Nektar::MultiRegions::ContField3D::GenerateDirBndCondForcing(), Nektar::MultiRegions::ContField2D::LaplaceSolve(), Nektar::MultiRegions::ContField3D::v_FillBndCondFromField(), Nektar::MultiRegions::ContField2D::v_FillBndCondFromField(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::ContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), Nektar::MultiRegions::ContField2D::v_HelmSolve(), Nektar::MultiRegions::ContField3D::v_ImposeDirichletConditions(), Nektar::MultiRegions::ContField2D::v_ImposeDirichletConditions(), and Nektar::MultiRegions::ContField2D::v_LinearAdvectionDiffusionReactionSolve().

{
return m_ncoeffs;
}
int Nektar::MultiRegions::ExpList::GetNcoeffs ( const int  eid) const
inline

Returns the total number of local degrees of freedom for element eid.

Definition at line 1321 of file ExpList.h.

References m_exp.

{
return (*m_exp)[eid]->GetNcoeffs();
}
void Nektar::MultiRegions::ExpList::GetNormals ( Array< OneD, Array< OneD, NekDouble > > &  normals)
inline

Definition at line 1922 of file ExpList.h.

References v_GetNormals().

{
v_GetNormals(normals);
}
int Nektar::MultiRegions::ExpList::GetNpoints ( void  ) const
inline

Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$.

Definition at line 1398 of file ExpList.h.

References m_npoints.

{
return m_npoints;
}
int Nektar::MultiRegions::ExpList::GetNumElmts ( void  )
inline

This function returns the number of elements in the expansion which may be different for a homogeoenous extended expansionp.

Definition at line 548 of file ExpList.h.

References v_GetNumElmts().

Referenced by GetExpIndex().

{
return v_GetNumElmts();
}
int Nektar::MultiRegions::ExpList::GetOffset_Elmt_Id ( int  n) const
inline

Get the element id associated with the n th consecutive block of data in m_phys and m_coeffs.

Definition at line 1848 of file ExpList.h.

References m_offset_elmt_id.

Referenced by Nektar::MultiRegions::AssemblyMapDG::AssemblyMapDG(), Nektar::MultiRegions::AssemblyMapCG1D::SetUp1DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG2D::SetUp2DExpansionC0ContMap(), Nektar::MultiRegions::AssemblyMapCG2D::SetUp2DGraphC0ContMap(), Nektar::MultiRegions::AssemblyMapCG3D::SetUp3DExpansionC0ContMap(), and Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalDGMap().

{
return m_offset_elmt_id[n];
}
void Nektar::MultiRegions::ExpList::GetPeriodicEntities ( PeriodicMap periodicVerts,
PeriodicMap periodicEdges,
PeriodicMap periodicFaces = NullPeriodicMap 
)
inline

Definition at line 742 of file ExpList.h.

References v_GetPeriodicEntities().

{
v_GetPeriodicEntities(periodicVerts, periodicEdges, periodicFaces);
}
const Array< OneD, const NekDouble > & Nektar::MultiRegions::ExpList::GetPhys ( void  ) const
inline

This function returns (a reference to) the array $\boldsymbol{u}_l$ (implemented as m_phys) containing the function $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points.

As the function returns a constant reference to a const Array it is not possible to modify the underlying data of the array m_phys. In order to do so, use the function UpdatePhys instead.

Returns
(A constant reference to) the array m_phys.

Definition at line 1793 of file ExpList.h.

References m_phys.

Referenced by Nektar::MultiRegions::DisContField3D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField2D::v_GetFwdBwdTracePhys(), and Nektar::MultiRegions::DisContField1D::v_GetFwdBwdTracePhys().

{
return m_phys;
}
int Nektar::MultiRegions::ExpList::GetPhys_Offset ( int  n) const
inline

Get the start offset position for a global list of m_phys correspoinding to element n.

Definition at line 1840 of file ExpList.h.

References m_phys_offset.

Referenced by Nektar::MultiRegions::DisContField3DHomogeneous1D::GetBCValues(), Nektar::MultiRegions::DisContField3DHomogeneous1D::NormVectorIProductWRTBase(), Nektar::MultiRegions::DisContField3D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField2D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField1D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField3D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField2D::v_GetFwdBwdTracePhys(), and Nektar::MultiRegions::DisContField1D::v_GetFwdBwdTracePhys().

{
return m_phys_offset[n];
}
bool Nektar::MultiRegions::ExpList::GetPhysState ( void  ) const
inline

This function indicates whether the array of physical values $\boldsymbol{u}_l$ (implemented as m_phys) is filled or not.

Returns
physState true (=filled) or false (=not filled).

Definition at line 1464 of file ExpList.h.

References m_physState.

{
return m_physState;
}
boost::shared_ptr<ExpList>& Nektar::MultiRegions::ExpList::GetPlane ( int  n)
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 844 of file ExpList.h.

References v_GetPlane().

{
return v_GetPlane(n);
}
map<int, RobinBCInfoSharedPtr> Nektar::MultiRegions::ExpList::GetRobinBCInfo ( )
inline

Definition at line 737 of file ExpList.h.

References v_GetRobinBCInfo().

Referenced by GenGlobalBndLinSys(), and GenGlobalMatrixFull().

{
return v_GetRobinBCInfo();
}
boost::shared_ptr<LibUtilities::SessionReader> Nektar::MultiRegions::ExpList::GetSession ( )
inline

Returns the session object.

Definition at line 822 of file ExpList.h.

References m_session.

{
return m_session;
}
boost::shared_ptr<ExpList> Nektar::MultiRegions::ExpList::GetSharedThisPtr ( )
inline

Returns a shared pointer to the current object.

Definition at line 816 of file ExpList.h.

Referenced by GenGlobalBndLinSys(), and GenGlobalLinSys().

{
return shared_from_this();
}
int Nektar::MultiRegions::ExpList::GetTotPoints ( void  ) const
inline

Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$.

Definition at line 1366 of file ExpList.h.

References m_npoints.

Referenced by Nektar::MultiRegions::ExpList3DHomogeneous2D::GetCoords(), Nektar::MultiRegions::ExpList2DHomogeneous1D::GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy(), Nektar::MultiRegions::ExpList3DHomogeneous2D::v_L2(), v_WriteTecplotField(), and v_WriteTecplotZone().

{
return m_npoints;
}
int Nektar::MultiRegions::ExpList::GetTotPoints ( const int  eid) const
inline

Returns the total number of quadrature points for eid's element $=Q_{\mathrm{tot}}$.

Definition at line 1371 of file ExpList.h.

References m_exp.

{
return (*m_exp)[eid]->GetTotPoints();
}
boost::shared_ptr< ExpList > & Nektar::MultiRegions::ExpList::GetTrace ( )
inline

Return a reference to the trace space associated with this expansion list.

Definition at line 1907 of file ExpList.h.

References v_GetTrace().

Referenced by Nektar::MultiRegions::DisContField2D::v_AddFwdBwdTraceIntegral(), Nektar::MultiRegions::DisContField1D::v_AddTraceIntegral(), and Nektar::MultiRegions::DisContField2D::v_AddTraceIntegral().

{
return v_GetTrace();
}
const Array< OneD, const int > & Nektar::MultiRegions::ExpList::GetTraceBndMap ( void  )
inline

Definition at line 1917 of file ExpList.h.

References v_GetTraceBndMap().

{
return v_GetTraceBndMap();
}
boost::shared_ptr< AssemblyMapDG > & Nektar::MultiRegions::ExpList::GetTraceMap ( void  )
inline

Definition at line 1912 of file ExpList.h.

References v_GetTraceMap().

Referenced by v_GetTraceBndMap().

{
return v_GetTraceMap();
}
LibUtilities::TranspositionSharedPtr Nektar::MultiRegions::ExpList::GetTransposition ( void  )
inline

This function returns the transposition class associaed with the homogeneous expansion.

Definition at line 496 of file ExpList.h.

References v_GetTransposition().

{
}
bool Nektar::MultiRegions::ExpList::GetWaveSpace ( void  ) const
inline

This function returns the third direction expansion condition, which can be in wave space (coefficient) or not It is stored in the variable m_WaveSpace.

Definition at line 1415 of file ExpList.h.

References m_WaveSpace.

{
return m_WaveSpace;
}
Array<OneD, const unsigned int> Nektar::MultiRegions::ExpList::GetYIDs ( void  )
inline

This function returns a vector containing the wave numbers in y-direction associated with the 3D homogenous expansion. Required if a parellelisation is applied in the Fourier direction.

Definition at line 512 of file ExpList.h.

References v_GetYIDs().

{
return v_GetYIDs();
}
Array<OneD, const unsigned int> Nektar::MultiRegions::ExpList::GetZIDs ( void  )
inline

This function returns a vector containing the wave numbers in z-direction associated with the 3D homogenous expansion. Required if a parellelisation is applied in the Fourier direction.

Definition at line 489 of file ExpList.h.

References v_GetZIDs().

Referenced by v_WriteTecplotZone().

{
return v_GetZIDs();
}
void Nektar::MultiRegions::ExpList::GlobalEigenSystem ( const boost::shared_ptr< DNekMat > &  Gmat,
Array< OneD, NekDouble > &  EigValsReal,
Array< OneD, NekDouble > &  EigValsImag,
Array< OneD, NekDouble > &  EigVecs = NullNekDouble1DArray 
)
protected
void Nektar::MultiRegions::ExpList::GlobalToLocal ( void  )
inline

Put the coefficients into local ordering and place in m_coeffs.

Definition at line 1761 of file ExpList.h.

References v_GlobalToLocal().

Referenced by Nektar::MultiRegions::ContField1D::BwdTrans(), Nektar::MultiRegions::ContField2D::BwdTrans(), Nektar::MultiRegions::ContField1D::FwdTrans(), Nektar::MultiRegions::ContField2D::FwdTrans(), Nektar::MultiRegions::ContField2D::LaplaceSolve(), Nektar::MultiRegions::ContField1D::MultiplyByInvMassMatrix(), Nektar::MultiRegions::ContField2D::MultiplyByInvMassMatrix(), Nektar::MultiRegions::ContField3D::v_BwdTrans(), Nektar::MultiRegions::ContField3D::v_FwdTrans(), Nektar::MultiRegions::ContField3D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField1D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField2D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField3D::v_HelmSolve(), Nektar::MultiRegions::ContField1D::v_HelmSolve(), Nektar::MultiRegions::ContField2D::v_HelmSolve(), Nektar::MultiRegions::ContField2D::v_LinearAdvectionDiffusionReactionSolve(), Nektar::MultiRegions::ContField2D::v_LinearAdvectionReactionSolve(), and Nektar::MultiRegions::ContField3D::v_MultiplyByInvMassMatrix().

NekDouble Nektar::MultiRegions::ExpList::H1 ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  soln = NullNekDouble1DArray 
)

Calculates the $H^1$ error of the global spectral/hp element approximation.

Given a spectral/hp approximation $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points (which should be contained in m_phys), this function calculates the $H^1_2$ error of this approximation with respect to an exact solution. The local distribution of the quadrature points allows an elemental evaluation of this operation through the functions StdRegions::StdExpansion::H1.

The exact solution, also evaluated at the quadrature points, should be contained in the variable m_phys of the ExpList object Sol.

Parameters
solnAn 1D array, containing the discrete evaluation of the exact solution at the quadrature points.
Returns
The $H^1_2$ error of the approximation.

Definition at line 1854 of file ExpList.cpp.

References m_comm, m_phys_offset, and Nektar::LibUtilities::ReduceSum.

{
NekDouble err = 0.0, errh1;
int i;
for (i = 0; i < (*m_exp).size(); ++i)
{
errh1 = (*m_exp)[i]->H1(inarray + m_phys_offset[i],
soln + m_phys_offset[i]);
err += errh1*errh1;
}
m_comm->GetRowComm()->AllReduce(err, LibUtilities::ReduceSum);
return sqrt(err);
}
void Nektar::MultiRegions::ExpList::HelmSolve ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const FlagList flags,
const StdRegions::ConstFactorMap factors,
const StdRegions::VarCoeffMap varcoeff = StdRegions::NullVarCoeffMap,
const Array< OneD, const NekDouble > &  dirForcing = NullNekDouble1DArray 
)
inline

Solve helmholtz problem.

Definition at line 1555 of file ExpList.h.

References v_HelmSolve().

{
v_HelmSolve(inarray, outarray, flags, factors, varcoeff, dirForcing);
}
void Nektar::MultiRegions::ExpList::HomogeneousBwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1651 of file ExpList.h.

References v_HomogeneousBwdTrans().

{
v_HomogeneousBwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
}
Array<OneD, const NekDouble> Nektar::MultiRegions::ExpList::HomogeneousEnergy ( void  )
inline

This function calculates the energy associated with each one of the modesof a 3D homogeneous nD expansion.

Definition at line 473 of file ExpList.h.

References v_HomogeneousEnergy().

{
}
void Nektar::MultiRegions::ExpList::HomogeneousFwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1638 of file ExpList.h.

References v_HomogeneousFwdTrans().

{
v_HomogeneousFwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
}
void Nektar::MultiRegions::ExpList::ImposeDirichletConditions ( Array< OneD, NekDouble > &  outarray)
inline

Impose Dirichlet Boundary Conditions onto Array.

Definition at line 1745 of file ExpList.h.

References v_ImposeDirichletConditions().

NekDouble Nektar::MultiRegions::ExpList::Integral ( const Array< OneD, const NekDouble > &  inarray)
inline

Definition at line 466 of file ExpList.h.

References v_Integral().

{
return v_Integral(inarray);
}
void Nektar::MultiRegions::ExpList::IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Reimplemented in Nektar::MultiRegions::ContField1D, and Nektar::MultiRegions::ContField2D.

Definition at line 1472 of file ExpList.h.

References v_IProductWRTBase().

Referenced by Nektar::MultiRegions::ContField3D::v_FwdTrans(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::ContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), and Nektar::MultiRegions::DisContField1D::v_HelmSolve().

{
v_IProductWRTBase(inarray,outarray, coeffstate);
}
void Nektar::MultiRegions::ExpList::IProductWRTBase_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function calculates the inner product of a function $f(\boldsymbol{x})$ with respect to all {local} expansion modes $\phi_n^e(\boldsymbol{x})$.

Definition at line 1483 of file ExpList.h.

References v_IProductWRTBase_IterPerExp().

Referenced by Nektar::MultiRegions::ContField2D::IProductWRTBase(), Nektar::MultiRegions::ContField1D::IProductWRTBase(), v_FwdTrans_IterPerExp(), and Nektar::MultiRegions::ContField3D::v_IProductWRTBase().

{
v_IProductWRTBase_IterPerExp(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::IProductWRTDerivBase ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)

This function calculates the inner product of a function $f(\boldsymbol{x})$ with respect to the derivative (in direction.

Parameters
dir)of all {local} expansion modes $\phi_n^e(\boldsymbol{x})$.

The operation is evaluated locally for every element by the function StdRegions::StdExpansion::IProductWRTDerivBase.

Parameters
dir{0,1} is the direction in which the derivative of the basis should be taken
inarrayAn array of size $Q_{\mathrm{tot}}$ containing the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.
outarrayAn array of size $N_{\mathrm{eof}}$ used to store the result.

Definition at line 354 of file ExpList.cpp.

References m_coeff_offset, and m_phys_offset.

{
int i;
Array<OneD,NekDouble> e_outarray;
for(i = 0; i < (*m_exp).size(); ++i)
{
(*m_exp)[i]->IProductWRTDerivBase(dir,inarray+m_phys_offset[i],
e_outarray = outarray+m_coeff_offset[i]);
}
}
NekDouble Nektar::MultiRegions::ExpList::L2 ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  soln = NullNekDouble1DArray 
)
inline

This function calculates the $L_2$ error with respect to soln of the global spectral/hp element approximation.

Definition at line 453 of file ExpList.h.

References v_L2().

Referenced by Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), and Nektar::MultiRegions::ExpList3DHomogeneous2D::v_L2().

{
return v_L2(inarray, soln);
}
void Nektar::MultiRegions::ExpList::LinearAdvectionDiffusionReactionSolve ( const Array< OneD, Array< OneD, NekDouble > > &  velocity,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const NekDouble  lambda,
CoeffState  coeffstate = eLocal,
const Array< OneD, const NekDouble > &  dirForcing = NullNekDouble1DArray 
)
inline

Solve Advection Diffusion Reaction.

Definition at line 1570 of file ExpList.h.

References v_LinearAdvectionDiffusionReactionSolve().

{
v_LinearAdvectionDiffusionReactionSolve(velocity,inarray, outarray,
lambda, coeffstate,dirForcing);
}
void Nektar::MultiRegions::ExpList::LinearAdvectionReactionSolve ( const Array< OneD, Array< OneD, NekDouble > > &  velocity,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const NekDouble  lambda,
CoeffState  coeffstate = eLocal,
const Array< OneD, const NekDouble > &  dirForcing = NullNekDouble1DArray 
)
inline

Solve Advection Diffusion Reaction.

Definition at line 1582 of file ExpList.h.

References v_LinearAdvectionReactionSolve().

{
v_LinearAdvectionReactionSolve(velocity,inarray, outarray,
lambda, coeffstate,dirForcing);
}
NekDouble Nektar::MultiRegions::ExpList::Linf ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  soln = NullNekDouble1DArray 
)

This function calculates the $L_\infty$ error of the global spectral/hp element approximation.

Given a spectral/hp approximation $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points (which should be contained in m_phys), this function calculates the $L_\infty$ error of this approximation with respect to an exact solution. The local distribution of the quadrature points allows an elemental evaluation of this operation through the functions StdRegions::StdExpansion::Linf.

The exact solution, also evaluated at the quadrature points, should be contained in the variable m_phys of the ExpList object Sol.

Parameters
solnA 1D array, containing the discrete evaluation of the exact solution at the quadrature points in its array m_phys.
Returns
The $L_\infty$ error of the approximation.

Definition at line 1660 of file ExpList.cpp.

References m_comm, m_npoints, Nektar::NullNekDouble1DArray, Nektar::LibUtilities::ReduceMax, and Vmath::Vmax().

{
NekDouble err = 0.0;
if (soln == NullNekDouble1DArray)
{
err = Vmath::Vmax(m_npoints, inarray, 1);
}
else
{
for (int i = 0; i < m_npoints; ++i)
{
err = max(err, abs(inarray[i] - soln[i]));
}
}
m_comm->GetRowComm()->AllReduce(err, LibUtilities::ReduceMax);
return err;
}
void Nektar::MultiRegions::ExpList::LocalToGlobal ( void  )
inline

Put the coefficients into global ordering using m_coeffs.

Reimplemented in Nektar::MultiRegions::ContField1D.

Definition at line 1756 of file ExpList.h.

References v_LocalToGlobal().

Referenced by Nektar::MultiRegions::ContField3D::v_FillBndCondFromField(), Nektar::MultiRegions::ContField2D::v_FillBndCondFromField(), Nektar::MultiRegions::ContField3D::v_HelmSolve(), and Nektar::MultiRegions::ContField2D::v_HelmSolve().

void Nektar::MultiRegions::ExpList::MultiplyByBlockMatrix ( const GlobalMatrixKey gkey,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protected

Retrieves the block matrix specified by bkey, and computes $ y=Mx $.

Parameters
gkeyGlobalMatrixKey specifying the block matrix to use in the matrix-vector multiply.
inarrayInput vector $ x $.
outarrayOutput vector $ y $.

Definition at line 270 of file ExpList.cpp.

References Nektar::eWrapper, and GetBlockMatrix().

Referenced by GeneralMatrixOp_IterPerExp(), v_BwdTrans_IterPerExp(), and v_IProductWRTBase_IterPerExp().

{
// Retrieve the block matrix using the given key.
const DNekScalBlkMatSharedPtr& blockmat = GetBlockMatrix(gkey);
int nrows = blockmat->GetRows();
int ncols = blockmat->GetColumns();
// Create NekVectors from the given data arrays
NekVector<NekDouble> in (ncols,inarray, eWrapper);
NekVector< NekDouble> out(nrows,outarray,eWrapper);
// Perform matrix-vector multiply.
out = (*blockmat)*in;
}
void Nektar::MultiRegions::ExpList::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 matrix.

The coefficients of the function to be acted upon should be contained in the

Parameters
inarray.The resulting coefficients are stored in
outarray
inarrayAn array of size $N_{\mathrm{eof}}$ containing the inner product.

Definition at line 482 of file ExpList.cpp.

References Nektar::StdRegions::eInvMass, Nektar::eWrapper, GetBlockMatrix(), and m_ncoeffs.

Referenced by v_FwdTrans_IterPerExp().

{
GlobalMatrixKey mkey(StdRegions::eInvMass);
const DNekScalBlkMatSharedPtr& InvMass = GetBlockMatrix(mkey);
// Inverse mass matrix
if(inarray.get() == outarray.get())
{
NekVector<NekDouble> in(m_ncoeffs,inarray); // copy data
out = (*InvMass)*in;
}
else
{
out = (*InvMass)*in;
}
}
void Nektar::MultiRegions::ExpList::MultiplyByInvMassMatrix ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Reimplemented in Nektar::MultiRegions::ContField2D, and Nektar::MultiRegions::ContField1D.

Definition at line 1544 of file ExpList.h.

References v_MultiplyByInvMassMatrix().

{
v_MultiplyByInvMassMatrix(inarray,outarray,coeffstate);
}
void Nektar::MultiRegions::ExpList::NormVectorIProductWRTBase ( Array< OneD, const NekDouble > &  V1,
Array< OneD, const NekDouble > &  V2,
Array< OneD, NekDouble > &  outarray,
int  BndID 
)
inline

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D.

Definition at line 1687 of file ExpList.h.

References v_NormVectorIProductWRTBase().

{
v_NormVectorIProductWRTBase(V1,V2,outarray,BndID);
}
void Nektar::MultiRegions::ExpList::PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
inline

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1627 of file ExpList.h.

References v_PhysDeriv().

{
v_PhysDeriv(edir, inarray,out_d);
}
void Nektar::MultiRegions::ExpList::PhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0,
Array< OneD, NekDouble > &  out_d1 = NullNekDouble1DArray,
Array< OneD, NekDouble > &  out_d2 = NullNekDouble1DArray 
)
inline

This function discretely evaluates the derivative of a function $f(\boldsymbol{x})$ on the domain consisting of all elements of the expansion.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1608 of file ExpList.h.

References v_PhysDeriv().

{
v_PhysDeriv(inarray,out_d0,out_d1,out_d2);
}
void Nektar::MultiRegions::ExpList::PhysDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
inline

Definition at line 1619 of file ExpList.h.

References v_PhysDeriv().

{
v_PhysDeriv(dir,inarray,out_d);
}
void Nektar::MultiRegions::ExpList::PhysGalerkinProjection1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function Galerkin projects the physical space points in inarray to outarray where inarray is assumed to be defined in the expansion but where the number of points are rescaled by 1DScale.

Definition at line 533 of file ExpList.h.

References v_PhysGalerkinProjection1DScaled().

{
v_PhysGalerkinProjection1DScaled(scale, inarray, outarray);
}
NekDouble Nektar::MultiRegions::ExpList::PhysIntegral ( void  )

This function integrates a function $f(\boldsymbol{x})$ over the domain consisting of all the elements of the expansion.

The integration is evaluated locally, that is

\[\int f(\boldsymbol{x})d\boldsymbol{x}=\sum_{e=1}^{{N_{\mathrm{el}}}} \left\{\int_{\Omega_e}f(\boldsymbol{x})d\boldsymbol{x}\right\}, \]

where the integration over the separate elements is done by the function StdRegions::StdExpansion::Integral, which discretely evaluates the integral using Gaussian quadrature.

Note that the array m_phys should be filled with the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.

Returns
The value of the discretely evaluated integral $\int f(\boldsymbol{x})d\boldsymbol{x}$.

Definition at line 222 of file ExpList.cpp.

References ASSERTL1, m_phys, and m_physState.

{
"local physical space is not true ");
}
NekDouble Nektar::MultiRegions::ExpList::PhysIntegral ( const Array< OneD, const NekDouble > &  inarray)

This function integrates a function $f(\boldsymbol{x})$ over the domain consisting of all the elements of the expansion.

The integration is evaluated locally, that is

\[\int f(\boldsymbol{x})d\boldsymbol{x}=\sum_{e=1}^{{N_{\mathrm{el}}}} \left\{\int_{\Omega_e}f(\boldsymbol{x})d\boldsymbol{x}\right\}, \]

where the integration over the separate elements is done by the function StdRegions::StdExpansion::Integral, which discretely evaluates the integral using Gaussian quadrature.

Parameters
inarrayAn array of size $Q_{\mathrm{tot}}$ containing the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.
Returns
The value of the discretely evaluated integral $\int f(\boldsymbol{x})d\boldsymbol{x}$.

Definition at line 247 of file ExpList.cpp.

References m_phys_offset.

{
int i;
NekDouble sum = 0.0;
for(i = 0; i < (*m_exp).size(); ++i)
{
sum += (*m_exp)[i]->Integral(inarray + m_phys_offset[i]);
}
return sum;
}
void Nektar::MultiRegions::ExpList::PhysInterp1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
inline

This function interpolates the physical space points in inarray to outarray using the same points defined in the expansion but where the number of points are rescaled by 1DScale.

Definition at line 521 of file ExpList.h.

References v_PhysInterp1DScaled().

{
v_PhysInterp1DScaled(scale, inarray,outarray);
}
void Nektar::MultiRegions::ExpList::ReadGlobalOptimizationParameters ( )
inlineprotected

Definition at line 992 of file ExpList.h.

References v_ReadGlobalOptimizationParameters().

Referenced by Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), and Nektar::MultiRegions::ExpList3D::ExpList3D().

void Nektar::MultiRegions::ExpList::SetCoeff ( int  i,
NekDouble  val 
)
inline

Set the i th coefficiient in m_coeffs to value val.

Parameters
iThe index of m_coeffs to be set
valThe value which m_coeffs[i] is to be set to.

Definition at line 1711 of file ExpList.h.

References m_coeffs.

{
m_coeffs[i] = val;
}
void Nektar::MultiRegions::ExpList::SetCoeffs ( int  i,
NekDouble  val 
)
inline

Set the i th coefficiient in m_coeffs to value val.

Parameters
iThe index of m_coeffs to be set.
valThe value which m_coeffs[i] is to be set to.

Definition at line 1721 of file ExpList.h.

References m_coeffs.

{
m_coeffs[i] = val;
}
void Nektar::MultiRegions::ExpList::SetCoeffsArray ( Array< OneD, NekDouble > &  inarray)
inline

Set the m_coeffs array to inarray.

Definition at line 1727 of file ExpList.h.

References m_coeffs.

{
m_coeffs = inarray;
}
void Nektar::MultiRegions::ExpList::SetExpType ( ExpansionType  Type)

Returns the type of the expansion.

Definition at line 197 of file ExpList.cpp.

References m_expType.

Referenced by ExpList(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), Nektar::MultiRegions::ExpList3D::ExpList3D(), Nektar::MultiRegions::ExpList3DHomogeneous1D::ExpList3DHomogeneous1D(), and Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D().

{
m_expType = Type;
}
void Nektar::MultiRegions::ExpList::SetHomo1DSpecVanVisc ( Array< OneD, NekDouble visc)
inline

This function sets the Spectral Vanishing Viscosity in homogeneous1D expansion.

Definition at line 480 of file ExpList.h.

References v_SetHomo1DSpecVanVisc().

void Nektar::MultiRegions::ExpList::SetModifiedBasis ( const bool  modbasis)
inline

Set Modified Basis for the stability analysis.

void Nektar::MultiRegions::ExpList::SetPhys ( int  i,
NekDouble  val 
)
inline

Set the i th value of m_phys to value val.

Set the i th value ofm_phys to value val.

Definition at line 1421 of file ExpList.h.

References m_phys.

{
m_phys[i] = val;
}
void Nektar::MultiRegions::ExpList::SetPhys ( const Array< OneD, const NekDouble > &  inarray)
inline

Fills the array m_phys.

This function fills the array $\boldsymbol{u}_l$, the evaluation of the expansion at the quadrature points (implemented as m_phys), with the values of the array inarray.

Parameters
inarrayThe array containing the values where m_phys should be filled with.

Definition at line 1435 of file ExpList.h.

References ASSERTL0, m_npoints, m_phys, m_physState, and Vmath::Vcopy().

{
ASSERTL0(inarray.num_elements() == m_npoints,
"Input array does not have correct number of elements.");
Vmath::Vcopy(m_npoints,&inarray[0],1,&m_phys[0],1);
m_physState = true;
}
void Nektar::MultiRegions::ExpList::SetPhysArray ( Array< OneD, NekDouble > &  inarray)
inline

Sets the array m_phys.

Definition at line 1446 of file ExpList.h.

References m_phys.

{
m_phys = inarray;
}
void Nektar::MultiRegions::ExpList::SetPhysState ( const bool  physState)
inline

This function manually sets whether the array of physical values $\boldsymbol{u}_l$ (implemented as m_phys) is filled or not.

Parameters
physStatetrue (=filled) or false (=not filled).

Definition at line 1455 of file ExpList.h.

References m_physState.

{
m_physState = physState;
}
void Nektar::MultiRegions::ExpList::SetUpPhysNormals ( )
inline

Definition at line 2040 of file ExpList.h.

References v_SetUpPhysNormals().

Referenced by Nektar::MultiRegions::DisContField2D::DisContField2D(), Nektar::MultiRegions::DisContField3D::DisContField3D(), Nektar::MultiRegions::DisContField3D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::DisContField2D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::DisContField3D::SetUpDG(), Nektar::MultiRegions::DisContField2D::SetUpDG(), and Nektar::MultiRegions::DisContField1D::SetUpDG().

void Nektar::MultiRegions::ExpList::SetWaveSpace ( const bool  wavespace)
inline

Sets the wave space to the one of the possible configuration true or false.

Definition at line 1407 of file ExpList.h.

References m_WaveSpace.

{
m_WaveSpace = wavespace;
}
void Nektar::MultiRegions::ExpList::SmoothField ( Array< OneD, NekDouble > &  field)
inline

Smooth a field across elements.

Definition at line 1514 of file ExpList.h.

References v_SmoothField().

{
v_SmoothField(field);
}
boost::shared_ptr< ExpList > & Nektar::MultiRegions::ExpList::UpdateBndCondExpansion ( int  i)
inline

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 1884 of file ExpList.h.

References v_UpdateBndCondExpansion().

{
}
Array< OneD, SpatialDomains::BoundaryConditionShPtr > & Nektar::MultiRegions::ExpList::UpdateBndConditions ( )
inline

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 1987 of file ExpList.h.

References v_UpdateBndConditions().

{
}
Array< OneD, NekDouble > & Nektar::MultiRegions::ExpList::UpdateCoeffs ( void  )
inline

This function returns (a reference to) the array $\boldsymbol{\hat{u}}_l$ (implemented as m_coeffs) containing all local expansion coefficients.

If one wants to get hold of the underlying data without modifying them, rather use the function GetCoeffs instead.

Returns
(A reference to) the array m_coeffs.

Definition at line 1859 of file ExpList.h.

References m_coeffs.

Referenced by Nektar::MultiRegions::DisContField3DHomogeneous2D::EvaluateBoundaryConditions(), and Nektar::MultiRegions::DisContField3DHomogeneous1D::EvaluateBoundaryConditions().

{
return m_coeffs;
}
Array< OneD, NekDouble > & Nektar::MultiRegions::ExpList::UpdatePhys ( void  )
inline

This function returns (a reference to) the array $\boldsymbol{u}_l$ (implemented as m_phys) containing the function $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points.

If one wants to get hold of the underlying data without modifying them, rather use the function GetPhys instead.

Returns
(A reference to) the array m_phys.

Definition at line 1870 of file ExpList.h.

References m_phys, and m_physState.

{
m_physState = true;
return m_phys;
}
void Nektar::MultiRegions::ExpList::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 
)
inline

Definition at line 1889 of file ExpList.h.

References v_Upwind().

{
v_Upwind(Vec, Fwd, Bwd, Upwind);
}
void Nektar::MultiRegions::ExpList::Upwind ( const Array< OneD, const NekDouble > &  Vn,
const Array< OneD, const NekDouble > &  Fwd,
const Array< OneD, const NekDouble > &  Bwd,
Array< OneD, NekDouble > &  Upwind 
)
inline

Definition at line 1898 of file ExpList.h.

References v_Upwind().

{
v_Upwind(Vn, Fwd, Bwd, Upwind);
}
void Nektar::MultiRegions::ExpList::v_AddFwdBwdTraceIntegral ( const Array< OneD, const NekDouble > &  Fwd,
const Array< OneD, const NekDouble > &  Bwd,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2222 of file ExpList.cpp.

References ASSERTL0.

Referenced by AddFwdBwdTraceIntegral().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_AddTraceIntegral ( const Array< OneD, const NekDouble > &  Fx,
const Array< OneD, const NekDouble > &  Fy,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D.

Definition at line 2205 of file ExpList.cpp.

References ASSERTL0.

Referenced by AddTraceIntegral().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_AddTraceIntegral ( const Array< OneD, const NekDouble > &  Fn,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2214 of file ExpList.cpp.

References ASSERTL0.

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 1985 of file ExpList.cpp.

References m_coeffs.

Referenced by AppendFieldData().

{
v_AppendFieldData(fielddef,fielddata,m_coeffs);
}
void Nektar::MultiRegions::ExpList::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
Array< OneD, NekDouble > &  coeffs 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 1990 of file ExpList.cpp.

References m_coeff_offset.

{
int i;
// Determine mapping from element ids to location in
// expansion list
// Determine mapping from element ids to location in
// expansion list
map<int, int> ElmtID_to_ExpID;
for(i = 0; i < (*m_exp).size(); ++i)
{
ElmtID_to_ExpID[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
}
for(i = 0; i < fielddef->m_elementIDs.size(); ++i)
{
int eid = ElmtID_to_ExpID[fielddef->m_elementIDs[i]];
int datalen = (*m_exp)[eid]->GetNcoeffs();
fielddata.insert(fielddata.end(),&coeffs[m_coeff_offset[eid]],&coeffs[m_coeff_offset[eid]]+datalen);
}
}
void Nektar::MultiRegions::ExpList::v_BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ContField3D.

Definition at line 2376 of file ExpList.cpp.

References v_BwdTrans_IterPerExp().

Referenced by BwdTrans().

{
v_BwdTrans_IterPerExp(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::v_BwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Given the elemental coefficients $\hat{u}_n^e$ of an expansion, this function evaluates the spectral/hp expansion $u^{\delta}(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$. The operation is evaluated locally by the elemental function StdRegions::StdExpansion::BwdTrans.

Parameters
inarrayAn array of size $N_{\mathrm{eof}}$ containing the local coefficients $\hat{u}_n^e$.
outarrayThe resulting physical values at the quadrature points $u^{\delta}(\boldsymbol{x}_i)$ will be stored in this array of size $Q_{\mathrm{tot}}$.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 1148 of file ExpList.cpp.

References Nektar::StdRegions::eBwdTrans, m_coeff_offset, m_globalOptParam, m_offset_elmt_id, m_phys_offset, and MultiplyByBlockMatrix().

Referenced by BwdTrans_IterPerExp(), and v_BwdTrans().

{
// get optimisation information about performing block
// matrix multiplies
const Array<OneD, const bool> doBlockMatOp
const Array<OneD, LibUtilities::ShapeType> shape = m_globalOptParam->GetShapeList();
const Array<OneD, const int> num_elmts = m_globalOptParam->GetShapeNumElements();
Array<OneD,NekDouble> tmp_outarray;
int cnt = 0,eid;
for(int n = 0; n < num_elmts.num_elements(); ++n)
{
if(doBlockMatOp[n])
{
if(num_elmts[n])
{
GlobalMatrixKey mkey(StdRegions::eBwdTrans, shape[n]);
eid = m_offset_elmt_id[cnt];
tmp_outarray = outarray + m_phys_offset[eid]);
cnt += num_elmts[n];
}
}
else
{
int i;
for(i= 0; i < num_elmts[n]; ++i)
{
eid = m_offset_elmt_id[cnt++];
(*m_exp)[eid]->BwdTrans(inarray + m_coeff_offset[eid],
tmp_outarray = outarray+m_phys_offset[eid]);
}
}
}
}
void Nektar::MultiRegions::ExpList::v_DealiasedProd ( const Array< OneD, NekDouble > &  inarray1,
const Array< OneD, NekDouble > &  inarray2,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 2325 of file ExpList.cpp.

References ASSERTL0.

Referenced by DealiasedProd().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_EvaluateBoundaryConditions ( const NekDouble  time = 0.0,
const std::string  varName = "",
const NekDouble  x2_in = NekConstants::kNekUnsetDouble,
const NekDouble  x3_in = NekConstants::kNekUnsetDouble 
)
privatevirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2513 of file ExpList.cpp.

References ASSERTL0.

Referenced by EvaluateBoundaryConditions().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_ExtractCoeffsToCoeffs ( const boost::shared_ptr< ExpList > &  fromExpList,
const Array< OneD, const NekDouble > &  fromCoeffs,
Array< OneD, NekDouble > &  toCoeffs 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 2110 of file ExpList.cpp.

References m_coeff_offset, m_ncoeffs, m_offset_elmt_id, and Vmath::Vcopy().

Referenced by ExtractCoeffsToCoeffs().

{
int i;
int offset = 0;
// check if the same and if so just copy over coeffs
if(fromExpList->GetNcoeffs() == m_ncoeffs)
{
Vmath::Vcopy(m_ncoeffs,fromCoeffs,1,toCoeffs,1);
}
else
{
std::vector<unsigned int> nummodes;
for(i = 0; i < (*m_exp).size(); ++i)
{
int eid = m_offset_elmt_id[i];
for(int j= 0; j < fromExpList->GetExp(eid)->GetNumBases(); ++j)
{
nummodes.push_back(fromExpList->GetExp(eid)->GetBasisNumModes(j));
}
(*m_exp)[eid]->ExtractDataToCoeffs(&fromCoeffs[offset], nummodes,0,
&toCoeffs[m_coeff_offset[eid]]);
offset += fromExpList->GetExp(eid)->GetNcoeffs();
}
}
}
void Nektar::MultiRegions::ExpList::v_ExtractDataToCoeffs ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
std::string &  field,
Array< OneD, NekDouble > &  coeffs 
)
protectedvirtual

Extract data from raw field data into expansion list.

Parameters
fielddefField definitions.
fielddataData for associated field.
fieldField variable name.
coeffsResulting coefficient array.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 2035 of file ExpList.cpp.

References ASSERTL0, Nektar::LibUtilities::GetNumberOfCoefficients(), m_coeff_offset, m_exp, and Vmath::Vcopy().

Referenced by ExtractDataToCoeffs().

{
int i, expId;
int offset = 0;
int modes_offset = 0;
int datalen = fielddata.size()/fielddef->m_fields.size();
// Find data location according to field definition
for(i = 0; i < fielddef->m_fields.size(); ++i)
{
if(fielddef->m_fields[i] == field)
{
break;
}
offset += datalen;
}
ASSERTL0(i != fielddef->m_fields.size(),
"Field (" + field + ") not found in file.");
// Determine mapping from element ids to location in expansion list
map<int, int> elmtToExpId;
// Loop in reverse order so that in case where using a Homogeneous
// expansion it sets geometry ids to first part of m_exp
// list. Otherwise will set to second (complex) expansion
for(i = (*m_exp).size()-1; i >= 0; --i)
{
elmtToExpId[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
}
for (i = 0; i < fielddef->m_elementIDs.size(); ++i)
{
// Reset modes_offset in the case where all expansions of
// the same order.
if (fielddef->m_uniOrder == true)
{
modes_offset = 0;
}
datalen = LibUtilities::GetNumberOfCoefficients(fielddef->m_shapeType,
fielddef->m_numModes, modes_offset);
const int elmtId = fielddef->m_elementIDs[i];
if (elmtToExpId.count(elmtId) == 0)
{
offset += datalen;
continue;
}
expId = elmtToExpId[elmtId];
if (datalen == (*m_exp)[expId]->GetNcoeffs())
{
Vmath::Vcopy(datalen, &fielddata[offset], 1,
&coeffs[m_coeff_offset[expId]], 1);
}
else
{
(*m_exp)[expId]->ExtractDataToCoeffs(
&fielddata[offset], fielddef->m_numModes,
modes_offset, &coeffs[m_coeff_offset[expId]]);
}
offset += datalen;
modes_offset += (*m_exp)[0]->GetNumBases();
}
return;
}
void Nektar::MultiRegions::ExpList::v_ExtractTracePhys ( Array< OneD, NekDouble > &  outarray)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2247 of file ExpList.cpp.

References ASSERTL0.

Referenced by ExtractTracePhys().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_ExtractTracePhys ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField1D, Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2253 of file ExpList.cpp.

References ASSERTL0.

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_FillBndCondFromField ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D.

Definition at line 2357 of file ExpList.cpp.

References ASSERTL0.

Referenced by FillBndCondFromField().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ContField3D.

Definition at line 2383 of file ExpList.cpp.

References v_FwdTrans_IterPerExp().

Referenced by FwdTrans().

{
v_FwdTrans_IterPerExp(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::v_FwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Given a function $u(\boldsymbol{x})$ defined at the quadrature points, this function determines the transformed elemental coefficients $\hat{u}_n^e$ employing a discrete elemental Galerkin projection from physical space to coefficient space. For each element, the operation is evaluated locally by the function StdRegions::StdExpansion::IproductWRTBase followed by a call to #MultiRegions#MultiplyByElmtInvMass.

Parameters
inarrayAn array of size $Q_{\mathrm{tot}}$ containing the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.
outarrayThe resulting coefficients $\hat{u}_n^e$ will be stored in this array of size $N_{\mathrm{eof}}$.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 521 of file ExpList.cpp.

References IProductWRTBase_IterPerExp(), m_ncoeffs, and MultiplyByElmtInvMass().

Referenced by FwdTrans_IterPerExp(), and v_FwdTrans().

{
Array<OneD,NekDouble> f(m_ncoeffs);
MultiplyByElmtInvMass(f,outarray);
}
void Nektar::MultiRegions::ExpList::v_GeneralMatrixOp ( const GlobalMatrixKey gkey,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2398 of file ExpList.cpp.

References GeneralMatrixOp_IterPerExp().

Referenced by GeneralMatrixOp().

{
GeneralMatrixOp_IterPerExp(gkey,inarray,outarray);
}
void Nektar::MultiRegions::ExpList::v_GetBCValues ( Array< OneD, NekDouble > &  BndVals,
const Array< OneD, NekDouble > &  TotField,
int  BndID 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D.

Definition at line 2332 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetBCValues().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
const Array< OneD, const boost::shared_ptr< ExpList > > & Nektar::MultiRegions::ExpList::v_GetBndCondExpansions ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2141 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetBndCondExpansions().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static Array<OneD,const boost::shared_ptr<ExpList> > result;
return result;
}
const Array< OneD, const SpatialDomains::BoundaryConditionShPtr > & Nektar::MultiRegions::ExpList::v_GetBndConditions ( void  )
privatevirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2492 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetBndConditions().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static Array<OneD, const SpatialDomains::BoundaryConditionShPtr>
result;
return result;
}
void Nektar::MultiRegions::ExpList::v_GetBoundaryToElmtMap ( Array< OneD, int > &  ElmtID,
Array< OneD, int > &  EdgeID 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField1D, Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField3D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 2474 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetBoundaryToElmtMap().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_GetCoords ( Array< OneD, NekDouble > &  coord_0,
Array< OneD, NekDouble > &  coord_1,
Array< OneD, NekDouble > &  coord_2 = NullNekDouble1DArray 
)
protectedvirtual

The operation is evaluated locally by the elemental function StdRegions::StdExpansion::GetCoords.

Parameters
coord_0After calculation, the $x_1$ coordinate will be stored in this array.
coord_1After calculation, the $x_2$ coordinate will be stored in this array.
coord_2After calculation, the $x_3$ coordinate will be stored in this array.

Reimplemented in Nektar::MultiRegions::ExpList3DHomogeneous1D, Nektar::MultiRegions::ExpList2DHomogeneous1D, Nektar::MultiRegions::ExpList3DHomogeneous2D, and Nektar::MultiRegions::ExpList1DHomogeneous2D.

Definition at line 2418 of file ExpList.cpp.

References ASSERTL0, GetCoordim(), GetExp(), and m_phys_offset.

Referenced by GetCoords().

{
int i;
Array<OneD, NekDouble> e_coord_0;
Array<OneD, NekDouble> e_coord_1;
Array<OneD, NekDouble> e_coord_2;
switch(GetExp(0)->GetCoordim())
{
case 1:
for(i= 0; i < (*m_exp).size(); ++i)
{
e_coord_0 = coord_0 + m_phys_offset[i];
(*m_exp)[i]->GetCoords(e_coord_0);
}
break;
case 2:
ASSERTL0(coord_1.num_elements() != 0,
"output coord_1 is not defined");
for(i= 0; i < (*m_exp).size(); ++i)
{
e_coord_0 = coord_0 + m_phys_offset[i];
e_coord_1 = coord_1 + m_phys_offset[i];
(*m_exp)[i]->GetCoords(e_coord_0,e_coord_1);
}
break;
case 3:
ASSERTL0(coord_1.num_elements() != 0,
"output coord_1 is not defined");
ASSERTL0(coord_2.num_elements() != 0,
"output coord_2 is not defined");
for(i= 0; i < (*m_exp).size(); ++i)
{
e_coord_0 = coord_0 + m_phys_offset[i];
e_coord_1 = coord_1 + m_phys_offset[i];
e_coord_2 = coord_2 + m_phys_offset[i];
(*m_exp)[i]->GetCoords(e_coord_0,e_coord_1,e_coord_2);
}
break;
}
}
std::vector< LibUtilities::FieldDefinitionsSharedPtr > Nektar::MultiRegions::ExpList::v_GetFieldDefinitions ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 1971 of file ExpList.cpp.

Referenced by GetFieldDefinitions().

{
std::vector<LibUtilities::FieldDefinitionsSharedPtr> returnval;
return returnval;
}
void Nektar::MultiRegions::ExpList::v_GetFieldDefinitions ( std::vector< LibUtilities::FieldDefinitionsSharedPtr > &  fielddef)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 1978 of file ExpList.cpp.

References GeneralGetFieldDefinitions().

void Nektar::MultiRegions::ExpList::v_GetFwdBwdTracePhys ( Array< OneD, NekDouble > &  Fwd,
Array< OneD, NekDouble > &  Bwd 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField1D, Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2231 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetFwdBwdTracePhys().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_GetFwdBwdTracePhys ( const Array< OneD, const NekDouble > &  field,
Array< OneD, NekDouble > &  Fwd,
Array< OneD, NekDouble > &  Bwd 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField1D, Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2238 of file ExpList.cpp.

References ASSERTL0.

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
virtual LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpList::v_GetHomogeneousBasis ( void  )
inlineprivatevirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1285 of file ExpList.h.

References ASSERTL0, and Nektar::LibUtilities::NullBasisSharedPtr.

Referenced by GetHomogeneousBasis().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
NekDouble Nektar::MultiRegions::ExpList::v_GetHomoLen ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1760 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetHomoLen().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
NekDouble len = 0.0;
return len;
}
void Nektar::MultiRegions::ExpList::v_GetNormals ( Array< OneD, Array< OneD, NekDouble > > &  normals)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList1D, Nektar::MultiRegions::ExpList2DHomogeneous1D, Nektar::MultiRegions::ExpList2D, and Nektar::MultiRegions::ExpList0D.

Definition at line 2198 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetNormals().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
virtual int Nektar::MultiRegions::ExpList::v_GetNumElmts ( void  )
inlineprotectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 999 of file ExpList.h.

Referenced by GetNumElmts().

{
return (*m_exp).size();
}
void Nektar::MultiRegions::ExpList::v_GetPeriodicEntities ( PeriodicMap periodicVerts,
PeriodicMap periodicEdges,
PeriodicMap periodicFaces 
)
privatevirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField3D, and Nektar::MultiRegions::ExpList3DHomogeneous1D.

Definition at line 2535 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetPeriodicEntities().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
ExpListSharedPtr & Nektar::MultiRegions::ExpList::v_GetPlane ( int  n)
privatevirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 2558 of file ExpList.cpp.

References ASSERTL0, and Nektar::MultiRegions::NullExpListSharedPtr.

Referenced by GetPlane().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
map< int, RobinBCInfoSharedPtr > Nektar::MultiRegions::ExpList::v_GetRobinBCInfo ( void  )
privatevirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField3D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3DHomogeneous2D.

Definition at line 2525 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetRobinBCInfo().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static map<int,RobinBCInfoSharedPtr> result;
return result;
}
boost::shared_ptr< ExpList > & Nektar::MultiRegions::ExpList::v_GetTrace ( )
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField3D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField2D.

Definition at line 2177 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetTrace().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static boost::shared_ptr<ExpList> returnVal;
return returnVal;
}
const Array< OneD, const int > & Nektar::MultiRegions::ExpList::v_GetTraceBndMap ( )
protectedvirtual

Definition at line 2193 of file ExpList.cpp.

References GetTraceMap().

Referenced by GetTraceBndMap().

{
return GetTraceMap()->GetBndCondTraceToGlobalTraceMap();
}
boost::shared_ptr< AssemblyMapDG > & Nektar::MultiRegions::ExpList::v_GetTraceMap ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D, Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField3D, and Nektar::MultiRegions::DisContField1D.

Definition at line 2185 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetTraceMap().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static boost::shared_ptr<AssemblyMapDG> result;
return result;
}
LibUtilities::TranspositionSharedPtr Nektar::MultiRegions::ExpList::v_GetTransposition ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1751 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetTransposition().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
return trans;
}
Array< OneD, const unsigned int > Nektar::MultiRegions::ExpList::v_GetYIDs ( void  )
protectedvirtual

Definition at line 1777 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetYIDs().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
Array<OneD, unsigned int> NoModes(1);
return NoModes;
}
Array< OneD, const unsigned int > Nektar::MultiRegions::ExpList::v_GetZIDs ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1768 of file ExpList.cpp.

References ASSERTL0.

Referenced by GetZIDs().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
Array<OneD, unsigned int> NoModes(1);
return NoModes;
}
void Nektar::MultiRegions::ExpList::v_GlobalToLocal ( void  )
protectedvirtual

Definition at line 2369 of file ExpList.cpp.

References ASSERTL0.

Referenced by GlobalToLocal().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::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 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField1D, Nektar::MultiRegions::DisContField2D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2270 of file ExpList.cpp.

References ASSERTL0.

Referenced by HelmSolve().

{
ASSERTL0(false, "HelmSolve not implemented.");
}
void Nektar::MultiRegions::ExpList::v_HomogeneousBwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 2315 of file ExpList.cpp.

References ASSERTL0.

Referenced by HomogeneousBwdTrans().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
Array< OneD, const NekDouble > Nektar::MultiRegions::ExpList::v_HomogeneousEnergy ( void  )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList3DHomogeneous1D.

Definition at line 1743 of file ExpList.cpp.

References ASSERTL0.

Referenced by HomogeneousEnergy().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
Array<OneD, NekDouble> NoEnergy(1,0.0);
return NoEnergy;
}
void Nektar::MultiRegions::ExpList::v_HomogeneousFwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 2305 of file ExpList.cpp.

References ASSERTL0.

Referenced by HomogeneousFwdTrans().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_ImposeDirichletConditions ( Array< OneD, NekDouble > &  outarray)
protectedvirtual

Definition at line 2349 of file ExpList.cpp.

References ASSERTL0.

Referenced by ImposeDirichletConditions().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
NekDouble Nektar::MultiRegions::ExpList::v_Integral ( const Array< OneD, const NekDouble > &  inarray)
protectedvirtual

Definition at line 1729 of file ExpList.cpp.

References m_comm, m_offset_elmt_id, m_phys_offset, and Nektar::LibUtilities::ReduceSum.

Referenced by Integral().

{
NekDouble err = 0.0;
int i = 0;
for (i = 0; i < (*m_exp).size(); ++i)
{
err += (*m_exp)[m_offset_elmt_id[i]]->Integral(inarray + m_phys_offset[i]);
}
m_comm->GetRowComm()->AllReduce(err, LibUtilities::ReduceSum);
return err;
}
void Nektar::MultiRegions::ExpList::v_IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, Nektar::MultiRegions::ExpListHomogeneous2D, and Nektar::MultiRegions::ContField3D.

Definition at line 2390 of file ExpList.cpp.

References v_IProductWRTBase_IterPerExp().

Referenced by IProductWRTBase().

{
v_IProductWRTBase_IterPerExp(inarray,outarray);
}
void Nektar::MultiRegions::ExpList::v_IProductWRTBase_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

The operation is evaluated locally for every element by the function StdRegions::StdExpansion::IProductWRTBase.

Parameters
inarrayAn array of size $Q_{\mathrm{tot}}$ containing the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.
outarrayAn array of size $N_{\mathrm{eof}}$ used to store the result.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 300 of file ExpList.cpp.

References Nektar::StdRegions::eIProductWRTBase, m_coeff_offset, m_globalOptParam, m_offset_elmt_id, m_phys_offset, and MultiplyByBlockMatrix().

Referenced by IProductWRTBase_IterPerExp(), and v_IProductWRTBase().

{
// get optimisation information about performing block
// matrix multiplies
const Array<OneD, const bool> doBlockMatOp
const Array<OneD, LibUtilities::ShapeType> shape = m_globalOptParam->GetShapeList();
const Array<OneD, const int> num_elmts = m_globalOptParam->GetShapeNumElements();
Array<OneD,NekDouble> tmp_outarray;
int cnt = 0,eid;
for(int n = 0; n < shape.num_elements(); ++n)
{
if(doBlockMatOp[n])
{
if(num_elmts[n])
{
GlobalMatrixKey mkey(StdRegions::eIProductWRTBase,
shape[n]);
eid = m_offset_elmt_id[cnt];
MultiplyByBlockMatrix(mkey,inarray + m_phys_offset[eid],
tmp_outarray = outarray + m_coeff_offset[eid]);
cnt += num_elmts[n];
}
}
else
{
int i;
for(i = 0; i < num_elmts[n]; ++i)
{
eid = m_offset_elmt_id[cnt++];
(*m_exp)[eid]->IProductWRTBase(inarray+m_phys_offset[eid],
tmp_outarray = outarray+m_coeff_offset[eid]);
}
}
}
}
NekDouble Nektar::MultiRegions::ExpList::v_L2 ( const Array< OneD, const NekDouble > &  inarray,
const Array< OneD, const NekDouble > &  soln = NullNekDouble1DArray 
)
protectedvirtual

Given a spectral/hp approximation $u^{\delta}(\boldsymbol{x})$ evaluated at the quadrature points (which should be contained in m_phys), this function calculates the $L_2$ error of this approximation with respect to an exact solution. The local distribution of the quadrature points allows an elemental evaluation of this operation through the functions StdRegions::StdExpansion::L2.

The exact solution, also evaluated at the quadrature points, should be contained in the variable m_phys of the ExpList object Sol.

Parameters
SolAn ExpList, containing the discrete evaluation of the exact solution at the quadrature points in its array m_phys.
Returns
The $L_2$ error of the approximation.

Reimplemented in Nektar::MultiRegions::ExpList3DHomogeneous1D, and Nektar::MultiRegions::ExpList3DHomogeneous2D.

Definition at line 1699 of file ExpList.cpp.

References m_comm, m_phys_offset, Nektar::NullNekDouble1DArray, and Nektar::LibUtilities::ReduceSum.

Referenced by L2().

{
NekDouble err = 0.0, errl2;
int i;
if (soln == NullNekDouble1DArray)
{
for (i = 0; i < (*m_exp).size(); ++i)
{
errl2 = (*m_exp)[i]->L2(inarray + m_phys_offset[i]);
err += errl2*errl2;
}
}
else
{
for (i = 0; i < (*m_exp).size(); ++i)
{
errl2 = (*m_exp)[i]->L2(inarray + m_phys_offset[i],
soln + m_phys_offset[i]);
err += errl2*errl2;
}
}
m_comm->GetRowComm()->AllReduce(err, LibUtilities::ReduceSum);
return sqrt(err);
}
void Nektar::MultiRegions::ExpList::v_LinearAdvectionDiffusionReactionSolve ( const Array< OneD, Array< OneD, NekDouble > > &  velocity,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const NekDouble  lambda,
CoeffState  coeffstate = eLocal,
const Array< OneD, const NekDouble > &  dirForcing = NullNekDouble1DArray 
)
protectedvirtual

Definition at line 2281 of file ExpList.cpp.

References ASSERTL0.

Referenced by LinearAdvectionDiffusionReactionSolve().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_LinearAdvectionReactionSolve ( const Array< OneD, Array< OneD, NekDouble > > &  velocity,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
const NekDouble  lambda,
CoeffState  coeffstate = eLocal,
const Array< OneD, const NekDouble > &  dirForcing = NullNekDouble1DArray 
)
protectedvirtual

Definition at line 2293 of file ExpList.cpp.

References ASSERTL0.

Referenced by LinearAdvectionReactionSolve().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_LocalToGlobal ( void  )
protectedvirtual

Definition at line 2363 of file ExpList.cpp.

References ASSERTL0.

Referenced by LocalToGlobal().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_MultiplyByInvMassMatrix ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Definition at line 2261 of file ExpList.cpp.

References ASSERTL0.

Referenced by MultiplyByInvMassMatrix().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_NormVectorIProductWRTBase ( Array< OneD, const NekDouble > &  V1,
Array< OneD, const NekDouble > &  V2,
Array< OneD, NekDouble > &  outarray,
int  BndID 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField3DHomogeneous1D.

Definition at line 2340 of file ExpList.cpp.

References ASSERTL0.

Referenced by NormVectorIProductWRTBase().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_PhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0,
Array< OneD, NekDouble > &  out_d1,
Array< OneD, NekDouble > &  out_d2 
)
protectedvirtual

Given a function $f(\boldsymbol{x})$ evaluated at the quadrature points, this function calculates the derivatives $\frac{d}{dx_1}$, $\frac{d}{dx_2}$ and $\frac{d}{dx_3}$ of the function $f(\boldsymbol{x})$ at the same quadrature points. The local distribution of the quadrature points allows an elemental evaluation of the derivative. This is done by a call to the function StdRegions::StdExpansion::PhysDeriv.

Parameters
inarrayAn array of size $Q_{\mathrm{tot}}$ containing the values of the function $f(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.
out_d0The discrete evaluation of the derivative $\frac{d}{dx_1}$ will be stored in this array of size $Q_{\mathrm{tot}}$.
out_d1The discrete evaluation of the derivative $\frac{d}{dx_2}$ will be stored in this array of size $Q_{\mathrm{tot}}$. Note that if no memory is allocated for out_d1, the derivative $\frac{d}{dx_2}$ will not be calculated.
out_d2The discrete evaluation of the derivative $\frac{d}{dx_3}$ will be stored in this array of size $Q_{\mathrm{tot}}$. Note that if no memory is allocated for out_d2, the derivative $\frac{d}{dx_3}$ will not be calculated.

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 403 of file ExpList.cpp.

References m_phys_offset.

Referenced by PhysDeriv(), and v_PhysDeriv().

{
int i;
Array<OneD, NekDouble> e_out_d0;
Array<OneD, NekDouble> e_out_d1;
Array<OneD, NekDouble> e_out_d2;
for(i= 0; i < (*m_exp).size(); ++i)
{
e_out_d0 = out_d0 + m_phys_offset[i];
if(out_d1.num_elements())
{
e_out_d1 = out_d1 + m_phys_offset[i];
}
if(out_d2.num_elements())
{
e_out_d2 = out_d2 + m_phys_offset[i];
}
(*m_exp)[i]->PhysDeriv(inarray+m_phys_offset[i],e_out_d0,e_out_d1,e_out_d2);
}
}
void Nektar::MultiRegions::ExpList::v_PhysDeriv ( const int  dir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
protectedvirtual

Definition at line 429 of file ExpList.cpp.

References Nektar::MultiRegions::DirCartesianMap, and v_PhysDeriv().

{
v_PhysDeriv(edir, inarray,out_d);
}
void Nektar::MultiRegions::ExpList::v_PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D, and Nektar::MultiRegions::ExpListHomogeneous2D.

Definition at line 437 of file ExpList.cpp.

References Nektar::MultiRegions::eN, Nektar::MultiRegions::eS, and m_phys_offset.

{
int i;
if(edir==MultiRegions::eS)
{
Array<OneD, NekDouble> e_out_ds;
for(i=0; i<(*m_exp).size(); ++i)
{
e_out_ds = out_d + m_phys_offset[i];
(*m_exp)[i]->PhysDeriv_s(inarray+m_phys_offset[i],e_out_ds);
}
}
else if(edir==MultiRegions::eN)
{
Array<OneD, NekDouble > e_out_dn;
for(i=0; i<(*m_exp).size(); i++)
{
e_out_dn = out_d +m_phys_offset[i];
(*m_exp)[i]->PhysDeriv_n(inarray+m_phys_offset[i],e_out_dn);
}
}
else
{
// convert enum into int
int intdir= (int)edir;
Array<OneD, NekDouble> e_out_d;
for(i= 0; i < (*m_exp).size(); ++i)
{
e_out_d = out_d + m_phys_offset[i];
(*m_exp)[i]->PhysDeriv(intdir, inarray+m_phys_offset[i], e_out_d);
}
}
}
void Nektar::MultiRegions::ExpList::v_PhysGalerkinProjection1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1793 of file ExpList.cpp.

References ASSERTL0.

Referenced by PhysGalerkinProjection1DScaled().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_PhysInterp1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1787 of file ExpList.cpp.

References ASSERTL0.

Referenced by PhysInterp1DScaled().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_ReadGlobalOptimizationParameters ( )
protectedvirtual

Definition at line 2483 of file ExpList.cpp.

References ASSERTL0.

Referenced by ReadGlobalOptimizationParameters().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
virtual void Nektar::MultiRegions::ExpList::v_SetHomo1DSpecVanVisc ( Array< OneD, NekDouble visc)
inlineprivatevirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1293 of file ExpList.h.

References ASSERTL0.

Referenced by SetHomo1DSpecVanVisc().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_SetUpPhysNormals ( )
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList3D.

Definition at line 2466 of file ExpList.cpp.

References ASSERTL0.

Referenced by SetUpPhysNormals().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_SmoothField ( Array< OneD, NekDouble > &  field)
protectedvirtual

This function smooth a field after some calculaitons which have been done elementally.

Parameters
fieldAn array containing the field in physical space

Reimplemented in Nektar::MultiRegions::ContField3DHomogeneous1D.

Definition at line 553 of file ExpList.cpp.

References ASSERTL0, Nektar::LibUtilities::eGauss_Lagrange, Nektar::LibUtilities::eGLL_Lagrange, and m_exp.

Referenced by SmoothField().

{
// Do nothing unless the method is implemented in the appropriate
// class, i.e. ContField1D,ContField2D, etc.
// So far it has been implemented just for ContField2D and
// ContField3DHomogeneous1D
// Block in case users try the smoothing with a modal expansion.
// Maybe a different techique for the smoothing require
// implementation for modal basis.
ASSERTL0((*m_exp)[0]->GetBasisType(0)
(*m_exp)[0]->GetBasisType(0)
"Smoothing is currently not allowed unless you are using "
"a nodal base for efficiency reasons. The implemented "
"smoothing technique requires the mass matrix inversion "
"which is trivial just for GLL_LAGRANGE_SEM and "
"GAUSS_LAGRANGE_SEMexpansions.");
}
boost::shared_ptr< ExpList > & Nektar::MultiRegions::ExpList::v_UpdateBndCondExpansion ( int  i)
protectedvirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2149 of file ExpList.cpp.

References ASSERTL0.

Referenced by UpdateBndCondExpansion().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static boost::shared_ptr<ExpList> result;
return result;
}
Array< OneD, SpatialDomains::BoundaryConditionShPtr > & Nektar::MultiRegions::ExpList::v_UpdateBndConditions ( )
privatevirtual

Reimplemented in Nektar::MultiRegions::DisContField2D, Nektar::MultiRegions::DisContField1D, and Nektar::MultiRegions::DisContField3D.

Definition at line 2503 of file ExpList.cpp.

References ASSERTL0.

Referenced by UpdateBndConditions().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
static Array<OneD, SpatialDomains::BoundaryConditionShPtr> result;
return result;
}
void Nektar::MultiRegions::ExpList::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 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList1D.

Definition at line 2157 of file ExpList.cpp.

References ASSERTL0.

Referenced by Upwind().

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_Upwind ( const Array< OneD, const NekDouble > &  Vn,
const Array< OneD, const NekDouble > &  Fwd,
const Array< OneD, const NekDouble > &  Bwd,
Array< OneD, NekDouble > &  Upwind 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList1D, Nektar::MultiRegions::ExpList2D, and Nektar::MultiRegions::ExpList0D.

Definition at line 2167 of file ExpList.cpp.

References ASSERTL0.

{
ASSERTL0(false,
"This method is not defined or valid for this class type");
}
void Nektar::MultiRegions::ExpList::v_WriteTecplotConnectivity ( std::ofstream &  outfile,
int  expansion 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList3DHomogeneous1D.

Definition at line 1487 of file ExpList.cpp.

References ASSERTL0, and m_exp.

Referenced by WriteTecplotConnectivity().

{
int i,j,k,l;
int nbase = (*m_exp)[0]->GetNumBases();
int cnt = 0;
boost::shared_ptr<LocalRegions::ExpansionVector> exp = m_exp;
if (expansion != -1)
{
exp = boost::shared_ptr<LocalRegions::ExpansionVector>(
(*exp)[0] = (*m_exp)[expansion];
}
if (nbase == 2)
{
for(i = 0; i < (*exp).size(); ++i)
{
const int np0 = (*exp)[i]->GetNumPoints(0);
const int np1 = (*exp)[i]->GetNumPoints(1);
for(j = 1; j < np1; ++j)
{
for(k = 1; k < np0; ++k)
{
outfile << cnt + (j-1)*np0 + k << " ";
outfile << cnt + (j-1)*np0 + k+1 << " ";
outfile << cnt + j *np0 + k+1 << " ";
outfile << cnt + j *np0 + k << endl;
}
}
cnt += np0*np1;
}
}
else if (nbase == 3)
{
for(i = 0; i < (*exp).size(); ++i)
{
const int np0 = (*exp)[i]->GetNumPoints(0);
const int np1 = (*exp)[i]->GetNumPoints(1);
const int np2 = (*exp)[i]->GetNumPoints(2);
const int np01 = np0*np1;
for(j = 1; j < np2; ++j)
{
for(k = 1; k < np1; ++k)
{
for(l = 1; l < np0; ++l)
{
outfile << cnt + (j-1)*np01 + (k-1)*np0 + l << " ";
outfile << cnt + (j-1)*np01 + (k-1)*np0 + l+1 << " ";
outfile << cnt + (j-1)*np01 + k *np0 + l+1 << " ";
outfile << cnt + (j-1)*np01 + k *np0 + l << " ";
outfile << cnt + j *np01 + (k-1)*np0 + l << " ";
outfile << cnt + j *np01 + (k-1)*np0 + l+1 << " ";
outfile << cnt + j *np01 + k *np0 + l+1 << " ";
outfile << cnt + j *np01 + k *np0 + l << endl;
}
}
}
cnt += np0*np1*np2;
}
}
else
{
ASSERTL0(false,"Not set up for this dimension");
}
}
void Nektar::MultiRegions::ExpList::v_WriteTecplotField ( std::ofstream &  outfile,
int  expansion 
)
protectedvirtual

Write Tecplot Files Field

Parameters
outfileOutput file name.
expansionExpansion that is considered

Definition at line 1564 of file ExpList.cpp.

References BwdTrans(), GetTotPoints(), m_coeffs, m_phys, m_phys_offset, and m_physState.

Referenced by WriteTecplotField().

{
if (expansion == -1)
{
int totpoints = GetTotPoints();
if(m_physState == false)
{
}
for(int i = 0; i < totpoints; ++i)
{
outfile << m_phys[i] << " ";
if(i % 1000 == 0 && i)
{
outfile << std::endl;
}
}
outfile << std::endl;
}
else
{
int nPoints = (*m_exp)[expansion]->GetTotPoints();
for (int i = 0; i < nPoints; ++i)
{
outfile << m_phys[i + m_phys_offset[expansion]] << " ";
}
outfile << std::endl;
}
}
void Nektar::MultiRegions::ExpList::v_WriteTecplotHeader ( std::ofstream &  outfile,
std::string  var = "" 
)
protectedvirtual

Write Tecplot Files Header

Parameters
outfileOutput file name.
varvariables names

Definition at line 1359 of file ExpList.cpp.

References Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, GetExp(), and m_expType.

Referenced by WriteTecplotHeader().

{
int coordim = GetExp(0)->GetCoordim();
char vars[3] = { 'x', 'y', 'z' };
if (m_expType == e3DH1D)
{
coordim += 1;
}
else if (m_expType == e3DH2D)
{
coordim += 2;
}
outfile << "Variables = x";
for (int i = 1; i < coordim; ++i)
{
outfile << ", " << vars[i];
}
if (var.size() > 0)
{
outfile << ", " << var;
}
outfile << std::endl << std::endl;
}
void Nektar::MultiRegions::ExpList::v_WriteTecplotZone ( std::ofstream &  outfile,
int  expansion 
)
protectedvirtual

Write Tecplot Files Zone

Parameters
outfileOutput file name.
expansionExpansion that is considered

Reimplemented in Nektar::MultiRegions::ExpList2DHomogeneous1D, Nektar::MultiRegions::ExpList3DHomogeneous2D, and Nektar::MultiRegions::ExpList1DHomogeneous2D.

Definition at line 1393 of file ExpList.cpp.

References ASSERTL0, Nektar::MultiRegions::e3DH1D, Nektar::MultiRegions::e3DH2D, GetCoordim(), GetCoords(), GetTotPoints(), GetZIDs(), m_exp, and m_expType.

Referenced by WriteTecplotZone().

{
int i, j;
int coordim = GetCoordim(0);
int nPoints = GetTotPoints();
int nBases = (*m_exp)[0]->GetNumBases();
int numBlocks = 0;
Array<OneD, Array<OneD, NekDouble> > coords(3);
if (expansion == -1)
{
nPoints = GetTotPoints();
coords[0] = Array<OneD, NekDouble>(nPoints);
coords[1] = Array<OneD, NekDouble>(nPoints);
coords[2] = Array<OneD, NekDouble>(nPoints);
GetCoords(coords[0], coords[1], coords[2]);
for (i = 0; i < m_exp->size(); ++i)
{
int numInt = 1;
for (j = 0; j < nBases; ++j)
{
numInt *= (*m_exp)[i]->GetNumPoints(j)-1;
}
numBlocks += numInt;
}
}
else
{
nPoints = (*m_exp)[expansion]->GetTotPoints();
coords[0] = Array<OneD, NekDouble>(nPoints);
coords[1] = Array<OneD, NekDouble>(nPoints);
coords[2] = Array<OneD, NekDouble>(nPoints);
(*m_exp)[expansion]->GetCoords(coords[0], coords[1], coords[2]);
numBlocks = 1;
for (j = 0; j < nBases; ++j)
{
numBlocks *= (*m_exp)[expansion]->GetNumPoints(j)-1;
}
}
if (m_expType == e3DH1D)
{
nBases += 1;
coordim += 1;
int nPlanes = GetZIDs().num_elements();
NekDouble tmp = numBlocks * (nPlanes-1.0) / nPlanes;
numBlocks = (int)tmp;
}
else if (m_expType == e3DH2D)
{
nBases += 2;
coordim += 1;
}
outfile << "Zone, N=" << nPoints << ", E="
<< numBlocks << ", F=FEBlock" ;
switch(nBases)
{
case 2:
outfile << ", ET=QUADRILATERAL" << std::endl;
break;
case 3:
outfile << ", ET=BRICK" << std::endl;
break;
default:
ASSERTL0(false,"Not set up for this type of output");
break;
}
// Write out coordinates
for (j = 0; j < coordim; ++j)
{
for (i = 0; i < nPoints; ++i)
{
outfile << coords[j][i] << " ";
if (i % 1000 == 0 && i)
{
outfile << std::endl;
}
}
outfile << std::endl;
}
}
void Nektar::MultiRegions::ExpList::v_WriteVtkPieceData ( std::ofstream &  outfile,
int  expansion,
std::string  var 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpListHomogeneous1D.

Definition at line 1623 of file ExpList.cpp.

References Nektar::NekConstants::kNekZeroTol, m_phys, and m_phys_offset.

Referenced by WriteVtkPieceData().

{
int i;
int nq = (*m_exp)[expansion]->GetTotPoints();
// printing the fields of that zone
outfile << " <DataArray type=\"Float64\" Name=\""
<< var << "\">" << endl;
outfile << " ";
const Array<OneD, NekDouble> phys = m_phys + m_phys_offset[expansion];
for(i = 0; i < nq; ++i)
{
outfile << (fabs(phys[i]) < NekConstants::kNekZeroTol ? 0 : phys[i]) << " ";
}
outfile << endl;
outfile << " </DataArray>" << endl;
}
void Nektar::MultiRegions::ExpList::v_WriteVtkPieceHeader ( std::ofstream &  outfile,
int  expansion 
)
protectedvirtual

Reimplemented in Nektar::MultiRegions::ExpList2DHomogeneous1D, Nektar::MultiRegions::ExpList3DHomogeneous1D, Nektar::MultiRegions::ExpList3DHomogeneous2D, and Nektar::MultiRegions::ExpList1DHomogeneous2D.

Definition at line 1612 of file ExpList.cpp.

References ASSERTL0.

Referenced by WriteVtkPieceHeader().

{
ASSERTL0(false, "Routine not implemented for this expansion.");
}
void Nektar::MultiRegions::ExpList::WriteTecplotConnectivity ( std::ofstream &  outfile,
int  expansion = -1 
)
inline

Definition at line 372 of file ExpList.h.

References v_WriteTecplotConnectivity().

{
v_WriteTecplotConnectivity(outfile, expansion);
}
void Nektar::MultiRegions::ExpList::WriteTecplotField ( std::ofstream &  outfile,
int  expansion = -1 
)
inline

Definition at line 366 of file ExpList.h.

References v_WriteTecplotField().

{
v_WriteTecplotField(outfile, expansion);
}
void Nektar::MultiRegions::ExpList::WriteTecplotHeader ( std::ofstream &  outfile,
std::string  var = "" 
)
inline

Definition at line 353 of file ExpList.h.

References v_WriteTecplotHeader().

{
v_WriteTecplotHeader(outfile, var);
}
void Nektar::MultiRegions::ExpList::WriteTecplotZone ( std::ofstream &  outfile,
int  expansion = -1 
)
inline

Definition at line 359 of file ExpList.h.

References v_WriteTecplotZone().

{
v_WriteTecplotZone(outfile, expansion);
}
void Nektar::MultiRegions::ExpList::WriteVtkFooter ( std::ofstream &  outfile)

Definition at line 1606 of file ExpList.cpp.

{
outfile << " </UnstructuredGrid>" << endl;
outfile << "</VTKFile>" << endl;
}
void Nektar::MultiRegions::ExpList::WriteVtkHeader ( std::ofstream &  outfile)

Definition at line 1598 of file ExpList.cpp.

{
outfile << "<?xml version=\"1.0\"?>" << endl;
outfile << "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" "
<< "byte_order=\"LittleEndian\">" << endl;
outfile << " <UnstructuredGrid>" << endl;
}
void Nektar::MultiRegions::ExpList::WriteVtkPieceData ( std::ofstream &  outfile,
int  expansion,
std::string  var = "v" 
)
inline

Definition at line 390 of file ExpList.h.

References v_WriteVtkPieceData().

{
v_WriteVtkPieceData(outfile, expansion, var);
}
void Nektar::MultiRegions::ExpList::WriteVtkPieceFooter ( std::ofstream &  outfile,
int  expansion 
)

Definition at line 1617 of file ExpList.cpp.

{
outfile << " </PointData>" << endl;
outfile << " </Piece>" << endl;
}
void Nektar::MultiRegions::ExpList::WriteVtkPieceHeader ( std::ofstream &  outfile,
int  expansion 
)
inline

Definition at line 381 of file ExpList.h.

References v_WriteVtkPieceHeader().

{
v_WriteVtkPieceHeader(outfile, expansion);
}

Member Data Documentation

BlockMatrixMapShPtr Nektar::MultiRegions::ExpList::m_blockMat
protected

Definition at line 946 of file ExpList.h.

Referenced by GetBlockMatrix().

Array<OneD, int> Nektar::MultiRegions::ExpList::m_coeff_offset
protected

Offset of elemental data into the array m_coeffs.

Definition at line 931 of file ExpList.h.

Referenced by Nektar::MultiRegions::DisContField3D::EvaluateHDGPostProcessing(), Nektar::MultiRegions::DisContField2D::EvaluateHDGPostProcessing(), FwdTrans_BndConstrained(), GeneralMatrixOp_IterPerExp(), GenGlobalMatrixFull(), GetCoeff_Offset(), IProductWRTDerivBase(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpListHomogeneous2D::v_AppendFieldData(), Nektar::MultiRegions::ExpListHomogeneous1D::v_AppendFieldData(), v_AppendFieldData(), v_BwdTrans_IterPerExp(), v_ExtractCoeffsToCoeffs(), Nektar::MultiRegions::ExpListHomogeneous2D::v_ExtractDataToCoeffs(), Nektar::MultiRegions::ExpListHomogeneous1D::v_ExtractDataToCoeffs(), v_ExtractDataToCoeffs(), Nektar::MultiRegions::DisContField1D::v_HelmSolve(), and v_IProductWRTBase_IterPerExp().

Array<OneD, NekDouble> Nektar::MultiRegions::ExpList::m_coeffs
protected

Concatenation of all local expansion coefficients.

The array of length m_ncoeffs $=N_{\mathrm{eof}}$ which is the concatenation of the local expansion coefficients $\hat{u}_n^e$ over all $N_{\mathrm{el}}$ elements

\[\mathrm{\texttt{m\_coeffs}}=\boldsymbol{\hat{u}}_{l} = \underline{\boldsymbol{\hat{u}}}^e = \left [ \begin{array}{c} \boldsymbol{\hat{u}}^{1} \ \ \boldsymbol{\hat{u}}^{2} \ \ \vdots \ \ \boldsymbol{\hat{u}}^{{{N_{\mathrm{el}}}}} \end{array} \right ], \quad \mathrm{where}\quad \boldsymbol{\hat{u}}^{e}[n]=\hat{u}_n^{e}\]

Definition at line 890 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField3D::Assemble(), Nektar::MultiRegions::ContField2D::Assemble(), Nektar::MultiRegions::ContField1D::Assemble(), Nektar::MultiRegions::DisContField3D::EvaluateHDGPostProcessing(), Nektar::MultiRegions::DisContField2D::EvaluateHDGPostProcessing(), ExpList(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), GetCoeff(), GetCoeffs(), Nektar::MultiRegions::ContField2D::GlobalToLocal(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), SetCoeff(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), SetCoeffs(), SetCoeffsArray(), UpdateCoeffs(), Nektar::MultiRegions::ExpListHomogeneous2D::v_AppendFieldData(), Nektar::MultiRegions::ExpListHomogeneous1D::v_AppendFieldData(), v_AppendFieldData(), Nektar::MultiRegions::ContField3D::v_FillBndCondFromField(), Nektar::MultiRegions::ContField2D::v_FillBndCondFromField(), Nektar::MultiRegions::ContField3D::v_GlobalToLocal(), Nektar::MultiRegions::ContField1D::v_GlobalToLocal(), Nektar::MultiRegions::ContField2D::v_GlobalToLocal(), Nektar::MultiRegions::ContField3D::v_LocalToGlobal(), Nektar::MultiRegions::ContField1D::v_LocalToGlobal(), Nektar::MultiRegions::ContField2D::v_LocalToGlobal(), and v_WriteTecplotField().

LibUtilities::CommSharedPtr Nektar::MultiRegions::ExpList::m_comm
protected

Communicator.

Definition at line 858 of file ExpList.h.

Referenced by Nektar::MultiRegions::ExpListHomogeneous1D::ExpListHomogeneous1D(), Nektar::MultiRegions::ExpListHomogeneous2D::ExpListHomogeneous2D(), Nektar::MultiRegions::ExpListHomogeneous1D::GenHomogeneous1DBlockMatrix(), GetComm(), H1(), Nektar::MultiRegions::ExpListHomogeneous1D::Homogeneous1DTrans(), Linf(), Nektar::MultiRegions::DisContField3D::SameTypeOfBoundaryConditions(), Nektar::MultiRegions::DisContField2D::SameTypeOfBoundaryConditions(), Nektar::MultiRegions::ExpListHomogeneous1D::v_DealiasedProd(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy(), v_Integral(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_L2(), v_L2(), and Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysDeriv().

boost::shared_ptr<LocalRegions::ExpansionVector> Nektar::MultiRegions::ExpList::m_exp
protected

The list of local expansions.

The (shared pointer to the) vector containing (shared pointers to) all local expansions. The fact that the local expansions are all stored as a (pointer to a) #StdExpansion, the abstract base class for all local expansions, allows a general implementation where most of the routines for the derived classes are defined in the ExpList base class.

Definition at line 928 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::ContField3DHomogeneous2D::ContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::DisContField3DHomogeneous2D(), EvalBasisNumModesMax(), EvalBasisNumModesMaxPerExp(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), GenBlockMatrix(), GeneralGetFieldDefinitions(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), Get1DScaledTotPoints(), GetCoordim(), GetExp(), GetExpIndex(), GetNcoeffs(), GetTotPoints(), Nektar::MultiRegions::DisContField2D::IsLeftAdjacentEdge(), Nektar::MultiRegions::DisContField3D::IsLeftAdjacentFace(), Nektar::MultiRegions::DisContField1D::IsLeftAdjacentVertex(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), Nektar::MultiRegions::DisContField3D::SetUpDG(), Nektar::MultiRegions::DisContField2D::SetUpDG(), Nektar::MultiRegions::DisContField1D::SetUpDG(), Nektar::MultiRegions::ExpListHomogeneous1D::v_ExtractDataToCoeffs(), v_ExtractDataToCoeffs(), Nektar::MultiRegions::ExpList0D::v_GetNormals(), Nektar::MultiRegions::ExpList2D::v_GetNormals(), Nektar::MultiRegions::ExpList1D::v_GetNormals(), Nektar::MultiRegions::ExpList3D::v_PhysGalerkinProjection1DScaled(), Nektar::MultiRegions::ExpList2D::v_PhysGalerkinProjection1DScaled(), Nektar::MultiRegions::ExpList3D::v_PhysInterp1DScaled(), Nektar::MultiRegions::ExpList2D::v_PhysInterp1DScaled(), Nektar::MultiRegions::ExpList3D::v_ReadGlobalOptimizationParameters(), Nektar::MultiRegions::ExpList2D::v_ReadGlobalOptimizationParameters(), Nektar::MultiRegions::ExpList3D::v_SetUpPhysNormals(), Nektar::MultiRegions::ExpList2D::v_SetUpPhysNormals(), Nektar::MultiRegions::ExpList1D::v_SetUpPhysNormals(), v_SmoothField(), Nektar::MultiRegions::ExpList2D::v_Upwind(), Nektar::MultiRegions::ExpList1D::v_Upwind(), v_WriteTecplotConnectivity(), and v_WriteTecplotZone().

ExpansionType Nektar::MultiRegions::ExpList::m_expType

Definition at line 850 of file ExpList.h.

Referenced by GetExpType(), SetExpType(), v_WriteTecplotHeader(), and v_WriteTecplotZone().

NekOptimize::GlobalOptParamSharedPtr Nektar::MultiRegions::ExpList::m_globalOptParam
protected

Definition at line 944 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField2D::BwdTrans(), Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::ContField3DHomogeneous2D::ContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::DisContField3DHomogeneous2D(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList1DHomogeneous2D::ExpList1DHomogeneous2D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3D::ExpList3D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), GeneralMatrixOp_IterPerExp(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), GetGlobalOptParam(), Nektar::MultiRegions::ContField2D::IProductWRTBase(), Nektar::MultiRegions::ContField3D::v_BwdTrans(), v_BwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField2D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField3D::v_IProductWRTBase(), v_IProductWRTBase_IterPerExp(), Nektar::MultiRegions::ExpList3D::v_ReadGlobalOptimizationParameters(), and Nektar::MultiRegions::ExpList2D::v_ReadGlobalOptimizationParameters().

SpatialDomains::MeshGraphSharedPtr Nektar::MultiRegions::ExpList::m_graph
protected

Mesh associated with this expansion list.

Definition at line 864 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField2D::FindPeriodicEdges(), Nektar::MultiRegions::DisContField3D::FindPeriodicFaces(), Nektar::MultiRegions::DisContField1D::FindPeriodicVertices(), GetExpIndex(), GetGraph(), Nektar::MultiRegions::DisContField3D::SetUpDG(), Nektar::MultiRegions::DisContField2D::SetUpDG(), Nektar::MultiRegions::DisContField1D::SetUpDG(), Nektar::MultiRegions::DisContField3D::v_GetBoundaryToElmtMap(), and Nektar::MultiRegions::DisContField2D::v_GetBoundaryToElmtMap().

int Nektar::MultiRegions::ExpList::m_ncoeffs
protected

The total number of local degrees of freedom. m_ncoeffs $=N_{\mathrm{eof}}=\sum_{e=1}^{{N_{\mathrm{el}}}}N^{e}_l$.

Definition at line 868 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField2D::BwdTrans(), Nektar::MultiRegions::ContField1D::ContField1D(), Nektar::MultiRegions::ContField2D::ContField2D(), Nektar::MultiRegions::ContField3D::ContField3D(), ExpList(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), Nektar::MultiRegions::ExpList3D::ExpList3D(), Nektar::MultiRegions::ContField1D::FwdTrans(), GetNcoeffs(), Nektar::MultiRegions::ContField2D::IProductWRTBase(), Nektar::MultiRegions::ContField1D::IProductWRTBase(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), Nektar::MultiRegions::ContField2D::LaplaceSolve(), MultiplyByElmtInvMass(), Nektar::MultiRegions::ContField1D::MultiplyByInvMassMatrix(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ContField3D::v_BwdTrans(), Nektar::MultiRegions::ExpListHomogeneous1D::v_ExtractCoeffsToCoeffs(), v_ExtractCoeffsToCoeffs(), v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField1D::v_GeneralMatrixOp(), Nektar::MultiRegions::ContField2D::v_GeneralMatrixOp(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), Nektar::MultiRegions::DisContField1D::v_HelmSolve(), and Nektar::MultiRegions::ContField3D::v_IProductWRTBase().

int Nektar::MultiRegions::ExpList::m_npoints
protected

The total number of quadrature points. m_npoints $=Q_{\mathrm{tot}}=\sum_{e=1}^{{N_{\mathrm{el}}}}N^{e}_Q$

Definition at line 873 of file ExpList.h.

Referenced by ExpList(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), Nektar::MultiRegions::ExpList3D::ExpList3D(), GenGlobalMatrix(), GetNpoints(), GetTotPoints(), Nektar::MultiRegions::ExpListHomogeneous1D::Homogeneous1DTrans(), Nektar::MultiRegions::ExpListHomogeneous2D::Homogeneous2DTrans(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), Nektar::MultiRegions::ContField2D::LinearAdvectionEigs(), Linf(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), and SetPhys().

Array<OneD, int> Nektar::MultiRegions::ExpList::m_offset_elmt_id
protected

Array containing the element id m_offset_elmt_id[n] that the n^th consecutive block of data in m_coeffs and m_phys is associated, i.e. for an array of constant expansion size and single shape elements m_phys[n*m_npoints] is the data related to m_exp[m_offset_elmt_id[n]];.

Definition at line 942 of file ExpList.h.

Referenced by Nektar::MultiRegions::DisContField3D::EvaluateHDGPostProcessing(), Nektar::MultiRegions::DisContField2D::EvaluateHDGPostProcessing(), GenBlockMatrix(), GeneralMatrixOp_IterPerExp(), GenGlobalMatrix(), GenGlobalMatrixFull(), GetOffset_Elmt_Id(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), v_BwdTrans_IterPerExp(), v_ExtractCoeffsToCoeffs(), Nektar::MultiRegions::DisContField3D::v_HelmSolve(), Nektar::MultiRegions::DisContField2D::v_HelmSolve(), v_Integral(), and v_IProductWRTBase_IterPerExp().

Array<OneD, NekDouble> Nektar::MultiRegions::ExpList::m_phys
protected

The global expansion evaluated at the quadrature points.

The array of length m_npoints $=Q_{\mathrm{tot}}$ containing the evaluation of $u^{\delta}(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$.

\[\mathrm{\texttt{m\_phys}}=\boldsymbol{u}_{l} = \underline{\boldsymbol{u}}^e = \left [ \begin{array}{c} \boldsymbol{u}^{1} \ \ \boldsymbol{u}^{2} \ \ \vdots \ \ \boldsymbol{u}^{{{N_{\mathrm{el}}}}} \end{array} \right ],\quad \mathrm{where}\quad \boldsymbol{u}^{e}[i]=u^{\delta}(\boldsymbol{x}_i)\]

Definition at line 907 of file ExpList.h.

Referenced by ExpList(), Nektar::MultiRegions::ExpList0D::ExpList0D(), Nektar::MultiRegions::ExpList1D::ExpList1D(), Nektar::MultiRegions::ExpList2D::ExpList2D(), GetPhys(), Nektar::MultiRegions::DisContField2D::L2_DGDeriv(), PhysIntegral(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), SetPhys(), SetPhysArray(), UpdatePhys(), Nektar::MultiRegions::DisContField3D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField1D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField2D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField3D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField2D::v_GetFwdBwdTracePhys(), Nektar::MultiRegions::DisContField1D::v_GetFwdBwdTracePhys(), v_WriteTecplotField(), Nektar::MultiRegions::ExpListHomogeneous1D::v_WriteVtkPieceData(), and v_WriteVtkPieceData().

Array<OneD, int> Nektar::MultiRegions::ExpList::m_phys_offset
protected

Offset of elemental data into the array m_phys.

Definition at line 934 of file ExpList.h.

Referenced by FwdTrans_BndConstrained(), GenBlockMatrix(), GeneralMatrixOp_IterPerExp(), GenGlobalMatrix(), GenGlobalMatrixFull(), GetPhys_Offset(), H1(), IProductWRTDerivBase(), PhysIntegral(), Nektar::MultiRegions::ExpList3D::SetCoeffPhys(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList0D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList2D::SetCoeffPhysOffsets(), Nektar::MultiRegions::ExpList1D::SetCoeffPhysOffsets(), v_BwdTrans_IterPerExp(), v_GetCoords(), Nektar::MultiRegions::ExpList0D::v_GetNormals(), Nektar::MultiRegions::ExpList2D::v_GetNormals(), Nektar::MultiRegions::ExpList1D::v_GetNormals(), v_Integral(), v_IProductWRTBase_IterPerExp(), v_L2(), v_PhysDeriv(), Nektar::MultiRegions::ExpList2D::v_Upwind(), Nektar::MultiRegions::ExpList1D::v_Upwind(), v_WriteTecplotField(), Nektar::MultiRegions::ExpListHomogeneous1D::v_WriteVtkPieceData(), and v_WriteVtkPieceData().

bool Nektar::MultiRegions::ExpList::m_physState
protected

The state of the array m_phys.

Indicates whether the array m_phys, created to contain the evaluation of $u^{\delta}(\boldsymbol{x})$ at the quadrature points $\boldsymbol{x}_i$, is filled with these values.

Definition at line 916 of file ExpList.h.

Referenced by Nektar::MultiRegions::ExpList2D::ExpList2D(), GetPhysState(), PhysIntegral(), SetPhys(), SetPhysState(), UpdatePhys(), Nektar::MultiRegions::DisContField3D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField1D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField2D::v_ExtractTracePhys(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_ExtractTracePhys(), and v_WriteTecplotField().

LibUtilities::SessionReaderSharedPtr Nektar::MultiRegions::ExpList::m_session
protected

Session.

Definition at line 861 of file ExpList.h.

Referenced by Nektar::MultiRegions::ContField1D::ContField1D(), Nektar::MultiRegions::ContField2D::ContField2D(), Nektar::MultiRegions::ContField3D::ContField3D(), Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField1D::DisContField1D(), Nektar::MultiRegions::DisContField2D::DisContField2D(), Nektar::MultiRegions::DisContField3D::DisContField3D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), ExtractFileBCs(), Nektar::MultiRegions::DisContField2D::FindPeriodicEdges(), Nektar::MultiRegions::DisContField3D::FindPeriodicFaces(), Nektar::MultiRegions::DisContField1D::FindPeriodicVertices(), Nektar::MultiRegions::DisContField3D::GenerateBoundaryConditionExpansion(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), GenGlobalMatrix(), Nektar::MultiRegions::DisContField1D::GetDomainBCs(), GetSession(), Nektar::MultiRegions::DisContField3DHomogeneous2D::SetupBoundaryConditions(), Nektar::MultiRegions::DisContField3DHomogeneous1D::SetupBoundaryConditions(), Nektar::MultiRegions::DisContField3D::SetUpDG(), Nektar::MultiRegions::DisContField2D::SetUpDG(), Nektar::MultiRegions::DisContField1D::SetUpDG(), Nektar::MultiRegions::ExpList3D::v_ReadGlobalOptimizationParameters(), and Nektar::MultiRegions::ExpList2D::v_ReadGlobalOptimizationParameters().

bool Nektar::MultiRegions::ExpList::m_WaveSpace
protected

Definition at line 951 of file ExpList.h.

Referenced by GetWaveSpace(), SetWaveSpace(), Nektar::MultiRegions::ExpListHomogeneous2D::v_BwdTrans(), Nektar::MultiRegions::ExpListHomogeneous1D::v_BwdTrans(), Nektar::MultiRegions::ExpListHomogeneous2D::v_BwdTrans_IterPerExp(), Nektar::MultiRegions::ExpListHomogeneous1D::v_BwdTrans_IterPerExp(), Nektar::MultiRegions::ExpListHomogeneous2D::v_DealiasedProd(), Nektar::MultiRegions::ExpListHomogeneous2D::v_FwdTrans(), Nektar::MultiRegions::ExpListHomogeneous1D::v_FwdTrans(), Nektar::MultiRegions::ExpListHomogeneous2D::v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ExpListHomogeneous1D::v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_HelmSolve(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous2D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_HelmSolve(), Nektar::MultiRegions::ExpListHomogeneous2D::v_PhysDeriv(), and Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysDeriv().