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)
210 for (
int n = 0; n <
m_planes.size(); ++n)
212 m_planes[n]->LocalToGlobal(useComm);
221 for (
int n = 0; n <
m_planes.size(); ++n)
235 for (
int n = 0; n <
m_planes.size(); ++n)
237 m_planes[n]->SmoothField(tmp = field + cnt);
285 std::dynamic_pointer_cast<ContField>(
m_planes[0]);
286 for (n = 1; n <
m_planes.size(); ++n)
288 std::dynamic_pointer_cast<ContField>(
m_planes[n])
289 ->SetGJPData(zero_plane->GetGJPData());
293 for (n = 0; n <
m_planes.size(); ++n)
298 new_factors = factors;
303 wfce = (PhysSpaceForcing) ? fce + cnt : fce + cnt1;
305 wfce, e_out = outarray + cnt1, new_factors, varcoeff,
306 varfactors, dirForcing, PhysSpaceForcing);
320 for (
int n = 0; n <
m_planes.size(); ++n)
322 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.
GlobalLinSysKey v_HelmSolve(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const StdRegions::ConstFactorMap &factors, const StdRegions::VarCoeffMap &varcoeff, const StdRegions::VarFactorsMap &varfactors, const Array< OneD, const NekDouble > &dirForcing, const bool PhysSpaceForcing) override
Solves the three-dimensional Helmholtz equation, subject to the boundary conditions specified.
ContField3DHomogeneous1D()
void v_ImposeDirichletConditions(Array< OneD, NekDouble > &outarray) override
void v_LocalToGlobal(bool useComm) override
Template method virtual forwarded for LocalToGlobal()
void v_GlobalToLocal(void) override
Template method virtual forwarded for GlobalToLocal()
void v_ClearGlobalLinSysManager(void) override
void v_AvgAssemble(bool useComm) override
Template method virtual forwarded for AvgAssemble()
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::shared_ptr< ContField > ContFieldSharedPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
std::map< StdRegions::ConstFactorType, Array< OneD, NekDouble > > VarFactorsMap
std::map< ConstFactorType, NekDouble > ConstFactorMap
std::map< StdRegions::VarCoeffType, VarCoeffEntry > VarCoeffMap