include/pops/coupling/base/elliptic_rhs.hpp File ReferenceΒΆ
|
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 (Poisson) RIGHT-HAND-SIDE assemblers: single-model and N-species. More...
#include <pops/core/model/coupled_system.hpp>#include <pops/core/foundation/types.hpp>#include <pops/mesh/execution/for_each.hpp>#include <pops/mesh/storage/multifab.hpp>#include <pops/numerics/spatial_operator.hpp>#include <cstddef>#include <stdexcept>#include <vector>
Include dependency graph for elliptic_rhs.hpp:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | pops::detail::SingleModelEllipticRhsKernel< Model > |
| NAMED functor (not an POPS_HD lambda) of the single-model RHS: f(i,j,0) = model.elliptic_rhs(U). More... | |
| struct | pops::SingleModelEllipticRhs< Model > |
| SINGLE-model RHS assembler: rhs(.,.,0) = model.elliptic_rhs(U) over the valid cells. More... | |
| struct | pops::detail::TwoFieldChargeDensityRhsKernel |
| NAMED functor (not an POPS_HD lambda) of the two-field RHS: r(i,j,0) = a0 u0 + a1 u1. More... | |
| struct | pops::TwoFieldChargeDensityRhs |
| Two-field RHS: rhs = q0 * U0(.,.,comp0) + q1 * U1(.,.,comp1) (two-species charge density). More... | |
| struct | pops::TwoBlockChargeDensityRhs |
| Two-block RHS: same computation as TwoFieldChargeDensityRhs but reads blocks 0 and 1 of a CoupledSystem (q0 n0 + q1 n1). More... | |
| struct | pops::SpeciesCharge |
| Charge (with sign) and density component of a species for the elliptic RHS assembly. More... | |
| struct | pops::detail::AddScaledComponentKernel |
| NAMED functor (not an POPS_HD lambda) of the accumulation: r(i,j,0) += a * u(i,j,c). More... | |
| struct | pops::ChargeDensityRhs |
| N-species Poisson RHS: f = Sum_s q_s n_s over ALL blocks of the system. More... | |
Namespaces | |
| namespace | pops |
| namespace | pops::detail |
Functions | |
| void | pops::add_scaled_component (const MultiFab &U, Real q, int comp, MultiFab &rhs) |
| rhs(.,.,0) += q * U(.,.,comp) over the valid cells. | |
Detailed Description
Elliptic (Poisson) RIGHT-HAND-SIDE assemblers: single-model and N-species.
model.elliptic_rhs(U) covers the SINGLE-block case (SingleModelEllipticRhs). For several species the right-hand side is a SYSTEM quantity (f = Sum_s q_s n_s) reading several MultiFab. This header isolates that responsibility from the Coupler. ChargeDensityRhs (N species) REQUIRES one entry per block (species.size() == n_blocks): a forgotten block does not silently disappear from the right-hand side; a neutral species is declared explicitly with charge = 0. add_scaled_component (rhs += q * U) is the accumulation brick. The kernels assume identical layouts between U and rhs.
Generated by