Connect MITC4 drilling evidence across analysis procedures
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "fesa/math/vector3.h"
|
||||
#include "results/mitc4_drilling_evidence.h"
|
||||
|
||||
namespace fesa::results_internal {
|
||||
namespace {
|
||||
@@ -243,11 +244,24 @@ Status RecoverShellGlobalEvidence(const Domain& domain, const DofManager& dofs,
|
||||
candidate.shell.equilibrium[component] = force_balance[component];
|
||||
candidate.shell.equilibrium[3U + component] = moment_balance[component];
|
||||
}
|
||||
Vector3 acceptance_moment = moment_balance;
|
||||
if (candidate.shell.mitc4_drilling) {
|
||||
CompleteDrillingEvidence(candidate.shell.equilibrium,
|
||||
&*candidate.shell.mitc4_drilling);
|
||||
if (!ValidDrillingEvidence(candidate.shell.mitc4_drilling,
|
||||
candidate.shell.equilibrium))
|
||||
return RecoveryFailure("invalid-shell-drilling-evidence",
|
||||
{domain.SourcePath(), 0U}, "global-equilibrium",
|
||||
"Shell drilling diagnostics must be finite and consistent.");
|
||||
if (candidate.shell.mitc4_drilling->mode == Mitc4DrillingMode::kDirectSpring)
|
||||
acceptance_moment = moment_balance -
|
||||
Vector3(candidate.shell.mitc4_drilling->drilling_moment);
|
||||
}
|
||||
const double force_metric =
|
||||
NormalizedBalance(force_balance.Components(),
|
||||
(std::max)(applied_force_scale, reaction_force_scale));
|
||||
const double moment_metric = NormalizedBalance(
|
||||
moment_balance.Components(),
|
||||
acceptance_moment.Components(),
|
||||
(std::max)(applied_moment_scale, reaction_moment_scale));
|
||||
candidate.shell.verification_metrics = {global.normalized_free_residual,
|
||||
force_metric, moment_metric};
|
||||
|
||||
Reference in New Issue
Block a user