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

40 lines
1.4 KiB
C++

#ifndef FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_
#define FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_
#include "fesa/analysis/solid_static_state.h"
namespace fesa {
class LinearSolver;
class ParallelFor;
class TangentSolver;
/// @brief Owns successful static frames and sorted model diagnostics.
struct SolidStaticExecutionResult {
SolidStaticState state;
std::vector<Diagnostic> diagnostics;
};
/// @brief Executes linear K0 or fixed-factor TL StVK static analysis.
class SolidStaticProcedureExecutor {
public:
/// @brief Uses non-owned adapters, which must outlive this executor.
/// @param tangent_solver Must support indefinite stressed tangents.
SolidStaticProcedureExecutor(const ParallelFor& parallel_for,
LinearSolver& linear_solver,
TangentSolver& tangent_solver);
/// @brief Returns validated results; no I/O or final-file replacement.
Result<SolidStaticExecutionResult> Execute(const Domain& domain) const;
/// @brief Executes into a fresh observer retaining accepted history on
/// failure.
/// @note A previously initialized observer is rejected without mutation.
Status ExecuteInto(const Domain& domain, SolidStaticState& state) const;
private:
const ParallelFor& parallel_for_;
LinearSolver& linear_solver_;
TangentSolver& tangent_solver_;
};
} // namespace fesa
#endif // FESA_ANALYSIS_SOLID_STATIC_PROCEDURE_H_