OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm::twoD::PorousHeatColumn Struct Reference

#include <PorousHeat.hpp>

Collaboration diagram for openswmm::twoD::PorousHeatColumn:

Public Member Functions

std::string initialize (double area_m2, const std::vector< double > &fixed_depth_edges, const ThermalMaterial &, const std::vector< double > &moisture, const std::vector< double > &initial_celsius)
 Build a validated candidate physical heat column and publish it on success.
 
std::string setMoisture (const std::vector< double > &)
 Recompute moisture-dependent heat capacity and conductivity without changing energy.
 
std::vector< ThermalStore > stores () const
 Copy canonical layer capacity and energy into finite-network stores.
 
void stores (std::vector< ThermalStore > &result) const
 
std::vector< ThermalContact > contacts () const
 Construct conductive contacts between consecutive fixed layers.
 
void contacts (std::vector< ThermalContact > &result) const
 

Public Attributes

ThermalMaterial material
 
double area = 0
 
std::vector< double > depth_edges
 
std::vector< double > theta
 
std::vector< double > capacity
 
std::vector< double > energy
 
std::vector< double > initial_energy
 
std::vector< double > conductivity
 

Member Function Documentation

◆ contacts() [1/2]

std::vector< ThermalContact > openswmm::twoD::PorousHeatColumn::contacts ( ) const

Construct conductive contacts between consecutive fixed layers.

Returns
Owned contacts joining j-1 to j, with W/K conductance equal to area divided by the sum of the two half-layer resistances. Prepared positive conductivity and valid increasing depth edges are required; energy.size() controls the layer count. No validation occurs; may allocate.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ contacts() [2/2]

void openswmm::twoD::PorousHeatColumn::contacts ( std::vector< ThermalContact > & result) const

◆ initialize()

std::string openswmm::twoD::PorousHeatColumn::initialize ( double a,
const std::vector< double > & edges,
const ThermalMaterial & m,
const std::vector< double > & water,
const std::vector< double > & temperatures )

Build a validated candidate physical heat column and publish it on success.

Declaration arguments
  • area_m2 (in): Footprint in m2, finite and positive.
  • fixed_depth_edges (in): Fixed depths in m, beginning at zero and strictly increasing, moisture.size()+1.
  • unnamed material (in): Material with finite porosity in [0,1) and positive phase properties.
  • moisture (in): Nonempty water fractions per layer, finite in [0,material porosity].
  • initial_celsius (in): Finite degrees C per layer, with moisture.size() entries.
Returns
Empty on replacement success; diagnostic on validation refusal with this unchanged. Allocation errors propagate before publication.
Parameters
[in]aFootprint in m2, finite and positive.
[in]edgesFixed depths in m, beginning at zero and strictly increasing, water.size()+1.
[in]mMaterial with finite porosity in [0,1) and positive phase properties.
[in]waterNonempty water fractions per layer, finite in [0,m.porosity].
[in]temperaturesFinite degrees C per layer, with water.size() entries.
Returns
Empty on replacement success; diagnostic on validation refusal with this unchanged. Allocation errors propagate before publication.
Here is the call graph for this function:

◆ setMoisture()

std::string openswmm::twoD::PorousHeatColumn::setMoisture ( const std::vector< double > & water)

Recompute moisture-dependent heat capacity and conductivity without changing energy.

Declaration arguments
  • unnamed moisture vector (in): Finite per-layer water fraction in [0,material.porosity], with one fewer entry than depth_edges. Geometry/material must already describe this column.
Returns
Empty on success; diagnostic for shape, bounds or invalid derived properties. Validation and temporary allocation precede field replacement; allocation errors propagate.
Note
Water receipts must carry their own heat before this call. Energy and initial_energy are untouched; changing capacity therefore changes the implied temperature.
Parameters
[in]waterFinite per-layer water fraction in [0,material.porosity], with one fewer entry than depth_edges. Geometry/material must already describe this column.
Returns
Empty on success; diagnostic for shape, bounds or invalid derived properties. Validation and temporary allocation precede field replacement; allocation errors propagate.
Note
Water receipts must carry their own heat before this call. Energy and initial_energy are untouched; changing capacity therefore changes the implied temperature.
Here is the caller graph for this function:

◆ stores() [1/2]

std::vector< ThermalStore > openswmm::twoD::PorousHeatColumn::stores ( ) const

Copy canonical layer capacity and energy into finite-network stores.

Returns
Owned vector in layer order, capacity J/K and energy J. The prepared column must have capacity.size() >= energy.size(); no shape or property validation is performed. May allocate.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ stores() [2/2]

void openswmm::twoD::PorousHeatColumn::stores ( std::vector< ThermalStore > & result) const

Member Data Documentation

◆ area

double openswmm::twoD::PorousHeatColumn::area = 0

◆ capacity

std::vector<double> openswmm::twoD::PorousHeatColumn::capacity

◆ conductivity

std::vector<double> openswmm::twoD::PorousHeatColumn::conductivity

◆ depth_edges

std::vector<double> openswmm::twoD::PorousHeatColumn::depth_edges

◆ energy

std::vector<double> openswmm::twoD::PorousHeatColumn::energy

◆ initial_energy

std::vector<double> openswmm::twoD::PorousHeatColumn::initial_energy

◆ material

ThermalMaterial openswmm::twoD::PorousHeatColumn::material

◆ theta

std::vector<double> openswmm::twoD::PorousHeatColumn::theta

The documentation for this struct was generated from the following files: