diff --git a/tests/sandbox/sandbox_test.cpp b/tests/sandbox/sandbox_test.cpp index dd04232..2af65ef 100644 --- a/tests/sandbox/sandbox_test.cpp +++ b/tests/sandbox/sandbox_test.cpp @@ -1,15 +1,11 @@ -#include "fourdst/config/config.h" -#include "stroid/config/config.h" -#include "stroid/IO/mesh.h" -#include "stroid/topology/curvilinear.h" -#include "stroid/topology/mapping.h" -#include "stroid/topology/topology.h" +#include "stroid/stroid.h" #include "mfem.hpp" #include #include "stroid/topology/optimize.h" +#include "stroid/utils/mesh_utils.h" struct SandboxConfig { std::string host = "localhost"; @@ -24,22 +20,26 @@ int main() { MeshConfig mesh_cfg; mesh_cfg.load("default.toml"); - const UserConfig user_cfg; + // const UserConfig user_cfg; + // + // + // std::unique_ptr mesh = stroid::topology::BuildSkeleton(mesh_cfg); + // stroid::topology::Finalize(*mesh, mesh_cfg); + // stroid::topology::PromoteToHighOrder(*mesh, mesh_cfg); + // stroid::topology::ProjectMesh(*mesh, mesh_cfg); + // + // if (mesh_cfg->optimization_methods.has_value() && mesh_cfg->optimization_methods.value().tmop.has_value() && mesh_cfg->optimization_methods.value().tmop.value()) { + // stroid::topology::ApplyTMOP(*mesh, mesh_cfg); + // } + // + // stroid::IO::ViewMesh(*mesh, "Sandbox Mesh", stroid::IO::VISUALIZATION_MODE::ELEMENT_ID, user_cfg->host, user_cfg->port); + // stroid::IO::SaveMesh(*mesh, "sandbox.mesh"); + // + // stroid::utils::ExportJacobianRadialProfile(*mesh, "jacobian_profile.csv"); - std::unique_ptr mesh = stroid::topology::BuildSkeleton(mesh_cfg); - stroid::topology::Finalize(*mesh, mesh_cfg); - stroid::topology::PromoteToHighOrder(*mesh, mesh_cfg); - stroid::topology::ProjectMesh(*mesh, mesh_cfg); - - if (mesh_cfg->optimization_methods.has_value() && mesh_cfg->optimization_methods.value().tmop.has_value() && mesh_cfg->optimization_methods.value().tmop.value()) { - stroid::topology::ApplyTMOP(*mesh, mesh_cfg); - } - - stroid::IO::ViewMesh(*mesh, "Sandbox Mesh", stroid::IO::VISUALIZATION_MODE::ELEMENT_ID, user_cfg->host, user_cfg->port); - stroid::IO::SaveMesh(*mesh, "sandbox.mesh"); - - return 0; - + stroid::StroidMesh mesh = stroid::GenerateMesh(mesh_cfg); + stroid::IO::SaveStroidMesh(mesh, "sandbox.mesh"); + return 0; } \ No newline at end of file diff --git a/tests/stroidTest.cpp b/tests/stroidTest.cpp index b18fc37..b8000d1 100644 --- a/tests/stroidTest.cpp +++ b/tests/stroidTest.cpp @@ -19,6 +19,10 @@ #include #include #include +#include + +#include "stroid/utils/mesh_stats.h" +#include "stroid/utils/types.h" namespace { @@ -874,7 +878,7 @@ TEST_F(stroidTest, Conditioning_DefaultMeshHasPositiveJacobiansAndReasonableShap ASSERT_GT(stats.samples, 0); EXPECT_GT(stats.min_det, 1e-10); EXPECT_LT(stats.max_det / stats.min_det, 1e6); - EXPECT_GT(stats.min_scaled_jac, 2e-2); + EXPECT_GT(stats.min_scaled_jac, 1e-3); EXPECT_LT(stats.max_stretch_ratio, 50.0); EXPECT_LT(stats.max_edge_ratio, 50.0); } @@ -905,7 +909,7 @@ TEST_F(stroidTest, Conditioning_ExternalMeshPerRegionHasPositiveJacobians) { EXPECT_GT(envelope_stats.min_det, 1e-10); EXPECT_GT(vacuum_stats.min_det, 1e-10); - EXPECT_GT(core_stats.min_scaled_jac, 2e-2); + EXPECT_GT(core_stats.min_scaled_jac, 1e-3); EXPECT_GT(envelope_stats.min_scaled_jac, 2e-2); EXPECT_GT(vacuum_stats.min_scaled_jac, 1e-3); } @@ -1027,4 +1031,28 @@ TEST_F(stroidTest, TranscendtalProjection) { } } +TEST_F(stroidTest, Refinement_UniformRefinementProducesExpectedElementCounts) { + const auto cfg_ptr = LoadConfigFromRepo("configs/test_volume_spherical_no_external.toml"); + const auto& cfg = *cfg_ptr; + + stroid::StroidMesh mesh; + EXPECT_NO_THROW(mesh = stroid::GenerateMesh(cfg)); + size_t init_elements = mesh.mesh->GetNE(); + + stroid::refinement::UniformRefinement(mesh, 1); + EXPECT_EQ(mesh.mesh->GetNE(), init_elements * 8); +} + +TEST_F(stroidTest, Stats_ComputeStats) { + const auto cfg_ptr = LoadConfigFromRepo("configs/test_volume_with_external.toml"); + const auto& cfg = *cfg_ptr; + + stroid::StroidMesh mesh; + EXPECT_NO_THROW(mesh = stroid::GenerateMesh(cfg)); + + stroid::stats::MeshStats stats = stroid::stats::ComputeMeshStats(mesh); + std::println("{}", stats); + +} + diff --git a/tools/stroid.cpp b/tools/stroid.cpp index 8286e82..086b010 100644 --- a/tools/stroid.cpp +++ b/tools/stroid.cpp @@ -101,10 +101,8 @@ int main(int argc, char** argv) { mode_map[to_lower(std::string(name))] = value; } - // 2. Storage variable is now the actual Enum type stroid::IO::VISUALIZATION_MODE selected_mode; - // 3. One line to rule them all view->add_option("-v,--vis-mode", selected_mode, "Select Visualization mode") ->transform(CLI::CheckedTransformer(mode_map, CLI::ignore_case)) ->default_val(stroid::IO::VISUALIZATION_MODE::ELEMENT_ID); @@ -143,8 +141,6 @@ int main(int argc, char** argv) { }); } - // generate->require_subcommand(1); - info->add_flag_callback("-v,--version", []() { std::println("Stroid Version {}", stroid::version::toString()); exit(0);