Integrate Refactor solver sources and dual MSVC CMake builds
This commit is contained in:
@@ -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()}) {
|
||||
|
||||
Reference in New Issue
Block a user