20 Vector<Box> box_list_2d;
21 for (
int i = 0; i < ba_atm.size(); ++i) {
25 box_list_2d.push_back(b);
27 BoxList bl_2d(std::move(box_list_2d));
28 BoxArray ba_2d(bl_2d);
35 const Box region = ba_2d.minimalBox();
37 "[FIRE] create_fire_grid: the boxes of the atmospheric level do not form one rectangle");
38 const IntVect atm_lo(region.smallEnd(0), region.smallEnd(1), 0);
47 BoxArray ba_fire = ba_2d;
48 ba_fire.shift(-atm_lo);
49 ba_fire.refine(IntVect(C, C, 1));
50 DistributionMapping dm_fire = dm_atm;
56 const Box& dom_atm = geom_atm.Domain();
57 Box fire_domain(IntVect(0, 0, 0),
58 IntVect(region.length(0) * C - 1, region.length(1) * C - 1, 0));
60 Array<Real, AMREX_SPACEDIM>
lo {geom_atm.ProbLo(0), geom_atm.ProbLo(1), geom_atm.ProbLo(2)};
61 Array<Real, AMREX_SPACEDIM>
hi {geom_atm.ProbHi(0), geom_atm.ProbHi(1), geom_atm.ProbLo(2) +
Real(1.0)};
62 Array<int, AMREX_SPACEDIM> is_per {0, 0, 0};
63 for (
int d = 0; d < 2; ++d) {
64 const bool spans = (region.smallEnd(d) == dom_atm.smallEnd(d)) && (region.bigEnd(d) == dom_atm.bigEnd(d));
66 lo[d] = geom_atm.ProbLo(d) +
Real(region.smallEnd(d) - dom_atm.smallEnd(d)) * geom_atm.CellSize(d);
67 hi[d] = geom_atm.ProbLo(d) +
Real(region.bigEnd(d) - dom_atm.smallEnd(d) + 1) * geom_atm.CellSize(d);
77 is_per[d] = (spans && geom_atm.isPeriodic(d)) ? 1 : 0;
79 RealBox prob_domain_2d(lo, hi);
81 Geometry geom_fire_2d(fire_domain, prob_domain_2d, CoordSys::cartesian, is_per);
85 fg.geom = geom_fire_2d;
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(axis >=0 &&axis< AMREX_SPACEDIM, "prob.axis must be 0, 1 or 2")
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ fg
Definition: ERF_AdvanceMorrison.cpp:111
2D horizontal fire computational grid
Definition: ERF_FireGrid.H:29