30#ifndef OPENSWMM_ENGINE_2D_SURFACE_JACOBIAN_HPP
31#define OPENSWMM_ENGINE_2D_SURFACE_JACOBIAN_HPP
54 double gamma,
double dh_floor = 1.0e-9);
56 int rows() const noexcept {
return n_; }
57 int nnz() const noexcept {
return static_cast<int>(col_idx_.size()); }
58 const int*
rowPtr() const noexcept {
return row_ptr_.data(); }
59 const int*
colIdx() const noexcept {
return col_idx_.data(); }
60 const double*
values() const noexcept {
return values_.data(); }
61 double*
values() noexcept {
return values_.data(); }
65 std::vector<int> row_ptr_;
66 std::vector<int> col_idx_;
67 std::vector<double> values_;
68 std::vector<int> diag_pos_;
69 std::vector<int> edge_pos_;
Structure-of-Arrays (SoA) storage for 2D triangular mesh geometry.
Structure-of-Arrays (SoA) storage for 2D surface routing state.
Assembles M = I − γ·J (diffusion stencil) in CSR for AMG.
Definition SurfaceJacobian.hpp:43
const int * rowPtr() const noexcept
Definition SurfaceJacobian.hpp:58
double * values() noexcept
Definition SurfaceJacobian.hpp:61
int nnz() const noexcept
Definition SurfaceJacobian.hpp:57
void buildSparsity(const MeshData &mesh)
Definition SurfaceJacobian.cpp:27
void assemble(const MeshData &mesh, const SurfaceStateData &state, double gamma, double dh_floor=1.0e-9)
Definition SurfaceJacobian.cpp:60
const double * values() const noexcept
Definition SurfaceJacobian.hpp:60
int rows() const noexcept
Definition SurfaceJacobian.hpp:56
const int * colIdx() const noexcept
Definition SurfaceJacobian.hpp:59
Definition NodeCoupling.cpp:15
SoA storage for 2D triangular mesh geometry and topology.
Definition MeshData.hpp:34
Definition SurfaceStateData.hpp:41