3#include <AMReX_Config.H>
12#include <petscsystypes.h>
84 int max_iter, const
BndryData& bndry,
int max_bndry_order);
93 static constexpr PetscInt regular_stencil_size = 2*AMREX_SPACEDIM + 1;
94 static constexpr PetscInt eb_stencil_size =
AMREX_D_TERM(3, *3, *3);
103 Real scalar_a, scalar_b;
111 std::unique_ptr<amrex_KSP> solver;
112 std::unique_ptr<amrex_Mat> A;
113 std::unique_ptr<amrex_Vec> b;
114 std::unique_ptr<amrex_Vec> x;
120 MultiFab const* m_eb_b_coeffs =
nullptr;
140[[nodiscard]] std::unique_ptr<PETScABecLap>
141makePetsc (
const BoxArray& grids,
const DistributionMapping& dmap,
142 const Geometry& geom,
MPI_Comm comm_);
Boundary data container that owns masks, boundary values, and metadata.
#define AMREX_D_TERM(a, b, c)
Definition AMReX_SPACE.H:172
#define BL_SPACEDIM
Definition AMReX_SPACE.H:15
A BndryData stores and manipulates boundary data information on each side of each box in a BoxArray.
Definition AMReX_BndryData.H:46
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:568
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:349
Definition AMReX_FabFactory.H:50
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
a one-thingy-per-box distributed object
Definition AMReX_LayoutData.H:13
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
PETSc wrapper that assembles/solves (a alpha - b div beta grad) phi = rhs.
Definition AMReX_PETSc.H:30
void loadVectors(MultiFab &soln, const MultiFab &rhs)
Copy AMReX solution guess soln and RHS rhs into PETSc vectors.
Definition AMReX_PETSc.cpp:613
void setEBDirichlet(MultiFab const *beb)
Provide b coefficients stored in beb for embedded-boundary faces.
Definition AMReX_PETSc.H:88
void getSolution(MultiFab &soln)
Copy PETSc's solved solution back into AMReX storage soln.
Definition AMReX_PETSc.cpp:721
void solve(MultiFab &soln, const MultiFab &rhs, Real rel_tol, Real abs_tol, int max_iter, const BndryData &bndry, int max_bndry_order)
Solve the assembled ABec system using PETSc/KSP.
Definition AMReX_PETSc.cpp:137
void setVerbose(int _verbose)
Set PETSc verbosity level forwarded to KSP monitors (_verbose).
Definition AMReX_PETSc.cpp:131
PETScABecLap(PETScABecLap &&) noexcept=delete
~PETScABecLap()
Definition AMReX_PETSc.cpp:96
void setBCoeffs(const Array< const MultiFab *, 3 > &beta)
Install per-direction face-centered b coefficients.
Definition AMReX_PETSc.cpp:122
void prepareSolver()
Build PETSc matrices/vectors and apply runtime parameters.
Definition AMReX_PETSc.cpp:176
PETScABecLap(PETScABecLap const &)=delete
void setScalars(Real sa, Real sb)
Store constant scalars for the diagonal and diffusive terms.
Definition AMReX_PETSc.cpp:109
void setACoeffs(const MultiFab &alpha)
Install cell-centered a coefficients (copied as needed).
Definition AMReX_PETSc.cpp:116
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
std::array< T, N > Array
Definition AMReX_Array.H:26
int MPI_Comm
Definition AMReX_ccse-mpi.H:51
static constexpr int MPI_COMM_NULL
Definition AMReX_ccse-mpi.H:59
Definition AMReX_Amr.cpp:49
std::unique_ptr< PETScABecLap > makePetsc(const BoxArray &grids, const DistributionMapping &dmap, const Geometry &geom, MPI_Comm comm_)
Factory helper that instantiates a PETSc ABec Laplacian on one level.
Definition AMReX_PETSc.cpp:58