diff --git a/src/serac/physics/tests/contact_patch.cpp b/src/serac/physics/tests/contact_patch.cpp index 74f0fc3f0..8001f2ca0 100644 --- a/src/serac/physics/tests/contact_patch.cpp +++ b/src/serac/physics/tests/contact_patch.cpp @@ -11,6 +11,7 @@ #include "gtest/gtest.h" #include "mpi.h" #include "mfem.hpp" +#include "shared/mesh/MeshBuilder.hpp" #include "serac/physics/solid_mechanics_contact.hpp" #include "serac/physics/boundary_conditions/components.hpp" @@ -26,7 +27,9 @@ namespace serac { -class ContactTest : public testing::TestWithParam> {}; +class ContactTest + : public testing::TestWithParam> { +}; TEST_P(ContactTest, patch) { @@ -41,10 +44,23 @@ TEST_P(ContactTest, patch) axom::sidre::DataStore datastore; StateManager::initialize(datastore, name + "_data"); - // Construct the appropriate dimension mesh and give it to the data store - std::string filename = SERAC_REPO_DIR "/data/meshes/twohex_for_contact.mesh"; - - auto mesh = std::make_shared(buildMeshFromFile(filename), "patch_mesh", 2, 0); + // clang-format off + auto mesh = std::make_shared(shared::MeshBuilder::Unify({ + shared::MeshBuilder::CubeMesh(1, 1, 1, std::get<3>(GetParam())) + .updateBdrAttrib(3, 7) + .updateBdrAttrib(1, 3) + .updateBdrAttrib(4, 7) + .updateBdrAttrib(5, 1) + .updateBdrAttrib(6, 4), + shared::MeshBuilder::CubeMesh(1, 1, 1, std::get<3>(GetParam())) + .translate({0.0, 0.0, 1.0}) + .updateBdrAttrib(1, 8) + .updateBdrAttrib(3, 7) + .updateBdrAttrib(4, 7) + .updateBdrAttrib(5, 1) + .updateBdrAttrib(8, 5) + }), "patch_mesh", 2, 0); + // clang-format on mesh->addDomainOfBoundaryElements("x0_faces", serac::by_attr(1)); mesh->addDomainOfBoundaryElements("y0_faces", serac::by_attr(2)); @@ -132,12 +148,22 @@ TEST_P(ContactTest, patch) INSTANTIATE_TEST_SUITE_P( tribol, ContactTest, - testing::Values(std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Approximate, "penalty_approxJ"), + testing::Values(std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Approximate, "penalty_approxJ_hex", + mfem::Element::HEXAHEDRON), + std::make_tuple(ContactEnforcement::LagrangeMultiplier, ContactJacobian::Approximate, + "lagrange_multiplier_approxJ_hex", mfem::Element::HEXAHEDRON), + std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Exact, "penalty_exactJ_hex", + mfem::Element::HEXAHEDRON), + std::make_tuple(ContactEnforcement::LagrangeMultiplier, ContactJacobian::Exact, + "lagrange_multiplier_exactJ_hex", mfem::Element::HEXAHEDRON), + std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Approximate, "penalty_approxJ_tet", + mfem::Element::TETRAHEDRON), std::make_tuple(ContactEnforcement::LagrangeMultiplier, ContactJacobian::Approximate, - "lagrange_multiplier_approxJ"), - std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Exact, "penalty_exactJ"), + "lagrange_multiplier_approxJ_tet", mfem::Element::TETRAHEDRON), + std::make_tuple(ContactEnforcement::Penalty, ContactJacobian::Exact, "penalty_exactJ_tet", + mfem::Element::TETRAHEDRON), std::make_tuple(ContactEnforcement::LagrangeMultiplier, ContactJacobian::Exact, - "lagrange_multiplier_exactJ"))); + "lagrange_multiplier_exactJ_tet", mfem::Element::TETRAHEDRON))); } // namespace serac