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
@@ -223,16 +223,15 @@ std::vector<std::uint8_t> ReadConstraintMask(const Hdf5File& file) {
fesa::Vector3 SpatialMoment(const fesa::Vector3& phi,
const fesa::Vector3& generalized) {
const fesa::Matrix transform = fesa::InverseTransposeLeftJacobianSO3(phi);
return {transform(0U, 0U) * generalized.X() +
transform(0U, 1U) * generalized.Y() +
transform(0U, 2U) * generalized.Z(),
transform(1U, 0U) * generalized.X() +
transform(1U, 1U) * generalized.Y() +
transform(1U, 2U) * generalized.Z(),
transform(2U, 0U) * generalized.X() +
transform(2U, 1U) * generalized.Y() +
transform(2U, 2U) * generalized.Z()};
// Independent closed-form action, used only as a test oracle.
const double angle = phi.Norm();
const double square = angle * angle;
const double coefficient = angle < 1e-4 ?
1.0 / 12.0 + square / 720.0 + square * square / 30240.0 +
square * square * square / 1209600.0 :
(1.0 - 0.5 * angle / std::tan(0.5 * angle)) / square;
return generalized + 0.5 * phi.Cross(generalized) +
coefficient * phi.Cross(phi.Cross(generalized));
}
std::array<double, 6> ReconstructGlobalBalance(const Hdf5File& file) {