엄격 수렴 기준 실행 보존과 한정 HHT 개발 계측 기록
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user