Files
FESADev/include/fesa/analysis/solid_hht_dynamic_procedure.h
T

45 lines
1.7 KiB
C++

#ifndef FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_
#define FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_
#include "fesa/analysis/solid_dynamic_analysis_state.h"
namespace fesa {
class LinearSolver;
class ParallelFor;
class TangentSolver;
/// @brief Owns the validated 3N dynamic result independently of serialization.
struct SolidDynamicExecutionResult {
DofManager dofs;
SolidDynamicAnalysisState state;
};
/// @brief Integrates linear or TL Solid mechanics with constant consistent
/// mass.
class SolidHhtDynamicProcedureExecutor {
public:
/// @brief Retains caller-owned adapters which must outlive execution.
SolidHhtDynamicProcedureExecutor(const ParallelFor& parallel_for,
LinearSolver& mass_solver,
TangentSolver& tangent_solver);
/// @brief Returns complete accepted history without opening output files.
Result<SolidDynamicExecutionResult> Execute(const Domain& domain) const;
/// @brief Executes into an empty initialized state, preserving accepted
/// history on every failure. Domain must match the state inventory and
/// schedule.
Status ExecuteInto(const Domain& domain,
SolidDynamicAnalysisState& state) const;
/// @brief Internal verification only; alpha0 verifies conservative dynamics.
/// @note This does not extend the approved INP parameter subset.
Status ExecuteIntoForVerification(const Domain& domain,
SolidDynamicAnalysisState& state,
double alpha) const;
private:
const ParallelFor& parallel_for_;
LinearSolver& mass_solver_;
TangentSolver& tangent_solver_;
};
} // namespace fesa
#endif // FESA_ANALYSIS_SOLID_HHT_DYNAMIC_PROCEDURE_H_