feat(thermal): connect transient heat application execution
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "fesa/analysis/dynamic_analysis_state.h"
|
||||
#include "fesa/analysis/eigen_analysis_state.h"
|
||||
#include "fesa/analysis/nonlinear_analysis_state.h"
|
||||
#include "fesa/analysis/transient_heat_procedure.h"
|
||||
#include "fesa/core/diagnostic.h"
|
||||
#include "fesa/core/status.h"
|
||||
#include "fesa/model/domain.h"
|
||||
@@ -24,6 +25,7 @@ class NonlinearStaticProcedureExecutor;
|
||||
class ResultsWriter;
|
||||
class HhtDynamicProcedureExecutor;
|
||||
class DynamicResultsWriter;
|
||||
class ThermalResultsWriter;
|
||||
struct DerivedOutputPaths;
|
||||
|
||||
/// @brief Owns one parsed and semantically mapped analysis input.
|
||||
@@ -60,27 +62,34 @@ struct DynamicExecutionResult {
|
||||
|
||||
using PreparedAnalysisOutcome =
|
||||
std::variant<LinearStaticExecutionResult, NonlinearStaticExecutionResult,
|
||||
EigenAnalysisState, DynamicExecutionResult>;
|
||||
EigenAnalysisState, DynamicExecutionResult,
|
||||
ThermalExecutionResult>;
|
||||
|
||||
/// @brief Selects the approved procedure from a prepared Domain.
|
||||
/// @pre The executors and log outlive this call.
|
||||
/// @param thermal_executor Required only for a thermal Domain, whose structural
|
||||
/// step collection is empty; absence returns a solver failure.
|
||||
/// @return A validated procedure outcome without opening a result file.
|
||||
Result<PreparedAnalysisOutcome> ExecutePreparedAnalysis(
|
||||
const Domain& domain, LinearStaticProcedureExecutor& linear_executor,
|
||||
NonlinearStaticProcedureExecutor& nonlinear_executor,
|
||||
const LinearFrequencyProcedureExecutor& frequency_executor,
|
||||
NewtonIterationLogWriter& log,
|
||||
const HhtDynamicProcedureExecutor* dynamic_executor = nullptr);
|
||||
const HhtDynamicProcedureExecutor* dynamic_executor = nullptr,
|
||||
const TransientHeatProcedureExecutor* thermal_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.
|
||||
/// @param thermal_writer Required only for a thermal outcome; absence returns
|
||||
/// an output failure without opening the final result.
|
||||
/// @return Success after the selected writer atomically finalizes its result.
|
||||
Status FinalizePreparedAnalysisResult(
|
||||
const DerivedOutputPaths& paths, const Domain& domain,
|
||||
const PreparedAnalysisOutcome& outcome,
|
||||
const std::vector<Diagnostic>& diagnostics, ResultsWriter& linear_writer,
|
||||
NonlinearResultsWriter& nonlinear_writer, EigenResultsWriter& eigen_writer,
|
||||
DynamicResultsWriter* dynamic_writer = nullptr);
|
||||
DynamicResultsWriter* dynamic_writer = nullptr,
|
||||
ThermalResultsWriter* thermal_writer = nullptr);
|
||||
|
||||
} // namespace fesa
|
||||
|
||||
|
||||
Reference in New Issue
Block a user