feat(cpp-object-oriented-modular-refactoring): step 17 - generic-result-recovery

This commit is contained in:
KOKO\Mimi
2026-08-16 10:40:49 +09:00
parent 31b6129cf8
commit d711e6d4fd
3 changed files with 543 additions and 273 deletions
+21 -1
View File
@@ -7,6 +7,7 @@
#include "fesa/analysis/analysis_model.h"
#include "fesa/analysis/analysis_state.h"
#include "fesa/core/status.h"
#include "fesa/elements/element.h"
#include "fesa/fem/dof_manager.h"
#include "fesa/math/sparse_matrix.h"
@@ -19,10 +20,29 @@ struct NodeStationResultRow {
std::array<double, 4> section_resultant;
};
/// @brief Recovers full equilibrium and active concrete element rows.
/// @brief Recovers full equilibrium and typed runtime element rows.
class ResultRecovery {
public:
/// @brief Aggregates runtime element bundles into one atomic state candidate.
/// @param model Non-owning active semantic model view.
/// @param elements Runtime elements in stable active source order.
/// @param dofs Owner of the matching full-space scatter and partition.
/// @param full_stiffness Assembled full-space stiffness matrix.
/// @param full_displacement Reconstructed full-space displacement candidate.
/// @param full_external_force Assembled full-space external-force candidate.
/// @param state Prior state replaced only after every bundle and global
/// evidence validates.
/// @return Success after atomic commit or a structured model failure.
static Status Recover(const AnalysisModel& model, const ElementView& elements,
const DofManager& dofs,
const SparseMatrix& full_stiffness,
const Vector& full_displacement,
const Vector& full_external_force,
AnalysisState& state);
/// @brief Builds and atomically commits a complete recovery candidate.
/// @note This compatibility facade creates runtime elements until the
/// procedure owns their lifetime directly.
/// @return Success after full residual K*d-F and all result rows validate.
static Status Recover(const AnalysisModel& model, const DofManager& dofs,
const SparseMatrix& full_stiffness,