4 #ifndef ERF_IMMERSED_POISSON_H_
5 #define ERF_IMMERSED_POISSON_H_
7 #include <AMReX_Geometry.H>
8 #include <AMReX_MultiFab.H>
11 #include <AMReX_FFT_Poisson.H>
37 ImmersedPoisson (amrex::Geometry
const& geom, amrex::Geometry
const& lev_geom,
38 amrex::BoxArray
const& ba, amrex::DistributionMapping
const& dm,
39 amrex::Array<std::string,2*AMREX_SPACEDIM>
const& domain_bcs_type,
40 amrex::Array<amrex::MultiFab const*,AMREX_SPACEDIM>
const&
sigma,
44 void apply (amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
50 void usePrecond (
bool use_precond_in) { m_use_precond = use_precond_in; }
53 void getFluxes (amrex::MultiFab&
phi, amrex::Array<amrex::MultiFab,AMREX_SPACEDIM>& fluxes);
55 void assign (amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
57 amrex::Real dotProduct (amrex::MultiFab
const& v1, amrex::MultiFab
const& v2);
58 void increment (amrex::MultiFab& lhs, amrex::MultiFab
const& rhs,
amrex::Real a);
59 void linComb (amrex::MultiFab& lhs,
amrex::Real a, amrex::MultiFab
const& rhs_a,
61 amrex::MultiFab makeVecRHS ();
62 amrex::MultiFab makeVecLHS ();
65 void precond (amrex::MultiFab& lhs, amrex::MultiFab
const& rhs);
66 void setToZero (amrex::MultiFab& v);
69 bool m_use_precond =
false;
70 amrex::Geometry m_geom;
71 amrex::BoxArray m_grids;
72 amrex::DistributionMapping m_dmap;
73 amrex::Array<amrex::MultiFab const*,AMREX_SPACEDIM> m_sigma;
74 std::unique_ptr<amrex::FFT::Poisson<amrex::MultiFab>> m_fft_precond;
75 amrex::Array<std::pair<amrex::FFT::Boundary,amrex::FFT::Boundary>,AMREX_SPACEDIM> m_bc_fft;
amrex::Real sigma
Definition: ERF_InitCustomPert_DataAssimilation_ISV.H:11
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< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, 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, const bool cloudy=false)
Definition: ERF_CloudChamberWallFlux.H:1037
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real phi(amrex::Real d, amrex::Real z0, amrex::Real psi) noexcept
Definition: ERF_ImmersedWallCell.H:142