OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
SurfaceJacobian.hpp
Go to the documentation of this file.
1
29
30#ifndef OPENSWMM_ENGINE_2D_SURFACE_JACOBIAN_HPP
31#define OPENSWMM_ENGINE_2D_SURFACE_JACOBIAN_HPP
32
33#include "../data/MeshData.hpp"
35
36#include <vector>
37
38namespace openswmm::twoD {
39
44public:
49 void buildSparsity(const MeshData& mesh);
50
53 void assemble(const MeshData& mesh, const SurfaceStateData& state,
54 double gamma, double dh_floor = 1.0e-9);
55
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(); }
62
63private:
64 int n_ = 0;
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_;
70};
71
72} // namespace openswmm::twoD
73
74#endif // OPENSWMM_ENGINE_2D_SURFACE_JACOBIAN_HPP
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