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