include/pops/numerics/elliptic/interface/elliptic_solver.hpp Source FileΒΆ

adc_cpp: include/pops/numerics/elliptic/interface/elliptic_solver.hpp Source File
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
elliptic_solver.hpp
Go to the documentation of this file.
1#pragma once
2
20
24
25#include <concepts>
26
27namespace pops {
28
29template <class S>
30concept EllipticSolver = requires(S s) {
31 { s.rhs() } -> std::same_as<MultiFab&>;
32 { s.phi() } -> std::same_as<MultiFab&>;
33 s.solve();
34 { s.residual() } -> std::convertible_to<Real>;
35 { s.geom() } -> std::convertible_to<const Geometry&>;
36};
37
38} // namespace pops
Definition elliptic_solver.hpp:30
Geometry: index-space (Box2D) <-> Cartesian physical-space mapping; PolarGeometry: SIBLING for a glob...
MultiFab: a field DISTRIBUTED over a level (equivalent of AMReX's MultiFab).
Definition amr_hierarchy.hpp:29
Base scalar types and the POPS_HD macro (host+device portability).