Files
FESADev/src/fesa/results/global_equilibrium_recovery.h
T

38 lines
1.4 KiB
C++

#ifndef FESA_RESULTS_GLOBAL_EQUILIBRIUM_RECOVERY_H_
#define FESA_RESULTS_GLOBAL_EQUILIBRIUM_RECOVERY_H_
#include "fesa/core/status.h"
#include "fesa/fem/dof_manager.h"
#include "fesa/math/sparse_matrix.h"
#include "fesa/math/vector.h"
#include "fesa/model/domain.h"
#include "results/recovery_candidate.h"
namespace fesa::results_internal {
/// @brief Owns full residual, reaction evidence, and free equilibrium scale.
struct GlobalEquilibriumResult {
Vector internal_force;
Vector residual;
Vector reaction;
double normalized_free_residual{0.0};
};
/// @brief Computes K*d-F, full reaction evidence, and free residual metric.
/// @return The complete global residual candidate or a structured failure.
Result<GlobalEquilibriumResult> GlobalEquilibriumRecovery(
const Domain& domain, const DofManager& dofs,
const SparseMatrix& full_stiffness, const Vector& full_displacement,
const Vector& full_external_force);
/// @brief Adds shell global force and moment equilibrium evidence.
/// @note Moments are taken about the fixed global origin.
Status RecoverShellGlobalEvidence(const Domain& domain, const DofManager& dofs,
const Vector& external_force,
const GlobalEquilibriumResult& global,
RecoveryCandidate& candidate);
} // namespace fesa::results_internal
#endif // FESA_RESULTS_GLOBAL_EQUILIBRIUM_RECOVERY_H_