4 #ifndef ERF_TERRAIN_POISSON_H_
5 #define ERF_TERRAIN_POISSON_H_
7 #include <AMReX_Geometry.H>
8 #include <AMReX_MultiFab.H>
9 #include <AMReX_BCRec.H>
14 #include <AMReX_FFT_Poisson.H>
40 TerrainPoisson (amrex::Geometry
const& geom, amrex::BoxArray
const& ba,
41 amrex::DistributionMapping
const& dm,
42 amrex::Array<std::string,2*AMREX_SPACEDIM>& domain_bcs_type,
43 amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_lev_d,
44 const amrex::MultiFab& ax,
const amrex::MultiFab& ay,
45 const amrex::MultiFab& az,
const amrex::MultiFab& dJ,
46 amrex::MultiFab
const* z_phys_nd,
55 void apply(amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
69 void usePrecond(
bool precond_flag);
77 void getFluxes(amrex::MultiFab& phi, amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes);
85 void assign(amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
102 amrex::Real dotProduct(amrex::MultiFab
const& v1, amrex::MultiFab
const& v2);
111 void increment(amrex::MultiFab& lhs, amrex::MultiFab
const& rhs,
amrex::Real a);
122 void linComb(amrex::MultiFab& lhs,
amrex::Real a, amrex::MultiFab
const& rhs_a,
130 amrex::MultiFab makeVecRHS();
137 amrex::MultiFab makeVecLHS();
153 void precond(amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
160 void setToZero(amrex::MultiFab& v);
163 bool m_use_precond =
false;
164 amrex::Geometry m_geom;
165 amrex::BoxArray m_grids;
166 amrex::DistributionMapping m_dmap;
167 amrex::Array<std::string,2*AMREX_SPACEDIM> m_domain_bcs_type;
168 amrex::Gpu::DeviceVector<amrex::Real> m_stretched_dz_d;
169 const amrex::MultiFab& m_ax;
170 const amrex::MultiFab& m_ay;
171 const amrex::MultiFab& m_az;
172 const amrex::MultiFab& m_dJ;
173 const amrex::MultiFab* m_zphys;
175 std::unique_ptr<amrex::FFT::PoissonHybrid<amrex::MultiFab>> m_2D_fft_precond;
176 amrex::Array<std::pair<amrex::FFT::Boundary,amrex::FFT::Boundary>,AMREX_SPACEDIM> bc_fft;
amrex::Real Real
Definition: ERF_ShocInterface.H:19
auto apply_bcs
Definition: ERF_TI_utils.H:34
void apply(const amrex::Box &bx, const amrex::Box &domain, const int quantity, const int flux_comp, const amrex::Array4< const amrex::Real > &state, const amrex::Array4< const amrex::Real > &prim, const amrex::Array4< const amrex::Real > &base_state, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx_inv, const erf_wall_thermodynamics::Boundary &walls, const amrex::Real alpha_T, const amrex::Real alpha_C, const amrex::Real rdOcp)
Definition: ERF_ResolvedWallFlux.H:112