엄격 수렴 기준 실행 보존과 한정 HHT 개발 계측 기록
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "analysis/hht_reduced_procedure.h"
|
||||
#include "analysis/hht_development_probe.h"
|
||||
#include "analysis/hht_reduced_integrator.h"
|
||||
|
||||
#include "equilibrium_algorithm.h"
|
||||
@@ -396,8 +397,16 @@ Result<DynamicExecutionResult> ExecuteReducedHht(
|
||||
TangentSolver& tangent_solver) {
|
||||
const ReducedCoordinateShellHhtIntegrator integrator;
|
||||
NewtonStepAlgorithm algorithm;
|
||||
#if defined(FESA_HHT_DEVELOPMENT_PROBE)
|
||||
hht_development_probe::Session probe_session;
|
||||
hht_development_probe::PositiveSolver measured_positive{positive_solver};
|
||||
hht_development_probe::CorrectionSolver measured_tangent{tangent_solver};
|
||||
return ExecuteReducedHht(domain, log, parallel_for, measured_positive,
|
||||
measured_tangent, integrator, algorithm);
|
||||
#else
|
||||
return ExecuteReducedHht(domain, log, parallel_for, positive_solver,
|
||||
tangent_solver, integrator, algorithm);
|
||||
#endif
|
||||
}
|
||||
|
||||
Result<DynamicExecutionResult> ExecuteReducedHht(
|
||||
@@ -405,6 +414,7 @@ Result<DynamicExecutionResult> ExecuteReducedHht(
|
||||
const ParallelFor& parallel_for, LinearSolver& positive_solver,
|
||||
TangentSolver& tangent_solver, const ShellHhtIntegrator& integrator,
|
||||
EquilibriumAlgorithm& algorithm) {
|
||||
FESA_HHT_PROBE_SCOPE(kProcedure);
|
||||
if (domain.Dynamic() == nullptr)
|
||||
return Result<DynamicExecutionResult>::Failure(Status::Failure(
|
||||
FailureCategory::kModel, {{Severity::kError, "invalid-dynamic-step", {},
|
||||
@@ -1016,6 +1026,7 @@ Result<DynamicExecutionResult> ExecuteReducedHht(
|
||||
};
|
||||
Vector selected_solution{selected.Value().rhs.Size()};
|
||||
if (selected_solution.Size() > 0U) {
|
||||
FESA_HHT_PROBE_SCOPE(kOuterSolve);
|
||||
status = tangent_solver.FactorizeFresh(selected.Value().tangent);
|
||||
if (!status.IsOk())
|
||||
return linear_failure(status);
|
||||
@@ -1091,6 +1102,7 @@ Result<DynamicExecutionResult> ExecuteReducedHht(
|
||||
seed = trial.Value().root.z;
|
||||
for (std::size_t i = 0U; i < seed.Size(); ++i)
|
||||
seed[i] += correction.Value().z[i];
|
||||
FESA_HHT_PROBE_COUNT(kOuterCorrection);
|
||||
return StepResult::Success(std::nullopt);
|
||||
},
|
||||
kMaximumOuterCorrections);
|
||||
|
||||
Reference in New Issue
Block a user