Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_MLAlgMG.H
Go to the documentation of this file.
1#ifndef AMREX_ML_ALGMG_H_
2#define AMREX_ML_ALGMG_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_Geometry.H>
6#include <AMReX_LayoutData.H>
7#include <AMReX_MultiFab.H>
8#include <AMReX_iMultiFab.H>
9
10#include <memory>
11
12namespace amrex {
13
14template <typename T> class AlgMG;
15class MLNodeLinOp;
16
25{
26public:
27
30 MLAlgMG (int mglev, BoxArray const& grids, DistributionMapping const& dmap,
31 Geometry const& geom, iMultiFab const& owner_mask,
32 iMultiFab const& dirichlet_mask, MLNodeLinOp const& linop);
33
44 MLAlgMG (int mglev, BoxArray const& grids, DistributionMapping const& dmap,
45 Geometry const& geom, FabFactory<FArrayBox> const& factory,
46 iMultiFab const* overset_mask, Real ascalar, Real bscalar,
47 MultiFab const* acoef, Array<MultiFab const*,AMREX_SPACEDIM> const& bcoef,
48 MultiFab const* eb_bcoef,
50 LayoutData<GpuArray<Real,2*AMREX_SPACEDIM>> const& bcl, int maxorder);
51
53 MLAlgMG (MLAlgMG const&) = delete;
54 MLAlgMG (MLAlgMG&&) = delete;
55 MLAlgMG& operator= (MLAlgMG const&) = delete;
57
64 void solve (MultiFab& soln, MultiFab const& rhs, Real reltol, Real abstol, int maxiter);
65
67 void applyVcycle (MultiFab& soln, MultiFab const& rhs);
68
70 [[nodiscard]] AlgMG<Real>& solver () noexcept;
71
72 struct Impl;
73
74private:
75 std::unique_ptr<Impl> m_impl;
76};
77
78}
79
80#endif
Problem-domain geometry: maps between index space and physical space.
Algebraic multigrid solver for SpMatrix / AlgVector systems.
Definition AMReX_AlgMG.H:264
Reference-counted collection of Boxes.
Definition AMReX_BoxArray.H:681
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:51
Abstract factory interface for creating, aliasing, and destroying FAB objects.
Definition AMReX_FabFactory.H:73
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:85
a one-thingy-per-box distributed object
Definition AMReX_LayoutData.H:13
Algebraic system of one MG level of AMR level 0 of an MLLinOp, solved with AlgMG.
Definition AMReX_MLAlgMG.H:25
MLAlgMG & operator=(MLAlgMG const &)=delete
MLAlgMG(MLAlgMG &&)=delete
void applyVcycle(MultiFab &soln, MultiFab const &rhs)
One AlgMG V-cycle with zero initial guess: the preconditioner form.
Definition AMReX_MLAlgMG.cpp:145
MLAlgMG(MLAlgMG const &)=delete
AlgMG< Real > & solver() noexcept
The solver, for settings such as verbosity and Krylov acceleration.
Definition AMReX_MLAlgMG.cpp:142
void solve(MultiFab &soln, MultiFab const &rhs, Real reltol, Real abstol, int maxiter)
Solve A x = b with zero initial guess.
Definition AMReX_MLAlgMG.cpp:155
Definition AMReX_MLNodeLinOp.H:23
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
A Collection of IArrayBoxes.
Definition AMReX_iMultiFab.H:34
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:80
std::array< T, N > Array
Definition AMReX_Array.H:31
Definition AMReX_Amr.cpp:50
Fixed-size array that can be used on GPU.
Definition AMReX_Array.H:52
Definition AMReX_MLAlgMG.cpp:74