Integrate Refactor solver sources and dual MSVC CMake builds
This commit is contained in:
@@ -481,47 +481,3 @@ TEST(LoadAssembly, ZeroLoadsRemainZero) {
|
||||
ASSERT_TRUE(constrained_rhs.HasValue());
|
||||
EXPECT_EQ(constrained_rhs.Value().Size(), 0U);
|
||||
}
|
||||
|
||||
TEST(LoadAssembly, PreservesOrderedCancellationInPrescribedCorrection) {
|
||||
const std::filesystem::path source{"models/load-assembly.inp"};
|
||||
auto fixture = MakeFixture(
|
||||
1U, {},
|
||||
{{"10", 1, 1, 1.0, {source, 21U}},
|
||||
{"10", 3, 3, 1.0, {source, 22U}},
|
||||
{"10", 5, 5, 1.0, {source, 23U}}},
|
||||
{});
|
||||
const double large = 72057594037927936.0; // 2^56, exactly representable.
|
||||
const auto kfc = MakeDenseSparse(
|
||||
3U, 3U, {large, 1.0, -large, large, -large, 1.0, 0.0, 0.0, 0.0});
|
||||
|
||||
const auto rhs = fesa::LoadAssembler::EffectiveFreeRhs(
|
||||
fesa::Vector{6U}, kfc, fixture.dofs->PrescribedValues(), *fixture.dofs);
|
||||
|
||||
ASSERT_TRUE(rhs.HasValue());
|
||||
ASSERT_EQ(rhs.Value().Size(), 3U);
|
||||
EXPECT_DOUBLE_EQ(rhs.Value()[0U], 0.0);
|
||||
EXPECT_DOUBLE_EQ(rhs.Value()[1U], -1.0);
|
||||
EXPECT_DOUBLE_EQ(rhs.Value()[2U], 0.0);
|
||||
}
|
||||
|
||||
TEST(LoadAssembly, SelectsFirstOrderedOverflowDiagnostic) {
|
||||
const std::filesystem::path source{"models/load-assembly.inp"};
|
||||
auto fixture = MakeFixture(
|
||||
1U, {},
|
||||
{{"10", 1, 1, 1.0, {source, 21U}},
|
||||
{"10", 3, 3, 1.0, {source, 22U}},
|
||||
{"10", 5, 5, 2.0, {source, 23U}}},
|
||||
{});
|
||||
const double maximum = (std::numeric_limits<double>::max)();
|
||||
const auto kfc = MakeDenseSparse(
|
||||
3U, 3U, {maximum, maximum, 0.0, 0.0, 0.0, maximum, 0.0, 0.0, 0.0});
|
||||
|
||||
const auto rhs = fesa::LoadAssembler::EffectiveFreeRhs(
|
||||
fesa::Vector{6U}, kfc, fixture.dofs->PrescribedValues(), *fixture.dofs);
|
||||
|
||||
ExpectFailureCode(rhs, "nonfinite-load-accumulation");
|
||||
ASSERT_EQ(rhs.GetStatus().Diagnostics().size(), 1U);
|
||||
EXPECT_EQ(rhs.GetStatus().Diagnostics()[0U].entity_identity, "0");
|
||||
EXPECT_NE(rhs.GetStatus().Diagnostics()[0U].message.find("row sum"),
|
||||
std::string::npos);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user