Date: 2025-03-29T05:58:29+00:00

Actual source code: initEB.cpp

      1: #include <AMReX_EB2.H>
      2: #include <AMReX_EB2_IF.H>

      4: #include <AMReX_ParmParse.H>

      6: #include <cmath>
      7: #include <algorithm>

      9: #include "MyTest.H"
     10: #include "MyEB.H"

     12: using namespace amrex;

     14: void MyTest::initializeEB()
     15: {
     16:   ParmParse   pp("eb2");
     17:   std::string geom_type;
     18:   pp.get("geom_type", geom_type);

     20:   if (geom_type == "combustor") {
     21:     amrex::Abort("initializeEB: todo");
     22:   } else if (geom_type == "rotated_box") {
     23:     EB2::BoxIF box({AMREX_D_DECL(0.25, 0.25, 0.25)}, {AMREX_D_DECL(0.75, 0.75, 0.75)}, false);
     24:     auto       gshop = EB2::makeShop(EB2::translate(EB2::rotate(EB2::translate(box, {AMREX_D_DECL(-0.5, -0.5, -0.5)}), std::atan(1.0) * 0.3, 2), {AMREX_D_DECL(0.5, 0.5, 0.5)}));
     25:     EB2::Build(gshop, geom.back(), max_level, max_level + max_coarsening_level);
     26:   } else if (geom_type == "two_spheres") {
     27:     EB2::SphereIF sphere1(0.2, {AMREX_D_DECL(0.45, 0.4, 0.58)}, false);
     28:     EB2::SphereIF sphere2(0.2, {AMREX_D_DECL(0.55, 0.42, 0.6)}, false);
     29:     auto          twospheres = EB2::makeUnion(sphere1, sphere2);
     30:     auto          gshop      = EB2::makeShop(twospheres);
     31:     EB2::Build(gshop, geom.back(), max_level, max_level + max_coarsening_level);
     32:   } else if (geom_type == "two_spheres_one_box") {
     33:     EB2::SphereIF sphere1(0.2, {AMREX_D_DECL(0.5, 0.48, 0.5)}, false);
     34:     EB2::SphereIF sphere2(0.2, {AMREX_D_DECL(0.55, 0.58, 0.5)}, false);
     35:     EB2::BoxIF    box({AMREX_D_DECL(0.25, 0.75, 0.5)}, {AMREX_D_DECL(0.75, 0.8, 0.75)}, false);
     36:     auto          twospheres = EB2::makeUnion(sphere1, sphere2, box);
     37:     auto          gshop      = EB2::makeShop(twospheres);
     38:     EB2::Build(gshop, geom.back(), max_level, max_level + max_coarsening_level);
     39:   } else if (geom_type == "flower") {
     40:     FlowerIF flower(0.2, 0.1, 6, {AMREX_D_DECL(0.5, 0.5, 0.5)}, false);
     41:     auto     gshop = EB2::makeShop(flower);
     42:     EB2::Build(gshop, geom.back(), max_level, max_level + max_coarsening_level);
     43:   } else {
     44:     EB2::Build(geom.back(), max_level, max_level + max_coarsening_level);
     45:   }
     46: }