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
+10 -1
View File
@@ -32,7 +32,16 @@ std::string ReadBytes(const std::filesystem::path& path) {
TEST(EigenReference, RunsOriginalInputAndComparesAllModalFrameIdentities) {
const std::filesystem::path source_root{FESA_TEST_SOURCE_DIR};
const std::filesystem::path reference_directory =
source_root / "reference" / "shellNL-eigen-meshfine";
std::filesystem::path{FESA_TEST_BINARY_DIR} / "reference" /
"eigen-execution";
std::filesystem::create_directories(reference_directory);
for (const auto& name : {"shellNL-eigen-meshfine.inp",
"shellNL-eigen-meshfine eigenvalues.txt"}) {
std::filesystem::copy_file(
source_root / "reference" / "shellNL-eigen-meshfine" / name,
reference_directory / name,
std::filesystem::copy_options::overwrite_existing);
}
const std::filesystem::path input =
reference_directory / "shellNL-eigen-meshfine.inp";
const std::filesystem::path text =
@@ -1193,16 +1193,15 @@ fesa::Vector3 VectorAt(const std::vector<double>& values,
fesa::Vector3 SpatialMoment(const fesa::Vector3& phi,
const fesa::Vector3& generalized) {
const Matrix transform = 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));
}
fesa::Vector3 MaskedResidual(const Hdf5Projection& projection,
@@ -15,7 +15,14 @@ std::string Bytes(const std::filesystem::path& path) {
}
TEST(ThermalReference, OriginalAbaqusNt11RemainsAnExplicitFailingDiagnostic) {
const auto folder =
std::filesystem::path{FESA_TEST_SOURCE_DIR} / "reference/shell-thermal";
std::filesystem::path{FESA_TEST_BINARY_DIR} / "reference/thermal-execution";
std::filesystem::create_directories(folder);
for (const auto& name : {"shell-thermal.inp",
"shell-thermal NodalTemperature.csv"}) {
std::filesystem::copy_file(
std::filesystem::path{FESA_TEST_SOURCE_DIR} / "reference/shell-thermal" / name,
folder / name, std::filesystem::copy_options::overwrite_existing);
}
const auto input = folder / "shell-thermal.inp";
const auto csv = folder / "shell-thermal NodalTemperature.csv";
const auto before_input = Bytes(input), before_csv = Bytes(csv);