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

Abstraction of a two-dimensional multi-elemental expansion which is merely a collection of local expansions. More...

#include <ExpListHomogeneous2D.h>

Inheritance diagram for Nektar::MultiRegions::ExpListHomogeneous2D:
Inheritance graph
[legend]
Collaboration diagram for Nektar::MultiRegions::ExpListHomogeneous2D:
Collaboration graph
[legend]

Public Member Functions

 ExpListHomogeneous2D ()
 Default constructor. More...
 
 ExpListHomogeneous2D (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::BasisKey &HomoBasis_y, const LibUtilities::BasisKey &HomoBasis_z, const NekDouble ly, const NekDouble lz, const bool useFFT, const bool dealiasing)
 
 ExpListHomogeneous2D (const ExpListHomogeneous2D &In)
 Copy constructor. More...
 
 ExpListHomogeneous2D (const ExpListHomogeneous2D &In, const std::vector< unsigned int > &eIDs)
 
virtual ~ExpListHomogeneous2D ()
 Destructor. More...
 
void Homogeneous2DTrans (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool IsForwards, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
 
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 SetPaddingBase (void)
 
void PhysDeriv (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d0, Array< OneD, NekDouble > &out_d1, Array< OneD, NekDouble > &out_d2)
 
void PhysDeriv (Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
 
- Public Member Functions inherited from Nektar::MultiRegions::ExpList
 ExpList ()
 The default constructor. More...
 
 ExpList (const LibUtilities::SessionReaderSharedPtr &pSession)
 The default constructor. More...
 
 ExpList (const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
 The default constructor. More...
 
 ExpList (const ExpList &in, const std::vector< unsigned int > &eIDs, const bool DeclareCoeffPhysArrays=true)
 Constructor copying only elements defined in eIds. More...
 
 ExpList (const ExpList &in, const bool DeclareCoeffPhysArrays=true)
 The copy constructor. More...
 
virtual ~ExpList ()
 The default destructor. More...
 
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$. More...
 
int GetNcoeffs (const int eid) const
 Returns the total number of local degrees of freedom for element eid. More...
 
ExpansionType GetExpType (void)
 Returns the type of the expansion. More...
 
void SetExpType (ExpansionType Type)
 Returns the type of the expansion. More...
 
int EvalBasisNumModesMax (void) const
 Evaulates the maximum number of modes in the elemental basis order over all elements. More...
 
const Array< OneD, int > EvalBasisNumModesMaxPerExp (void) const
 Returns the vector of the number of modes in the elemental basis order over all elements. More...
 
int GetTotPoints (void) const
 Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$. More...
 
int GetTotPoints (const int eid) const
 Returns the total number of quadrature points for eid's element $=Q_{\mathrm{tot}}$. More...
 
int GetNpoints (void) const
 Returns the total number of quadrature points m_npoints $=Q_{\mathrm{tot}}$. More...
 
int Get1DScaledTotPoints (const NekDouble scale) const
 Returns the total number of qudature points scaled by the factor scale on each 1D direction. More...
 
void SetWaveSpace (const bool wavespace)
 Sets the wave space to the one of the possible configuration true or false. More...
 
void SetModifiedBasis (const bool modbasis)
 Set Modified Basis for the stability analysis. More...
 
void SetPhys (int i, NekDouble val)
 Set the i th value of m_phys to value val. More...
 
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. More...
 
void SetPhys (const Array< OneD, const NekDouble > &inarray)
 Fills the array m_phys. More...
 
void SetPhysArray (Array< OneD, NekDouble > &inarray)
 Sets the array m_phys. More...
 
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. More...
 
bool GetPhysState (void) const
 This function indicates whether the array of physical values $\boldsymbol{u}_l$ (implemented as m_phys) is filled or not. More...
 
NekDouble PhysIntegral (void)
 This function integrates a function $f(\boldsymbol{x})$ over the domain consisting of all the elements of the expansion. More...
 
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. More...
 
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})$. More...
 
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. More...
 
void IProductWRTDerivBase (const Array< OneD, const Array< OneD, 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. More...
 
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. More...
 
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. More...
 
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. More...
 
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, const bool PhysSpaceForcing=true)
 Solve helmholtz problem. More...
 
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. More...
 
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. More...
 
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. More...
 
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$. More...
 
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 DealiasedDotProd (const Array< OneD, Array< OneD, NekDouble > > &inarray1, const Array< OneD, Array< OneD, NekDouble > > &inarray2, Array< OneD, 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 NormVectorIProductWRTBase (Array< OneD, Array< OneD, NekDouble > > &V, Array< OneD, NekDouble > &outarray)
 
void ApplyGeomInfo ()
 Apply geometry information to each expansion. More...
 
void Reset ()
 Reset geometry information and reset matrices. More...
 
void WriteTecplotHeader (std::ostream &outfile, std::string var="")
 
void WriteTecplotZone (std::ostream &outfile, int expansion=-1)
 
void WriteTecplotField (std::ostream &outfile, int expansion=-1)
 
void WriteTecplotConnectivity (std::ostream &outfile, int expansion=-1)
 
void WriteVtkHeader (std::ostream &outfile)
 
void WriteVtkFooter (std::ostream &outfile)
 
void WriteVtkPieceHeader (std::ostream &outfile, int expansion, int istrip=0)
 
void WriteVtkPieceFooter (std::ostream &outfile, int expansion)
 
void WriteVtkPieceData (std::ostream &outfile, int expansion, std::string var="v")
 
int GetCoordim (int eid)
 This function returns the dimension of the coordinates of the element eid. More...
 
void SetCoeff (int i, NekDouble val)
 Set the i th coefficiient in m_coeffs to value val. More...
 
void SetCoeffs (int i, NekDouble val)
 Set the i th coefficiient in m_coeffs to value val. More...
 
void SetCoeffsArray (Array< OneD, NekDouble > &inarray)
 Set the m_coeffs array to inarray. More...
 
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. More...
 
void ImposeDirichletConditions (Array< OneD, NekDouble > &outarray)
 Impose Dirichlet Boundary Conditions onto Array. More...
 
void FillBndCondFromField (void)
 Fill Bnd Condition expansion from the values stored in expansion. More...
 
void FillBndCondFromField (const int nreg)
 Fill Bnd Condition expansion in nreg from the values stored in expansion. More...
 
void LocalToGlobal (bool useComm=true)
 Gathers the global coefficients $\boldsymbol{\hat{u}}_g$ from the local coefficients $\boldsymbol{\hat{u}}_l$. More...
 
void LocalToGlobal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool useComm=true)
 
void GlobalToLocal (void)
 Scatters from the global coefficients $\boldsymbol{\hat{u}}_g$ to the local coefficients $\boldsymbol{\hat{u}}_l$. More...
 
void GlobalToLocal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
NekDouble GetCoeff (int i)
 Get the i th value (coefficient) of m_coeffs. More...
 
NekDouble GetCoeffs (int i)
 Get the i th value (coefficient) of m_coeffs. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void SetHomo1DSpecVanVisc (Array< OneD, NekDouble > visc)
 This function sets the Spectral Vanishing Viscosity in homogeneous1D expansion. More...
 
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. More...
 
LibUtilities::TranspositionSharedPtr GetTransposition (void)
 This function returns the transposition class associaed with the homogeneous expansion. More...
 
NekDouble GetHomoLen (void)
 This function returns the Width of homogeneous direction associaed with the homogeneous expansion. More...
 
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. More...
 
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. More...
 
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. More...
 
int GetExpSize (void)
 This function returns the number of elements in the expansion. More...
 
int GetNumElmts (void)
 This function returns the number of elements in the expansion which may be different for a homogeoenous extended expansionp. More...
 
const boost::shared_ptr
< LocalRegions::ExpansionVector
GetExp () const
 This function returns the vector of elements in the expansion. More...
 
LocalRegions::ExpansionSharedPtrGetExp (int n) const
 This function returns (a shared pointer to) the local elemental expansion of the $n^{\mathrm{th}}$ element. More...
 
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. More...
 
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. More...
 
int GetPhys_Offset (int n) const
 Get the start offset position for a global list of m_phys correspoinding to element n. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void PhysDeriv (const int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
 
void CurlCurl (Array< OneD, Array< OneD, NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q)
 
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)
 
const std::vector< bool > & GetLeftAdjacentFaces (void) const
 
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. More...
 
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 GetBndElmtExpansion (int i, boost::shared_ptr< ExpList > &result, const bool DeclareCoeffPhysArrays=true)
 
void ExtractElmtToBndPhys (int i, Array< OneD, NekDouble > &elmt, Array< OneD, NekDouble > &boundary)
 
void ExtractPhysToBndElmt (int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bndElmt)
 
void ExtractPhysToBnd (int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bnd)
 
void GetBoundaryNormals (int i, Array< OneD, Array< OneD, NekDouble > > &normals)
 
void GeneralGetFieldDefinitions (std::vector< LibUtilities::FieldDefinitionsSharedPtr > &fielddef, int NumHomoDir=0, Array< OneD, LibUtilities::BasisSharedPtr > &HomoBasis=LibUtilities::NullBasisSharedPtr1DArray, std::vector< NekDouble > &HomoLen=LibUtilities::NullNekDoubleVector, bool homoStrips=false, std::vector< unsigned int > &HomoSIDs=LibUtilities::NullUnsignedIntVector, std::vector< unsigned int > &HomoZIDs=LibUtilities::NullUnsignedIntVector, std::vector< unsigned int > &HomoYIDs=LibUtilities::NullUnsignedIntVector)
 
const
NekOptimize::GlobalOptParamSharedPtr
GetGlobalOptParam (void)
 
std::map< int,
RobinBCInfoSharedPtr
GetRobinBCInfo ()
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void ExtractDataToCoeffs (LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata, std::string &field, Array< OneD, NekDouble > &coeffs)
 Extract the data in fielddata into the coeffs. More...
 
boost::shared_ptr< ExpListGetSharedThisPtr ()
 Returns a shared pointer to the current object. More...
 
boost::shared_ptr
< LibUtilities::SessionReader
GetSession () const
 Returns the session object. More...
 
boost::shared_ptr
< LibUtilities::Comm
GetComm ()
 Returns the comm object. More...
 
SpatialDomains::MeshGraphSharedPtr GetGraph ()
 
LibUtilities::BasisSharedPtr GetHomogeneousBasis (void)
 
boost::shared_ptr< ExpList > & GetPlane (int n)
 
void CreateCollections (Collections::ImplementationType ImpType=Collections::eNoImpType)
 Construct collections of elements containing a single element type and polynomial order from the list of expansions. More...
 
void ClearGlobalLinSysManager (void)
 

Public Attributes

bool m_useFFT
 FFT variables. More...
 
LibUtilities::NektarFFTSharedPtr m_FFT_y
 
LibUtilities::NektarFFTSharedPtr m_FFT_z
 
Array< OneD, NekDoublem_tmpIN
 
Array< OneD, NekDoublem_tmpOUT
 
LibUtilities::TranspositionSharedPtr m_transposition
 
LibUtilities::CommSharedPtr m_Ycomm
 
LibUtilities::CommSharedPtr m_Zcomm
 
- Public Attributes inherited from Nektar::MultiRegions::ExpList
ExpansionType m_expType
 

Protected Member Functions

DNekBlkMatSharedPtr GenHomogeneous2DBlockMatrix (Homogeneous2DMatType mattype, CoeffState coeffstate=eLocal) const
 
DNekBlkMatSharedPtr GetHomogeneous2DBlockMatrix (Homogeneous2DMatType mattype, CoeffState coeffstate=eLocal) const
 
virtual int v_GetNumElmts (void)
 
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_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_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 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. More...
 
virtual void v_WriteVtkPieceData (std::ostream &outfile, int expansion, std::string var)
 
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_DealiasedDotProd (const Array< OneD, Array< OneD, NekDouble > > &inarray1, const Array< OneD, Array< OneD, NekDouble > > &inarray2, Array< OneD, Array< OneD, NekDouble > > &outarray, CoeffState coeffstate=eLocal)
 
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 (Direction edir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
 
- Protected Member Functions inherited from Nektar::MultiRegions::ExpList
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void ReadGlobalOptimizationParameters ()
 
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 const std::vector< bool > & v_GetLeftAdjacentFaces (void) const
 
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, const bool PhysSpaceForcing)
 
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_FillBndCondFromField (const int nreg)
 
virtual void v_Reset ()
 Reset geometry information, metrics, matrix managers and geometry information. More...
 
virtual void v_LocalToGlobal (bool UseComm)
 
virtual void v_LocalToGlobal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseComm)
 
virtual void v_GlobalToLocal (void)
 
virtual void v_GlobalToLocal (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
 
virtual void v_SmoothField (Array< OneD, NekDouble > &field)
 
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 int dir, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out_d)
 
virtual void v_CurlCurl (Array< OneD, Array< OneD, NekDouble > > &Vel, Array< OneD, Array< OneD, NekDouble > > &Q)
 
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_NormVectorIProductWRTBase (Array< OneD, Array< OneD, NekDouble > > &V, Array< OneD, NekDouble > &outarray)
 
virtual void v_SetUpPhysNormals ()
 
virtual void v_GetBoundaryToElmtMap (Array< OneD, int > &ElmtID, Array< OneD, int > &EdgeID)
 
virtual void v_GetBndElmtExpansion (int i, boost::shared_ptr< ExpList > &result, const bool DeclareCoeffPhysArrays)
 
virtual void v_ExtractElmtToBndPhys (int i, Array< OneD, NekDouble > &elmt, Array< OneD, NekDouble > &boundary)
 
virtual void v_ExtractPhysToBndElmt (int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bndElmt)
 
virtual void v_ExtractPhysToBnd (int i, const Array< OneD, const NekDouble > &phys, Array< OneD, NekDouble > &bnd)
 
virtual void v_GetBoundaryNormals (int i, Array< OneD, Array< OneD, NekDouble > > &normals)
 
virtual void v_ReadGlobalOptimizationParameters ()
 
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::ostream &outfile, std::string var="")
 
virtual void v_WriteTecplotZone (std::ostream &outfile, int expansion)
 
virtual void v_WriteTecplotField (std::ostream &outfile, int expansion)
 
virtual void v_WriteTecplotConnectivity (std::ostream &outfile, int expansion)
 
virtual void v_WriteVtkPieceHeader (std::ostream &outfile, int expansion, int istrip)
 
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)
 
virtual void v_ClearGlobalLinSysManager (void)
 
void ExtractFileBCs (const std::string &fileName, LibUtilities::CommSharedPtr comm, const std::string &varName, const boost::shared_ptr< ExpList > locExpList)
 

Protected Attributes

LibUtilities::BasisSharedPtr m_homogeneousBasis_y
 Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m_coeff and m_phys. More...
 
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
 Base expansion in z direction. More...
 
LibUtilities::BasisSharedPtr m_paddingBasis_y
 Base expansion in y direction. More...
 
LibUtilities::BasisSharedPtr m_paddingBasis_z
 Base expansion in z direction. More...
 
NekDouble m_lhom_y
 Width of homogeneous direction y. More...
 
NekDouble m_lhom_z
 Width of homogeneous direction z. More...
 
Homo2DBlockMatrixMapShPtr m_homogeneous2DBlockMat
 
Array< OneD, ExpListSharedPtrm_lines
 Vector of ExpList, will be filled with ExpList1D. More...
 
int m_ny
 Number of modes = number of poitns in y direction. More...
 
int m_nz
 Number of modes = number of poitns in z direction. More...
 
- Protected Attributes inherited from Nektar::MultiRegions::ExpList
LibUtilities::CommSharedPtr m_comm
 Communicator. More...
 
LibUtilities::SessionReaderSharedPtr m_session
 Session. More...
 
SpatialDomains::MeshGraphSharedPtr m_graph
 Mesh associated with this expansion list. More...
 
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$. More...
 
int m_npoints
 
Array< OneD, NekDoublem_coeffs
 Concatenation of all local expansion coefficients. More...
 
Array< OneD, NekDoublem_phys
 The global expansion evaluated at the quadrature points. More...
 
bool m_physState
 The state of the array m_phys. More...
 
boost::shared_ptr
< LocalRegions::ExpansionVector
m_exp
 The list of local expansions. More...
 
Collections::CollectionVector m_collections
 
std::vector< int > m_coll_coeff_offset
 Offset of elemental data into the array m_coeffs. More...
 
std::vector< int > m_coll_phys_offset
 Offset of elemental data into the array m_phys. More...
 
Array< OneD, int > m_coeff_offset
 Offset of elemental data into the array m_coeffs. More...
 
Array< OneD, int > m_phys_offset
 Offset of elemental data into the array m_phys. More...
 
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]];. More...
 
NekOptimize::GlobalOptParamSharedPtr m_globalOptParam
 
BlockMatrixMapShPtr m_blockMat
 
bool m_WaveSpace
 
boost::unordered_map< int, int > m_elmtToExpId
 Mapping from geometry ID of element to index inside m_exp. More...
 

Private Attributes

bool m_dealiasing
 
int m_padsize_y
 
int m_padsize_z
 
DNekMatSharedPtr MatFwdPAD
 
DNekMatSharedPtr MatBwdPAD
 

Additional Inherited Members

- Static Protected Member Functions inherited from Nektar::MultiRegions::ExpList
static
SpatialDomains::BoundaryConditionShPtr 
GetBoundaryCondition (const SpatialDomains::BoundaryConditionCollection &collection, unsigned int index, const std::string &variable)
 

Detailed Description

Abstraction of a two-dimensional multi-elemental expansion which is merely a collection of local expansions.

Definition at line 81 of file ExpListHomogeneous2D.h.

Constructor & Destructor Documentation

Nektar::MultiRegions::ExpListHomogeneous2D::ExpListHomogeneous2D ( )

Default constructor.

Definition at line 49 of file ExpListHomogeneous2D.cpp.

49  :
50  ExpList(),
53  m_lhom_y(1),
54  m_lhom_z(1),
55  m_homogeneous2DBlockMat(MemoryManager<Homo2DBlockMatrixMap>::AllocateSharedPtr())
56  {
57  }
ExpList()
The default constructor.
Definition: ExpList.cpp:95
static BasisSharedPtr NullBasisSharedPtr
Definition: Basis.h:358
NekDouble m_lhom_z
Width of homogeneous direction z.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Nektar::MultiRegions::ExpListHomogeneous2D::ExpListHomogeneous2D ( const LibUtilities::SessionReaderSharedPtr pSession,
const LibUtilities::BasisKey HomoBasis_y,
const LibUtilities::BasisKey HomoBasis_z,
const NekDouble  ly,
const NekDouble  lz,
const bool  useFFT,
const bool  dealiasing 
)

Definition at line 59 of file ExpListHomogeneous2D.cpp.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, ASSERTL2, Nektar::LibUtilities::BasisManager(), Nektar::LibUtilities::NekFactory< tKey, tBase, >::CreateInstance(), Nektar::LibUtilities::GetNektarFFTFactory(), Nektar::MultiRegions::ExpList::m_comm, m_dealiasing, m_FFT_y, m_FFT_z, m_homogeneousBasis_y, m_homogeneousBasis_z, m_lines, m_ny, m_nz, m_transposition, m_useFFT, m_Ycomm, m_Zcomm, Nektar::LibUtilities::NullBasisKey(), and SetPaddingBase().

65  :
66  ExpList(pSession),
67  m_useFFT(useFFT),
68  m_lhom_y(lhom_y),
69  m_lhom_z(lhom_z),
70  m_homogeneous2DBlockMat(MemoryManager<Homo2DBlockMatrixMap>::AllocateSharedPtr()),
71  m_dealiasing(dealiasing)
72  {
73  ASSERTL2(HomoBasis_y != LibUtilities::NullBasisKey,
74  "Homogeneous Basis in y direction is a null basis");
75  ASSERTL2(HomoBasis_z != LibUtilities::NullBasisKey,
76  "Homogeneous Basis in z direction is a null basis");
77 
80 
82 
83  m_Ycomm = m_comm->GetColumnComm()->GetRowComm();
84  m_Zcomm = m_comm->GetColumnComm()->GetRowComm();
85 
86  m_ny = m_homogeneousBasis_y->GetNumPoints()/m_Ycomm->GetSize();
87  m_nz = m_homogeneousBasis_z->GetNumPoints()/m_Zcomm->GetSize();
88 
89  m_lines = Array<OneD,ExpListSharedPtr>(m_ny*m_nz);
90 
91  if(m_useFFT)
92  {
95  }
96 
97  if(m_dealiasing)
98  {
99  ASSERTL0(m_comm->GetColumnComm()->GetSize() == 1,"Remove dealiasing if you want to run in parallel");
100  SetPaddingBase();
101  }
102  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:198
LibUtilities::TranspositionSharedPtr m_transposition
ExpList()
The default constructor.
Definition: ExpList.cpp:95
tBaseSharedPtr CreateInstance(tKey idKey BOOST_PP_COMMA_IF(MAX_PARAM) BOOST_PP_ENUM_BINARY_PARAMS(MAX_PARAM, tParam, x))
Create an instance of the class referred to by idKey.
Definition: NekFactory.hpp:162
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
LibUtilities::NektarFFTSharedPtr m_FFT_z
NekDouble m_lhom_z
Width of homogeneous direction z.
NektarFFTFactory & GetNektarFFTFactory()
Definition: NektarFFT.cpp:69
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
BasisManagerT & BasisManager(void)
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
int m_ny
Number of modes = number of poitns in y direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int m_nz
Number of modes = number of poitns in z direction.
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:966
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
Definition: ErrorUtil.hpp:250
static const BasisKey NullBasisKey(eNoBasisType, 0, NullPointsKey)
Defines a null basis with no type or points.
LibUtilities::NektarFFTSharedPtr m_FFT_y
Nektar::MultiRegions::ExpListHomogeneous2D::ExpListHomogeneous2D ( const ExpListHomogeneous2D In)

Copy constructor.

Parameters
InExpListHomogeneous2D object to copy.

Definition at line 108 of file ExpListHomogeneous2D.cpp.

References m_lines.

108  :
109  ExpList(In,false),
110  m_useFFT(In.m_useFFT),
111  m_FFT_y(In.m_FFT_y),
112  m_FFT_z(In.m_FFT_z),
113  m_transposition(In.m_transposition),
114  m_Ycomm(In.m_Ycomm),
115  m_Zcomm(In.m_Ycomm),
116  m_homogeneousBasis_y(In.m_homogeneousBasis_y),
117  m_homogeneousBasis_z(In.m_homogeneousBasis_z),
118  m_lhom_y(In.m_lhom_y),
119  m_lhom_z(In.m_lhom_z),
120  m_homogeneous2DBlockMat(In.m_homogeneous2DBlockMat),
121  m_ny(In.m_ny),
122  m_nz(In.m_nz),
123  m_dealiasing(In.m_dealiasing),
124  m_padsize_y(In.m_padsize_y),
125  m_padsize_z(In.m_padsize_z),
126  MatFwdPAD(In.MatFwdPAD),
127  MatBwdPAD(In.MatBwdPAD)
128  {
129  m_lines = Array<OneD, ExpListSharedPtr>(In.m_lines.num_elements());
130  }
LibUtilities::TranspositionSharedPtr m_transposition
ExpList()
The default constructor.
Definition: ExpList.cpp:95
LibUtilities::NektarFFTSharedPtr m_FFT_z
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
int m_ny
Number of modes = number of poitns in y direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int m_nz
Number of modes = number of poitns in z direction.
LibUtilities::NektarFFTSharedPtr m_FFT_y
Nektar::MultiRegions::ExpListHomogeneous2D::ExpListHomogeneous2D ( const ExpListHomogeneous2D In,
const std::vector< unsigned int > &  eIDs 
)

Definition at line 132 of file ExpListHomogeneous2D.cpp.

References m_lines.

133  :
134  ExpList(In,eIDs,false),
135  m_useFFT(In.m_useFFT),
136  m_FFT_y(In.m_FFT_y),
137  m_FFT_z(In.m_FFT_z),
138  m_transposition(In.m_transposition),
139  m_Ycomm(In.m_Ycomm),
140  m_Zcomm(In.m_Ycomm),
141  m_homogeneousBasis_y(In.m_homogeneousBasis_y),
142  m_homogeneousBasis_z(In.m_homogeneousBasis_z),
143  m_lhom_y(In.m_lhom_y),
144  m_lhom_z(In.m_lhom_z),
145  m_homogeneous2DBlockMat(MemoryManager<Homo2DBlockMatrixMap>::AllocateSharedPtr()),
146  m_ny(In.m_ny),
147  m_nz(In.m_nz),
148  m_dealiasing(In.m_dealiasing),
149  m_padsize_y(In.m_padsize_y),
150  m_padsize_z(In.m_padsize_z),
151  MatFwdPAD(In.MatFwdPAD),
152  MatBwdPAD(In.MatBwdPAD)
153  {
154  m_lines = Array<OneD, ExpListSharedPtr>(In.m_lines.num_elements());
155  }
LibUtilities::TranspositionSharedPtr m_transposition
ExpList()
The default constructor.
Definition: ExpList.cpp:95
LibUtilities::NektarFFTSharedPtr m_FFT_z
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
int m_ny
Number of modes = number of poitns in y direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int m_nz
Number of modes = number of poitns in z direction.
LibUtilities::NektarFFTSharedPtr m_FFT_y
Nektar::MultiRegions::ExpListHomogeneous2D::~ExpListHomogeneous2D ( )
virtual

Destructor.

Destructor

Definition at line 160 of file ExpListHomogeneous2D.cpp.

161  {
162  }

Member Function Documentation

DNekBlkMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::GenHomogeneous2DBlockMatrix ( Homogeneous2DMatType  mattype,
CoeffState  coeffstate = eLocal 
) const
protected

Definition at line 545 of file ExpListHomogeneous2D.cpp.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::MultiRegions::eBackwardsCoeffSpaceY1D, Nektar::MultiRegions::eBackwardsCoeffSpaceZ1D, Nektar::MultiRegions::eBackwardsPhysSpaceY1D, Nektar::StdRegions::eBwdTrans, Nektar::eDIAGONAL, Nektar::MultiRegions::eForwardsCoeffSpaceY1D, Nektar::MultiRegions::eForwardsCoeffSpaceZ1D, Nektar::MultiRegions::eForwardsPhysSpaceY1D, Nektar::MultiRegions::eForwardsPhysSpaceZ1D, Nektar::StdRegions::eFwdTrans, m_homogeneousBasis_y, m_homogeneousBasis_z, and m_lines.

Referenced by GetHomogeneous2DBlockMatrix().

546  {
547  int i;
548  int n_exp = 0;
549 
550  DNekMatSharedPtr loc_mat;
551  DNekBlkMatSharedPtr BlkMatrix;
552 
554 
555  int NumPoints = 0;
556  int NumModes = 0;
557  int NumPencils = 0;
558 
559  if((mattype == eForwardsCoeffSpaceY1D) || (mattype == eBackwardsCoeffSpaceY1D)
560  ||(mattype == eForwardsPhysSpaceY1D) || (mattype == eBackwardsPhysSpaceY1D))
561  {
562  Basis = m_homogeneousBasis_y;
563  NumPoints = m_homogeneousBasis_y->GetNumModes();
564  NumModes = m_homogeneousBasis_y->GetNumPoints();
565  NumPencils = m_homogeneousBasis_z->GetNumPoints();
566  }
567  else
568  {
569  Basis = m_homogeneousBasis_z;
570  NumPoints = m_homogeneousBasis_z->GetNumModes();
571  NumModes = m_homogeneousBasis_z->GetNumPoints();
572  NumPencils = m_homogeneousBasis_y->GetNumPoints();
573  }
574 
575  if((mattype == eForwardsCoeffSpaceY1D) || (mattype == eForwardsCoeffSpaceZ1D)
576  ||(mattype == eBackwardsCoeffSpaceY1D)||(mattype == eBackwardsCoeffSpaceZ1D))
577  {
578  n_exp = m_lines[0]->GetNcoeffs();
579  }
580  else
581  {
582  n_exp = m_lines[0]->GetTotPoints(); // will operatore on m_phys
583  }
584 
585  Array<OneD,unsigned int> nrows(n_exp);
586  Array<OneD,unsigned int> ncols(n_exp);
587 
588  if((mattype == eForwardsCoeffSpaceY1D)||(mattype == eForwardsPhysSpaceY1D) ||
589  (mattype == eForwardsCoeffSpaceZ1D)||(mattype == eForwardsPhysSpaceZ1D))
590  {
591  nrows = Array<OneD, unsigned int>(n_exp*NumPencils,NumModes);
592  ncols = Array<OneD, unsigned int>(n_exp*NumPencils,NumPoints);
593  }
594  else
595  {
596  nrows = Array<OneD, unsigned int>(n_exp*NumPencils,NumPoints);
597  ncols = Array<OneD, unsigned int>(n_exp*NumPencils,NumModes);
598  }
599 
600  MatrixStorage blkmatStorage = eDIAGONAL;
601  BlkMatrix = MemoryManager<DNekBlkMat>::AllocateSharedPtr(nrows,ncols,blkmatStorage);
602 
603  StdRegions::StdSegExp StdSeg(Basis->GetBasisKey());
604 
605  if((mattype == eForwardsCoeffSpaceY1D)||(mattype == eForwardsPhysSpaceY1D) ||
606  (mattype == eForwardsCoeffSpaceZ1D)||(mattype == eForwardsPhysSpaceZ1D))
607  {
608  StdRegions::StdMatrixKey matkey(StdRegions::eFwdTrans,
609  StdSeg.DetShapeType(),
610  StdSeg);
611 
612  loc_mat = StdSeg.GetStdMatrix(matkey);
613  }
614  else
615  {
616  StdRegions::StdMatrixKey matkey(StdRegions::eBwdTrans,
617  StdSeg.DetShapeType(),
618  StdSeg);
619 
620  loc_mat = StdSeg.GetStdMatrix(matkey);
621  }
622 
623  // set up array of block matrices.
624  for(i = 0; i < (n_exp*NumPencils); ++i)
625  {
626  BlkMatrix->SetBlock(i,i,loc_mat);
627  }
628 
629  return BlkMatrix;
630  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
boost::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:70
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
boost::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
Definition: NekTypeDefs.hpp:72
boost::shared_ptr< Basis > BasisSharedPtr
DNekBlkMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::GetHomogeneous2DBlockMatrix ( Homogeneous2DMatType  mattype,
CoeffState  coeffstate = eLocal 
) const
protected

Definition at line 530 of file ExpListHomogeneous2D.cpp.

References GenHomogeneous2DBlockMatrix(), Nektar::iterator, and m_homogeneous2DBlockMat.

Referenced by Homogeneous2DTrans().

531  {
532  Homo2DBlockMatrixMap::iterator matrixIter = m_homogeneous2DBlockMat->find(mattype);
533 
534  if(matrixIter == m_homogeneous2DBlockMat->end())
535  {
536  return ((*m_homogeneous2DBlockMat)[mattype] =
537  GenHomogeneous2DBlockMatrix(mattype,coeffstate));
538  }
539  else
540  {
541  return matrixIter->second;
542  }
543  }
DNekBlkMatSharedPtr GenHomogeneous2DBlockMatrix(Homogeneous2DMatType mattype, CoeffState coeffstate=eLocal) const
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
void Nektar::MultiRegions::ExpListHomogeneous2D::Homogeneous2DTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
bool  IsForwards,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)

Definition at line 407 of file ExpListHomogeneous2D.cpp.

References Nektar::MultiRegions::eBackwardsCoeffSpaceY1D, Nektar::MultiRegions::eBackwardsCoeffSpaceZ1D, Nektar::MultiRegions::eBackwardsPhysSpaceY1D, Nektar::MultiRegions::eBackwardsPhysSpaceZ1D, Nektar::MultiRegions::eForwardsCoeffSpaceY1D, Nektar::MultiRegions::eForwardsCoeffSpaceZ1D, Nektar::MultiRegions::eForwardsPhysSpaceY1D, Nektar::MultiRegions::eForwardsPhysSpaceZ1D, Nektar::eWrapper, Nektar::LibUtilities::eXtoYZ, Nektar::LibUtilities::eYZtoX, Nektar::LibUtilities::eYZtoZY, Nektar::LibUtilities::eZYtoYZ, GetHomogeneous2DBlockMatrix(), m_FFT_y, m_FFT_z, m_lines, Nektar::MultiRegions::ExpList::m_npoints, m_ny, m_nz, m_tmpIN, m_tmpOUT, m_transposition, m_useFFT, and CellMLToNektar.cellml_metadata::p.

Referenced by v_HomogeneousBwdTrans(), and v_HomogeneousFwdTrans().

413  {
414  if(m_useFFT)
415  {
416 
417  int n = m_lines.num_elements(); //number of Fourier points in the Fourier directions (x-z grid)
418  int s = inarray.num_elements(); //number of total points = n. of Fourier points * n. of points per line
419  int p = s/n; //number of points per line = n of Fourier transform required
420 
421  Array<OneD, NekDouble> fft_in(s);
422  Array<OneD, NekDouble> fft_out(s);
423 
424  m_transposition->Transpose(inarray,fft_in,false,LibUtilities::eXtoYZ);
425 
426  if(IsForwards)
427  {
428  for(int i=0;i<(p*m_nz);i++)
429  {
430  m_FFT_y->FFTFwdTrans(m_tmpIN = fft_in + i*m_ny, m_tmpOUT = fft_out + i*m_ny);
431  }
432 
433  }
434  else
435  {
436  for(int i=0;i<(p*m_nz);i++)
437  {
438  m_FFT_y->FFTBwdTrans(m_tmpIN = fft_in + i*m_ny, m_tmpOUT = fft_out + i*m_ny);
439  }
440  }
441 
442  m_transposition->Transpose(fft_out,fft_in,false,LibUtilities::eYZtoZY);
443 
444  if(IsForwards)
445  {
446  for(int i=0;i<(p*m_ny);i++)
447  {
448  m_FFT_z->FFTFwdTrans(m_tmpIN = fft_in + i*m_nz, m_tmpOUT = fft_out + i*m_nz);
449  }
450 
451  }
452  else
453  {
454  for(int i=0;i<(p*m_ny);i++)
455  {
456  m_FFT_z->FFTBwdTrans(m_tmpIN = fft_in + i*m_nz, m_tmpOUT = fft_out + i*m_nz);
457  }
458  }
459 
460  //TODO: required ZYtoX routine
461  m_transposition->Transpose(fft_out,fft_in,false,LibUtilities::eZYtoYZ);
462 
463  m_transposition->Transpose(fft_in,outarray,false,LibUtilities::eYZtoX);
464 
465  }
466  else
467  {
468  DNekBlkMatSharedPtr blkmatY;
469  DNekBlkMatSharedPtr blkmatZ;
470 
471  if(inarray.num_elements() == m_npoints) //transform phys space
472  {
473  if(IsForwards)
474  {
477  }
478  else
479  {
482  }
483  }
484  else
485  {
486  if(IsForwards)
487  {
490  }
491  else
492  {
495  }
496  }
497 
498  int nrowsY = blkmatY->GetRows();
499  int ncolsY = blkmatY->GetColumns();
500 
501  Array<OneD, NekDouble> sortedinarrayY(ncolsY);
502  Array<OneD, NekDouble> sortedoutarrayY(nrowsY);
503 
504  int nrowsZ = blkmatZ->GetRows();
505  int ncolsZ = blkmatZ->GetColumns();
506 
507  Array<OneD, NekDouble> sortedinarrayZ(ncolsZ);
508  Array<OneD, NekDouble> sortedoutarrayZ(nrowsZ);
509 
510  NekVector<NekDouble> inY (ncolsY,sortedinarrayY,eWrapper);
511  NekVector<NekDouble> outY(nrowsY,sortedoutarrayY,eWrapper);
512 
513  NekVector<NekDouble> inZ (ncolsZ,sortedinarrayZ,eWrapper);
514  NekVector<NekDouble> outZ(nrowsZ,sortedoutarrayZ,eWrapper);
515 
516  m_transposition->Transpose(inarray,sortedinarrayY,!IsForwards,LibUtilities::eXtoYZ);
517 
518  outY = (*blkmatY)*inY;
519 
520  m_transposition->Transpose(sortedoutarrayY,sortedinarrayZ,false,LibUtilities::eYZtoZY);
521 
522  outZ = (*blkmatZ)*inZ;
523 
524  m_transposition->Transpose(sortedoutarrayZ,sortedoutarrayY,false,LibUtilities::eZYtoYZ);
525 
526  m_transposition->Transpose(sortedoutarrayY,outarray,false,LibUtilities::eYZtoX);
527  }
528  }
LibUtilities::TranspositionSharedPtr m_transposition
LibUtilities::NektarFFTSharedPtr m_FFT_z
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
int m_ny
Number of modes = number of poitns in y direction.
int m_nz
Number of modes = number of poitns in z direction.
boost::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
Definition: NekTypeDefs.hpp:72
LibUtilities::NektarFFTSharedPtr m_FFT_y
DNekBlkMatSharedPtr GetHomogeneous2DBlockMatrix(Homogeneous2DMatType mattype, CoeffState coeffstate=eLocal) const
void Nektar::MultiRegions::ExpListHomogeneous2D::HomogeneousBwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Definition at line 251 of file ExpListHomogeneous2D.h.

References v_HomogeneousBwdTrans().

Referenced by v_BwdTrans(), v_BwdTrans_IterPerExp(), v_DealiasedProd(), and v_PhysDeriv().

256  {
257  v_HomogeneousBwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
258  }
virtual void v_HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::HomogeneousFwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Definition at line 242 of file ExpListHomogeneous2D.h.

References v_HomogeneousFwdTrans().

Referenced by v_DealiasedProd(), v_FwdTrans(), v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous2D::v_HelmSolve(), and v_PhysDeriv().

247  {
248  v_HomogeneousFwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
249  }
virtual void v_HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::PhysDeriv ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d0,
Array< OneD, NekDouble > &  out_d1,
Array< OneD, NekDouble > &  out_d2 
)

Definition at line 1007 of file ExpListHomogeneous2D.cpp.

References v_PhysDeriv().

1012  {
1013  v_PhysDeriv(inarray,out_d0,out_d1,out_d2);
1014  }
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)
void Nektar::MultiRegions::ExpListHomogeneous2D::PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)

Definition at line 1016 of file ExpListHomogeneous2D.cpp.

References v_PhysDeriv().

1019  {
1020  //convert int into enum
1021  v_PhysDeriv(edir,inarray,out_d);
1022  }
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)
void Nektar::MultiRegions::ExpListHomogeneous2D::SetPaddingBase ( void  )

Definition at line 1024 of file ExpListHomogeneous2D.cpp.

References Nektar::LibUtilities::BasisManager(), Nektar::StdRegions::eBwdTrans, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eFourierEvenlySpaced, Nektar::StdRegions::eFwdTrans, m_ny, m_nz, m_paddingBasis_y, m_paddingBasis_z, m_padsize_y, m_padsize_z, MatBwdPAD, and MatFwdPAD.

Referenced by ExpListHomogeneous2D().

1025  {
1026  NekDouble size_y = 1.5*m_ny;
1027  NekDouble size_z = 1.5*m_nz;
1028  m_padsize_y = int(size_y);
1029  m_padsize_z = int(size_z);
1030 
1031  const LibUtilities::PointsKey Ppad_y(m_padsize_y,LibUtilities::eFourierEvenlySpaced);
1032  const LibUtilities::BasisKey Bpad_y(LibUtilities::eFourier,m_padsize_y,Ppad_y);
1033 
1034  const LibUtilities::PointsKey Ppad_z(m_padsize_z,LibUtilities::eFourierEvenlySpaced);
1035  const LibUtilities::BasisKey Bpad_z(LibUtilities::eFourier,m_padsize_z,Ppad_z);
1036 
1039 
1040  StdRegions::StdQuadExp StdQuad(m_paddingBasis_y->GetBasisKey(),m_paddingBasis_z->GetBasisKey());
1041 
1042  StdRegions::StdMatrixKey matkey1(StdRegions::eFwdTrans,StdQuad.DetShapeType(),StdQuad);
1043  StdRegions::StdMatrixKey matkey2(StdRegions::eBwdTrans,StdQuad.DetShapeType(),StdQuad);
1044 
1045  MatFwdPAD = StdQuad.GetStdMatrix(matkey1);
1046  MatBwdPAD = StdQuad.GetStdMatrix(matkey2);
1047  }
LibUtilities::BasisSharedPtr m_paddingBasis_z
Base expansion in z direction.
Fourier Expansion .
Definition: BasisType.h:52
BasisManagerT & BasisManager(void)
1D Evenly-spaced points using Fourier Fit
Definition: PointsType.h:66
double NekDouble
int m_ny
Number of modes = number of poitns in y direction.
int m_nz
Number of modes = number of poitns in z direction.
LibUtilities::BasisSharedPtr m_paddingBasis_y
Base expansion in y direction.
void Nektar::MultiRegions::ExpListHomogeneous2D::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 731 of file ExpListHomogeneous2D.cpp.

References Nektar::MultiRegions::ExpList::m_coeffs.

732  {
733  v_AppendFieldData(fielddef,fielddata,m_coeffs);
734  }
Array< OneD, NekDouble > m_coeffs
Concatenation of all local expansion coefficients.
Definition: ExpList.h:998
virtual void v_AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
Array< OneD, NekDouble > &  coeffs 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 702 of file ExpListHomogeneous2D.cpp.

References Nektar::MultiRegions::ExpList::m_coeff_offset, m_homogeneousBasis_y, m_homogeneousBasis_z, and m_lines.

703  {
704  int i,k;
705 
706  int NumMod_y = m_homogeneousBasis_y->GetNumModes();
707  int NumMod_z = m_homogeneousBasis_z->GetNumModes();
708 
709  int ncoeffs_per_line = m_lines[0]->GetNcoeffs();
710 
711  // Determine mapping from element ids to location in
712  // expansion list
713  map<int, int> ElmtID_to_ExpID;
714  for(i = 0; i < m_lines[0]->GetExpSize(); ++i)
715  {
716  ElmtID_to_ExpID[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
717  }
718 
719  for(i = 0; i < fielddef->m_elementIDs.size(); ++i)
720  {
721  int eid = ElmtID_to_ExpID[fielddef->m_elementIDs[i]];
722  int datalen = (*m_exp)[eid]->GetNcoeffs();
723 
724  for(k = 0; k < (NumMod_y*NumMod_z); ++k)
725  {
726  fielddata.insert(fielddata.end(),&coeffs[m_coeff_offset[eid]+k*ncoeffs_per_line],&coeffs[m_coeff_offset[eid]+k*ncoeffs_per_line]+datalen);
727  }
728  }
729  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
Definition: ExpList.h:1047
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
void Nektar::MultiRegions::ExpListHomogeneous2D::v_BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 338 of file ExpListHomogeneous2D.cpp.

References HomogeneousBwdTrans(), m_lines, and Nektar::MultiRegions::ExpList::m_WaveSpace.

339  {
340  int cnt = 0, cnt1 = 0;
341  Array<OneD, NekDouble> tmparray;
342  int nlines = m_lines.num_elements();
343 
344  for(int n = 0; n < nlines; ++n)
345  {
346  m_lines[n]->BwdTrans(inarray+cnt, tmparray = outarray + cnt1,
347  coeffstate);
348  cnt += m_lines[n]->GetNcoeffs();
349  cnt1 += m_lines[n]->GetTotPoints();
350  }
351  if(!m_WaveSpace)
352  {
353  HomogeneousBwdTrans(outarray,outarray);
354  }
355  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::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 from Nektar::MultiRegions::ExpList.

Definition at line 357 of file ExpListHomogeneous2D.cpp.

References HomogeneousBwdTrans(), m_lines, and Nektar::MultiRegions::ExpList::m_WaveSpace.

358  {
359  int cnt = 0, cnt1 = 0;
360  Array<OneD, NekDouble> tmparray;
361  int nlines = m_lines.num_elements();
362 
363  for(int n = 0; n < nlines; ++n)
364  {
365  m_lines[n]->BwdTrans_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
366 
367  cnt += m_lines[n]->GetNcoeffs();
368  cnt1 += m_lines[n]->GetTotPoints();
369  }
370  if(!m_WaveSpace)
371  {
372  HomogeneousBwdTrans(outarray,outarray);
373  }
374  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_DealiasedDotProd ( const Array< OneD, Array< OneD, NekDouble > > &  inarray1,
const Array< OneD, Array< OneD, NekDouble > > &  inarray2,
Array< OneD, Array< OneD, NekDouble > > &  outarray,
CoeffState  coeffstate = eLocal 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 275 of file ExpListHomogeneous2D.cpp.

References ASSERTL1, Nektar::MultiRegions::ExpList::DealiasedProd(), npts, Vmath::Vadd(), and Vmath::Zero().

280  {
281  // TODO Proper implementation of this
282  int ndim = inarray1.num_elements();
283  ASSERTL1( inarray2.num_elements() % ndim == 0,
284  "Wrong dimensions for DealiasedDotProd.");
285  int nvec = inarray2.num_elements() % ndim;
286  int npts = inarray1[0].num_elements();
287 
288  Array<OneD, NekDouble> out(npts);
289  for (int i = 0; i < nvec; i++)
290  {
291  Vmath::Zero(npts, outarray[i], 1);
292  for (int j = 0; j < ndim; j++)
293  {
294  DealiasedProd(inarray1[j], inarray2[i*ndim+j], out);
295  Vmath::Vadd(npts, outarray[i], 1, out, 1, outarray[i], 1);
296  }
297  }
298  }
static std::string npts
Definition: InputFld.cpp:43
void DealiasedProd(const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
Definition: ExpList.h:1851
void Zero(int n, T *x, const int incx)
Zero vector.
Definition: Vmath.cpp:373
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:228
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
Definition: Vmath.cpp:299
void Nektar::MultiRegions::ExpListHomogeneous2D::v_DealiasedProd ( const Array< OneD, NekDouble > &  inarray1,
const Array< OneD, NekDouble > &  inarray2,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 184 of file ExpListHomogeneous2D.cpp.

References Nektar::eWrapper, Nektar::LibUtilities::eXtoYZ, Nektar::LibUtilities::eYZtoX, HomogeneousBwdTrans(), HomogeneousFwdTrans(), m_lines, m_ny, m_nz, m_padsize_y, m_padsize_z, m_transposition, Nektar::MultiRegions::ExpList::m_WaveSpace, Vmath::Vcopy(), and Vmath::Vmul().

188  {
189  int npoints = outarray.num_elements(); // number of total physical points
190  int nlines = m_lines.num_elements(); // number of lines == number of Fourier modes = number of Fourier coeff = number of points per slab
191  int nslabs = npoints/nlines; // number of slabs = numebr of physical points per line
192 
193  Array<OneD, NekDouble> V1(npoints);
194  Array<OneD, NekDouble> V2(npoints);
195  Array<OneD, NekDouble> V1V2(npoints);
196  Array<OneD, NekDouble> ShufV1(npoints);
197  Array<OneD, NekDouble> ShufV2(npoints);
198  Array<OneD, NekDouble> ShufV1V2(npoints);
199 
200  if(m_WaveSpace)
201  {
202  V1 = inarray1;
203  V2 = inarray2;
204  }
205  else
206  {
207  HomogeneousFwdTrans(inarray1,V1,coeffstate);
208  HomogeneousFwdTrans(inarray2,V2,coeffstate);
209  }
210 
211  m_transposition->Transpose(V1,ShufV1,false,LibUtilities::eXtoYZ);
212  m_transposition->Transpose(V2,ShufV2,false,LibUtilities::eXtoYZ);
213 
214  Array<OneD, NekDouble> PadV1_slab_coeff(m_padsize_y*m_padsize_z,0.0);
215  Array<OneD, NekDouble> PadV2_slab_coeff(m_padsize_y*m_padsize_z,0.0);
216  Array<OneD, NekDouble> PadRe_slab_coeff(m_padsize_y*m_padsize_z,0.0);
217 
218  Array<OneD, NekDouble> PadV1_slab_phys(m_padsize_y*m_padsize_z,0.0);
219  Array<OneD, NekDouble> PadV2_slab_phys(m_padsize_y*m_padsize_z,0.0);
220  Array<OneD, NekDouble> PadRe_slab_phys(m_padsize_y*m_padsize_z,0.0);
221 
222  NekVector<NekDouble> PadIN_V1(m_padsize_y*m_padsize_z,PadV1_slab_coeff,eWrapper);
223  NekVector<NekDouble> PadOUT_V1(m_padsize_y*m_padsize_z,PadV1_slab_phys,eWrapper);
224 
225  NekVector<NekDouble> PadIN_V2(m_padsize_y*m_padsize_z,PadV2_slab_coeff,eWrapper);
226  NekVector<NekDouble> PadOUT_V2(m_padsize_y*m_padsize_z,PadV2_slab_phys,eWrapper);
227 
228  NekVector<NekDouble> PadIN_Re(m_padsize_y*m_padsize_z,PadRe_slab_phys,eWrapper);
229  NekVector<NekDouble> PadOUT_Re(m_padsize_y*m_padsize_z,PadRe_slab_coeff,eWrapper);
230 
231  //Looping on the slabs
232  for(int j = 0 ; j< nslabs ; j++)
233  {
234  //Copying the j-th slab of size N*M into a bigger slab of lenght 2*N*M
235  //We are in Fourier space
236  for(int i = 0 ; i< m_nz ; i++)
237  {
238  Vmath::Vcopy(m_ny,&(ShufV1[i*m_ny + j*nlines]),1,&(PadV1_slab_coeff[i*2*m_ny]),1);
239  Vmath::Vcopy(m_ny,&(ShufV2[i*m_ny + j*nlines]),1,&(PadV2_slab_coeff[i*2*m_ny]),1);
240  }
241 
242  //Moving to physical space using the padded system
243  PadOUT_V1 = (*MatBwdPAD)*PadIN_V1;
244  PadOUT_V2 = (*MatBwdPAD)*PadIN_V2;
245 
246  //Perfroming the vectors multiplication in physical
247  //space on the padded system
248  Vmath::Vmul(m_padsize_y*m_padsize_z,PadV1_slab_phys,1,PadV2_slab_phys,1,PadRe_slab_phys,1);
249 
250  //Moving back the result (V1*V2)_phys in Fourier
251  //space, padded system
252  PadOUT_Re = (*MatFwdPAD)*PadIN_Re;
253 
254  //Copying the first half of the padded pencil in the
255  //full vector (Fourier space)
256  for (int i = 0; i < m_nz; i++)
257  {
258  Vmath::Vcopy(m_ny,&(PadRe_slab_coeff[i*2*m_ny]),1,&(ShufV1V2[i*m_ny + j*nlines]),1);
259  }
260  }
261 
262  if(m_WaveSpace)
263  {
264  m_transposition->Transpose(ShufV1V2,outarray,false,LibUtilities::eYZtoX);
265  }
266  else
267  {
268  m_transposition->Transpose(ShufV1V2,V1V2,false,LibUtilities::eYZtoX);
269 
270  //Moving the results in physical space for the output
271  HomogeneousBwdTrans(V1V2,outarray,coeffstate);
272  }
273  }
LibUtilities::TranspositionSharedPtr m_transposition
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
int m_ny
Number of modes = number of poitns in y direction.
int m_nz
Number of modes = number of poitns in z direction.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1061
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
Definition: Vmath.cpp:183
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::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 from Nektar::MultiRegions::ExpList.

Definition at line 737 of file ExpListHomogeneous2D.cpp.

References ASSERTL0, Nektar::MultiRegions::ExpList::m_coeff_offset, m_homogeneousBasis_y, m_homogeneousBasis_z, m_lines, and Vmath::Vcopy().

738  {
739  int i,k;
740  int offset = 0;
741  int datalen = fielddata.size()/fielddef->m_fields.size();
742  int ncoeffs_per_line = m_lines[0]->GetNcoeffs();
743  int NumMod_y = m_homogeneousBasis_y->GetNumModes();
744  int NumMod_z = m_homogeneousBasis_z->GetNumModes();
745 
746  // Find data location according to field definition
747  for(i = 0; i < fielddef->m_fields.size(); ++i)
748  {
749  if(fielddef->m_fields[i] == field)
750  {
751  break;
752  }
753  offset += datalen;
754  }
755 
756  ASSERTL0(i!= fielddef->m_fields.size(),"Field not found in data file");
757 
758  // Determine mapping from element ids to location in
759  // expansion list
760  map<int, int> ElmtID_to_ExpID;
761  for(i = 0; i < m_lines[0]->GetExpSize(); ++i)
762  {
763  ElmtID_to_ExpID[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
764  }
765 
766  for(i = 0; i < fielddef->m_elementIDs.size(); ++i)
767  {
768  int eid = ElmtID_to_ExpID[fielddef->m_elementIDs[i]];
769  int datalen = (*m_exp)[eid]->GetNcoeffs();
770 
771  for(k = 0; k < (NumMod_y*NumMod_z); ++k)
772  {
773  Vmath::Vcopy(datalen,&fielddata[offset],1,&coeffs[m_coeff_offset[eid] + k*ncoeffs_per_line],1);
774  offset += datalen;
775  }
776  }
777  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:198
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
Definition: ExpList.h:1047
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1061
void Nektar::MultiRegions::ExpListHomogeneous2D::v_FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 300 of file ExpListHomogeneous2D.cpp.

References HomogeneousFwdTrans(), m_lines, and Nektar::MultiRegions::ExpList::m_WaveSpace.

301  {
302  int cnt = 0, cnt1 = 0;
303  Array<OneD, NekDouble> tmparray;
304  int nlines = m_lines.num_elements();
305 
306  for(int n = 0; n < nlines; ++n)
307  {
308  m_lines[n]->FwdTrans(inarray+cnt, tmparray = outarray + cnt1,
309  coeffstate);
310  cnt += m_lines[n]->GetTotPoints();
311  cnt1 += m_lines[n]->GetNcoeffs();
312  }
313  if(!m_WaveSpace)
314  {
315  HomogeneousFwdTrans(outarray,outarray,coeffstate);
316  }
317  }
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void Nektar::MultiRegions::ExpListHomogeneous2D::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 from Nektar::MultiRegions::ExpList.

Definition at line 319 of file ExpListHomogeneous2D.cpp.

References HomogeneousFwdTrans(), m_lines, and Nektar::MultiRegions::ExpList::m_WaveSpace.

320  {
321  int cnt = 0, cnt1 = 0;
322  Array<OneD, NekDouble> tmparray;
323  int nlines = m_lines.num_elements();
324 
325  for(int n = 0; n < nlines; ++n)
326  {
327  m_lines[n]->FwdTrans_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
328 
329  cnt += m_lines[n]->GetTotPoints();
330  cnt1 += m_lines[n]->GetNcoeffs();
331  }
332  if(!m_WaveSpace)
333  {
334  HomogeneousFwdTrans(outarray,outarray);
335  }
336  }
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
std::vector< LibUtilities::FieldDefinitionsSharedPtr > Nektar::MultiRegions::ExpListHomogeneous2D::v_GetFieldDefinitions ( void  )
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 632 of file ExpListHomogeneous2D.cpp.

References m_homogeneousBasis_y, m_homogeneousBasis_z, m_lhom_y, m_lhom_z, m_lines, and Nektar::LibUtilities::NullUnsignedIntVector.

633  {
634  std::vector<LibUtilities::FieldDefinitionsSharedPtr> returnval;
635  // Set up Homogeneous length details.
636  Array<OneD,LibUtilities::BasisSharedPtr> HomoBasis(2);
637  HomoBasis[0] = m_homogeneousBasis_y;
638  HomoBasis[1] = m_homogeneousBasis_z;
639 
640  std::vector<NekDouble> HomoLen(2);
641  HomoLen[0] = m_lhom_y;
642  HomoLen[1] = m_lhom_z;
643 
644  int nhom_modes_y = m_homogeneousBasis_y->GetNumModes();
645  int nhom_modes_z = m_homogeneousBasis_z->GetNumModes();
646 
647  std::vector<unsigned int> sIDs
649 
650  std::vector<unsigned int> yIDs;
651  std::vector<unsigned int> zIDs;
652 
653  for(int n = 0; n < nhom_modes_z; ++n)
654  {
655  for(int m = 0; m < nhom_modes_y; ++m)
656  {
657  zIDs.push_back(n);
658  yIDs.push_back(m);
659  }
660  }
661 
662  m_lines[0]->GeneralGetFieldDefinitions(returnval, 2, HomoBasis,
663  HomoLen, false,
664  sIDs, zIDs, yIDs);
665  return returnval;
666  }
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
static std::vector< unsigned int > NullUnsignedIntVector
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
void Nektar::MultiRegions::ExpListHomogeneous2D::v_GetFieldDefinitions ( std::vector< LibUtilities::FieldDefinitionsSharedPtr > &  fielddef)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 668 of file ExpListHomogeneous2D.cpp.

References m_homogeneousBasis_y, m_homogeneousBasis_z, m_lhom_y, m_lhom_z, m_lines, and Nektar::LibUtilities::NullUnsignedIntVector.

669  {
670  // Set up Homogeneous length details.
671  Array<OneD,LibUtilities::BasisSharedPtr> HomoBasis(2);
672  HomoBasis[0] = m_homogeneousBasis_y;
673  HomoBasis[1] = m_homogeneousBasis_z;
674  std::vector<NekDouble> HomoLen(2);
675  HomoLen[0] = m_lhom_y;
676  HomoLen[1] = m_lhom_z;
677 
678  int nhom_modes_y = m_homogeneousBasis_y->GetNumModes();
679  int nhom_modes_z = m_homogeneousBasis_z->GetNumModes();
680 
681  std::vector<unsigned int> sIDs
683 
684  std::vector<unsigned int> yIDs;
685  std::vector<unsigned int> zIDs;
686 
687  for(int n = 0; n < nhom_modes_z; ++n)
688  {
689  for(int m = 0; m < nhom_modes_y; ++m)
690  {
691  zIDs.push_back(n);
692  yIDs.push_back(m);
693  }
694  }
695 
696  // enforce NumHomoDir == 1 by direct call
697  m_lines[0]->GeneralGetFieldDefinitions(fielddef, 2, HomoBasis,
698  HomoLen, false,
699  sIDs, zIDs, yIDs);
700  }
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
NekDouble m_lhom_y
Width of homogeneous direction y.
static std::vector< unsigned int > NullUnsignedIntVector
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
virtual int Nektar::MultiRegions::ExpListHomogeneous2D::v_GetNumElmts ( void  )
inlineprotectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 165 of file ExpListHomogeneous2D.h.

166  {
167  return m_lines[0]->GetExpSize();
168  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void Nektar::MultiRegions::ExpListHomogeneous2D::v_HomogeneousBwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 174 of file ExpListHomogeneous2D.cpp.

References Homogeneous2DTrans().

Referenced by HomogeneousBwdTrans().

179  {
180  // Backwards trans
181  Homogeneous2DTrans(inarray,outarray,false,coeffstate,Shuff,UnShuff);
182  }
void Homogeneous2DTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool IsForwards, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_HomogeneousFwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 164 of file ExpListHomogeneous2D.cpp.

References Homogeneous2DTrans().

Referenced by HomogeneousFwdTrans().

169  {
170  // Forwards trans
171  Homogeneous2DTrans(inarray,outarray,true,coeffstate,Shuff,UnShuff);
172  }
void Homogeneous2DTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool IsForwards, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 377 of file ExpListHomogeneous2D.cpp.

References m_lines.

378  {
379  int cnt = 0, cnt1 = 0;
380  Array<OneD, NekDouble> tmparray;
381  int nlines = m_lines.num_elements();
382 
383  for(int n = 0; n < nlines; ++n)
384  {
385  m_lines[n]->IProductWRTBase(inarray+cnt, tmparray = outarray + cnt1,coeffstate);
386 
387  cnt += m_lines[n]->GetNcoeffs();
388  cnt1 += m_lines[n]->GetTotPoints();
389  }
390  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void Nektar::MultiRegions::ExpListHomogeneous2D::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 from Nektar::MultiRegions::ExpList.

Definition at line 392 of file ExpListHomogeneous2D.cpp.

References m_lines.

393  {
394  int cnt = 0, cnt1 = 0;
395  Array<OneD, NekDouble> tmparray;
396  int nlines = m_lines.num_elements();
397 
398  for(int n = 0; n < nlines; ++n)
399  {
400  m_lines[n]->IProductWRTBase_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
401 
402  cnt += m_lines[n]->GetNcoeffs();
403  cnt1 += m_lines[n]->GetTotPoints();
404  }
405  }
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
void Nektar::MultiRegions::ExpListHomogeneous2D::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 from Nektar::MultiRegions::ExpList.

Definition at line 802 of file ExpListHomogeneous2D.cpp.

References ASSERTL0, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eXtoYZ, Nektar::LibUtilities::eYZtoX, HomogeneousBwdTrans(), HomogeneousFwdTrans(), m_homogeneousBasis_y, m_homogeneousBasis_z, m_lhom_y, m_lhom_z, m_lines, m_ny, m_nz, m_transposition, Nektar::MultiRegions::ExpList::m_WaveSpace, sign, and Vmath::Smul().

Referenced by PhysDeriv().

807  {
808  int nyzlines = m_lines.num_elements(); //number of Fourier points in the Fourier directions (nF_pts)
809  int npoints = inarray.num_elements(); //number of total points = n. of Fourier points * n. of points per line (nT_pts)
810  int n_points_line = npoints/nyzlines; //number of points per line
811 
812  Array<OneD, NekDouble> temparray(npoints);
813  Array<OneD, NekDouble> temparray1(npoints);
814  Array<OneD, NekDouble> temparray2(npoints);
815  Array<OneD, NekDouble> tmp1;
816  Array<OneD, NekDouble> tmp2;
817  Array<OneD, NekDouble> tmp3;
818 
819  for( int i=0 ; i<nyzlines ; i++ )
820  {
821  m_lines[i]->PhysDeriv( tmp1 = inarray + i*n_points_line ,tmp2 = out_d0 + i*n_points_line);
822  }
823 
825  {
826  if(m_WaveSpace)
827  {
828  temparray = inarray;
829  }
830  else
831  {
832  HomogeneousFwdTrans(inarray,temparray);
833  }
834  NekDouble sign = -1.0;
835  NekDouble beta;
836 
837  //along y
838  for(int i = 0; i < m_ny; i++)
839  {
840  beta = -sign*2*M_PI*(i/2)/m_lhom_y;
841 
842  for(int j = 0; j < m_nz; j++)
843  {
844  Vmath::Smul(n_points_line,beta,tmp1 = temparray + n_points_line*(i+j*m_ny),1, tmp2 = temparray1 + n_points_line*((i-int(sign))+j*m_ny),1);
845  }
846 
847  sign = -1.0*sign;
848  }
849 
850  //along z
851  sign = -1.0;
852  for(int i = 0; i < m_nz; i++)
853  {
854  beta = -sign*2*M_PI*(i/2)/m_lhom_z;
855  Vmath::Smul(m_ny*n_points_line,beta,tmp1 = temparray + i*m_ny*n_points_line,1,tmp2 = temparray2 + (i-int(sign))*m_ny*n_points_line,1);
856  sign = -1.0*sign;
857  }
858  if(m_WaveSpace)
859  {
860  out_d1 = temparray1;
861  out_d2 = temparray2;
862  }
863  else
864  {
865  HomogeneousBwdTrans(temparray1,out_d1);
866  HomogeneousBwdTrans(temparray2,out_d2);
867  }
868  }
869  else
870  {
871  if(m_WaveSpace)
872  {
873  ASSERTL0(false,"Semi-phyisical time-stepping not implemented yet for non-Fourier basis")
874  }
875  else
876  {
877  StdRegions::StdQuadExp StdQuad(m_homogeneousBasis_y->GetBasisKey(),m_homogeneousBasis_z->GetBasisKey());
878 
879  m_transposition->Transpose(inarray,temparray,false,LibUtilities::eXtoYZ);
880 
881  for(int i = 0; i < n_points_line; i++)
882  {
883  StdQuad.PhysDeriv(tmp1 = temparray + i*nyzlines, tmp2 = temparray1 + i*nyzlines, tmp3 = temparray2 + i*nyzlines);
884  }
885 
886  m_transposition->Transpose(temparray1,out_d1,false,LibUtilities::eYZtoX);
887  m_transposition->Transpose(temparray2,out_d2,false,LibUtilities::eYZtoX);
888  Vmath::Smul(npoints,2.0/m_lhom_y,out_d1,1,out_d1,1);
889  Vmath::Smul(npoints,2.0/m_lhom_z,out_d2,1,out_d2,1);
890  }
891  }
892  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:198
LibUtilities::TranspositionSharedPtr m_transposition
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
#define sign(a, b)
return the sign(b)*a
Definition: Polylib.cpp:27
Fourier Expansion .
Definition: BasisType.h:52
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
Definition: Vmath.cpp:213
NekDouble m_lhom_y
Width of homogeneous direction y.
double NekDouble
int m_ny
Number of modes = number of poitns in y direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int m_nz
Number of modes = number of poitns in z direction.
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 894 of file ExpListHomogeneous2D.cpp.

References ASSERTL0, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eXtoYZ, Nektar::LibUtilities::eYZtoX, HomogeneousBwdTrans(), HomogeneousFwdTrans(), m_homogeneousBasis_y, m_homogeneousBasis_z, m_lhom_y, m_lhom_z, m_lines, m_ny, m_nz, m_transposition, Nektar::MultiRegions::ExpList::m_WaveSpace, sign, and Vmath::Smul().

898  {
899  int nyzlines = m_lines.num_elements(); //number of Fourier points in the Fourier directions (nF_pts)
900  int npoints = inarray.num_elements(); //number of total points = n. of Fourier points * n. of points per line (nT_pts)
901  int n_points_line = npoints/nyzlines; //number of points per line
902  //convert enum into int
903  int dir = (int)edir;
904 
905  Array<OneD, NekDouble> temparray(npoints);
906  Array<OneD, NekDouble> temparray1(npoints);
907  Array<OneD, NekDouble> temparray2(npoints);
908  Array<OneD, NekDouble> tmp1;
909  Array<OneD, NekDouble> tmp2;
910  Array<OneD, NekDouble> tmp3;
911 
912  if (dir < 1)
913  {
914  for( int i=0 ; i<nyzlines ; i++)
915  {
916  m_lines[i]->PhysDeriv( tmp1 = inarray + i*n_points_line ,tmp2 = out_d + i*n_points_line);
917  }
918  }
919  else
920  {
922  {
923  if(m_WaveSpace)
924  {
925  temparray = inarray;
926  }
927  else
928  {
929  HomogeneousFwdTrans(inarray,temparray);
930  }
931  NekDouble sign = -1.0;
932  NekDouble beta;
933 
934  if (dir == 1)
935  {
936  //along y
937  for(int i = 0; i < m_ny; i++)
938  {
939  beta = -sign*2*M_PI*(i/2)/m_lhom_y;
940 
941  for(int j = 0; j < m_nz; j++)
942  {
943  Vmath::Smul(n_points_line,beta,tmp1 = temparray + n_points_line*(i+j*m_ny),1, tmp2 = temparray1 + n_points_line*((i-int(sign))+j*m_ny),1);
944  }
945  sign = -1.0*sign;
946  }
947  if(m_WaveSpace)
948  {
949  out_d = temparray1;
950  }
951  else
952  {
953  HomogeneousBwdTrans(temparray1,out_d);
954  }
955  }
956  else
957  {
958  //along z
959  for(int i = 0; i < m_nz; i++)
960  {
961  beta = -sign*2*M_PI*(i/2)/m_lhom_z;
962  Vmath::Smul(m_ny*n_points_line,beta,tmp1 = temparray + i*m_ny*n_points_line,1,tmp2 = temparray2 + (i-int(sign))*m_ny*n_points_line,1);
963  sign = -1.0*sign;
964  }
965  if(m_WaveSpace)
966  {
967  out_d = temparray2;
968  }
969  else
970  {
971  HomogeneousBwdTrans(temparray2,out_d);
972  }
973  }
974  }
975  else
976  {
977  if(m_WaveSpace)
978  {
979  ASSERTL0(false,"Semi-phyisical time-stepping not implemented yet for non-Fourier basis")
980  }
981  else
982  {
983  StdRegions::StdQuadExp StdQuad(m_homogeneousBasis_y->GetBasisKey(),m_homogeneousBasis_z->GetBasisKey());
984 
985  m_transposition->Transpose(inarray,temparray,false,LibUtilities::eXtoYZ);
986 
987  for(int i = 0; i < n_points_line; i++)
988  {
989  StdQuad.PhysDeriv(tmp1 = temparray + i*nyzlines, tmp2 = temparray1 + i*nyzlines, tmp3 = temparray2 + i*nyzlines);
990  }
991 
992  if (dir == 1)
993  {
994  m_transposition->Transpose(temparray1,out_d,false,LibUtilities::eYZtoX);
995  Vmath::Smul(npoints,2.0/m_lhom_y,out_d,1,out_d,1);
996  }
997  else
998  {
999  m_transposition->Transpose(temparray2,out_d,false,LibUtilities::eYZtoX);
1000  Vmath::Smul(npoints,2.0/m_lhom_z,out_d,1,out_d,1);
1001  }
1002  }
1003  }
1004  }
1005  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:198
LibUtilities::TranspositionSharedPtr m_transposition
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
#define sign(a, b)
return the sign(b)*a
Definition: Polylib.cpp:27
Fourier Expansion .
Definition: BasisType.h:52
NekDouble m_lhom_z
Width of homogeneous direction z.
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
LibUtilities::BasisSharedPtr m_homogeneousBasis_z
Base expansion in z direction.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*y.
Definition: Vmath.cpp:213
NekDouble m_lhom_y
Width of homogeneous direction y.
double NekDouble
int m_ny
Number of modes = number of poitns in y direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis_y
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int m_nz
Number of modes = number of poitns in z direction.
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous2D::v_WriteVtkPieceData ( std::ostream &  outfile,
int  expansion,
std::string  var 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 779 of file ExpListHomogeneous2D.cpp.

References Nektar::NekConstants::kNekZeroTol, m_lines, Nektar::MultiRegions::ExpList::m_phys, and Nektar::MultiRegions::ExpList::m_phys_offset.

781  {
782  int i;
783  int nq = (*m_exp)[expansion]->GetTotPoints();
784  int npoints_per_line = m_lines[0]->GetTotPoints();
785 
786  // printing the fields of that zone
787  outfile << " <DataArray type=\"Float64\" Name=\""
788  << var << "\">" << endl;
789  outfile << " ";
790  for (int n = 0; n < m_lines.num_elements(); ++n)
791  {
792  const Array<OneD, NekDouble> phys = m_phys + m_phys_offset[expansion] + n*npoints_per_line;
793  for(i = 0; i < nq; ++i)
794  {
795  outfile << (fabs(phys[i]) < NekConstants::kNekZeroTol ? 0 : phys[i]) << " ";
796  }
797  }
798  outfile << endl;
799  outfile << " </DataArray>" << endl;
800  }
Array< OneD, NekDouble > m_phys
The global expansion evaluated at the quadrature points.
Definition: ExpList.h:1015
Array< OneD, ExpListSharedPtr > m_lines
Vector of ExpList, will be filled with ExpList1D.
static const NekDouble kNekZeroTol
Array< OneD, int > m_phys_offset
Offset of elemental data into the array m_phys.
Definition: ExpList.h:1050

Member Data Documentation

bool Nektar::MultiRegions::ExpListHomogeneous2D::m_dealiasing
private

Definition at line 235 of file ExpListHomogeneous2D.h.

Referenced by ExpListHomogeneous2D().

LibUtilities::NektarFFTSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_FFT_y

Definition at line 135 of file ExpListHomogeneous2D.h.

Referenced by ExpListHomogeneous2D(), and Homogeneous2DTrans().

LibUtilities::NektarFFTSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_FFT_z

Definition at line 136 of file ExpListHomogeneous2D.h.

Referenced by ExpListHomogeneous2D(), and Homogeneous2DTrans().

Homo2DBlockMatrixMapShPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_homogeneous2DBlockMat
protected

Definition at line 155 of file ExpListHomogeneous2D.h.

Referenced by GetHomogeneous2DBlockMatrix().

LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_homogeneousBasis_y
protected
LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_homogeneousBasis_z
protected
NekDouble Nektar::MultiRegions::ExpListHomogeneous2D::m_lhom_y
protected
NekDouble Nektar::MultiRegions::ExpListHomogeneous2D::m_lhom_z
protected
Array<OneD, ExpListSharedPtr> Nektar::MultiRegions::ExpListHomogeneous2D::m_lines
protected

Vector of ExpList, will be filled with ExpList1D.

Definition at line 156 of file ExpListHomogeneous2D.h.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous2D::ContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::DisContField3DHomogeneous2D(), Nektar::MultiRegions::DisContField3DHomogeneous2D::EvaluateBoundaryConditions(), Nektar::MultiRegions::ExpList1DHomogeneous2D::ExpList1DHomogeneous2D(), Nektar::MultiRegions::ExpList3DHomogeneous2D::ExpList3DHomogeneous2D(), ExpListHomogeneous2D(), GenHomogeneous2DBlockMatrix(), Nektar::MultiRegions::DisContField3DHomogeneous2D::GetBoundaryToElmtMap(), Nektar::MultiRegions::ExpList1DHomogeneous2D::GetCoords(), Homogeneous2DTrans(), Nektar::MultiRegions::ExpList1DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous2D::SetCoeffPhys(), Nektar::MultiRegions::DisContField3DHomogeneous2D::SetupBoundaryConditions(), v_AppendFieldData(), v_BwdTrans(), v_BwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_ClearGlobalLinSysManager(), v_DealiasedProd(), v_ExtractDataToCoeffs(), v_FwdTrans(), v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ExpList1DHomogeneous2D::v_GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous2D::v_GetCoords(), v_GetFieldDefinitions(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_GlobalToLocal(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous2D::v_HelmSolve(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_ImposeDirichletConditions(), v_IProductWRTBase(), v_IProductWRTBase_IterPerExp(), Nektar::MultiRegions::ExpList3DHomogeneous2D::v_L2(), Nektar::MultiRegions::ContField3DHomogeneous2D::v_LocalToGlobal(), v_PhysDeriv(), and v_WriteVtkPieceData().

int Nektar::MultiRegions::ExpListHomogeneous2D::m_ny
protected
int Nektar::MultiRegions::ExpListHomogeneous2D::m_nz
protected
LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_paddingBasis_y
protected

Base expansion in y direction.

Definition at line 151 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase().

LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_paddingBasis_z
protected

Base expansion in z direction.

Definition at line 152 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase().

int Nektar::MultiRegions::ExpListHomogeneous2D::m_padsize_y
private

Definition at line 236 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase(), and v_DealiasedProd().

int Nektar::MultiRegions::ExpListHomogeneous2D::m_padsize_z
private

Definition at line 237 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase(), and v_DealiasedProd().

Array<OneD,NekDouble> Nektar::MultiRegions::ExpListHomogeneous2D::m_tmpIN

Definition at line 137 of file ExpListHomogeneous2D.h.

Referenced by Homogeneous2DTrans().

Array<OneD,NekDouble> Nektar::MultiRegions::ExpListHomogeneous2D::m_tmpOUT

Definition at line 138 of file ExpListHomogeneous2D.h.

Referenced by Homogeneous2DTrans().

LibUtilities::TranspositionSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_transposition
bool Nektar::MultiRegions::ExpListHomogeneous2D::m_useFFT
LibUtilities::CommSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_Ycomm

Definition at line 141 of file ExpListHomogeneous2D.h.

Referenced by ExpListHomogeneous2D().

LibUtilities::CommSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::m_Zcomm

Definition at line 142 of file ExpListHomogeneous2D.h.

Referenced by ExpListHomogeneous2D().

DNekMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::MatBwdPAD
private

Definition at line 239 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase().

DNekMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous2D::MatFwdPAD
private

Definition at line 238 of file ExpListHomogeneous2D.h.

Referenced by SetPaddingBase().