|
23 | 23 | #include "Domain/CoordinateMaps/ProductMaps.hpp" |
24 | 24 | #include "Domain/CoordinateMaps/ProductMaps.tpp" |
25 | 25 | #include "Domain/CoordinateMaps/Wedge.hpp" |
| 26 | +#include "Domain/CoordinateMaps/Interval.hpp" |
26 | 27 | #include "Domain/Domain.hpp" |
27 | 28 | #include "Domain/DomainHelpers.hpp" |
28 | 29 | #include "Domain/Structure/BlockNeighbors.hpp" |
@@ -337,6 +338,57 @@ void test_wedge_errors() { |
337 | 338 | "ShellWedges::All.")); |
338 | 339 | } |
339 | 340 |
|
| 341 | +void test_cyl_wedge_surrounding_blocks_radial_distribution_size_error() { |
| 342 | + INFO("cyl wedge radial distribution size parse error"); |
| 343 | + const Options::Context context{false, "CylWedge.CylindricalShell.DistSize"}; |
| 344 | + const double inner_radius = 0.4; |
| 345 | + const double outer_radius = 1.2; |
| 346 | + const double lower_z_bound = -0.8; |
| 347 | + const double upper_z_bound = 0.8; |
| 348 | + const std::vector<double> radial_partitioning{0.9}; |
| 349 | + const std::vector<double> partitioning_in_z{}; |
| 350 | + const std::vector<domain::CoordinateMaps::Distribution> radial_distribution{ |
| 351 | + domain::CoordinateMaps::Distribution::Linear}; |
| 352 | + const std::vector<domain::CoordinateMaps::Distribution> distribution_in_z{ |
| 353 | + domain::CoordinateMaps::Distribution::Linear}; |
| 354 | + CHECK_THROWS_WITH( |
| 355 | + ([&]() { |
| 356 | + static_cast<void>(cyl_wedge_coord_map_surrounding_blocks( |
| 357 | + inner_radius, outer_radius, lower_z_bound, upper_z_bound, false, |
| 358 | + context, 0.0, radial_partitioning, partitioning_in_z, |
| 359 | + radial_distribution, distribution_in_z, |
| 360 | + CylindricalDomainParityFlip::none)); |
| 361 | + }()), |
| 362 | + Catch::Matchers::ContainsSubstring( |
| 363 | + "Specify a radial distribution for every cylindrical shell")); |
| 364 | +} |
| 365 | + |
| 366 | +void test_cyl_wedge_surrounding_blocks_radial_distribution_linear_error() { |
| 367 | + INFO("cyl wedge radial distribution linear parse error"); |
| 368 | + const Options::Context context{false, "CylWedge.CylindricalShell.Linear"}; |
| 369 | + const double inner_radius = 0.4; |
| 370 | + const double outer_radius = 1.2; |
| 371 | + const double lower_z_bound = -0.8; |
| 372 | + const double upper_z_bound = 0.8; |
| 373 | + const std::vector<double> radial_partitioning{0.9}; |
| 374 | + const std::vector<double> partitioning_in_z{}; |
| 375 | + const std::vector<domain::CoordinateMaps::Distribution> radial_distribution{ |
| 376 | + domain::CoordinateMaps::Distribution::Logarithmic, |
| 377 | + domain::CoordinateMaps::Distribution::Linear}; |
| 378 | + const std::vector<domain::CoordinateMaps::Distribution> distribution_in_z{ |
| 379 | + domain::CoordinateMaps::Distribution::Linear}; |
| 380 | + CHECK_THROWS_WITH( |
| 381 | + ([&]() { |
| 382 | + static_cast<void>(cyl_wedge_coord_map_surrounding_blocks( |
| 383 | + inner_radius, outer_radius, lower_z_bound, upper_z_bound, false, |
| 384 | + context, 0.0, radial_partitioning, partitioning_in_z, |
| 385 | + radial_distribution, distribution_in_z, |
| 386 | + CylindricalDomainParityFlip::none)); |
| 387 | + }()), |
| 388 | + Catch::Matchers::ContainsSubstring( |
| 389 | + "The innermost shell must have a 'Linear' radial distribution")); |
| 390 | +} |
| 391 | + |
340 | 392 | void test_six_wedge_directions_equiangular() { |
341 | 393 | INFO("Default six wedge directions equiangular"); |
342 | 394 | const double inner_radius = 1.2; |
@@ -1621,6 +1673,8 @@ SPECTRE_TEST_CASE("Unit.Domain.DomainHelpers", "[Domain][Unit]") { |
1621 | 1673 | test_periodic_different_blocks(); |
1622 | 1674 | test_wedge_map_generation(); |
1623 | 1675 | test_wedge_errors(); |
| 1676 | + test_cyl_wedge_surrounding_blocks_radial_distribution_size_error(); |
| 1677 | + test_cyl_wedge_surrounding_blocks_radial_distribution_linear_error(); |
1624 | 1678 | test_all_frustum_directions(); |
1625 | 1679 | test_frustrum_errors(); |
1626 | 1680 | test_shell_graph(); |
|
0 commit comments