feat(hex8): connect Solid CLI and atomic HDF5 output

This commit is contained in:
KOKO\Mimi
2026-10-10 01:26:16 +09:00
parent 6b118aa456
commit e2c3c5bc55
15 changed files with 2484 additions and 8 deletions
@@ -11,6 +11,8 @@
#include "fesa/core/status.h"
namespace fesa {
struct SolidStaticIterationRecord;
struct SolidDynamicIterationRecord;
/// @brief Identifies the latest Newton procedure stage reached by a record.
enum class NewtonIterationStage {
@@ -93,6 +95,12 @@ class NewtonIterationLogWriter {
/// evidence or stream failure permanently fails this writer instance.
Status Write(const DynamicNewtonIterationLogRecord& record);
/// @brief Writes the two actual Solid static convergence channels.
Status Write(const SolidStaticIterationRecord& record,
const std::string& step_name);
/// @brief Writes scalar full-pair Solid HHT convergence evidence.
Status Write(const SolidDynamicIterationRecord& record);
/// @brief Flushes every complete record written so far to the log.
/// @return Success after the stream flush, otherwise an output failure with
/// code `log-output-failure`.
+13 -3
View File
@@ -9,6 +9,9 @@
#include "fesa/analysis/dynamic_analysis_state.h"
#include "fesa/analysis/eigen_analysis_state.h"
#include "fesa/analysis/nonlinear_analysis_state.h"
#include "fesa/analysis/solid_frequency_state.h"
#include "fesa/analysis/solid_hht_dynamic_procedure.h"
#include "fesa/analysis/solid_static_procedure.h"
#include "fesa/analysis/transient_heat_procedure.h"
#include "fesa/core/diagnostic.h"
#include "fesa/core/status.h"
@@ -26,6 +29,8 @@ class ResultsWriter;
class HhtDynamicProcedureExecutor;
class DynamicResultsWriter;
class ThermalResultsWriter;
class SolidResultsWriter;
class SolidFrequencyProcedureExecutor;
struct DerivedOutputPaths;
/// @brief Owns one parsed and semantically mapped analysis input.
@@ -63,7 +68,8 @@ struct DynamicExecutionResult {
using PreparedAnalysisOutcome =
std::variant<LinearStaticExecutionResult, NonlinearStaticExecutionResult,
EigenAnalysisState, DynamicExecutionResult,
ThermalExecutionResult>;
ThermalExecutionResult, SolidStaticExecutionResult,
SolidFrequencyState, SolidDynamicExecutionResult>;
/// @brief Selects the approved procedure from a prepared Domain.
/// @pre The executors and log outlive this call.
@@ -76,7 +82,10 @@ Result<PreparedAnalysisOutcome> ExecutePreparedAnalysis(
const LinearFrequencyProcedureExecutor& frequency_executor,
NewtonIterationLogWriter& log,
const HhtDynamicProcedureExecutor* dynamic_executor = nullptr,
const TransientHeatProcedureExecutor* thermal_executor = nullptr);
const TransientHeatProcedureExecutor* thermal_executor = nullptr,
const SolidStaticProcedureExecutor* solid_static_executor = nullptr,
const SolidFrequencyProcedureExecutor* solid_frequency_executor = nullptr,
const SolidHhtDynamicProcedureExecutor* solid_dynamic_executor = nullptr);
/// @brief Writes an already computed outcome to its authoritative result file.
/// @pre The Newton log has closed successfully before this function is called.
@@ -89,7 +98,8 @@ Status FinalizePreparedAnalysisResult(
const std::vector<Diagnostic>& diagnostics, ResultsWriter& linear_writer,
NonlinearResultsWriter& nonlinear_writer, EigenResultsWriter& eigen_writer,
DynamicResultsWriter* dynamic_writer = nullptr,
ThermalResultsWriter* thermal_writer = nullptr);
ThermalResultsWriter* thermal_writer = nullptr,
SolidResultsWriter* solid_writer = nullptr);
} // namespace fesa