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

37 lines
1.2 KiB
C++

#ifndef FESA_ANALYSIS_NONLINEAR_STATIC_PROCEDURE_H_
#define FESA_ANALYSIS_NONLINEAR_STATIC_PROCEDURE_H_
#include "fesa/analysis/nonlinear_static_execution_result.h"
#include "fesa/core/status.h"
namespace fesa {
class Domain;
class NewtonIterationLogWriter;
class ParallelFor;
class TangentSolver;
/// @brief Executes fixed-load-factor full-Newton nonlinear static analysis.
class NonlinearStaticProcedureExecutor {
public:
/// @brief Creates a procedure executor with caller-owned backend adapters.
/// @param parallel_for Deterministic element-local execution adapter.
/// @param tangent_solver Fresh unsymmetric tangent solve adapter.
NonlinearStaticProcedureExecutor(const ParallelFor& parallel_for,
TangentSolver& tangent_solver);
/// @brief Computes accepted nonlinear frames and appends iteration records.
/// @return A validated nonlinear state without writing HDF5 output.
Result<NonlinearStaticExecutionResult> Execute(
const Domain& domain, NewtonIterationLogWriter& log) const;
private:
const ParallelFor& parallel_for_;
TangentSolver& tangent_solver_;
};
} // namespace fesa
#endif // FESA_ANALYSIS_NONLINEAR_STATIC_PROCEDURE_H_