Connect MITC4 drilling evidence across analysis procedures
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
#include "fesa/analysis/newton_iteration_log.h"
|
||||
#include "fesa/assembly/parallel_for.h"
|
||||
#include "fesa/elements/finite_rotation.h"
|
||||
#include "elements/mitc4_drilling_internal.h"
|
||||
#include "fesa/solvers/linear/mkl_pardiso_solver.h"
|
||||
#include "fesa/solvers/linear/mkl_pardiso_tangent_solver.h"
|
||||
|
||||
@@ -120,6 +121,14 @@ struct Fixture {
|
||||
double length;
|
||||
};
|
||||
|
||||
// The finite rigid-orbit and free-spin C08 fixtures prescribe the historical
|
||||
// objective potential and its hidden velocity equation explicitly.
|
||||
void UseLegacyDrilling(const Fixture& fixture) {
|
||||
for (const auto& shell : fixture.shells)
|
||||
*shell.internal_kernel = fesa::mitc4_drilling_internal::TestAccess::WithMode(
|
||||
*shell.internal_kernel, fesa::Mitc4DrillingMode::kLegacyCorotatedTwist);
|
||||
}
|
||||
|
||||
Fixture MakeFixture(const std::size_t divisions,
|
||||
const bool lifecycle_translation = false) {
|
||||
fesa::ModelDefinition definition{};
|
||||
@@ -643,6 +652,7 @@ TEST(HhtShellPhysics, ManufacturedHiddenCountsExternalHessianOnce) {
|
||||
TEST(HhtShellPhysics,
|
||||
C08aRigidOrbitMatchesIndependentVolumeForcePowerAndMomentum) {
|
||||
const auto fixture = MakeFixture(1U);
|
||||
UseLegacyDrilling(fixture);
|
||||
const auto parameters = Require(fesa::MakeHhtParameters(-0.05));
|
||||
const auto initial =
|
||||
Evaluate(fixture, EmptyFrame(fixture), 1.0 / 16.0, parameters, false);
|
||||
@@ -3078,6 +3088,7 @@ std::array<double, 2> AccelerationSplit(const Frame& basis,
|
||||
|
||||
TEST(HhtShellPhysics, ReducedManufacturedControllerKeepsExactInitialOrbit) {
|
||||
const auto fixture = MakeFixture(1U);
|
||||
UseLegacyDrilling(fixture);
|
||||
const auto grid = RunPlate(fixture, 1.0 / 64.0, true);
|
||||
ASSERT_EQ(grid.history.size(), 65U);
|
||||
const auto exact = RigidOrbit(fixture, 0.0);
|
||||
@@ -3115,6 +3126,7 @@ TEST(HhtShellPhysics, ReducedManufacturedControllerKeepsExactInitialOrbit) {
|
||||
|
||||
TEST(HhtShellPhysics, C08aRigidManufacturedOrbitReducedCoordinateTimeConvergence) {
|
||||
const auto fixture = MakeFixture(1U);
|
||||
UseLegacyDrilling(fixture);
|
||||
std::vector<GridEvidence> grids;
|
||||
std::vector<std::array<double, 6>> errors;
|
||||
for (const unsigned denominator : {16U, 32U, 64U, 128U, 256U, 512U, 1024U}) {
|
||||
@@ -3297,6 +3309,7 @@ TEST(HhtShellPhysics, C08bInitialPhysicalSpectrumProbe) {
|
||||
TEST(HhtShellPhysics,
|
||||
PredictorStartCompletesPreviouslyFailingLumpedFreePlateGrid) {
|
||||
const auto fixture = MakeFixture(2U);
|
||||
UseLegacyDrilling(fixture);
|
||||
const auto evidence = RunPlate(fixture, 1.0 / 256.0, false);
|
||||
ASSERT_EQ(evidence.history.size(), 65U);
|
||||
EXPECT_DOUBLE_EQ(evidence.history.back().time, kEndTime);
|
||||
@@ -3307,6 +3320,7 @@ TEST(HhtShellPhysics,
|
||||
TEST(HhtShellPhysics,
|
||||
C08bFreeFiniteRotationPlateSelfConvergenceAndPhysicalInvariants) {
|
||||
const auto fixture = MakeFixture(2U);
|
||||
UseLegacyDrilling(fixture);
|
||||
std::vector<GridEvidence> grids;
|
||||
for (const unsigned denominator :
|
||||
{64U, 128U, 256U, 512U, 1024U, 32768U, 65536U, 131072U}) {
|
||||
|
||||
Reference in New Issue
Block a user