Integrate Refactor solver sources and dual MSVC CMake builds

This commit is contained in:
KOKO\Mimi
2026-10-18 02:10:51 +09:00
parent 7ee32e5837
commit 12d51480de
218 changed files with 17842 additions and 9689 deletions
@@ -494,25 +494,17 @@ TEST(DynamicRotation, InverseIdentityAndCurrentAnalyticNullAtFiniteRotation) {
for (const V3 phi : {V3{0.5, 0.0, 0.0}, V3{0.2, -0.3, 0.1}}) {
const auto rotation = fesa::ExpSkew(phi);
const auto jacobian = fesa::LeftJacobianSO3(phi);
const auto inverse_transpose = fesa::InverseTransposeLeftJacobianSO3(phi);
for (std::size_t column = 0; column < 3; ++column) {
// R^T e_j is a unit initial director; its current director is e_j.
const V3 initial{rotation(column, 0), rotation(column, 1),
rotation(column, 2)};
const auto value = fesa::EvaluateDynamicRotation(phi, initial, {}, {});
ASSERT_TRUE(value.HasValue());
const V3 inverse_column{inverse_transpose(column, 0),
inverse_transpose(column, 1),
inverse_transpose(column, 2)};
EXPECT_LE(
(value.Value().drill_null - inverse_column / inverse_column.Norm())
.Norm(),
1.0e-12);
const V3 identity_column =
Multiply(jacobian, value.Value().drill_null) * inverse_column.Norm();
for (std::size_t row = 0; row < 3; ++row) {
EXPECT_NEAR(identity_column[row], row == column ? 1.0 : 0.0, 1.0e-12);
}
const V3 mapped = Multiply(jacobian, value.Value().drill_null);
EXPECT_GT(mapped[column], 0.0);
EXPECT_NEAR(value.Value().drill_null.Norm(), 1.0, 1e-12);
for (std::size_t row = 0; row < 3; ++row)
if (row != column) EXPECT_NEAR(mapped[row], 0.0, 1e-12);
}
}
for (const Fixture fixture : {Fixture{}, Warped()}) {