fix: enforce thermal boundary dof endpoints

This commit is contained in:
KOKO\Mimi
2026-09-29 18:47:23 +09:00
parent 254247efc1
commit 283628ecda
6 changed files with 188 additions and 5 deletions
+12 -2
View File
@@ -20,8 +20,10 @@ class AnalysisModel {
/// @brief Returns the non-owned Domain backing this view.
const Domain& GetDomain() const noexcept;
/// @brief Returns the sole active static step.
const StepDefinition& Step() const noexcept;
/// @brief Returns the sole active structural step.
/// @throws std::logic_error when this is a thermal view.
/// @note Thermal callers must use ThermalStep().
const StepDefinition& Step() const;
/// @brief Reports whether this view selects the uncoupled thermal step.
bool IsThermal() const noexcept;
@@ -56,6 +58,12 @@ class AnalysisModel {
/// @brief Returns connected thermal node indices in stable Domain order.
const std::vector<EntityIndex>& ActiveThermalNodes() const noexcept;
/// @brief Returns thermal-material collection positions in source order.
const std::vector<EntityIndex>& ActiveThermalMaterials() const noexcept;
/// @brief Returns thermal-section collection positions in source order.
const std::vector<EntityIndex>& ActiveThermalSections() const noexcept;
/// @brief Returns active surface pressure records without copying Domain data.
const std::vector<SurfacePressureLoadDefinition>& ActiveSurfacePressureLoads()
const noexcept;
@@ -74,6 +82,8 @@ class AnalysisModel {
std::vector<EntityIndex> active_loads_;
std::vector<EntityIndex> active_thermal_elements_;
std::vector<EntityIndex> active_thermal_nodes_;
std::vector<EntityIndex> active_thermal_materials_;
std::vector<EntityIndex> active_thermal_sections_;
bool is_thermal_{false};
};