#ifndef FESA_ANALYSIS_HHT_REDUCED_PROCEDURE_H_ #define FESA_ANALYSIS_HHT_REDUCED_PROCEDURE_H_ #include #include "fesa/analysis/dynamic_execution_result.h" #include "fesa/core/status.h" namespace fesa { namespace hht_reduced_internal { class ShellHhtIntegrator; constexpr std::uint32_t kMaximumOuterCorrections = 100U; constexpr bool CanApplyOuterCorrection(const std::uint32_t completed) { return completed < kMaximumOuterCorrections; } } // namespace hht_reduced_internal class Domain; class EquilibriumAlgorithm; class LinearSolver; class NewtonIterationLogWriter; class ParallelFor; class TangentSolver; Result ExecuteReducedHht( const Domain& domain, NewtonIterationLogWriter& log, const ParallelFor& parallel_for, LinearSolver& positive_solver, TangentSolver& tangent_solver); /// @brief Borrows caller iteration policy for the complete production core. Result ExecuteReducedHht( const Domain& domain, NewtonIterationLogWriter& log, const ParallelFor& parallel_for, LinearSolver& positive_solver, TangentSolver& tangent_solver, const hht_reduced_internal::ShellHhtIntegrator& integrator, EquilibriumAlgorithm& algorithm); } // namespace fesa #endif // FESA_ANALYSIS_HHT_REDUCED_PROCEDURE_H_