Files
FESADev/include/fesa/analysis/transient_heat_procedure.h

33 lines
1.1 KiB
C++

#ifndef FESA_ANALYSIS_TRANSIENT_HEAT_PROCEDURE_H_
#define FESA_ANALYSIS_TRANSIENT_HEAT_PROCEDURE_H_
#include "fesa/analysis/thermal_execution_result.h"
#include "fesa/core/status.h"
namespace fesa {
class Domain;
class LinearSolver;
class ParallelFor;
/// @brief Executes fixed-increment backward Euler with checked thermal
/// recovery.
class TransientHeatProcedureExecutor final {
public:
/// @brief Retains caller-owned adapters, which must outlive Execute calls.
TransientHeatProcedureExecutor(const ParallelFor& parallel_for,
LinearSolver& linear_solver);
/// @brief Returns a complete independently owned state or a structured
/// failure.
/// @note Uses raw initial values; prescribed temperatures start at increment
/// one. No output files are opened. A failed trial is never committed to
/// history.
Result<ThermalExecutionResult> Execute(const Domain& domain) const;
private:
const ParallelFor& parallel_for_;
LinearSolver& linear_solver_;
};
} // namespace fesa
#endif // FESA_ANALYSIS_TRANSIENT_HEAT_PROCEDURE_H_