feat(analysis): implement Hex8 solid static procedures
This commit is contained in:
@@ -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_
|
||||
Reference in New Issue
Block a user