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

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

#include <ExpListHomogeneous1D.h>

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

Public Member Functions

 ExpListHomogeneous1D ()
 Default constructor. More...
 
 ExpListHomogeneous1D (const LibUtilities::SessionReaderSharedPtr &pSession, const LibUtilities::BasisKey &HomoBasis, const NekDouble lz, const bool useFFT, const bool dealiasing)
 
 ExpListHomogeneous1D (const ExpListHomogeneous1D &In)
 Copy constructor. More...
 
 ExpListHomogeneous1D (const ExpListHomogeneous1D &In, const std::vector< unsigned int > &eIDs)
 
virtual ~ExpListHomogeneous1D ()
 Destructor. More...
 
void Homogeneous1DTrans (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 DealiasedProd (const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
 
LibUtilities::BasisSharedPtr GetHomogeneousBasis (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)
 
ExpListSharedPtrGetPlane (int n)
 
- 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)
 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 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 LocalToGlobal (void)
 Put the coefficients into global ordering using m_coeffs. More...
 
void GlobalToLocal (void)
 Put the coefficients into local ordering and place in m_coeffs. More...
 
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)
 
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)
 
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 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 ()
 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

LibUtilities::TranspositionSharedPtr m_transposition
 
LibUtilities::CommSharedPtr m_StripZcomm
 
- Public Attributes inherited from Nektar::MultiRegions::ExpList
ExpansionType m_expType
 

Protected Member Functions

DNekBlkMatSharedPtr GenHomogeneous1DBlockMatrix (Homogeneous1DMatType mattype, CoeffState coeffstate=eLocal) const
 
DNekBlkMatSharedPtr GetHomogeneous1DBlockMatrix (Homogeneous1DMatType mattype, CoeffState coeffstate=eLocal) const
 
NekDouble GetSpecVanVisc (const int k)
 
virtual void v_SetHomo1DSpecVanVisc (Array< OneD, NekDouble > visc)
 
virtual int v_GetNumElmts (void)
 
virtual
LibUtilities::BasisSharedPtr 
v_GetHomogeneousBasis (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_ExtractCoeffsToCoeffs (const boost::shared_ptr< ExpList > &fromExpList, const Array< OneD, const NekDouble > &fromCoeffs, Array< OneD, NekDouble > &toCoeffs)
 
virtual void v_WriteVtkPieceData (std::ostream &outfile, int expansion, std::string var)
 
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_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_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)
 
virtual
LibUtilities::TranspositionSharedPtr 
v_GetTransposition (void)
 
virtual Array< OneD, const
unsigned int > 
v_GetZIDs (void)
 
virtual ExpListSharedPtrv_GetPlane (int n)
 
virtual NekDouble v_GetHomoLen (void)
 
- 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)
 
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_Reset ()
 Reset geometry information, metrics, matrix managers and geometry information. More...
 
virtual void v_LocalToGlobal (void)
 
virtual void v_GlobalToLocal (void)
 
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_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)
 
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_GetBoundaryNormals (int i, Array< OneD, Array< OneD, NekDouble > > &normals)
 
virtual void v_ReadGlobalOptimizationParameters ()
 
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 Array< OneD, const
unsigned int > 
v_GetYIDs (void)
 
virtual void v_ClearGlobalLinSysManager (void)
 
void ExtractFileBCs (const std::string &fileName, const std::string &varName, const boost::shared_ptr< ExpList > locExpList)
 

Protected Attributes

bool m_useFFT
 FFT variables. More...
 
LibUtilities::NektarFFTSharedPtr m_FFT
 
LibUtilities::NektarFFTSharedPtr m_FFT_deal
 
Array< OneD, NekDoublem_tmpIN
 
Array< OneD, NekDoublem_tmpOUT
 
LibUtilities::BasisSharedPtr m_homogeneousBasis
 Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m_coeff and m_phys. More...
 
NekDouble m_lhom
 Width of homogeneous direction. More...
 
Homo1DBlockMatrixMapShPtr m_homogeneous1DBlockMat
 
Array< OneD, ExpListSharedPtrm_planes
 
- 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
 

Private Attributes

bool m_dealiasing
 
int m_padsize
 
Array< OneD, NekDoublem_specVanVisc
 Spectral vanishing Viscosity coefficient for stabilisation. More...
 

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 77 of file ExpListHomogeneous1D.h.

Constructor & Destructor Documentation

Nektar::MultiRegions::ExpListHomogeneous1D::ExpListHomogeneous1D ( )

Default constructor.

Definition at line 50 of file ExpListHomogeneous1D.cpp.

50  :
51  ExpList(),
53  m_lhom(1),
54  m_homogeneous1DBlockMat(MemoryManager<Homo1DBlockMatrixMap>::AllocateSharedPtr())
55  {
56  }
ExpList()
The default constructor.
Definition: ExpList.cpp:95
static BasisSharedPtr NullBasisSharedPtr
Definition: Basis.h:358
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Nektar::MultiRegions::ExpListHomogeneous1D::ExpListHomogeneous1D ( const LibUtilities::SessionReaderSharedPtr pSession,
const LibUtilities::BasisKey HomoBasis,
const NekDouble  lz,
const bool  useFFT,
const bool  dealiasing 
)

Definition at line 58 of file ExpListHomogeneous1D.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, m_FFT_deal, m_homogeneousBasis, m_padsize, m_planes, Nektar::MultiRegions::ExpList::m_session, m_StripZcomm, m_transposition, m_useFFT, and Nektar::LibUtilities::NullBasisKey().

59  :
60  ExpList(pSession),
61  m_useFFT(useFFT),
62  m_lhom(lhom),
63  m_homogeneous1DBlockMat(MemoryManager<Homo1DBlockMatrixMap>::AllocateSharedPtr()),
64  m_dealiasing(dealiasing)
65  {
66  ASSERTL2(HomoBasis != LibUtilities::NullBasisKey,"Homogeneous Basis is a null basis");
67 
69 
70  m_StripZcomm = m_session->DefinesSolverInfo("HomoStrip") ?
71  m_comm->GetColumnComm()->GetColumnComm() :
72  m_comm->GetColumnComm();
73 
76 
77  m_planes = Array<OneD,ExpListSharedPtr>(
78  m_homogeneousBasis->GetNumPoints() /
79  m_StripZcomm->GetSize());
80 
81  if(m_useFFT)
82  {
84  "NekFFTW", m_homogeneousBasis->GetNumPoints());
85  }
86 
87  if(m_dealiasing)
88  {
89  if(m_useFFT)
90  {
91  NekDouble size = 1.5*m_homogeneousBasis->GetNumPoints();
92  m_padsize = int(size);
94  .CreateInstance("NekFFTW", m_padsize);
95  }
96  else
97  {
98  ASSERTL0(false, "Dealiasing available just in combination "
99  "with FFTW");
100  }
101  }
102  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:161
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::TranspositionSharedPtr m_transposition
LibUtilities::NektarFFTSharedPtr m_FFT_deal
NekDouble m_lhom
Width of homogeneous direction.
NektarFFTFactory & GetNektarFFTFactory()
Definition: NektarFFT.cpp:69
BasisManagerT & BasisManager(void)
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
double NekDouble
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
#define ASSERTL2(condition, msg)
Assert Level 2 – Debugging which is used FULLDEBUG compilation mode. This level assert is designed t...
Definition: ErrorUtil.hpp:213
static const BasisKey NullBasisKey(eNoBasisType, 0, NullPointsKey)
Defines a null basis with no type or points.
LibUtilities::NektarFFTSharedPtr m_FFT
Nektar::MultiRegions::ExpListHomogeneous1D::ExpListHomogeneous1D ( const ExpListHomogeneous1D In)

Copy constructor.

Parameters
InExpListHomogeneous1D object to copy.

Definition at line 108 of file ExpListHomogeneous1D.cpp.

References m_planes.

108  :
109  ExpList(In,false),
110  m_transposition(In.m_transposition),
111  m_StripZcomm(In.m_StripZcomm),
112  m_useFFT(In.m_useFFT),
113  m_FFT(In.m_FFT),
114  m_tmpIN(In.m_tmpIN),
115  m_tmpOUT(In.m_tmpOUT),
116  m_homogeneousBasis(In.m_homogeneousBasis),
117  m_lhom(In.m_lhom),
118  m_homogeneous1DBlockMat(In.m_homogeneous1DBlockMat),
119  m_dealiasing(In.m_dealiasing),
120  m_padsize(In.m_padsize)
121  {
122  m_planes = Array<OneD, ExpListSharedPtr>(In.m_planes.num_elements());
123  }
ExpList()
The default constructor.
Definition: ExpList.cpp:95
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Array< OneD, ExpListSharedPtr > m_planes
LibUtilities::NektarFFTSharedPtr m_FFT
Nektar::MultiRegions::ExpListHomogeneous1D::ExpListHomogeneous1D ( const ExpListHomogeneous1D In,
const std::vector< unsigned int > &  eIDs 
)

Definition at line 125 of file ExpListHomogeneous1D.cpp.

References m_planes.

126  :
127  ExpList(In,eIDs,false),
128  m_transposition(In.m_transposition),
129  m_useFFT(In.m_useFFT),
130  m_FFT(In.m_FFT),
131  m_tmpIN(In.m_tmpIN),
132  m_tmpOUT(In.m_tmpOUT),
133  m_homogeneousBasis(In.m_homogeneousBasis),
134  m_lhom(In.m_lhom),
135  m_homogeneous1DBlockMat(MemoryManager<Homo1DBlockMatrixMap>::AllocateSharedPtr()),
136  m_dealiasing(In.m_dealiasing),
137  m_padsize(In.m_padsize)
138  {
139  m_planes = Array<OneD, ExpListSharedPtr>(In.m_planes.num_elements());
140  }
ExpList()
The default constructor.
Definition: ExpList.cpp:95
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Array< OneD, ExpListSharedPtr > m_planes
LibUtilities::NektarFFTSharedPtr m_FFT
Nektar::MultiRegions::ExpListHomogeneous1D::~ExpListHomogeneous1D ( )
virtual

Destructor.

Destructor

Definition at line 145 of file ExpListHomogeneous1D.cpp.

146  {
147  }

Member Function Documentation

void Nektar::MultiRegions::ExpListHomogeneous1D::DealiasedProd ( const Array< OneD, NekDouble > &  inarray1,
const Array< OneD, NekDouble > &  inarray2,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
inline

Definition at line 300 of file ExpListHomogeneous1D.h.

References v_DealiasedProd().

304  {
305  v_DealiasedProd(inarray1,inarray2,outarray,coeffstate);
306  }
virtual void v_DealiasedProd(const Array< OneD, NekDouble > &inarray1, const Array< OneD, NekDouble > &inarray2, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal)
DNekBlkMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::GenHomogeneous1DBlockMatrix ( Homogeneous1DMatType  mattype,
CoeffState  coeffstate = eLocal 
) const
protected

Definition at line 526 of file ExpListHomogeneous1D.cpp.

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::MultiRegions::eBackwardsCoeffSpace1D, Nektar::StdRegions::eBwdTrans, Nektar::eDIAGONAL, Nektar::MultiRegions::eForwardsCoeffSpace1D, Nektar::MultiRegions::eForwardsPhysSpace1D, Nektar::LibUtilities::eFourierHalfModeIm, Nektar::LibUtilities::eFourierHalfModeRe, Nektar::StdRegions::eFwdTrans, Nektar::MultiRegions::ExpList::m_comm, m_homogeneousBasis, and m_planes.

Referenced by GetHomogeneous1DBlockMatrix().

527  {
528  DNekMatSharedPtr loc_mat;
529  DNekBlkMatSharedPtr BlkMatrix;
530  int n_exp = 0;
531  int num_trans_per_proc = 0;
532 
533  if((mattype == eForwardsCoeffSpace1D)
534  ||(mattype == eBackwardsCoeffSpace1D)) // will operate on m_coeffs
535  {
536  n_exp = m_planes[0]->GetNcoeffs();
537  }
538  else
539  {
540  n_exp = m_planes[0]->GetTotPoints(); // will operatore on m_phys
541  }
542 
543  num_trans_per_proc = n_exp/m_comm->GetColumnComm()->GetSize() + (n_exp%m_comm->GetColumnComm()->GetSize() > 0);
544 
545  Array<OneD,unsigned int> nrows(num_trans_per_proc);
546  Array<OneD,unsigned int> ncols(num_trans_per_proc);
547 
548  if((mattype == eForwardsCoeffSpace1D)||(mattype == eForwardsPhysSpace1D))
549  {
550  nrows = Array<OneD, unsigned int>(num_trans_per_proc,m_homogeneousBasis->GetNumModes());
551  ncols = Array<OneD, unsigned int>(num_trans_per_proc,m_homogeneousBasis->GetNumPoints());
552  }
553  else
554  {
555  nrows = Array<OneD, unsigned int>(num_trans_per_proc,m_homogeneousBasis->GetNumPoints());
556  ncols = Array<OneD, unsigned int>(num_trans_per_proc,m_homogeneousBasis->GetNumModes());
557  }
558 
559  MatrixStorage blkmatStorage = eDIAGONAL;
560  BlkMatrix = MemoryManager<DNekBlkMat>
561  ::AllocateSharedPtr(nrows,ncols,blkmatStorage);
562 
563  //Half Mode
565  {
566  StdRegions::StdPointExp StdPoint(m_homogeneousBasis->GetBasisKey());
567 
568  if((mattype == eForwardsCoeffSpace1D)||(mattype == eForwardsPhysSpace1D))
569  {
570  StdRegions::StdMatrixKey matkey(StdRegions::eFwdTrans,
571  StdPoint.DetShapeType(),
572  StdPoint);
573 
574  loc_mat = StdPoint.GetStdMatrix(matkey);
575  }
576  else
577  {
578  StdRegions::StdMatrixKey matkey(StdRegions::eBwdTrans,
579  StdPoint.DetShapeType(),
580  StdPoint);
581 
582  loc_mat = StdPoint.GetStdMatrix(matkey);
583  }
584  }
585  //other cases
586  else
587  {
588  StdRegions::StdSegExp StdSeg(m_homogeneousBasis->GetBasisKey());
589 
590  if((mattype == eForwardsCoeffSpace1D)||(mattype == eForwardsPhysSpace1D))
591  {
592  StdRegions::StdMatrixKey matkey(StdRegions::eFwdTrans,
593  StdSeg.DetShapeType(),
594  StdSeg);
595 
596  loc_mat = StdSeg.GetStdMatrix(matkey);
597  }
598  else
599  {
600  StdRegions::StdMatrixKey matkey(StdRegions::eBwdTrans,
601  StdSeg.DetShapeType(),
602  StdSeg);
603 
604  loc_mat = StdSeg.GetStdMatrix(matkey);
605  }
606 
607  }
608 
609  // set up array of block matrices.
610  for(int i = 0; i < num_trans_per_proc; ++i)
611  {
612  BlkMatrix->SetBlock(i,i,loc_mat);
613  }
614 
615  return BlkMatrix;
616  }
static boost::shared_ptr< DataType > AllocateSharedPtr()
Allocate a shared pointer from the memory pool.
boost::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:70
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Fourier Modified expansions with just the real part of the first mode .
Definition: BasisType.h:59
Array< OneD, ExpListSharedPtr > m_planes
Fourier Modified expansions with just the imaginary part of the first mode .
Definition: BasisType.h:60
boost::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
Definition: NekTypeDefs.hpp:72
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
DNekBlkMatSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::GetHomogeneous1DBlockMatrix ( Homogeneous1DMatType  mattype,
CoeffState  coeffstate = eLocal 
) const
protected

Definition at line 510 of file ExpListHomogeneous1D.cpp.

References GenHomogeneous1DBlockMatrix(), Nektar::iterator, and m_homogeneous1DBlockMat.

Referenced by Homogeneous1DTrans().

511  {
512  Homo1DBlockMatrixMap::iterator matrixIter = m_homogeneous1DBlockMat->find(mattype);
513 
514  if(matrixIter == m_homogeneous1DBlockMat->end())
515  {
516  return ((*m_homogeneous1DBlockMat)[mattype] =
517  GenHomogeneous1DBlockMatrix(mattype,coeffstate));
518  }
519  else
520  {
521  return matrixIter->second;
522  }
523  }
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
DNekBlkMatSharedPtr GenHomogeneous1DBlockMatrix(Homogeneous1DMatType mattype, CoeffState coeffstate=eLocal) const
LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::GetHomogeneousBasis ( void  )
inline

Definition at line 120 of file ExpListHomogeneous1D.h.

References m_homogeneousBasis.

Referenced by v_GetHomogeneousBasis().

121  {
122  return m_homogeneousBasis;
123  }
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
ExpListSharedPtr& Nektar::MultiRegions::ExpListHomogeneous1D::GetPlane ( int  n)
inline

Definition at line 134 of file ExpListHomogeneous1D.h.

References m_planes.

Referenced by v_GetPlane().

135  {
136  return m_planes[n];
137  }
Array< OneD, ExpListSharedPtr > m_planes
NekDouble Nektar::MultiRegions::ExpListHomogeneous1D::GetSpecVanVisc ( const int  k)
inlineprotected

Definition at line 165 of file ExpListHomogeneous1D.h.

References m_specVanVisc.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous1D::v_HelmSolve(), and Nektar::MultiRegions::DisContField3DHomogeneous1D::v_HelmSolve().

166  {
167  NekDouble returnval = 0.0;
168 
169  if(m_specVanVisc.num_elements())
170  {
171  returnval = m_specVanVisc[k];
172  }
173 
174  return returnval;
175  }
Array< OneD, NekDouble > m_specVanVisc
Spectral vanishing Viscosity coefficient for stabilisation.
double NekDouble
void Nektar::MultiRegions::ExpListHomogeneous1D::Homogeneous1DTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
bool  IsForwards,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)

Homogeneous transform Bwd/Fwd (MVM and FFT)

Definition at line 377 of file ExpListHomogeneous1D.cpp.

References Nektar::MultiRegions::eBackwardsCoeffSpace1D, Nektar::MultiRegions::eBackwardsPhysSpace1D, Nektar::MultiRegions::eForwardsCoeffSpace1D, Nektar::MultiRegions::eForwardsPhysSpace1D, Nektar::eWrapper, Nektar::LibUtilities::eXYtoZ, Nektar::LibUtilities::eZtoXY, GetHomogeneous1DBlockMatrix(), Nektar::MultiRegions::ExpList::m_comm, m_FFT, m_homogeneousBasis, Nektar::MultiRegions::ExpList::m_npoints, m_planes, Nektar::MultiRegions::ExpList::m_session, m_StripZcomm, m_tmpIN, m_tmpOUT, m_transposition, m_useFFT, and Vmath::Vcopy().

Referenced by v_HomogeneousBwdTrans(), and v_HomogeneousFwdTrans().

382  {
383  int num_dofs;
384 
385  if(IsForwards)
386  {
387  num_dofs = inarray.num_elements();
388  }
389  else
390  {
391  num_dofs = outarray.num_elements();
392  }
393 
394  if(m_useFFT)
395  {
396  int num_points_per_plane = num_dofs/m_planes.num_elements();
397  int num_dfts_per_proc;
398  if(!m_session->DefinesSolverInfo("HomoStrip"))
399  {
400  int nP = m_comm->GetColumnComm()->GetSize();
401  num_dfts_per_proc = num_points_per_plane / nP
402  + (num_points_per_plane % nP > 0);
403  }
404  else
405  {
406  int nP = m_StripZcomm->GetSize();
407  num_dfts_per_proc = num_points_per_plane / nP
408  + (num_points_per_plane % nP > 0);
409  }
410 
411  Array<OneD, NekDouble> fft_in (num_dfts_per_proc*m_homogeneousBasis->GetNumPoints(),0.0);
412  Array<OneD, NekDouble> fft_out(num_dfts_per_proc*m_homogeneousBasis->GetNumPoints(),0.0);
413 
414  if(Shuff)
415  {
416  m_transposition->Transpose(inarray,fft_in,false,LibUtilities::eXYtoZ);
417  }
418  else
419  {
420  Vmath::Vcopy(num_dfts_per_proc*m_homogeneousBasis->GetNumPoints(),
421  inarray,1,fft_in,1);
422  }
423 
424  if(IsForwards)
425  {
426  for(int i = 0 ; i < num_dfts_per_proc ; i++)
427  {
428  m_FFT->FFTFwdTrans(m_tmpIN = fft_in + i*m_homogeneousBasis->GetNumPoints(), m_tmpOUT = fft_out + i*m_homogeneousBasis->GetNumPoints());
429  }
430  }
431  else
432  {
433  for(int i = 0 ; i < num_dfts_per_proc ; i++)
434  {
435  m_FFT->FFTBwdTrans(m_tmpIN = fft_in + i*m_homogeneousBasis->GetNumPoints(), m_tmpOUT = fft_out + i*m_homogeneousBasis->GetNumPoints());
436  }
437  }
438 
439  if(UnShuff)
440  {
441  m_transposition->Transpose(fft_out,outarray,false,LibUtilities::eZtoXY);
442  }
443  else
444  {
445  Vmath::Vcopy(num_dfts_per_proc*m_homogeneousBasis->GetNumPoints(),
446  fft_out,1,outarray,1);
447  }
448  }
449  else
450  {
451  DNekBlkMatSharedPtr blkmat;
452 
453  if(num_dofs == m_npoints) //transform phys space
454  {
455  if(IsForwards)
456  {
458  }
459  else
460  {
462  }
463  }
464  else
465  {
466  if(IsForwards)
467  {
469  }
470  else
471  {
473  }
474  }
475 
476  int nrows = blkmat->GetRows();
477  int ncols = blkmat->GetColumns();
478 
479  Array<OneD, NekDouble> sortedinarray(ncols,0.0);
480  Array<OneD, NekDouble> sortedoutarray(nrows,0.0);
481 
482  if(Shuff)
483  {
484  m_transposition->Transpose(inarray,sortedinarray,!IsForwards,LibUtilities::eXYtoZ);
485  }
486  else
487  {
488  Vmath::Vcopy(ncols,inarray,1,sortedinarray,1);
489  }
490 
491  // Create NekVectors from the given data arrays
492  NekVector<NekDouble> in (ncols,sortedinarray,eWrapper);
493  NekVector<NekDouble> out(nrows,sortedoutarray,eWrapper);
494 
495  // Perform matrix-vector multiply.
496  out = (*blkmat)*in;
497 
498  if(UnShuff)
499  {
500  m_transposition->Transpose(sortedoutarray,outarray,IsForwards,LibUtilities::eZtoXY);
501  }
502  else
503  {
504  Vmath::Vcopy(nrows,sortedoutarray,1,outarray,1);
505  }
506 
507  }
508  }
DNekBlkMatSharedPtr GetHomogeneous1DBlockMatrix(Homogeneous1DMatType mattype, CoeffState coeffstate=eLocal) const
LibUtilities::TranspositionSharedPtr m_transposition
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
boost::shared_ptr< DNekBlkMat > DNekBlkMatSharedPtr
Definition: NekTypeDefs.hpp:72
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1047
LibUtilities::NektarFFTSharedPtr m_FFT
void Nektar::MultiRegions::ExpListHomogeneous1D::HomogeneousBwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Definition at line 291 of file ExpListHomogeneous1D.h.

References v_HomogeneousBwdTrans().

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

296  {
297  v_HomogeneousBwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
298  }
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::ExpListHomogeneous1D::HomogeneousFwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal,
bool  Shuff = true,
bool  UnShuff = true 
)
inline

Definition at line 282 of file ExpListHomogeneous1D.h.

References v_HomogeneousFwdTrans().

Referenced by v_DealiasedProd(), v_FwdTrans(), v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_HelmSolve(), and v_PhysDeriv().

287  {
288  v_HomogeneousFwdTrans(inarray,outarray,coeffstate,Shuff,UnShuff);
289  }
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::ExpListHomogeneous1D::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 1149 of file ExpListHomogeneous1D.cpp.

References v_PhysDeriv().

1154  {
1155  v_PhysDeriv(inarray,out_d0,out_d1,out_d2);
1156  }
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::ExpListHomogeneous1D::PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)

Definition at line 1158 of file ExpListHomogeneous1D.cpp.

References v_PhysDeriv().

1161  {
1162  v_PhysDeriv(edir,inarray,out_d);
1163  }
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::ExpListHomogeneous1D::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 724 of file ExpListHomogeneous1D.cpp.

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

725  {
726  v_AppendFieldData(fielddef,fielddata,m_coeffs);
727  }
Array< OneD, NekDouble > m_coeffs
Concatenation of all local expansion coefficients.
Definition: ExpList.h:939
virtual void v_AppendFieldData(LibUtilities::FieldDefinitionsSharedPtr &fielddef, std::vector< NekDouble > &fielddata)
void Nektar::MultiRegions::ExpListHomogeneous1D::v_AppendFieldData ( LibUtilities::FieldDefinitionsSharedPtr fielddef,
std::vector< NekDouble > &  fielddata,
Array< OneD, NekDouble > &  coeffs 
)
protectedvirtual

This routine appends the data from the expansion list into the output format where each element is given by looping over its Fourier modes where as data in the expandion is stored with all consecutive elements and then the Fourier modes

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 699 of file ExpListHomogeneous1D.cpp.

References Nektar::MultiRegions::ExpList::m_coeff_offset, and m_planes.

700  {
701  int i,n;
702  int ncoeffs_per_plane = m_planes[0]->GetNcoeffs();
703 
704  // Determine mapping from element ids to location in
705  // expansion list
706  map<int, int> ElmtID_to_ExpID;
707  for(i = 0; i < m_planes[0]->GetExpSize(); ++i)
708  {
709  ElmtID_to_ExpID[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
710  }
711 
712  for(i = 0; i < fielddef->m_elementIDs.size(); ++i)
713  {
714  int eid = ElmtID_to_ExpID[fielddef->m_elementIDs[i]];
715  int datalen = (*m_exp)[eid]->GetNcoeffs();
716 
717  for(n = 0; n < m_planes.num_elements(); ++n)
718  {
719  fielddata.insert(fielddata.end(),&coeffs[m_coeff_offset[eid]+n*ncoeffs_per_plane],&coeffs[m_coeff_offset[eid]+n*ncoeffs_per_plane]+datalen);
720  }
721  }
722  }
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
Definition: ExpList.h:988
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::v_BwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Backward transform

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 301 of file ExpListHomogeneous1D.cpp.

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

302  {
303  int cnt = 0, cnt1 = 0;
304  Array<OneD, NekDouble> tmparray;
305 
306  for(int n = 0; n < m_planes.num_elements(); ++n)
307  {
308  m_planes[n]->BwdTrans(inarray+cnt, tmparray = outarray + cnt1,
309  coeffstate);
310  cnt += m_planes[n]->GetNcoeffs();
311  cnt1 += m_planes[n]->GetTotPoints();
312  }
313  if(!m_WaveSpace)
314  {
315  HomogeneousBwdTrans(outarray,outarray);
316  }
317  }
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::v_BwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Backward transform element by element

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 322 of file ExpListHomogeneous1D.cpp.

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

323  {
324  int cnt = 0, cnt1 = 0;
325  Array<OneD, NekDouble> tmparray;
326 
327  for(int n = 0; n < m_planes.num_elements(); ++n)
328  {
329  m_planes[n]->BwdTrans_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
330 
331  cnt += m_planes[n]->GetNcoeffs();
332  cnt1 += m_planes[n]->GetTotPoints();
333  }
334  if(!m_WaveSpace)
335  {
336  HomogeneousBwdTrans(outarray,outarray);
337  }
338  }
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::v_DealiasedProd ( const Array< OneD, NekDouble > &  inarray1,
const Array< OneD, NekDouble > &  inarray2,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate = eLocal 
)
protectedvirtual

Dealiasing routine

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 172 of file ExpListHomogeneous1D.cpp.

References Nektar::LibUtilities::eXYtoZ, Nektar::LibUtilities::eZtoXY, HomogeneousBwdTrans(), HomogeneousFwdTrans(), Nektar::MultiRegions::ExpList::m_comm, m_FFT_deal, m_homogeneousBasis, m_padsize, m_planes, Nektar::MultiRegions::ExpList::m_session, m_StripZcomm, m_transposition, Vmath::Vcopy(), and Vmath::Vmul().

Referenced by DealiasedProd().

176  {
177  // inarray1 = first term of the product in full physical space
178  // inarray2 = second term of the product in full physical space
179  // dealiased product stored in outarray
180 
181  int num_dofs = inarray1.num_elements();
182 
183  int N = m_homogeneousBasis->GetNumPoints();
184 
185  Array<OneD, NekDouble> V1(num_dofs);
186  Array<OneD, NekDouble> V2(num_dofs);
187  Array<OneD, NekDouble> V1V2(num_dofs);
188 
189  HomogeneousFwdTrans(inarray1,V1,coeffstate);
190  HomogeneousFwdTrans(inarray2,V2,coeffstate);
191 
192  int num_points_per_plane = num_dofs/m_planes.num_elements();
193  int num_proc;
194  if(!m_session->DefinesSolverInfo("HomoStrip"))
195  {
196  num_proc = m_comm->GetColumnComm()->GetSize();
197  }
198  else
199  {
200  num_proc = m_StripZcomm->GetSize();
201  }
202  int num_dfts_per_proc = num_points_per_plane / num_proc
203  + (num_points_per_plane % num_proc > 0);
204 
205  Array<OneD, NekDouble> ShufV1(num_dfts_per_proc*N,0.0);
206  Array<OneD, NekDouble> ShufV2(num_dfts_per_proc*N,0.0);
207  Array<OneD, NekDouble> ShufV1V2(num_dfts_per_proc*N,0.0);
208 
209  Array<OneD, NekDouble> ShufV1_PAD_coef(m_padsize,0.0);
210  Array<OneD, NekDouble> ShufV2_PAD_coef(m_padsize,0.0);
211  Array<OneD, NekDouble> ShufV1_PAD_phys(m_padsize,0.0);
212  Array<OneD, NekDouble> ShufV2_PAD_phys(m_padsize,0.0);
213 
214  Array<OneD, NekDouble> ShufV1V2_PAD_coef(m_padsize,0.0);
215  Array<OneD, NekDouble> ShufV1V2_PAD_phys(m_padsize,0.0);
216 
217  m_transposition->Transpose(V1, ShufV1, false, LibUtilities::eXYtoZ);
218  m_transposition->Transpose(V2, ShufV2, false, LibUtilities::eXYtoZ);
219 
220  // Looping on the pencils
221  for(int i = 0 ; i < num_dfts_per_proc ; i++)
222  {
223  // Copying the i-th pencil pf lenght N into a bigger
224  // pencil of lenght 2N We are in Fourier space
225  Vmath::Vcopy(N, &(ShufV1[i*N]), 1, &(ShufV1_PAD_coef[0]), 1);
226  Vmath::Vcopy(N, &(ShufV2[i*N]), 1, &(ShufV2_PAD_coef[0]), 1);
227 
228  // Moving to physical space using the padded system
229  m_FFT_deal->FFTBwdTrans(ShufV1_PAD_coef, ShufV1_PAD_phys);
230  m_FFT_deal->FFTBwdTrans(ShufV2_PAD_coef, ShufV2_PAD_phys);
231 
232  // Perfroming the vectors multiplication in physical space on
233  // the padded system
234  Vmath::Vmul(m_padsize, ShufV1_PAD_phys, 1,
235  ShufV2_PAD_phys, 1,
236  ShufV1V2_PAD_phys, 1);
237 
238  // Moving back the result (V1*V2)_phys in Fourier space, padded
239  // system
240  m_FFT_deal->FFTFwdTrans(ShufV1V2_PAD_phys, ShufV1V2_PAD_coef);
241 
242  // Copying the first half of the padded pencil in the full
243  // vector (Fourier space)
244  Vmath::Vcopy(N, &(ShufV1V2_PAD_coef[0]), 1,
245  &(ShufV1V2[i*N]), 1);
246  }
247 
248  m_transposition->Transpose(ShufV1V2, V1V2, false,
250 
251  // Moving the results in physical space for the output
252  HomogeneousBwdTrans(V1V2, outarray, coeffstate);
253  }
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
LibUtilities::TranspositionSharedPtr m_transposition
LibUtilities::NektarFFTSharedPtr m_FFT_deal
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1047
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:169
void Nektar::MultiRegions::ExpListHomogeneous1D::v_ExtractCoeffsToCoeffs ( const boost::shared_ptr< ExpList > &  fromExpList,
const Array< OneD, const NekDouble > &  fromCoeffs,
Array< OneD, NekDouble > &  toCoeffs 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 847 of file ExpListHomogeneous1D.cpp.

References m_planes.

849  {
850  int i;
851  int fromNcoeffs_per_plane = fromExpList->GetPlane(0)->GetNcoeffs();
852  int toNcoeffs_per_plane = m_planes[0]->GetNcoeffs();
853  Array<OneD, NekDouble> tocoeffs_tmp, fromcoeffs_tmp;
854 
855  for(i = 0; i < m_planes.num_elements(); ++i)
856  {
857  m_planes[i]->ExtractCoeffsToCoeffs(fromExpList->GetPlane(i),fromcoeffs_tmp = fromCoeffs + fromNcoeffs_per_plane*i, tocoeffs_tmp = toCoeffs + toNcoeffs_per_plane*i);
858  }
859  }
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::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 730 of file ExpListHomogeneous1D.cpp.

References Nektar::LibUtilities::GetNumberOfCoefficients(), Nektar::iterator, Nektar::MultiRegions::ExpList::m_coeff_offset, Nektar::MultiRegions::ExpList::m_exp, m_planes, m_transposition, and Vmath::Vcopy().

735  {
736  int i,n;
737  int offset = 0;
738  int nzmodes = 1;
739  int datalen = fielddata.size()/fielddef->m_fields.size();
740  std::vector<unsigned int> fieldDefHomoZids;
741 
742 
743  // Find data location according to field definition
744  for(i = 0; i < fielddef->m_fields.size(); ++i)
745  {
746  if(fielddef->m_fields[i] == field)
747  {
748  break;
749  }
750  offset += datalen;
751  }
752 
753  if(i == fielddef->m_fields.size())
754  {
755  cout << "Field "<< field<< "not found in data file. " << endl;
756  }
757  else
758  {
759 
760  int modes_offset = 0;
761  int planes_offset = 0;
762  Array<OneD, NekDouble> coeff_tmp;
764 
765  // Build map of plane IDs lying on this processor.
766  std::map<int,int> homoZids;
767  for (i = 0; i < m_planes.num_elements(); ++i)
768  {
769  homoZids[m_transposition->GetPlaneID(i)] = i;
770  }
771 
772  if(fielddef->m_numHomogeneousDir)
773  {
774  nzmodes = fielddef->m_homogeneousZIDs.size();
775  fieldDefHomoZids = fielddef->m_homogeneousZIDs;
776  }
777  else // input file is 2D and so set nzmodes to 1
778  {
779  nzmodes = 1;
780  fieldDefHomoZids.push_back(0);
781  }
782 
783  // Determine mapping from element ids to location in expansion list.
784  map<int, int> ElmtID_to_ExpID;
785  for(i = 0; i < m_planes[0]->GetExpSize(); ++i)
786  {
787  ElmtID_to_ExpID[(*m_exp)[i]->GetGeom()->GetGlobalID()] = i;
788  }
789 
790 
791  // calculate number of modes in the current partition
792  int ncoeffs_per_plane = m_planes[0]->GetNcoeffs();
793 
794  for(i = 0; i < fielddef->m_elementIDs.size(); ++i)
795  {
796  if(fielddef->m_uniOrder == true) // reset modes_offset to zero
797  {
798  modes_offset = 0;
799  }
800 
801  int datalen = LibUtilities::GetNumberOfCoefficients(fielddef->m_shapeType,
802  fielddef->m_numModes,
803  modes_offset);
804 
805  it = ElmtID_to_ExpID.find(fielddef->m_elementIDs[i]);
806 
807  // ensure element is on this partition for parallel case.
808  if(it == ElmtID_to_ExpID.end())
809  {
810  // increase offset for correct FieldData access
811  offset += datalen*nzmodes;
812  modes_offset += (*m_exp)[0]->GetNumBases() +
813  fielddef->m_numHomogeneousDir;
814  continue;
815  }
816 
817  int eid = it->second;
818 
819 
820  for(n = 0; n < nzmodes; ++n, offset += datalen)
821  {
822 
823  it = homoZids.find(fieldDefHomoZids[n]);
824 
825  // Check to make sure this mode number lies in this field.
826  if (it == homoZids.end())
827  {
828  continue;
829  }
830 
831  planes_offset = it->second;
832  if(datalen == (*m_exp)[eid]->GetNcoeffs())
833  {
834  Vmath::Vcopy(datalen,&fielddata[offset],1,&coeffs[m_coeff_offset[eid]+planes_offset*ncoeffs_per_plane],1);
835  }
836  else // unpack data to new order
837  {
838  (*m_exp)[eid]->ExtractDataToCoeffs(&fielddata[offset], fielddef->m_numModes,modes_offset,&coeffs[m_coeff_offset[eid] + planes_offset*ncoeffs_per_plane]);
839  }
840  }
841  modes_offset += (*m_exp)[0]->GetNumBases() + fielddef->m_numHomogeneousDir;
842  }
843  }
844  }
LibUtilities::TranspositionSharedPtr m_transposition
int GetNumberOfCoefficients(ShapeType shape, std::vector< unsigned int > &modes, int offset)
Definition: ShapeType.hpp:312
Array< OneD, int > m_coeff_offset
Offset of elemental data into the array m_coeffs.
Definition: ExpList.h:988
boost::shared_ptr< LocalRegions::ExpansionVector > m_exp
The list of local expansions.
Definition: ExpList.h:977
Array< OneD, ExpListSharedPtr > m_planes
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
Definition: Vmath.cpp:1047
void Nektar::MultiRegions::ExpListHomogeneous1D::v_FwdTrans ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Forward transform

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 258 of file ExpListHomogeneous1D.cpp.

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

259  {
260  int cnt = 0, cnt1 = 0;
261  Array<OneD, NekDouble> tmparray;
262 
263  for(int n = 0; n < m_planes.num_elements(); ++n)
264  {
265  m_planes[n]->FwdTrans(inarray+cnt, tmparray = outarray + cnt1,
266  coeffstate);
267  cnt += m_planes[n]->GetTotPoints();
268 
269  cnt1 += m_planes[n]->GetNcoeffs(); // need to skip ncoeffs
270  }
271  if(!m_WaveSpace)
272  {
273  HomogeneousFwdTrans(outarray,outarray,coeffstate);
274  }
275  }
Array< OneD, ExpListSharedPtr > m_planes
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous1D::v_FwdTrans_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Forward transform element by element

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 280 of file ExpListHomogeneous1D.cpp.

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

281  {
282  int cnt = 0, cnt1 = 0;
283  Array<OneD, NekDouble> tmparray;
284 
285  //spectral element FwdTrans plane by plane
286  for(int n = 0; n < m_planes.num_elements(); ++n)
287  {
288  m_planes[n]->FwdTrans_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
289  cnt += m_planes[n]->GetTotPoints();
290  cnt1 += m_planes[n]->GetNcoeffs();
291  }
292  if(!m_WaveSpace)
293  {
294  HomogeneousFwdTrans(outarray,outarray);
295  }
296  }
Array< OneD, ExpListSharedPtr > m_planes
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
std::vector< LibUtilities::FieldDefinitionsSharedPtr > Nektar::MultiRegions::ExpListHomogeneous1D::v_GetFieldDefinitions ( void  )
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 618 of file ExpListHomogeneous1D.cpp.

References Nektar::LibUtilities::eFourierSingleMode, m_homogeneousBasis, m_lhom, m_planes, Nektar::MultiRegions::ExpList::m_session, and m_transposition.

619  {
620  std::vector<LibUtilities::FieldDefinitionsSharedPtr> returnval;
621 
622  // Set up Homogeneous length details.
623  Array<OneD,LibUtilities::BasisSharedPtr> HomoBasis(1,m_homogeneousBasis);
624 
625  std::vector<NekDouble> HomoLen;
626  HomoLen.push_back(m_lhom);
627 
628  std::vector<unsigned int> StripsIDs;
629 
630  bool strips;
631  m_session->MatchSolverInfo("HomoStrip","True",strips,false);
632  if (strips)
633  {
634  StripsIDs.push_back(m_transposition->GetStripID());
635  }
636 
637  std::vector<unsigned int> PlanesIDs;
638  int IDoffset = 0;
639 
640  // introduce a 2 plane offset for single mode case so can
641  // be post-processed or used in MultiMode expansion.
643  {
644  IDoffset = 2;
645  }
646 
647  for(int i = 0; i < m_planes.num_elements(); i++)
648  {
649  PlanesIDs.push_back(m_transposition->GetPlaneID(i)+IDoffset);
650  }
651 
652  m_planes[0]->GeneralGetFieldDefinitions(returnval, 1, HomoBasis,
653  HomoLen, strips, StripsIDs, PlanesIDs);
654  return returnval;
655  }
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
Fourier ModifiedExpansion with just the first mode .
Definition: BasisType.h:58
void Nektar::MultiRegions::ExpListHomogeneous1D::v_GetFieldDefinitions ( std::vector< LibUtilities::FieldDefinitionsSharedPtr > &  fielddef)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 657 of file ExpListHomogeneous1D.cpp.

References Nektar::LibUtilities::eFourierSingleMode, m_homogeneousBasis, m_lhom, m_planes, Nektar::MultiRegions::ExpList::m_session, and m_transposition.

658  {
659  // Set up Homogeneous length details.
660  Array<OneD,LibUtilities::BasisSharedPtr> HomoBasis(1,m_homogeneousBasis);
661 
662  std::vector<NekDouble> HomoLen;
663  HomoLen.push_back(m_lhom);
664 
665  std::vector<unsigned int> StripsIDs;
666 
667  bool strips;
668  m_session->MatchSolverInfo("HomoStrip","True",strips,false);
669  if (strips)
670  {
671  StripsIDs.push_back(m_transposition->GetStripID());
672  }
673 
674  std::vector<unsigned int> PlanesIDs;
675  int IDoffset = 0;
676 
678  {
679  IDoffset = 2;
680  }
681 
682  for(int i = 0; i < m_planes.num_elements(); i++)
683  {
684  PlanesIDs.push_back(m_transposition->GetPlaneID(i)+IDoffset);
685  }
686 
687  // enforce NumHomoDir == 1 by direct call
688  m_planes[0]->GeneralGetFieldDefinitions(fielddef, 1, HomoBasis,
689  HomoLen, strips, StripsIDs, PlanesIDs);
690  }
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
Fourier ModifiedExpansion with just the first mode .
Definition: BasisType.h:58
virtual LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::v_GetHomogeneousBasis ( void  )
inlineprotectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 188 of file ExpListHomogeneous1D.h.

References GetHomogeneousBasis().

189  {
190  return GetHomogeneousBasis();
191  }
LibUtilities::BasisSharedPtr GetHomogeneousBasis(void)
NekDouble Nektar::MultiRegions::ExpListHomogeneous1D::v_GetHomoLen ( void  )
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 1170 of file ExpListHomogeneous1D.cpp.

References m_lhom.

1171  {
1172  return m_lhom;
1173  }
NekDouble m_lhom
Width of homogeneous direction.
virtual int Nektar::MultiRegions::ExpListHomogeneous1D::v_GetNumElmts ( void  )
inlineprotectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 183 of file ExpListHomogeneous1D.h.

184  {
185  return m_planes[0]->GetExpSize();
186  }
Array< OneD, ExpListSharedPtr > m_planes
virtual ExpListSharedPtr& Nektar::MultiRegions::ExpListHomogeneous1D::v_GetPlane ( int  n)
inlineprotectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 265 of file ExpListHomogeneous1D.h.

References GetPlane().

266  {
267  return GetPlane(n);
268  }
LibUtilities::TranspositionSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::v_GetTransposition ( void  )
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 1165 of file ExpListHomogeneous1D.cpp.

References m_transposition.

1166  {
1167  return m_transposition;
1168  }
LibUtilities::TranspositionSharedPtr m_transposition
Array< OneD, const unsigned int > Nektar::MultiRegions::ExpListHomogeneous1D::v_GetZIDs ( void  )
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 1175 of file ExpListHomogeneous1D.cpp.

References m_transposition.

1176  {
1177  return m_transposition->GetPlanesIDs();
1178  }
LibUtilities::TranspositionSharedPtr m_transposition
void Nektar::MultiRegions::ExpListHomogeneous1D::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 159 of file ExpListHomogeneous1D.cpp.

References Homogeneous1DTrans().

Referenced by HomogeneousBwdTrans().

164  {
165  // Backwards trans
166  Homogeneous1DTrans(inarray,outarray,false,coeffstate,Shuff,UnShuff);
167  }
void Homogeneous1DTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool IsForwards, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous1D::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 149 of file ExpListHomogeneous1D.cpp.

References Homogeneous1DTrans().

Referenced by HomogeneousFwdTrans().

154  {
155  // Forwards trans
156  Homogeneous1DTrans(inarray,outarray,true,coeffstate,Shuff,UnShuff);
157  }
void Homogeneous1DTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool IsForwards, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
void Nektar::MultiRegions::ExpListHomogeneous1D::v_IProductWRTBase ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray,
CoeffState  coeffstate 
)
protectedvirtual

Inner product

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 343 of file ExpListHomogeneous1D.cpp.

References m_planes.

344  {
345  int cnt = 0, cnt1 = 0;
346  Array<OneD, NekDouble> tmparray;
347 
348  for(int n = 0; n < m_planes.num_elements(); ++n)
349  {
350  m_planes[n]->IProductWRTBase(inarray+cnt, tmparray = outarray + cnt1,coeffstate);
351 
352  cnt1 += m_planes[n]->GetNcoeffs();
353  cnt += m_planes[n]->GetTotPoints();
354  }
355  }
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::v_IProductWRTBase_IterPerExp ( const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Inner product element by element

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 360 of file ExpListHomogeneous1D.cpp.

References m_planes.

361  {
362  int cnt = 0, cnt1 = 0;
363  Array<OneD, NekDouble> tmparray;
364 
365  for(int n = 0; n < m_planes.num_elements(); ++n)
366  {
367  m_planes[n]->IProductWRTBase_IterPerExp(inarray+cnt, tmparray = outarray + cnt1);
368 
369  cnt1 += m_planes[n]->GetNcoeffs();
370  cnt += m_planes[n]->GetTotPoints();
371  }
372  }
Array< OneD, ExpListSharedPtr > m_planes
void Nektar::MultiRegions::ExpListHomogeneous1D::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 927 of file ExpListHomogeneous1D.cpp.

References ASSERTL0, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eFourierHalfModeIm, Nektar::LibUtilities::eFourierHalfModeRe, Nektar::LibUtilities::eFourierSingleMode, Nektar::LibUtilities::eXYtoZ, Nektar::LibUtilities::eZtoXY, HomogeneousBwdTrans(), HomogeneousFwdTrans(), Nektar::MultiRegions::ExpList::m_comm, m_homogeneousBasis, m_lhom, m_planes, Nektar::MultiRegions::ExpList::m_session, m_StripZcomm, m_transposition, Nektar::MultiRegions::ExpList::m_WaveSpace, Nektar::NullNekDouble1DArray, sign, and Vmath::Smul().

Referenced by PhysDeriv().

931  {
932  int nT_pts = inarray.num_elements(); //number of total points = n. of Fourier points * n. of points per plane (nT_pts)
933  int nP_pts = nT_pts/m_planes.num_elements(); //number of points per plane = n of Fourier transform required (nP_pts)
934 
935  Array<OneD, NekDouble> temparray(nT_pts);
936  Array<OneD, NekDouble> outarray(nT_pts);
937  Array<OneD, NekDouble> tmp1;
938  Array<OneD, NekDouble> tmp2;
939  Array<OneD, NekDouble> tmp3;
940 
941  for(int i = 0; i < m_planes.num_elements(); i++)
942  {
943  m_planes[i]->PhysDeriv(inarray + i*nP_pts ,tmp2 = out_d0 + i*nP_pts , tmp3 = out_d1 + i*nP_pts );
944  }
945 
946  if(out_d2 != NullNekDouble1DArray)
947  {
950  {
951  if(m_WaveSpace)
952  {
953  temparray = inarray;
954  }
955  else
956  {
957  HomogeneousFwdTrans(inarray,temparray);
958  }
959 
960  NekDouble sign = -1.0;
961  NekDouble beta;
962 
963  //Half Mode
965  {
966  beta = sign*2*M_PI*(m_transposition->GetK(0))/m_lhom;
967 
968  Vmath::Smul(nP_pts,beta,temparray,1,outarray,1);
969  }
970  else if(m_homogeneousBasis->GetBasisType() == LibUtilities::eFourierHalfModeIm)
971  {
972  beta = -sign*2*M_PI*(m_transposition->GetK(0))/m_lhom;
973 
974  Vmath::Smul(nP_pts,beta,temparray,1,outarray,1);
975  }
976 
977  //Fully complex
978  else
979  {
980  for(int i = 0; i < m_planes.num_elements(); i++)
981  {
982  beta = -sign*2*M_PI*(m_transposition->GetK(i))/m_lhom;
983 
984  Vmath::Smul(nP_pts,beta,tmp1 = temparray + i*nP_pts,1,tmp2 = outarray + (i-int(sign))*nP_pts,1);
985 
986  sign = -1.0*sign;
987  }
988  }
989 
990  if(m_WaveSpace)
991  {
992  out_d2 = outarray;
993  }
994  else
995  {
996  HomogeneousBwdTrans(outarray,out_d2);
997  }
998  }
999  else
1000  {
1001  if(!m_session->DefinesSolverInfo("HomoStrip"))
1002  {
1003  ASSERTL0(m_comm->GetColumnComm()->GetSize() == 1,
1004  "Parallelisation in the homogeneous direction "
1005  "implemented just for Fourier basis");
1006  }
1007  else
1008  {
1009  ASSERTL0(m_StripZcomm->GetSize() == 1,
1010  "Parallelisation in the homogeneous direction "
1011  "implemented just for Fourier basis");
1012  }
1013 
1014  if(m_WaveSpace)
1015  {
1016  ASSERTL0(false, "Semi-phyisical time-stepping not "
1017  "implemented yet for non-Fourier "
1018  "basis");
1019  }
1020  else
1021  {
1022  StdRegions::StdSegExp StdSeg(m_homogeneousBasis->GetBasisKey());
1023 
1024  m_transposition->Transpose(inarray,temparray,false,LibUtilities::eXYtoZ);
1025 
1026  for(int i = 0; i < nP_pts; i++)
1027  {
1028  StdSeg.PhysDeriv(temparray + i*m_planes.num_elements(), tmp2 = outarray + i*m_planes.num_elements());
1029  }
1030 
1031  m_transposition->Transpose(outarray,out_d2,false,LibUtilities::eZtoXY);
1032 
1033  Vmath::Smul(nT_pts,2.0/m_lhom,out_d2,1,out_d2,1);
1034  }
1035  }
1036  }
1037  }
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:161
static Array< OneD, NekDouble > NullNekDouble1DArray
#define sign(a, b)
return the sign(b)*a
Definition: Polylib.cpp:22
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
Fourier Expansion .
Definition: BasisType.h:52
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Fourier Modified expansions with just the real part of the first mode .
Definition: BasisType.h:59
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:199
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
double NekDouble
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Fourier Modified expansions with just the imaginary part of the first mode .
Definition: BasisType.h:60
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
Fourier ModifiedExpansion with just the first mode .
Definition: BasisType.h:58
void Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysDeriv ( Direction  edir,
const Array< OneD, const NekDouble > &  inarray,
Array< OneD, NekDouble > &  out_d 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 1039 of file ExpListHomogeneous1D.cpp.

References ASSERTL0, Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eFourierHalfModeIm, Nektar::LibUtilities::eFourierHalfModeRe, Nektar::LibUtilities::eFourierSingleMode, Nektar::LibUtilities::eXYtoZ, Nektar::LibUtilities::eZtoXY, HomogeneousBwdTrans(), HomogeneousFwdTrans(), Nektar::MultiRegions::ExpList::m_comm, m_homogeneousBasis, m_lhom, m_planes, Nektar::MultiRegions::ExpList::m_session, m_StripZcomm, m_transposition, Nektar::MultiRegions::ExpList::m_WaveSpace, sign, and Vmath::Smul().

1042  {
1043  int nT_pts = inarray.num_elements(); //number of total points = n. of Fourier points * n. of points per plane (nT_pts)
1044  int nP_pts = nT_pts/m_planes.num_elements(); //number of points per plane = n of Fourier transform required (nP_pts)
1045 
1046  int dir= (int)edir;
1047 
1048  Array<OneD, NekDouble> temparray(nT_pts);
1049  Array<OneD, NekDouble> outarray(nT_pts);
1050  Array<OneD, NekDouble> tmp1;
1051  Array<OneD, NekDouble> tmp2;
1052 
1053  if (dir < 2)
1054  {
1055  for(int i=0; i < m_planes.num_elements(); i++)
1056  {
1057  m_planes[i]->PhysDeriv(edir, inarray + i*nP_pts ,tmp2 = out_d + i*nP_pts);
1058  }
1059  }
1060  else
1061  {
1064  {
1065  if(m_WaveSpace)
1066  {
1067  temparray = inarray;
1068  }
1069  else
1070  {
1071  HomogeneousFwdTrans(inarray,temparray);
1072  }
1073 
1074  NekDouble sign = -1.0;
1075  NekDouble beta;
1076 
1077  //HalfMode
1079  {
1080  beta = 2*sign*M_PI*(m_transposition->GetK(0))/m_lhom;
1081 
1082  Vmath::Smul(nP_pts,beta,temparray,1,outarray,1);
1083  }
1084  else if(m_homogeneousBasis->GetBasisType() == LibUtilities::eFourierHalfModeIm)
1085  {
1086  beta = -2*sign*M_PI*(m_transposition->GetK(0))/m_lhom;
1087 
1088  Vmath::Smul(nP_pts,beta,temparray,1,outarray,1);
1089  }
1090  //Fully complex
1091  else
1092  {
1093  for(int i = 0; i < m_planes.num_elements(); i++)
1094  {
1095  beta = -sign*2*M_PI*(m_transposition->GetK(i))/m_lhom;
1096 
1097  Vmath::Smul(nP_pts,beta,tmp1 = temparray + i*nP_pts,1,tmp2 = outarray + (i-int(sign))*nP_pts,1);
1098 
1099  sign = -1.0*sign;
1100  }
1101  }
1102  if(m_WaveSpace)
1103  {
1104  out_d = outarray;
1105  }
1106  else
1107  {
1108  HomogeneousBwdTrans(outarray,out_d);
1109  }
1110  }
1111  else
1112  {
1113  if(!m_session->DefinesSolverInfo("HomoStrip"))
1114  {
1115  ASSERTL0(m_comm->GetColumnComm()->GetSize() == 1,
1116  "Parallelisation in the homogeneous direction "
1117  "implemented just for Fourier basis");
1118  }
1119  else
1120  {
1121  ASSERTL0(m_StripZcomm->GetSize() == 1,
1122  "Parallelisation in the homogeneous direction "
1123  "implemented just for Fourier basis");
1124  }
1125 
1126  if(m_WaveSpace)
1127  {
1128  ASSERTL0(false,"Semi-phyisical time-stepping not implemented yet for non-Fourier basis");
1129  }
1130  else
1131  {
1132  StdRegions::StdSegExp StdSeg(m_homogeneousBasis->GetBasisKey());
1133 
1134  m_transposition->Transpose(inarray,temparray,false,LibUtilities::eXYtoZ);
1135 
1136  for(int i = 0; i < nP_pts; i++)
1137  {
1138  StdSeg.PhysDeriv(temparray + i*m_planes.num_elements(), tmp2 = outarray + i*m_planes.num_elements());
1139  }
1140 
1141  m_transposition->Transpose(outarray,out_d,false,LibUtilities::eZtoXY);
1142 
1143  Vmath::Smul(nT_pts,2.0/m_lhom,out_d,1,out_d,1);
1144  }
1145  }
1146  }
1147  }
void HomogeneousBwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:161
#define sign(a, b)
return the sign(b)*a
Definition: Polylib.cpp:22
LibUtilities::TranspositionSharedPtr m_transposition
NekDouble m_lhom
Width of homogeneous direction.
Fourier Expansion .
Definition: BasisType.h:52
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
Fourier Modified expansions with just the real part of the first mode .
Definition: BasisType.h:59
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:199
LibUtilities::SessionReaderSharedPtr m_session
Session.
Definition: ExpList.h:910
Array< OneD, ExpListSharedPtr > m_planes
double NekDouble
void HomogeneousFwdTrans(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, CoeffState coeffstate=eLocal, bool Shuff=true, bool UnShuff=true)
Fourier Modified expansions with just the imaginary part of the first mode .
Definition: BasisType.h:60
LibUtilities::CommSharedPtr m_comm
Communicator.
Definition: ExpList.h:907
Fourier ModifiedExpansion with just the first mode .
Definition: BasisType.h:58
void Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysGalerkinProjection1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 910 of file ExpListHomogeneous1D.cpp.

References ASSERTL1, and m_planes.

911  {
912  int cnt,cnt1;
913  Array<OneD, NekDouble> tmparray;
914  cnt = m_planes[0]->Get1DScaledTotPoints(scale);
915  cnt1 = m_planes[0]->GetTotPoints();
916 
917  ASSERTL1(m_planes.num_elements()*cnt <= inarray.num_elements(),"size of outarray does not match internal estimage");
918 
919 
920  for(int i = 0; i < m_planes.num_elements(); i++)
921  {
922  m_planes[i]->PhysGalerkinProjection1DScaled(scale,inarray+i*cnt,
923  tmparray = outarray+i*cnt1);
924  }
925 
926  }
Array< OneD, ExpListSharedPtr > m_planes
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:191
void Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysInterp1DScaled ( const NekDouble  scale,
const Array< OneD, NekDouble > &  inarray,
Array< OneD, NekDouble > &  outarray 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 891 of file ExpListHomogeneous1D.cpp.

References ASSERTL1, and m_planes.

892  {
893  int cnt,cnt1;
894  Array<OneD, NekDouble> tmparray;
895  cnt = m_planes[0]->GetTotPoints();
896  cnt1 = m_planes[0]->Get1DScaledTotPoints(scale);
897 
898  ASSERTL1(m_planes.num_elements()*cnt1 <= outarray.num_elements(),"size of outarray does not match internal estimage");
899 
900 
901  for(int i = 0; i < m_planes.num_elements(); i++)
902  {
903 
904  m_planes[i]->PhysInterp1DScaled(scale,inarray+i*cnt,
905  tmparray = outarray+i*cnt1);
906  }
907  }
Array< OneD, ExpListSharedPtr > m_planes
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
Definition: ErrorUtil.hpp:191
virtual void Nektar::MultiRegions::ExpListHomogeneous1D::v_SetHomo1DSpecVanVisc ( Array< OneD, NekDouble visc)
inlineprotectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 178 of file ExpListHomogeneous1D.h.

References m_specVanVisc.

179  {
180  m_specVanVisc = visc;
181  }
Array< OneD, NekDouble > m_specVanVisc
Spectral vanishing Viscosity coefficient for stabilisation.
void Nektar::MultiRegions::ExpListHomogeneous1D::v_WriteVtkPieceData ( std::ostream &  outfile,
int  expansion,
std::string  var 
)
protectedvirtual

Reimplemented from Nektar::MultiRegions::ExpList.

Definition at line 861 of file ExpListHomogeneous1D.cpp.

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

863  {
864  // If there is only one plane (e.g. HalfMode), we write a 2D plane.
865  if (m_planes.num_elements() == 1)
866  {
867  m_planes[0]->WriteVtkPieceData(outfile, expansion, var);
868  return;
869  }
870 
871  int i;
872  int nq = (*m_exp)[expansion]->GetTotPoints();
873  int npoints_per_plane = m_planes[0]->GetTotPoints();
874 
875  // printing the fields of that zone
876  outfile << " <DataArray type=\"Float32\" Name=\""
877  << var << "\">" << endl;
878  outfile << " ";
879  for (int n = 0; n < m_planes.num_elements(); ++n)
880  {
881  const Array<OneD, NekDouble> phys = m_phys + m_phys_offset[expansion] + n*npoints_per_plane;
882  for(i = 0; i < nq; ++i)
883  {
884  outfile << (fabs(phys[i]) < NekConstants::kNekZeroTol ? 0 : phys[i]) << " ";
885  }
886  }
887  outfile << endl;
888  outfile << " </DataArray>" << endl;
889  }
Array< OneD, NekDouble > m_phys
The global expansion evaluated at the quadrature points.
Definition: ExpList.h:956
static const NekDouble kNekZeroTol
Array< OneD, int > m_phys_offset
Offset of elemental data into the array m_phys.
Definition: ExpList.h:991
Array< OneD, ExpListSharedPtr > m_planes

Member Data Documentation

bool Nektar::MultiRegions::ExpListHomogeneous1D::m_dealiasing
private

Definition at line 275 of file ExpListHomogeneous1D.h.

Referenced by ExpListHomogeneous1D().

LibUtilities::NektarFFTSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_FFT
protected

Definition at line 145 of file ExpListHomogeneous1D.h.

Referenced by ExpListHomogeneous1D(), and Homogeneous1DTrans().

LibUtilities::NektarFFTSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_FFT_deal
protected

Definition at line 147 of file ExpListHomogeneous1D.h.

Referenced by ExpListHomogeneous1D(), and v_DealiasedProd().

Homo1DBlockMatrixMapShPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_homogeneous1DBlockMat
protected

Definition at line 157 of file ExpListHomogeneous1D.h.

Referenced by GetHomogeneous1DBlockMatrix().

LibUtilities::BasisSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_homogeneousBasis
protected
NekDouble Nektar::MultiRegions::ExpListHomogeneous1D::m_lhom
protected
int Nektar::MultiRegions::ExpListHomogeneous1D::m_padsize
private

Definition at line 276 of file ExpListHomogeneous1D.h.

Referenced by ExpListHomogeneous1D(), and v_DealiasedProd().

Array<OneD, ExpListSharedPtr> Nektar::MultiRegions::ExpListHomogeneous1D::m_planes
protected

Definition at line 158 of file ExpListHomogeneous1D.h.

Referenced by Nektar::MultiRegions::ContField3DHomogeneous1D::ContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::DisContField3DHomogeneous1D(), Nektar::MultiRegions::DisContField3DHomogeneous1D::EvaluateBoundaryConditions(), Nektar::MultiRegions::ExpList2DHomogeneous1D::ExpList2DHomogeneous1D(), Nektar::MultiRegions::ExpList3DHomogeneous1D::ExpList3DHomogeneous1D(), ExpListHomogeneous1D(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GenExpList3DHomogeneous1D(), GenHomogeneous1DBlockMatrix(), Nektar::MultiRegions::DisContField3DHomogeneous1D::GetBCValues(), Nektar::MultiRegions::DisContField3DHomogeneous1D::GetBoundaryToElmtMap(), Nektar::MultiRegions::ExpList2DHomogeneous1D::GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous1D::GetCoords(), GetPlane(), Homogeneous1DTrans(), Nektar::MultiRegions::DisContField3DHomogeneous1D::NormVectorIProductWRTBase(), Nektar::MultiRegions::ExpList2DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::ExpList3DHomogeneous1D::SetCoeffPhys(), Nektar::MultiRegions::DisContField3DHomogeneous1D::SetupBoundaryConditions(), Nektar::MultiRegions::DisContField3DHomogeneous1D::SetUpDG(), v_AppendFieldData(), v_BwdTrans(), v_BwdTrans_IterPerExp(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_ClearGlobalLinSysManager(), v_DealiasedProd(), v_ExtractCoeffsToCoeffs(), v_ExtractDataToCoeffs(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_ExtractTracePhys(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_FillBndCondFromField(), v_FwdTrans(), v_FwdTrans_IterPerExp(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_GetCoords(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_GetCoords(), v_GetFieldDefinitions(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_GetNormals(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_GetPeriodicEntities(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_GetTraceMap(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_GlobalToLocal(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_HelmSolve(), Nektar::MultiRegions::DisContField3DHomogeneous1D::v_HelmSolve(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_HomogeneousEnergy(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_ImposeDirichletConditions(), v_IProductWRTBase(), v_IProductWRTBase_IterPerExp(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_L2(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_LocalToGlobal(), v_PhysDeriv(), v_PhysGalerkinProjection1DScaled(), v_PhysInterp1DScaled(), Nektar::MultiRegions::ContField3DHomogeneous1D::v_SmoothField(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_WriteTecplotConnectivity(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_WriteTecplotZone(), v_WriteVtkPieceData(), Nektar::MultiRegions::ExpList2DHomogeneous1D::v_WriteVtkPieceHeader(), and Nektar::MultiRegions::ExpList3DHomogeneous1D::v_WriteVtkPieceHeader().

Array<OneD, NekDouble> Nektar::MultiRegions::ExpListHomogeneous1D::m_specVanVisc
private

Spectral vanishing Viscosity coefficient for stabilisation.

Definition at line 279 of file ExpListHomogeneous1D.h.

Referenced by GetSpecVanVisc(), and v_SetHomo1DSpecVanVisc().

LibUtilities::CommSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_StripZcomm
Array<OneD,NekDouble> Nektar::MultiRegions::ExpListHomogeneous1D::m_tmpIN
protected

Definition at line 149 of file ExpListHomogeneous1D.h.

Referenced by Homogeneous1DTrans().

Array<OneD,NekDouble> Nektar::MultiRegions::ExpListHomogeneous1D::m_tmpOUT
protected

Definition at line 150 of file ExpListHomogeneous1D.h.

Referenced by Homogeneous1DTrans().

LibUtilities::TranspositionSharedPtr Nektar::MultiRegions::ExpListHomogeneous1D::m_transposition
bool Nektar::MultiRegions::ExpListHomogeneous1D::m_useFFT
protected