40 lines
1.4 KiB
C++
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_
|