Connect HHT field convergence to production acceptance and v2 logs

This commit is contained in:
KOKO\Mimi
2026-10-19 02:49:53 +09:00
parent 0e392a7364
commit dd54b0ae1e
9 changed files with 811 additions and 23 deletions
+11 -1
View File
@@ -16,6 +16,7 @@
#include "fesa/math/sparse_matrix.h"
#include "elements/nonlinear_mitc4_configuration_internal.h"
#include "math/dense_blas_internal.h"
#include "analysis/hht_field_convergence.h"
namespace fesa {
class LinearSolver;
@@ -95,6 +96,7 @@ struct DynamicAssembly {
// Canonical scalar drilling-constraint derivative, indexed by global node.
std::optional<SparseMatrix> hidden_gradient;
std::optional<TrialConstraintData> trial_constraints;
std::array<std::vector<hht_field_convergence::FluxOccurrence>, 2> field_flux;
};
/// @brief Builds checked shell evaluators in stable source order.
@@ -104,9 +106,17 @@ Result<std::vector<RuntimeShell>> BuildRuntimeShells(const Domain& domain,
/// @brief Returns the maximum initial active-element edge length.
Result<double> ReferenceLength(const Domain& domain);
/// @brief Measures free full endpoint residuals and actual u/total-phi changes.
/// @note Previous is the selected trial in this increment, not a tangent lift.
Result<std::array<hht_field_convergence::FieldInput, 2>> MeasureEndpointFields(
const DofManager& dofs, const DynamicAcceptedFrameState& trial,
const DynamicAcceptedFrameState& accepted,
const std::optional<Vector>& previous);
/// @brief Assembles dead loads and their uncancelled absolute row scales.
Result<std::array<Vector, 2>> AssembleLoads(const Domain& domain,
const DofManager& dofs);
const DofManager& dofs,
std::array<std::vector<hht_field_convergence::FluxOccurrence>, 2>* field_flux = nullptr);
/// @brief Evaluates current kinetic and internal quantities without commit.
Result<DynamicAssembly> EvaluateAssembly(