feat(analysis): implement Hex8 solid static procedures

This commit is contained in:
KOKO\Mimi
2026-10-09 02:18:20 +09:00
parent ca806100c9
commit 7a527e88e5
6 changed files with 1639 additions and 0 deletions
@@ -0,0 +1,39 @@
#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_