54 std::dynamic_pointer_cast<ContField>(In.
m_planes[0]);
56 for (
int n = 0; n <
m_planes.size(); ++n)
68 const std::string &variable)
72 std::dynamic_pointer_cast<ContField>(In.
m_planes[0]);
75 *zero_plane_old, graph2D, variable);
77 for (
int n = 0; n <
m_planes.size(); ++n)
80 *zero_plane, graph2D, variable);
85 if (variable.compare(
"DefaultVar") != 0)
100 const bool useFFT,
const bool dealiasing,
102 const std::string &variable,
const bool CheckIfSingularSystem,
116 pSession, graph2D, variable,
false, CheckIfSingularSystem, ImpType);
119 pSession, graph2D, variable,
false,
false, ImpType);
123 for (n = 0; n <
m_planes.size(); ++n)
130 *plane_zero, graph2D, variable,
false, CheckIfSingularSystem);
139 *plane_two, graph2D, variable,
false,
false);
144 for (i = 0; i < nel; ++i)
155 if (variable.compare(
"DefaultVar") != 0)
165 int ncoeffs =
m_planes[0]->GetNcoeffs();
167 for (
int n = 0; n <
m_planes.size(); ++n)
169 m_planes[n]->ImposeDirichletConditions(tmp = outarray + n * ncoeffs);
176 int numcoeffs_per_plane =
m_planes[0]->GetNcoeffs();
177 for (
int n = 0; n <
m_planes.size(); ++n)
179 m_planes[n]->FillBndCondFromField(coeffs + n * numcoeffs_per_plane);
186 int numcoeffs_per_plane =
m_planes[0]->GetNcoeffs();
187 for (
int n = 0; n <
m_planes.size(); ++n)
189 m_planes[n]->FillBndCondFromField(nreg,
190 coeffs + n * numcoeffs_per_plane);
199 for (
int n = 0; n <
m_planes.size(); ++n)
201 m_planes[n]->LocalToGlobal(useComm);
210 for (
int n = 0; n <
m_planes.size(); ++n)
224 for (
int n = 0; n <
m_planes.size(); ++n)
274 std::dynamic_pointer_cast<ContField>(
m_planes[0]);
275 for (n = 1; n <
m_planes.size(); ++n)
277 std::dynamic_pointer_cast<ContField>(
m_planes[n])
278 ->SetGJPForcing(zero_plane->GetGJPForcing());
282 for (n = 0; n <
m_planes.size(); ++n)
292 wfce = (PhysSpaceForcing) ? fce + cnt : fce + cnt1;
294 wfce, e_out = outarray + cnt1, new_factors, varcoeff,
295 varfactors, dirForcing, PhysSpaceForcing);
309 for (
int n = 0; n <
m_planes.size(); ++n)
311 m_planes[n]->ClearGlobalLinSysManager();
Describes the specification for a Basis.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
~ContField3DHomogeneous1D() override
Destructor.
ContField3DHomogeneous1D()
void v_ImposeDirichletConditions(Array< OneD, NekDouble > &outarray) override
void v_LocalToGlobal(bool useComm) override
Template method virtual forwarded for LocalToGlobal()
GlobalLinSysKey v_HelmSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const MultiRegions::VarFactorsMap &varfactors, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing) override
Solves the three-dimensional Helmholtz equation, subject to the boundary conditions specified.
void v_GlobalToLocal(void) override
Template method virtual forwarded for GlobalToLocal()
void v_ClearGlobalLinSysManager(void) override
void v_FillBndCondFromField(const Array< OneD, NekDouble > coeffs) override
void v_SmoothField(Array< OneD, NekDouble > &field) override
void SetupBoundaryConditions(const LibUtilities::BasisKey &HomoBasis, const NekDouble lhom, SpatialDomains::BoundaryConditions &bcs, const std::string variable)
void SetCoeffPhys(void)
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
NekDouble m_lhom
Width of homogeneous direction.
LibUtilities::TranspositionSharedPtr m_transposition
Array< OneD, ExpListSharedPtr > m_planes
NekDouble GetSpecVanVisc(const int k)
LibUtilities::BasisSharedPtr m_homogeneousBasis
Definition of the total number of degrees of freedom and quadrature points. Sets up the storage for m...
int GetExpSize(void)
This function returns the number of elements in the expansion.
std::shared_ptr< LocalRegions::ExpansionVector > m_exp
The list of local expansions.
int m_ncoeffs
The total number of local degrees of freedom. m_ncoeffs .
const std::shared_ptr< LocalRegions::ExpansionVector > GetExp() const
This function returns the vector of elements in the expansion.
SpatialDomains::MeshGraphSharedPtr m_graph
Mesh associated with this expansion list.
LibUtilities::SessionReaderSharedPtr m_session
Session.
void HomogeneousFwdTrans(const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool Shuff=true, bool UnShuff=true)
Describe a linear system.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
@ beta
Gauss Radau pinned at x=-1,.
@ eFourierHalfModeIm
Fourier Modified expansions with just the imaginary part of the first mode .
@ eFourierHalfModeRe
Fourier Modified expansions with just the real part of the first mode .
static GlobalLinSysKey NullGlobalLinSysKey(StdRegions::eNoMatrixType)
std::map< StdRegions::ConstFactorType, Array< OneD, NekDouble > > VarFactorsMap
std::shared_ptr< ContField > ContFieldSharedPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap
StdRegions::ConstFactorMap factors