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: }