엄격 수렴 기준 실행 보존과 한정 HHT 개발 계측 기록

This commit is contained in:
KOKO\Mimi
2026-10-19 02:09:22 +09:00
parent 78cb339207
commit adb809bc01
12 changed files with 450 additions and 0 deletions
@@ -12,6 +12,7 @@
#endif
#include "analysis/hht_dynamic_internal.h"
#include "analysis/hht_development_probe.h"
#include "math/dense_blas_internal.h"
#include "fesa/assembly/parallel_for.h"
#include "fesa/elements/finite_rotation.h"
@@ -382,6 +383,7 @@ Result<DynamicAssembly> EvaluateAssembly(
const Vector& load_scale, const double time_increment,
const HhtParameters& parameters, const ParallelFor& parallel_for,
const bool directional_third) {
FESA_HHT_PROBE_SCOPE(kAssembly);
const std::size_t count = dofs.FullDofCount();
for (const auto* values : std::array<const Vector*, 6>{
&frame.generalized_coordinates, &frame.velocity, &frame.acceleration,
@@ -446,9 +448,11 @@ Result<DynamicAssembly> EvaluateAssembly(
}
const auto before = retain_constraints ? ReadTrialEvaluationContext()
: TrialEvaluationContext{};
FESA_HHT_PROBE_COUNT(kInternalEvaluation);
auto f = shells[e].internal->EvaluateTrial(
trial, directional_third ? &v : nullptr);
if (!f.HasValue()) {
FESA_HHT_PROBE_COUNT(kInternalFailure);
failures[e] = f.GetStatus();
return;
}
@@ -456,6 +460,7 @@ Result<DynamicAssembly> EvaluateAssembly(
const auto after = ReadTrialEvaluationContext();
if (ReusableTrialContext(before, after)) evaluation_contexts[e] = after;
}
FESA_HHT_PROBE_COUNT(kInertiaEvaluation);
auto m = shells[e].inertia->Evaluate(trial, v, a);
if (!m.HasValue()) {
failures[e] = m.GetStatus();