36 std::string a_parmparse_prefix =
"hypre_mlabeclap");
50 std::pair<MultiFab const*, IntVect>
const& a_coarse_bc = {
nullptr,
IntVect(0)});
52 void solve (Vector<MultiFab*>
const& a_sol, Vector<MultiFab const*>
const& a_rhs,
59 void commBCoefs (
int flev, Array<MultiFab const*,AMREX_SPACEDIM>
const& a_bcoefs);
60 void commBCoefs_local (
int flev, Array<MultiFab const*,AMREX_SPACEDIM>
const& a_bcoefs,
61 Vector<FabArrayBase::CopyComTag>
const& tags);
65 void addNonStencilEntriesToGraph ();
69 bool m_is_singular =
false;
71 Vector<Geometry> m_geom;
72 Vector<BoxArray> m_grids;
73 Vector<DistributionMapping> m_dmap;
74 std::string m_parmparse_prefix;
78 Vector<IntVect> m_ref_ratio;
80 Real m_ascalar = std::numeric_limits<Real>::max();
81 Real m_bscalar = std::numeric_limits<Real>::max();
89 Vector<std::unique_ptr<MLMGBndry>> m_bndry;
90 Vector<std::unique_ptr<BndryRegister>> m_bndry_rhs;
91 Vector<iMultiFab> m_fine_masks;
92 Vector<iMultiFab> m_crse_masks;
96 Vector<iMultiFab> m_c2f_offset_from;
97 Vector<LayoutData<int>> m_c2f_total_from;
98 Vector<iMultiFab> m_c2f_nentries;
99 Vector<iMultiFab> m_c2f_offset_to;
100 Vector<LayoutData<int>> m_c2f_total_to;
103 Vector<Array<iMultiFab,AMREX_SPACEDIM>> m_offset_cf_bcoefs;
104 Vector<Array<LayoutData<std::unique_ptr<Gpu::DeviceVector<Real>>>,AMREX_SPACEDIM>> m_cf_bcoefs;
107 template <
class T>
using HostVector = Gpu::PinnedVector<T>;
109 template <
class T>
using HostVector = Vector<T>;
114 Vector<HostVector<int>> m_f2c_bno;
115 Vector<HostVector<IntVect>> m_f2c_cell;
116 Vector<Vector<HYPRE_Int>> m_f2c_nentries;
117 Vector<HostVector<std::size_t>> m_f2c_offset;
118 Vector<HostVector<Real>> m_f2c_values;
120 HYPRE_SStructGrid m_ss_grid =
nullptr;
121 HYPRE_SStructStencil m_ss_stencil =
nullptr;
122 HYPRE_SStructGraph m_ss_graph =
nullptr;
123 HYPRE_SStructSolver m_ss_solver =
nullptr;
124 HYPRE_SStructSolver m_ss_precond =
nullptr;
125 HYPRE_SStructMatrix m_ss_A =
nullptr;
126 HYPRE_SStructVector m_ss_x =
nullptr;
127 HYPRE_SStructVector m_ss_b =
nullptr;
129 HYPRE_Solver m_solver =
nullptr;
132 HYPRE_Int m_hypre_object_type = HYPRE_PARCSR;
void solve(Vector< MultiFab * > const &a_sol, Vector< MultiFab const * > const &a_rhs, Real a_reltol, Real a_abstol)
Definition AMReX_HypreMLABecLap.cpp:907
void commBCoefs_local(int flev, Array< MultiFab const *, 3 > const &a_bcoefs, Vector< FabArrayBase::CopyComTag > const &tags)
Definition AMReX_HypreMLABecLap.cpp:1440
void setup(Real a_ascalar, Real a_bscalar, Vector< MultiFab const * > const &a_acoefs, Vector< Array< MultiFab const *, 3 > > const &a_bcoefs, Array< LinOpBCType, 3 > const &a_lobc, Array< LinOpBCType, 3 > const &a_hibc, Vector< MultiFab const * > const &a_levelbcdata, std::pair< MultiFab const *, IntVect > const &a_coarse_bc={nullptr, IntVect(0)})
Definition AMReX_HypreMLABecLap.cpp:487
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28