45 lines
1.7 KiB
C++
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_
|