56 std::dynamic_pointer_cast<ContField>(In.
m_planes[0]);
58 for (
int n = 0; n <
m_planes.size(); ++n)
70 const std::string &variable)
74 std::dynamic_pointer_cast<ContField>(In.
m_planes[0]);
77 *zero_plane_old, graph2D, variable);
79 for (
int n = 0; n <
m_planes.size(); ++n)
82 *zero_plane, graph2D, variable);
87 if (variable.compare(
"DefaultVar") != 0)
102 const bool useFFT,
const bool dealiasing,
104 const std::string &variable,
const bool CheckIfSingularSystem,
118 pSession, graph2D, variable,
false, CheckIfSingularSystem, ImpType);
121 pSession, graph2D, variable,
false,
false, ImpType);
125 for (n = 0; n <
m_planes.size(); ++n)
132 *plane_zero, graph2D, variable,
false, CheckIfSingularSystem);
141 *plane_two, graph2D, variable,
false,
false);
146 for (i = 0; i < nel; ++i)
157 if (variable.compare(
"DefaultVar") != 0)
167 int ncoeffs =
m_planes[0]->GetNcoeffs();
169 for (
int n = 0; n <
m_planes.size(); ++n)
171 m_planes[n]->ImposeDirichletConditions(tmp = outarray + n * ncoeffs);
178 int numcoeffs_per_plane =
m_planes[0]->GetNcoeffs();
179 for (
int n = 0; n <
m_planes.size(); ++n)
181 m_planes[n]->FillBndCondFromField(coeffs + n * numcoeffs_per_plane);
188 int numcoeffs_per_plane =
m_planes[0]->GetNcoeffs();
189 for (
int n = 0; n <
m_planes.size(); ++n)
191 m_planes[n]->FillBndCondFromField(nreg,
192 coeffs + n * numcoeffs_per_plane);
201 for (
int n = 0; n <
m_planes.size(); ++n)
203 m_planes[n]->LocalToGlobal(useComm);
212 for (
int n = 0; n <
m_planes.size(); ++n)
226 for (
int n = 0; n <
m_planes.size(); ++n)
228 m_planes[n]->SmoothField(tmp = field + cnt);
276 std::dynamic_pointer_cast<ContField>(
m_planes[0]);
277 for (n = 1; n <
m_planes.size(); ++n)
279 std::dynamic_pointer_cast<ContField>(
m_planes[n])
280 ->SetGJPForcing(zero_plane->GetGJPForcing());
284 for (n = 0; n <
m_planes.size(); ++n)
294 wfce = (PhysSpaceForcing) ? fce + cnt : fce + cnt1;
296 wfce, e_out = outarray + cnt1, new_factors, varcoeff,
297 varfactors, dirForcing, PhysSpaceForcing);
311 for (
int n = 0; n <
m_planes.size(); ++n)
313 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()
virtual void v_ImposeDirichletConditions(Array< OneD, NekDouble > &outarray) override
virtual void v_LocalToGlobal(bool useComm) override
Template method virtual forwarded for LocalToGlobal()
virtual 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.
virtual void v_GlobalToLocal(void) override
Template method virtual forwarded for GlobalToLocal()
virtual void v_ClearGlobalLinSysManager(void) override
virtual void v_FillBndCondFromField(const Array< OneD, NekDouble > coeffs) override
virtual ~ContField3DHomogeneous1D()
Destructor.
virtual 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
The above copyright notice and this permission notice shall be included.