#include #include #include "serif/discretization/domain/physical_domains.hpp" #include "serif/discretization/domain/schema/schemas.hpp" #include "serif/discretization/domain/schema/utils.hpp" #include "serif/discretization/domain/types.hpp" #include "serif/tests/test_tags.hpp" #include "serif/tests/discritization/domain/domain_test_utils.hpp" namespace domain = serif::discretization::domain; namespace schema = domain::schema; TEST_CASE( "Domain Schema Builds Exact MFEM Attribute Markers", tags::domain &tags::utils &tags::unit ) { using Schema = schema::CoreEnvelopeVacuumDomainSchema; const mfem::Mesh mesh = domain_test_utils::make_layered_mesh(); const mfem::Array stellarMarker = schema::make_attribute_marker(mesh); const mfem::Array vacuumMarker = schema::make_attribute_marker(mesh); const mfem::Array allMarker = schema::make_attribute_marker(mesh); REQUIRE(stellarMarker.Size() == 3); REQUIRE(vacuumMarker.Size() == 3); REQUIRE(allMarker.Size() == 3); CHECK(stellarMarker[0] == 1); CHECK(stellarMarker[1] == 1); CHECK(stellarMarker[2] == 0); CHECK(vacuumMarker[0] == 0); CHECK(vacuumMarker[1] == 0); CHECK(vacuumMarker[2] == 1); CHECK(allMarker[0] == 1); CHECK(allMarker[1] == 1); CHECK(allMarker[2] == 1); }