3#include <AMReX_Config.H>
15 static constexpr int M = 7;
16 static constexpr int P = 3;
20 using array_type = GpuArray<
Real,(M+2)*(M+1)/2>;
28 Array4<Real const> gp;
36 std::ostream&
operator<< (std::ostream& os, Moments
const& mom);
39#if defined(AMREX_USE_CUDA) || defined(AMREX_USE_HIP)
44 AMREX_HIP_OR_CUDA(HIP_DYNAMIC_SHARED(openbc::Moments::array_type,amrex_openbc_momarray);,
45 extern __shared__ openbc::Moments::array_type amrex_openbc_momarray[];)
46 return amrex_openbc_momarray;
87 void useHypre (
bool use_hypre)
noexcept;
105 int m_bottom_verbose = 0;
110 std::unique_ptr<MLPoisson> m_poisson_1;
111 std::unique_ptr<MLPoisson> m_poisson_2;
112 std::unique_ptr<MLMG> m_mlmg_1;
113 std::unique_ptr<MLMG> m_mlmg_2;
116 int m_coarsen_ratio = 0;
123 int m_nthreads_momtag;
126 int m_nblocks_local = 0;
#define AMREX_HIP_OR_CUDA(a, b)
Definition AMReX_GpuControl.H:21
#define AMREX_GPU_DEVICE
Definition AMReX_GpuQualifiers.H:18
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1089
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:567
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
Open Boundary Poisson Solver.
Definition AMReX_OpenBC.H:63
OpenBCSolver & operator=(const OpenBCSolver &)=delete
void interpolate_potential(MultiFab &solg)
Definition AMReX_OpenBC.cpp:790
void setVerbose(int v) noexcept
Definition AMReX_OpenBC.cpp:184
Real solve(const Vector< MultiFab * > &a_sol, const Vector< MultiFab const * > &a_rhs, Real a_tol_rel, Real a_tol_abs)
Definition AMReX_OpenBC.cpp:205
void useHypre(bool use_hypre) noexcept
Definition AMReX_OpenBC.cpp:194
OpenBCSolver(const OpenBCSolver &)=delete
void compute_potential(Gpu::DeviceVector< openbc::Moments > const &moments)
Definition AMReX_OpenBC.cpp:725
OpenBCSolver(OpenBCSolver &&)=delete
void compute_moments(Gpu::DeviceVector< openbc::Moments > &moments)
Definition AMReX_OpenBC.cpp:383
void setBottomVerbose(int v) noexcept
Definition AMReX_OpenBC.cpp:189
void define(const Vector< Geometry > &a_geom, const Vector< BoxArray > &a_grids, const Vector< DistributionMapping > &a_dmap, const LPInfo &a_info=LPInfo())
Definition AMReX_OpenBC.cpp:16
Dynamically allocated vector for trivially copyable data.
Definition AMReX_PODVector.H:308
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
std::array< T, N > Array
Definition AMReX_Array.H:26
std::ostream & operator<<(std::ostream &os, Moments const &mom)
Definition AMReX_OpenBC.cpp:867
Definition AMReX_Amr.cpp:49
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:30
BottomSolver
Definition AMReX_MLLinOp.H:31
__device__ openbc::Moments::array_type * dataPtr() noexcept
Definition AMReX_OpenBC.H:43
Definition AMReX_GpuMemory.H:125
Definition AMReX_MLLinOp.H:36