diff --git a/external/parthenon b/external/parthenon index ec2d945f6..a540d3976 160000 --- a/external/parthenon +++ b/external/parthenon @@ -1 +1 @@ -Subproject commit ec2d945f6886604bef4447555568cb0845e98be5 +Subproject commit a540d39766022b9fccc2f48cc9263efc8717d663 diff --git a/src/analysis/history.cpp b/src/analysis/history.cpp index 4f1c64e51..ab3733521 100644 --- a/src/analysis/history.cpp +++ b/src/analysis/history.cpp @@ -24,17 +24,17 @@ Real ReduceMassAccretionRate(MeshData *md) { const auto jb = md->GetBoundsJ(IndexDomain::interior); const auto kb = md->GetBoundsK(IndexDomain::interior); - auto pmb = md->GetParentPointer(); - auto &pars = pmb->packages.Get("geometry")->AllParams(); + Mesh *pmesh = md->GetMeshPointer(); + auto &pars = pmesh->packages.Get("geometry")->AllParams(); const Real xh = pars.Get("xh"); namespace p = fluid_prim; - const std::vector vars({p::density, p::velocity}); + const std::vector vars({p::density::name(), p::velocity}); PackIndexMap imap; auto pack = md->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; @@ -73,17 +73,17 @@ Real ReduceJetEnergyFlux(MeshData *md) { const auto jb = md->GetBoundsJ(IndexDomain::interior); const auto kb = md->GetBoundsK(IndexDomain::interior); - auto pmb = md->GetParentPointer(); - auto &pars = pmb->packages.Get("geometry")->AllParams(); + Mesh *pmesh = md->GetMeshPointer(); + auto &pars = pmesh->packages.Get("geometry")->AllParams(); const Real xh = pars.Get("xh"); namespace p = fluid_prim; - const std::vector vars({p::density, p::bfield, p::velocity}); + const std::vector vars({p::density::name(), p::bfield, p::velocity}); PackIndexMap imap; auto pack = md->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; const int pb_lo = imap[p::bfield].first; @@ -91,7 +91,7 @@ Real ReduceJetEnergyFlux(MeshData *md) { auto geom = Geometry::GetCoordinateSystem(md); - const Real sigma_cutoff = pmb->packages.Get("fluid")->Param("sigma_cutoff"); + const Real sigma_cutoff = pmesh->packages.Get("fluid")->Param("sigma_cutoff"); Real result = 0.0; parthenon::par_reduce( @@ -132,17 +132,17 @@ Real ReduceJetMomentumFlux(MeshData *md) { const auto jb = md->GetBoundsJ(IndexDomain::interior); const auto kb = md->GetBoundsK(IndexDomain::interior); - auto pmb = md->GetParentPointer(); - auto &pars = pmb->packages.Get("geometry")->AllParams(); + Mesh *pmesh = md->GetMeshPointer(); + auto &pars = pmesh->packages.Get("geometry")->AllParams(); const Real xh = pars.Get("xh"); namespace p = fluid_prim; - const std::vector vars({p::density, p::bfield, p::velocity}); + const std::vector vars({p::density::name(), p::bfield, p::velocity}); PackIndexMap imap; auto pack = md->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; const int pb_lo = imap[p::bfield].first; @@ -150,7 +150,7 @@ Real ReduceJetMomentumFlux(MeshData *md) { auto geom = Geometry::GetCoordinateSystem(md); - const Real sigma_cutoff = pmb->packages.Get("fluid")->Param("sigma_cutoff"); + const Real sigma_cutoff = pmesh->packages.Get("fluid")->Param("sigma_cutoff"); Real result = 0.0; parthenon::par_reduce( @@ -191,8 +191,8 @@ Real ReduceMagneticFluxPhi(MeshData *md) { const auto jb = md->GetBoundsJ(IndexDomain::interior); const auto kb = md->GetBoundsK(IndexDomain::interior); - auto pmb = md->GetParentPointer(); - auto &pars = pmb->packages.Get("geometry")->AllParams(); + Mesh *pmesh = md->GetMeshPointer(); + auto &pars = pmesh->packages.Get("geometry")->AllParams(); const Real xh = pars.Get("xh"); namespace c = fluid_cons; diff --git a/src/fixup/fixup.cpp b/src/fixup/fixup.cpp index 2eb4d74ee..1999f08ac 100644 --- a/src/fixup/fixup.cpp +++ b/src/fixup/fixup.cpp @@ -288,15 +288,15 @@ TaskStatus ApplyFloorsImpl(T *rc, IndexDomain domain = IndexDomain::entire) { namespace cr = radmoment_cons; namespace ir = radmoment_internal; namespace impl = internal_variables; - auto *pmb = rc->GetParentPointer().get(); - IndexRange ib = pmb->cellbounds.GetBoundsI(domain); - IndexRange jb = pmb->cellbounds.GetBoundsJ(domain); - IndexRange kb = pmb->cellbounds.GetBoundsK(domain); + auto *pmesh = rc->GetMeshPointer(); + IndexRange ib = rc->GetBoundsI(domain); + IndexRange jb = rc->GetBoundsJ(domain); + IndexRange kb = rc->GetBoundsK(domain); - StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); - StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); - StateDescriptor *fluid_pkg = pmb->packages.Get("fluid").get(); - StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); + StateDescriptor *eos_pkg = pmesh->packages.Get("eos").get(); + StateDescriptor *fluid_pkg = pmesh->packages.Get("fluid").get(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); bool rad_active = rad_pkg->Param("active"); @@ -307,14 +307,14 @@ TaskStatus ApplyFloorsImpl(T *rc, IndexDomain domain = IndexDomain::entire) { if (!enable_floors) return TaskStatus::complete; const std::vector vars( - {p::density, c::density, p::velocity, c::momentum, p::energy, c::energy, p::bfield, - p::ye, c::ye, p::pressure, p::temperature, p::gamma1, pr::J, pr::H, cr::E, cr::F, - impl::cell_signal_speed, impl::fail, ir::tilPi}); + {p::density::name(), c::density, p::velocity, c::momentum, p::energy, c::energy, + p::bfield, p::ye, c::ye, p::pressure, p::temperature, p::gamma1, pr::J, pr::H, + cr::E, cr::F, impl::cell_signal_speed, impl::fail, ir::tilPi}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int crho = imap[c::density].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; @@ -352,7 +352,7 @@ TaskStatus ApplyFloorsImpl(T *rc, IndexDomain domain = IndexDomain::entire) { c2p_floor_scale_fac, c2p_fail_on_floors, c2p_fail_on_ceilings); - Coordinates_t coords = rc->GetParentPointer().get()->coords; + Coordinates_t coords = rc->GetParentPointer()->coords; parthenon::par_for( DEFAULT_LOOP_PATTERN, "ApplyFloors", DevExecSpace(), 0, v.GetDim(5) - 1, kb.s, kb.e, @@ -673,7 +673,7 @@ TaskStatus ApplyFloorsImpl(T *rc, IndexDomain domain = IndexDomain::entire) { template TaskStatus ApplyFloors(T *rc) { - auto *pm = rc->GetParentPointer().get(); + auto *pm = rc->GetMeshPointer(); StateDescriptor *rad_pkg = pm->packages.Get("radiation").get(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_rad_floors = fix_pkg->Param("enable_rad_floors"); @@ -706,7 +706,7 @@ template TaskStatus ApplyFloors>(MeshBlockData *rc); TaskStatus FixFluxes(MeshBlockData *rc) { using parthenon::BoundaryFace; using parthenon::BoundaryFlag; - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &fixup_pkg = pmb->packages.Get("fixup"); if (!fixup_pkg->Param("enable_flux_fixup")) return TaskStatus::complete; @@ -723,9 +723,9 @@ TaskStatus FixFluxes(MeshBlockData *rc) { } auto moments_active = rad->Param("moments_active"); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); const int ndim = pmb->pmy_mesh->ndim; namespace p = fluid_prim; diff --git a/src/fixup/fixup_c2p.cpp b/src/fixup/fixup_c2p.cpp index 5a110a070..698eaa46e 100644 --- a/src/fixup/fixup_c2p.cpp +++ b/src/fixup/fixup_c2p.cpp @@ -49,17 +49,17 @@ TaskStatus ConservedToPrimitiveFixupImpl(T *rc) { namespace ir = radmoment_internal; namespace pr = radmoment_prim; namespace cr = radmoment_cons; - auto *pmb = rc->GetParentPointer().get(); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + Mesh *pmesh = rc->GetMeshPointer(); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); - StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); - StateDescriptor *fluid_pkg = pmb->packages.Get("fluid").get(); - StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); - StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); + StateDescriptor *fluid_pkg = pmesh->packages.Get("fluid").get(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); + StateDescriptor *eos_pkg = pmesh->packages.Get("eos").get(); - const std::vector vars({p::density, + const std::vector vars({p::density::name(), c::density, p::velocity, c::momentum, @@ -85,7 +85,7 @@ TaskStatus ConservedToPrimitiveFixupImpl(T *rc) { PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int crho = imap[c::density].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; @@ -134,9 +134,9 @@ TaskStatus ConservedToPrimitiveFixupImpl(T *rc) { }, Kokkos::Sum(nfail_total)); printf("total nfail: %i\n", nfail_total); - IndexRange ibi = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jbi = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kbi = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ibi = rc->GetBoundsI(IndexDomain::interior); + IndexRange jbi = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kbi = rc->GetBoundsK(IndexDomain::interior); nfail_total = 0; parthenon::par_reduce( parthenon::loop_pattern_mdrange_tag, "Rad ConToPrim::Solve fixup failures", @@ -150,13 +150,13 @@ TaskStatus ConservedToPrimitiveFixupImpl(T *rc) { printf("total interior nfail: %i\n", nfail_total); } - const int ndim = pmb->pmy_mesh->ndim; + const int ndim = pmesh->ndim; auto eos = eos_pkg->Param("d.EOS"); auto geom = Geometry::GetCoordinateSystem(rc); auto bounds = fix_pkg->Param("bounds"); - Coordinates_t coords = rc->GetParentPointer().get()->coords; + Coordinates_t coords = rc->GetParentPointer()->coords; auto fluid_c2p_failure_strategy = fix_pkg->Param("fluid_c2p_failure_strategy"); @@ -356,9 +356,9 @@ TaskStatus ConservedToPrimitiveFixupImpl(T *rc) { template TaskStatus ConservedToPrimitiveFixup(T *rc) { - auto *pm = rc->GetParentPointer().get(); - StateDescriptor *rad_pkg = pm->packages.Get("radiation").get(); - StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); + Mesh *pmesh = rc->GetMeshPointer(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); const bool enable_rad_floors = fix_pkg->Param("enable_rad_floors"); std::string method; if (enable_rad_floors) { diff --git a/src/fixup/fixup_netfield.cpp b/src/fixup/fixup_netfield.cpp index c253145ff..c17098349 100644 --- a/src/fixup/fixup_netfield.cpp +++ b/src/fixup/fixup_netfield.cpp @@ -38,7 +38,7 @@ namespace fixup { TaskStatus SumMdotPhiForNetFieldScaling(MeshData *md, const Real t, const int stage, std::vector *sums) { - auto *pm = md->GetParentPointer(); + Mesh *pm = md->GetMeshPointer(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_phi_enforcement = fix_pkg->Param("enable_phi_enforcement"); @@ -64,7 +64,7 @@ TaskStatus SumMdotPhiForNetFieldScaling(MeshData *md, const Real t, const TaskStatus NetFieldStartReduce(MeshData *md, const Real t, const int stage, AllReduce> *net_field_totals) { - auto *pm = md->GetParentPointer(); + Mesh *pm = md->GetMeshPointer(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_phi_enforcement = fix_pkg->Param("enable_phi_enforcement"); @@ -88,7 +88,7 @@ TaskStatus NetFieldCheckReduce(MeshData *md, const Real t, const int stage return TaskStatus::complete; } - auto *pm = md->GetParentPointer(); + Mesh *pm = md->GetMeshPointer(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_phi_enforcement = fix_pkg->Param("enable_phi_enforcement"); @@ -112,7 +112,7 @@ TaskStatus UpdateNetFieldScaleControls(MeshData *md, const Real t, const R if (stage != 1) { return TaskStatus::complete; } - auto *pm = md->GetParentPointer(); + Mesh *pm = md->GetMeshPointer(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_phi_enforcement = fix_pkg->Param("enable_phi_enforcement"); @@ -158,7 +158,7 @@ TaskStatus ModifyNetField(MeshData *md, const Real t, const Real dt, if (stage != 1 && fiducial) { return TaskStatus::complete; } - auto *pm = md->GetParentPointer(); + Mesh *pm = md->GetMeshPointer(); StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); const bool enable_phi_enforcement = fix_pkg->Param("enable_phi_enforcement"); diff --git a/src/fixup/fixup_radc2p.cpp b/src/fixup/fixup_radc2p.cpp index 63d6c1da0..6cbd9f723 100644 --- a/src/fixup/fixup_radc2p.cpp +++ b/src/fixup/fixup_radc2p.cpp @@ -50,14 +50,14 @@ TaskStatus RadConservedToPrimitiveFixupImpl(T *rc) { namespace pr = radmoment_prim; namespace cr = radmoment_cons; - auto *pmb = rc->GetParentPointer().get(); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + Mesh *pmesh = rc->GetMeshPointer(); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); - StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); - StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); - StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); + StateDescriptor *eos_pkg = pmesh->packages.Get("eos").get(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); bool enable_c2p_fixup = fix_pkg->Param("enable_c2p_fixup"); bool update_rad = rad_pkg->Param("active"); @@ -93,9 +93,9 @@ TaskStatus RadConservedToPrimitiveFixupImpl(T *rc) { }, Kokkos::Sum(nfail_total)); printf("total rad nfail: %i\n", nfail_total); - IndexRange ibi = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jbi = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kbi = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ibi = rc->GetBoundsI(IndexDomain::interior); + IndexRange jbi = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kbi = rc->GetBoundsK(IndexDomain::interior); nfail_total = 0; parthenon::par_reduce( parthenon::loop_pattern_mdrange_tag, "Rad ConToPrim::Solve fixup failures", @@ -112,10 +112,10 @@ TaskStatus RadConservedToPrimitiveFixupImpl(T *rc) { auto geom = Geometry::GetCoordinateSystem(rc); auto bounds = fix_pkg->Param("bounds"); - Coordinates_t coords = rc->GetParentPointer().get()->coords; + Coordinates_t coords = rc->GetParentPointer()->coords; const int nspec = idx_E.DimSize(1); - const int ndim = pmb->pmy_mesh->ndim; + const int ndim = pmesh->ndim; auto rad_c2p_failure_strategy = fix_pkg->Param("rad_c2p_failure_strategy"); @@ -223,9 +223,9 @@ TaskStatus RadConservedToPrimitiveFixupImpl(T *rc) { template TaskStatus RadConservedToPrimitiveFixup(T *rc) { - auto *pm = rc->GetParentPointer().get(); - StateDescriptor *rad_pkg = pm->packages.Get("radiation").get(); - StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); + Mesh *pmesh = rc->GetMeshPointer(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); const bool enable_rad_floors = fix_pkg->Param("enable_rad_floors"); std::string method; if (enable_rad_floors) { diff --git a/src/fixup/fixup_src.cpp b/src/fixup/fixup_src.cpp index d235f9dba..32e3c47e2 100644 --- a/src/fixup/fixup_src.cpp +++ b/src/fixup/fixup_src.cpp @@ -55,14 +55,14 @@ TaskStatus SourceFixupImpl(T *rc) { namespace pr = radmoment_prim; namespace cr = radmoment_cons; namespace ir = radmoment_internal; - auto *pmb = rc->GetParentPointer().get(); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); - - StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); - StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); - StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); + Mesh *pmesh = rc->GetMeshPointer(); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); + + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); + StateDescriptor *eos_pkg = pmesh->packages.Get("eos").get(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); if (!rad_pkg->Param("active")) { return TaskStatus::complete; } @@ -75,14 +75,14 @@ TaskStatus SourceFixupImpl(T *rc) { auto bounds = fix_pkg->Param("bounds"); const std::vector vars( - {p::density, c::density, p::velocity, c::momentum, p::energy, c::energy, p::bfield, - p::ye, c::ye, p::pressure, p::temperature, p::gamma1, pr::J, pr::H, cr::E, cr::F, - impl::cell_signal_speed, ir::srcfail, ir::tilPi}); + {p::density::name(), c::density, p::velocity, c::momentum, p::energy, c::energy, + p::bfield, p::ye, c::ye, p::pressure, p::temperature, p::gamma1, pr::J, pr::H, + cr::E, cr::F, impl::cell_signal_speed, ir::srcfail, ir::tilPi}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int crho = imap[c::density].first; auto idx_pvel = imap.GetFlatIdx(p::velocity); auto idx_cmom = imap.GetFlatIdx(c::momentum); @@ -119,17 +119,17 @@ TaskStatus SourceFixupImpl(T *rc) { printf("total source nfail: %i\n", nfail_total); } - const int ndim = pmb->pmy_mesh->ndim; + const int ndim = pmesh->ndim; auto geom = Geometry::GetCoordinateSystem(rc); - Coordinates_t coords = rc->GetParentPointer().get()->coords; + Coordinates_t coords = rc->GetParentPointer()->coords; auto num_species = rad_pkg->Param("num_species"); // TODO(BRR) make this less ugly - IndexRange ibe = pmb->cellbounds.GetBoundsI(IndexDomain::entire); - IndexRange jbe = pmb->cellbounds.GetBoundsJ(IndexDomain::entire); - IndexRange kbe = pmb->cellbounds.GetBoundsK(IndexDomain::entire); + IndexRange ibe = rc->GetBoundsI(IndexDomain::entire); + IndexRange jbe = rc->GetBoundsJ(IndexDomain::entire); + IndexRange kbe = rc->GetBoundsK(IndexDomain::entire); parthenon::par_for( DEFAULT_LOOP_PATTERN, "Source fail initialization", DevExecSpace(), 0, v.GetDim(5) - 1, kbe.s, kbe.e, jbe.s, jbe.e, ibe.s, ibe.e, @@ -323,9 +323,9 @@ TaskStatus SourceFixupImpl(T *rc) { template TaskStatus SourceFixup(T *rc) { - auto *pm = rc->GetParentPointer().get(); - StateDescriptor *rad_pkg = pm->packages.Get("radiation").get(); - StateDescriptor *fix_pkg = pm->packages.Get("fixup").get(); + Mesh *pmesh = rc->GetMeshPointer(); + StateDescriptor *rad_pkg = pmesh->packages.Get("radiation").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); const bool enable_rad_floors = fix_pkg->Param("enable_rad_floors"); std::string method; if (enable_rad_floors) { diff --git a/src/fluid/con2prim.hpp b/src/fluid/con2prim.hpp index 0de536f51..0d3e3841b 100644 --- a/src/fluid/con2prim.hpp +++ b/src/fluid/con2prim.hpp @@ -130,7 +130,8 @@ class ConToPrim { ConToPrim(Data_t *rc, const Real tol, const int max_iterations) : ConToPrim(rc, PackIndexMap(), tol, max_iterations) {} ConToPrim(Data_t *rc, PackIndexMap imap, const Real tol, const int max_iterations) - : var(rc->PackVariables(Vars(), imap)), prho(imap[fluid_prim::density].first), + : var(rc->PackVariables(Vars(), imap)), + prho(imap[fluid_prim::density::name()].first), crho(imap[fluid_cons::density].first), pvel_lo(imap[fluid_prim::velocity].first), pvel_hi(imap[fluid_prim::velocity].second), cmom_lo(imap[fluid_cons::momentum].first), @@ -148,7 +149,7 @@ class ConToPrim { std::vector Vars() { return std::vector( - {fluid_prim::density, fluid_cons::density, fluid_prim::velocity, + {fluid_prim::density::name(), fluid_cons::density, fluid_prim::velocity, fluid_cons::momentum, fluid_prim::energy, fluid_cons::energy, fluid_prim::bfield, fluid_cons::bfield, fluid_prim::ye, fluid_cons::ye, fluid_prim::pressure, fluid_prim::temperature, internal_variables::cell_signal_speed, diff --git a/src/fluid/con2prim_robust.hpp b/src/fluid/con2prim_robust.hpp index be848f755..006fbdccc 100644 --- a/src/fluid/con2prim_robust.hpp +++ b/src/fluid/con2prim_robust.hpp @@ -228,8 +228,8 @@ class ConToPrim { const Real floor_scale_fac, const bool fail_on_floors, const bool fail_on_ceilings) : bounds(bnds), var(rc->PackVariables(Vars(), imap)), - prho(imap[fluid_prim::density].first), crho(imap[fluid_cons::density].first), - pvel_lo(imap[fluid_prim::velocity].first), + prho(imap[fluid_prim::density::name()].first), + crho(imap[fluid_cons::density].first), pvel_lo(imap[fluid_prim::velocity].first), pvel_hi(imap[fluid_prim::velocity].second), cmom_lo(imap[fluid_cons::momentum].first), cmom_hi(imap[fluid_cons::momentum].second), peng(imap[fluid_prim::energy].first), @@ -247,7 +247,7 @@ class ConToPrim { std::vector Vars() { return std::vector( - {fluid_prim::density, fluid_cons::density, fluid_prim::velocity, + {fluid_prim::density::name(), fluid_cons::density, fluid_prim::velocity, fluid_cons::momentum, fluid_prim::energy, fluid_cons::energy, fluid_prim::bfield, fluid_cons::bfield, fluid_prim::ye, fluid_cons::ye, fluid_prim::pressure, fluid_prim::temperature, internal_variables::cell_signal_speed, diff --git a/src/fluid/fluid.cpp b/src/fluid/fluid.cpp index daf9c479e..56c0f9753 100644 --- a/src/fluid/fluid.cpp +++ b/src/fluid/fluid.cpp @@ -189,7 +189,7 @@ std::shared_ptr Initialize(ParameterInput *pin) { ndim = 2; // add the primitive variables - physics->AddField(p::density, mprim_scalar); + physics->template AddField(mprim_scalar); physics->AddField(p::velocity, mprim_threev); physics->AddField(p::energy, mprim_scalar); if (mhd) { @@ -256,7 +256,7 @@ std::shared_ptr Initialize(ParameterInput *pin) { // set up the arrays for left and right states // add the base state for reconstruction/fluxes - std::vector rvars({p::density, p::velocity, p::energy}); + std::vector rvars({p::density::name(), p::velocity, p::energy}); riemann::FluxState::ReconVars(rvars); if (mhd) riemann::FluxState::ReconVars(p::bfield); if (ye) riemann::FluxState::ReconVars(p::ye); @@ -334,7 +334,7 @@ std::shared_ptr Initialize(ParameterInput *pin) { // template TaskStatus PrimitiveToConserved(MeshBlockData *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::entire); IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::entire); IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::entire); @@ -347,16 +347,17 @@ TaskStatus PrimitiveToConservedRegion(MeshBlockData *rc, const IndexRange namespace p = fluid_prim; namespace c = fluid_cons; namespace impl = internal_variables; - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); - const std::vector vars( - {p::density, c::density, p::velocity, c::momentum, p::energy, c::energy, p::bfield, - c::bfield, p::ye, c::ye, p::pressure, p::gamma1, impl::cell_signal_speed}); + const std::vector vars({p::density::name(), c::density, p::velocity, + c::momentum, p::energy, c::energy, p::bfield, + c::bfield, p::ye, c::ye, p::pressure, p::gamma1, + impl::cell_signal_speed}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int crho = imap[c::density].first; const int pvel_lo = imap[p::velocity].first; const int pvel_hi = imap[p::velocity].second; @@ -438,25 +439,25 @@ TaskStatus PrimitiveToConservedRegion(MeshBlockData *rc, const IndexRange template TaskStatus ConservedToPrimitiveRegion(T *rc, const IndexRange &ib, const IndexRange &jb, const IndexRange &kb) { - auto *pmb = rc->GetParentPointer().get(); - StateDescriptor *pkg = pmb->packages.Get("fluid").get(); + Mesh *pm = rc->GetMeshPointer(); + StateDescriptor *pkg = pm->packages.Get("fluid").get(); auto c2p = pkg->Param>("c2p_func"); return c2p(rc, ib, jb, kb); } template TaskStatus ConservedToPrimitive(T *rc) { - auto *pmb = rc->GetParentPointer().get(); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::entire); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::entire); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::entire); + IndexRange ib = rc->GetBoundsI(IndexDomain::entire); + IndexRange jb = rc->GetBoundsJ(IndexDomain::entire); + IndexRange kb = rc->GetBoundsK(IndexDomain::entire); return ConservedToPrimitiveRegion(rc, ib, jb, kb); } template TaskStatus ConservedToPrimitiveRobust(T *rc, const IndexRange &ib, const IndexRange &jb, const IndexRange &kb) { - auto *pmb = rc->GetParentPointer().get(); + // TODO(JMM): This one will not work with meshblock packs + auto *pmb = rc->GetParentPointer(); StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); auto bounds = fix_pkg->Param("bounds"); @@ -496,17 +497,17 @@ template TaskStatus ConservedToPrimitiveClassic(T *rc, const IndexRange &ib, const IndexRange &jb, const IndexRange &kb) { using namespace con2prim; - auto *pmb = rc->GetParentPointer().get(); + auto *pmesh = rc->GetMeshPointer(); - StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); + StateDescriptor *fix_pkg = pmesh->packages.Get("fixup").get(); auto bounds = fix_pkg->Param("bounds"); - StateDescriptor *pkg = pmb->packages.Get("fluid").get(); + StateDescriptor *pkg = pmesh->packages.Get("fluid").get(); const Real c2p_tol = pkg->Param("c2p_tol"); const int c2p_max_iter = pkg->Param("c2p_max_iter"); auto invert = con2prim::ConToPrimSetup(rc, c2p_tol, c2p_max_iter); - StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); + StateDescriptor *eos_pkg = pmesh->packages.Get("eos").get(); auto eos = eos_pkg->Param("d.EOS"); auto geom = Geometry::GetCoordinateSystem(rc); auto fail = rc->Get(internal_variables::fail).data; @@ -543,14 +544,14 @@ TaskStatus CalculateFluidSourceTerms(MeshBlockData *rc, MeshBlockData *rc_src) { constexpr int ND = Geometry::NDFULL; constexpr int NS = Geometry::NDSPACE; - auto *pmb = rc->GetParentPointer().get(); - auto &fluid = pmb->packages.Get("fluid"); + Mesh *pmesh = rc->GetMeshPointer(); + auto &fluid = pmesh->packages.Get("fluid"); if (!fluid->Param("active") || fluid->Param("zero_sources")) return TaskStatus::complete; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); std::vector vars({fluid_cons::momentum, fluid_cons::energy}); #if SET_FLUX_SRC_DIAGS @@ -634,24 +635,25 @@ TaskStatus CalculateFluidSourceTerms(MeshBlockData *rc, TaskStatus CalculateFluxes(MeshBlockData *rc) { using namespace PhoebusReconstruction; - auto *pmb = rc->GetParentPointer().get(); - auto &fluid = pmb->packages.Get("fluid"); + Mesh *pmesh = rc->GetMeshPointer(); + auto &fluid = pmesh->packages.Get("fluid"); if (!fluid->Param("active") || fluid->Param("zero_fluxes")) return TaskStatus::complete; auto flux = riemann::FluxState(rc); auto sig = rc->Get(internal_variables::face_signal_speed).data; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); - const int ndim = pmb->pmy_mesh->ndim; + const int ndim = pmesh->ndim; const int dk = (ndim == 3 ? 1 : 0); const int dj = (ndim > 1 ? 1 : 0); const int nrecon = flux.ql.GetDim(4) - 1; - auto rt = pmb->packages.Get("fluid")->Param("Recon"); - auto st = pmb->packages.Get("fluid")->Param("RiemannSolver"); + auto rt = + pmesh->packages.Get("fluid")->Param("Recon"); + auto st = pmesh->packages.Get("fluid")->Param("RiemannSolver"); parthenon::par_for_outer( DEFAULT_OUTER_LOOP_PATTERN, "Reconstruct", DevExecSpace(), 0, 0, 0, nrecon, @@ -727,9 +729,9 @@ TaskStatus CalculateFluxes(MeshBlockData *rc) { #define FLUX(method) \ parthenon::par_for( \ - DEFAULT_LOOP_PATTERN, "CalculateFluxes", DevExecSpace(), X1DIR, \ - pmb->pmy_mesh->ndim, kb.s - dk, kb.e + dk, jb.s - dj, jb.e + dj, ib.s - 1, \ - ib.e + 1, KOKKOS_LAMBDA(const int d, const int k, const int j, const int i) { \ + DEFAULT_LOOP_PATTERN, "CalculateFluxes", DevExecSpace(), X1DIR, ndim, kb.s - dk, \ + kb.e + dk, jb.s - dj, jb.e + dj, ib.s - 1, ib.e + 1, \ + KOKKOS_LAMBDA(const int d, const int k, const int j, const int i) { \ sig(d - 1, k, j, i) = method(flux, d, k, j, i); \ }); switch (st) { @@ -748,17 +750,17 @@ TaskStatus CalculateFluxes(MeshBlockData *rc) { } TaskStatus FluxCT(MeshBlockData *rc) { - auto *pmb = rc->GetParentPointer().get(); - auto &fluid = pmb->packages.Get("fluid"); + Mesh *pmesh = rc->GetMeshPointer(); + auto &fluid = pmesh->packages.Get("fluid"); if (!fluid->Param("mhd") || !fluid->Param("active") || fluid->Param("zero_fluxes")) return TaskStatus::complete; - const int ndim = pmb->pmy_mesh->ndim; + const int ndim = pmesh->ndim; if (ndim == 1) return TaskStatus::complete; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); auto f1 = rc->Get(fluid_cons::bfield).flux[X1DIR]; auto f2 = rc->Get(fluid_cons::bfield).flux[X2DIR]; @@ -810,15 +812,16 @@ TaskStatus FluxCT(MeshBlockData *rc) { } TaskStatus CalculateDivB(MeshBlockData *rc) { - auto pmb = rc->GetBlockPointer(); + auto *pmb = rc->GetParentPointer(); if (!pmb->packages.Get("fluid")->Param("active")) return TaskStatus::complete; if (!pmb->packages.Get("fluid")->Param("mhd")) return TaskStatus::complete; const int ndim = pmb->pmy_mesh->ndim; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); + // This is the problem for doing things with meshblock packs auto coords = pmb->coords; auto b = rc->Get(fluid_cons::bfield).data; auto divb = rc->Get(diagnostic_variables::divb).data; @@ -866,9 +869,9 @@ TaskStatus CalculateDivB(MeshBlockData *rc) { Real EstimateTimestepBlock(MeshBlockData *rc) { auto pmb = rc->GetBlockPointer(); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); auto &coords = pmb->coords; const int ndim = pmb->pmy_mesh->ndim; diff --git a/src/fluid/fluid.hpp b/src/fluid/fluid.hpp index a6e3ff9f8..533a14e11 100644 --- a/src/fluid/fluid.hpp +++ b/src/fluid/fluid.hpp @@ -62,8 +62,8 @@ using c2p_mesh_type = c2p_type>; #if SET_FLUX_SRC_DIAGS template TaskStatus CopyFluxDivergence(T *rc) { - auto pmb = rc->GetParentPointer(); - auto &fluid = pmb->packages.Get("fluid"); + Mesh *pm = rc->GetMeshPointer(); + auto &fluid = pm->packages.Get("fluid"); const Params ¶ms = fluid->AllParams(); if (!params.Get("active")) return TaskStatus::complete; @@ -85,7 +85,7 @@ TaskStatus CopyFluxDivergence(T *rc) { auto diag = rc->PackVariables(diag_vars, imap_diag); auto idx_r_divf = imap_diag.GetFlatIdx(diagnostic_variables::r_divf, false); - StateDescriptor *rad = pmb->packages.Get("radiation").get(); + StateDescriptor *rad = pm->packages.Get("radiation").get(); int num_species = 0; if (idx_E.IsValid()) { num_species = rad->Param("num_species"); diff --git a/src/fluid/riemann.hpp b/src/fluid/riemann.hpp index b5780a081..3f320fd70 100644 --- a/src/fluid/riemann.hpp +++ b/src/fluid/riemann.hpp @@ -215,20 +215,17 @@ class FluxState { : v(rc->PackVariablesAndFluxes(ReconVars(), FluxVars(), imap)), ql(rc->Get("ql").data), qr(rc->Get("qr").data), geom(Geometry::GetCoordinateSystem(rc)), - coords(rc->GetParentPointer().get()->coords), - bounds(rc->GetParentPointer() - .get() - ->packages.Get("fixup") - .get() - ->Param("bounds")), - prho(imap[fluid_prim::density].first), pvel_lo(imap[fluid_prim::velocity].first), - peng(imap[fluid_prim::energy].first), pb_lo(imap[fluid_prim::bfield].first), - pb_hi(imap[fluid_prim::bfield].second), pye(imap[fluid_prim::ye].second), - prs(imap[fluid_prim::pressure].first), gm1(imap[fluid_prim::gamma1].first), - crho(imap[fluid_cons::density].first), cmom_lo(imap[fluid_cons::momentum].first), - ceng(imap[fluid_cons::energy].first), cb_lo(imap[fluid_cons::bfield].first), - cb_hi(imap[fluid_cons::bfield].second), cye(imap[fluid_cons::ye].first), - ncons(5 + (pb_hi - pb_lo + 1) + (cye > 0)) { + coords(rc->GetParentPointer()->coords), // problem for packs + bounds(rc->GetParentPointer()->packages.Get("fixup").get()->Param( + "bounds")), + prho(imap[fluid_prim::density::name()].first), + pvel_lo(imap[fluid_prim::velocity].first), peng(imap[fluid_prim::energy].first), + pb_lo(imap[fluid_prim::bfield].first), pb_hi(imap[fluid_prim::bfield].second), + pye(imap[fluid_prim::ye].second), prs(imap[fluid_prim::pressure].first), + gm1(imap[fluid_prim::gamma1].first), crho(imap[fluid_cons::density].first), + cmom_lo(imap[fluid_cons::momentum].first), ceng(imap[fluid_cons::energy].first), + cb_lo(imap[fluid_cons::bfield].first), cb_hi(imap[fluid_cons::bfield].second), + cye(imap[fluid_cons::ye].first), ncons(5 + (pb_hi - pb_lo + 1) + (cye > 0)) { PARTHENON_REQUIRE_THROWS( ncons <= NCONS_MAX, "ncons exceeds NCONS_MAX. Reconfigure to increase NCONS_MAX."); diff --git a/src/fluid/tmunu.hpp b/src/fluid/tmunu.hpp index 1bbdfa1e3..89cc36544 100644 --- a/src/fluid/tmunu.hpp +++ b/src/fluid/tmunu.hpp @@ -27,9 +27,9 @@ namespace fluid { -const std::vector TMUNU_VARS = {fluid_prim::density, fluid_prim::velocity, - fluid_prim::energy, fluid_prim::pressure, - fluid_prim::bfield}; +const std::vector TMUNU_VARS = {fluid_prim::density::name(), + fluid_prim::velocity, fluid_prim::energy, + fluid_prim::pressure, fluid_prim::bfield}; // Indices are upstairs template class StressEnergyTensorCon { @@ -46,7 +46,7 @@ class StressEnergyTensorCon { pack_ = rc->PackVariables(TMUNU_VARS, imap); system_ = Geometry::GetCoordinateSystem(rc); - ir_ = imap[fluid_prim::density].first; + ir_ = imap[fluid_prim::density::name()].first; iv_ = imap[fluid_prim::velocity].first; iu_ = imap[fluid_prim::energy].first; ip_ = imap[fluid_prim::pressure].first; diff --git a/src/geometry/boosted_minkowski.cpp b/src/geometry/boosted_minkowski.cpp index c4cc21f70..02c01b477 100644 --- a/src/geometry/boosted_minkowski.cpp +++ b/src/geometry/boosted_minkowski.cpp @@ -53,7 +53,7 @@ void Initialize(ParameterInput *pin, template <> BoostedMinkowskiMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real vx = pkg->Param("vx"); Real vy = pkg->Param("vy"); @@ -63,7 +63,7 @@ GetCoordinateSystem(MeshBlockData *rc) { template <> BoostedMinkowskiMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real vx = pkg->Param("vx"); Real vy = pkg->Param("vy"); diff --git a/src/geometry/boyer_lindquist.cpp b/src/geometry/boyer_lindquist.cpp index 91a50cfa5..7197ca391 100644 --- a/src/geometry/boyer_lindquist.cpp +++ b/src/geometry/boyer_lindquist.cpp @@ -47,7 +47,7 @@ void SetGeometry(MeshData *rc) {} template <> BoyerLindquistMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real dxfd = pkg->Param("dxfd"); @@ -55,7 +55,7 @@ GetCoordinateSystem(MeshBlockData *rc) { } template <> BoyerLindquistMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real dxfd = pkg->Param("dxfd"); diff --git a/src/geometry/cached_system.hpp b/src/geometry/cached_system.hpp index 6016ebf0b..94b96d89d 100644 --- a/src/geometry/cached_system.hpp +++ b/src/geometry/cached_system.hpp @@ -575,7 +575,7 @@ void InitializeCachedCoordinateSystem(ParameterInput *pin, StateDescriptor *geom template CachedOverMeshBlock GetCachedCoordinateSystem(MeshBlockData *rc) { auto system = GetCoordinateSystem(rc); - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); bool axisymmetric = pkg->Param("axisymmetric"); bool time_dependent = pkg->Param("time_dependent"); return CachedOverMeshBlock(rc, system, axisymmetric, time_dependent); @@ -583,7 +583,7 @@ CachedOverMeshBlock GetCachedCoordinateSystem(MeshBlockData *rc) { template CachedOverMesh GetCachedCoordinateSystem(MeshData *rc) { auto system = GetCoordinateSystem(rc); - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); bool axisymmetric = pkg->Param("axisymmetric"); bool time_dependent = pkg->Param("time_dependent"); return CachedOverMesh(rc, system, axisymmetric, time_dependent); @@ -591,7 +591,7 @@ CachedOverMesh GetCachedCoordinateSystem(MeshData *rc) { template void SetCachedCoordinateSystem(Data *rc) { - auto pparent = rc->GetParentPointer(); + Mesh *pparent = rc->GetMeshPointer(); auto system = GetCoordinateSystem(rc); auto &pkg = pparent->packages.Get("geometry"); diff --git a/src/geometry/flrw.cpp b/src/geometry/flrw.cpp index 034d644e2..db81fb468 100644 --- a/src/geometry/flrw.cpp +++ b/src/geometry/flrw.cpp @@ -55,7 +55,7 @@ void Initialize(ParameterInput *pin, StateDescriptor *geometry) template <> FLRWMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a0 = pkg->Param("a0"); Real dadt = pkg->Param("dadt"); @@ -65,7 +65,7 @@ FLRWMeshBlock GetCoordinateSystem(MeshBlockData *rc) { template <> FLRWMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a0 = pkg->Param("a0"); Real dadt = pkg->Param("dadt"); diff --git a/src/geometry/fmks.cpp b/src/geometry/fmks.cpp index a8bbe80f7..3eb727e12 100644 --- a/src/geometry/fmks.cpp +++ b/src/geometry/fmks.cpp @@ -93,7 +93,7 @@ void SetGeometry(MeshData *rc) {} template <> FMKSMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real dxfd = pkg->Param("dxfd"); @@ -102,7 +102,7 @@ FMKSMeshBlock GetCoordinateSystem(MeshBlockData *rc) { } template <> FMKSMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real dxfd = pkg->Param("dxfd"); diff --git a/src/geometry/geometry.cpp b/src/geometry/geometry.cpp index 1d7d3b2f3..163891420 100644 --- a/src/geometry/geometry.cpp +++ b/src/geometry/geometry.cpp @@ -109,7 +109,7 @@ CoordSysMesh GetCoordinateSystem(MeshData *rc) { void SetGeometryBlock(MeshBlock *pmb, ParameterInput *pin) { MeshBlockData *rc = pmb->meshblock_data.Get().get(); - auto *pparent = rc->GetParentPointer().get(); + Mesh *pparent = rc->GetMeshPointer(); StateDescriptor *pkg = pparent->packages.Get("geometry").get(); bool do_defaults = pkg->AllParams().Get("do_defaults", true); auto system = GetCoordinateSystem(rc); @@ -119,7 +119,7 @@ void SetGeometryBlock(MeshBlock *pmb, ParameterInput *pin) { template <> TaskStatus UpdateGeometry>(MeshBlockData *rc) { - auto *pparent = rc->GetParentPointer().get(); + Mesh *pparent = rc->GetMeshPointer(); StateDescriptor *pkg = pparent->packages.Get("geometry").get(); bool update_coords = pkg->AllParams().Get("update_coords", false); auto system = GetCoordinateSystem(rc); @@ -130,7 +130,7 @@ TaskStatus UpdateGeometry>(MeshBlockData *rc) { template <> TaskStatus UpdateGeometry>(MeshData *rc) { - auto *pparent = rc->GetParentPointer(); + Mesh *pparent = rc->GetMeshPointer(); StateDescriptor *pkg = pparent->packages.Get("geometry").get(); bool update_coords = pkg->AllParams().Get("update_coords", false); auto system = GetCoordinateSystem(rc); diff --git a/src/geometry/inchworm.cpp b/src/geometry/inchworm.cpp index a3824e707..6d50ed9b8 100644 --- a/src/geometry/inchworm.cpp +++ b/src/geometry/inchworm.cpp @@ -48,7 +48,7 @@ void SetGeometry(MeshData *rc) {} template <> InchwormMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real k = pkg->Param("k"); @@ -56,7 +56,7 @@ InchwormMeshBlock GetCoordinateSystem(MeshBlockData *rc } template <> InchwormMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real k = pkg->Param("k"); diff --git a/src/geometry/monopole.cpp b/src/geometry/monopole.cpp index 2123b541e..2ddfd0435 100644 --- a/src/geometry/monopole.cpp +++ b/src/geometry/monopole.cpp @@ -67,7 +67,7 @@ void SetGeometry(MeshData *rc) {} template <> MplSphMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("monopole_gr"); + auto &pkg = rc->GetMeshPointer()->packages.Get("monopole_gr"); auto ¶ms = pkg->AllParams(); auto enabled = params.Get("enable_monopole_gr"); PARTHENON_REQUIRE_THROWS(enabled, "MonopoleGR must be enabled for this metric"); @@ -82,7 +82,7 @@ MplSphMeshBlock GetCoordinateSystem(MeshBlockData *rc) { } template <> MplSphMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("monopole_gr"); + auto &pkg = rc->GetMeshPointer()->packages.Get("monopole_gr"); auto ¶ms = pkg->AllParams(); auto enabled = params.Get("enable_monopole_gr"); PARTHENON_REQUIRE_THROWS(enabled, "MonopoleGR must be enabled for this metric"); @@ -98,7 +98,7 @@ MplSphMesh GetCoordinateSystem(MeshData *rc) { template <> MplCartMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("monopole_gr"); + auto &pkg = rc->GetMeshPointer()->packages.Get("monopole_gr"); auto ¶ms = pkg->AllParams(); auto enabled = params.Get("enable_monopole_gr"); PARTHENON_REQUIRE_THROWS(enabled, "MonopoleGR must be enabled for this metric"); @@ -110,7 +110,7 @@ MplCartMeshBlock GetCoordinateSystem(MeshBlockData *rc) auto rgrid = params.Get("radius"); auto indexer = GetIndexer(rc); - auto &geom_pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &geom_pkg = rc->GetMeshPointer()->packages.Get("geometry"); Real dxfd = geom_pkg->Param("dxfd"); auto transformation = GetTransformation(pkg.get()); @@ -119,7 +119,7 @@ MplCartMeshBlock GetCoordinateSystem(MeshBlockData *rc) } template <> MplCartMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("monopole_gr"); + auto &pkg = rc->GetMeshPointer()->packages.Get("monopole_gr"); auto ¶ms = pkg->AllParams(); auto enabled = params.Get("enable_monopole_gr"); PARTHENON_REQUIRE_THROWS(enabled, "MonopoleGR must be enabled for this metric"); @@ -131,7 +131,7 @@ MplCartMesh GetCoordinateSystem(MeshData *rc) { auto rgrid = params.Get("radius"); auto indexer = GetIndexer(rc); - auto &geom_pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &geom_pkg = rc->GetMeshPointer()->packages.Get("geometry"); Real dxfd = geom_pkg->Param("dxfd"); auto transformation = GetTransformation(pkg.get()); diff --git a/src/geometry/snake.cpp b/src/geometry/snake.cpp index 8a16fd5ed..a42516a46 100644 --- a/src/geometry/snake.cpp +++ b/src/geometry/snake.cpp @@ -54,7 +54,7 @@ void SetGeometry(MeshData *rc) {} template <> SnakeMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real k = pkg->Param("k"); @@ -64,7 +64,7 @@ SnakeMeshBlock GetCoordinateSystem(MeshBlockData *rc) { } template <> SnakeMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); Real k = pkg->Param("k"); diff --git a/src/geometry/spherical_kerr_schild.cpp b/src/geometry/spherical_kerr_schild.cpp index f45664314..816bd8ca5 100644 --- a/src/geometry/spherical_kerr_schild.cpp +++ b/src/geometry/spherical_kerr_schild.cpp @@ -45,14 +45,14 @@ void SetGeometry(MeshData *rc) {} template <> SphericalKSMeshBlock GetCoordinateSystem(MeshBlockData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); return SphericalKSMeshBlock(indexer, a); } template <> SphericalKSMesh GetCoordinateSystem(MeshData *rc) { - auto &pkg = rc->GetParentPointer()->packages.Get("geometry"); + auto &pkg = rc->GetMeshPointer()->packages.Get("geometry"); auto indexer = GetIndexer(rc); Real a = pkg->Param("a"); return SphericalKSMesh(indexer, a); diff --git a/src/monopole_gr/interp_3d_to_1d.hpp b/src/monopole_gr/interp_3d_to_1d.hpp index d012256f6..483b6c6c0 100644 --- a/src/monopole_gr/interp_3d_to_1d.hpp +++ b/src/monopole_gr/interp_3d_to_1d.hpp @@ -67,7 +67,7 @@ TaskStatus InterpolateMatterTo1D(Data *rc) { using namespace impl; // Available in both mesh and meshblock - auto pparent = rc->GetParentPointer(); + Mesh *pparent = rc->GetMeshPointer(); std::shared_ptr const &pkg = pparent->packages.Get("monopole_gr"); auto ¶ms = pkg->AllParams(); diff --git a/src/monopole_gr/monopole_gr.cpp b/src/monopole_gr/monopole_gr.cpp index 6770c3088..a77058d15 100644 --- a/src/monopole_gr/monopole_gr.cpp +++ b/src/monopole_gr/monopole_gr.cpp @@ -242,12 +242,12 @@ Real EstimateTimeStep(StateDescriptor *pkg) { // Could template this but whatever. I'd only save like 4 lines. Real EstimateTimestepBlock(MeshBlockData *rc) { - auto pmb = rc->GetParentPointer(); - StateDescriptor *pkg = pmb->packages.Get("monopole_gr").get(); + Mesh *pmesh = rc->GetMeshPointer(); + StateDescriptor *pkg = pmesh->packages.Get("monopole_gr").get(); return EstimateTimeStep(pkg); } Real EstimateTimeStepMesh(MeshData *rc) { - auto pmesh = rc->GetParentPointer(); + Mesh *pmesh = rc->GetMeshPointer(); StateDescriptor *pkg = pmesh->packages.Get("monopole_gr").get(); return EstimateTimeStep(pkg); } @@ -666,7 +666,7 @@ void DumpHypersurface(const std::string &filename, Matter_host_t &matter, #ifndef PHOEBUS_IN_UNIT_TESTS template TaskStatus InterpMetricToGrid(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); StateDescriptor *pkg = pmb->packages.Get("monopole_gr").get(); auto ¶ms = pkg->AllParams(); @@ -681,9 +681,9 @@ TaskStatus InterpMetricToGrid(T *rc) { const bool is_monopole_sph = (typeid(PHOEBUS_GEOMETRY) == typeid(Geometry::MonopoleSph)); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); parthenon::Coordinates_t coords = pmb->coords; using Transformation_t = Geometry::SphericalToCartesian; diff --git a/src/pgen/advection.cpp b/src/pgen/advection.cpp index 3380e18fa..f2ec10c14 100644 --- a/src/pgen/advection.cpp +++ b/src/pgen/advection.cpp @@ -26,12 +26,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/blandford_mckee.cpp b/src/pgen/blandford_mckee.cpp index 1ee34003e..5a2669b74 100644 --- a/src/pgen/blandford_mckee.cpp +++ b/src/pgen/blandford_mckee.cpp @@ -31,12 +31,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/bondi.cpp b/src/pgen/bondi.cpp index 4e4f088e7..15cee1f44 100644 --- a/src/pgen/bondi.cpp +++ b/src/pgen/bondi.cpp @@ -91,12 +91,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto rc = pmb->meshblock_data.Get().get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/friedmann.cpp b/src/pgen/friedmann.cpp index e1cfbc163..632433f80 100644 --- a/src/pgen/friedmann.cpp +++ b/src/pgen/friedmann.cpp @@ -36,11 +36,12 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); - const int irho = imap[fluid_prim::density].first; + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ieng = imap[fluid_prim::energy].first; const int iye = imap[fluid_prim::ye].second; diff --git a/src/pgen/homogeneous_sphere.cpp b/src/pgen/homogeneous_sphere.cpp index 6497b90d1..c339df474 100644 --- a/src/pgen/homogeneous_sphere.cpp +++ b/src/pgen/homogeneous_sphere.cpp @@ -29,9 +29,10 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { PackIndexMap imap; auto v = rc->PackVariables( - std::vector({radmoment_prim::J, radmoment_prim::H, fluid_prim::density, - fluid_prim::temperature, fluid_prim::velocity, - radmoment_internal::xi, radmoment_internal::phi}), + std::vector({radmoment_prim::J, radmoment_prim::H, + fluid_prim::density::name(), fluid_prim::temperature, + fluid_prim::velocity, radmoment_internal::xi, + radmoment_internal::phi}), imap); auto idJ = imap.GetFlatIdx(radmoment_prim::J); @@ -39,7 +40,7 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto idv = imap.GetFlatIdx(fluid_prim::velocity); auto ixi = imap.GetFlatIdx(radmoment_internal::xi); auto iphi = imap.GetFlatIdx(radmoment_internal::phi); - const int prho = imap[fluid_prim::density].first; + const int prho = imap[fluid_prim::density::name()].first; const int pT = imap[fluid_prim::temperature].first; const auto specB = idJ.GetBounds(1); diff --git a/src/pgen/kh.cpp b/src/pgen/kh.cpp index 873b48067..d67e1cc79 100644 --- a/src/pgen/kh.cpp +++ b/src/pgen/kh.cpp @@ -26,12 +26,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/leptoneq.cpp b/src/pgen/leptoneq.cpp index 19f853807..387d6dded 100644 --- a/src/pgen/leptoneq.cpp +++ b/src/pgen/leptoneq.cpp @@ -31,11 +31,11 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {p::density, p::velocity, p::energy, p::ye, p::pressure, p::temperature, p::gamma1}, - imap); + auto v = rc->PackVariables({p::density::name(), p::velocity, p::energy, p::ye, + p::pressure, p::temperature, p::gamma1}, + imap); - const int irho = imap[p::density].first; + const int irho = imap[p::density::name()].first; const int ivlo = imap[p::velocity].first; const int ivhi = imap[p::velocity].second; const int ieng = imap[p::energy].first; diff --git a/src/pgen/linear_modes.cpp b/src/pgen/linear_modes.cpp index ef9daddd8..6a771121e 100644 --- a/src/pgen/linear_modes.cpp +++ b/src/pgen/linear_modes.cpp @@ -43,13 +43,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { const int ndim = pmb->pmy_mesh->ndim; PackIndexMap imap; - std::vector vars({fluid_prim::density, fluid_prim::velocity, + std::vector vars({fluid_prim::density::name(), fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1, fluid_prim::ye}); auto v = rc->PackVariables(vars, imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/p2c2p.cpp b/src/pgen/p2c2p.cpp index 8a9611500..4e18de781 100644 --- a/src/pgen/p2c2p.cpp +++ b/src/pgen/p2c2p.cpp @@ -73,12 +73,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/progenitor.cpp b/src/pgen/progenitor.cpp index 0c6cda5d5..7fbae9bc1 100644 --- a/src/pgen/progenitor.cpp +++ b/src/pgen/progenitor.cpp @@ -35,11 +35,12 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto geom = Geometry::GetCoordinateSystem(rc.get()); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); - const int irho = imap[fluid_prim::density].first; + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/radiation_advection.cpp b/src/pgen/radiation_advection.cpp index 6bdc2a140..3c32dccc8 100644 --- a/src/pgen/radiation_advection.cpp +++ b/src/pgen/radiation_advection.cpp @@ -28,10 +28,10 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { PackIndexMap imap; auto v = rc->PackVariables( - std::vector({radmoment_prim::J, radmoment_prim::H, fluid_prim::density, - fluid_prim::temperature, fluid_prim::energy, - fluid_prim::velocity, radmoment_internal::xi, - radmoment_internal::phi}), + std::vector({radmoment_prim::J, radmoment_prim::H, + fluid_prim::density::name(), fluid_prim::temperature, + fluid_prim::energy, fluid_prim::velocity, + radmoment_internal::xi, radmoment_internal::phi}), imap); auto idJ = imap.GetFlatIdx(radmoment_prim::J); @@ -39,7 +39,7 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto idv = imap.GetFlatIdx(fluid_prim::velocity); auto ixi = imap.GetFlatIdx(radmoment_internal::xi); auto iphi = imap.GetFlatIdx(radmoment_internal::phi); - const int prho = imap[fluid_prim::density].first; + const int prho = imap[fluid_prim::density::name()].first; const int pT = imap[fluid_prim::temperature].first; const int peng = imap[fluid_prim::energy].first; diff --git a/src/pgen/radiation_equilibration.cpp b/src/pgen/radiation_equilibration.cpp index 27dbb0bf0..359908715 100644 --- a/src/pgen/radiation_equilibration.cpp +++ b/src/pgen/radiation_equilibration.cpp @@ -33,7 +33,7 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { PackIndexMap imap; auto v = rc->PackVariables({radmoment_prim::J, radmoment_prim::H, radmoment_internal::xi, radmoment_internal::phi, - fluid_prim::density, fluid_prim::temperature, + fluid_prim::density::name(), fluid_prim::temperature, fluid_prim::pressure, fluid_prim::gamma1, fluid_prim::energy, fluid_prim::ye, fluid_prim::velocity}, imap); @@ -43,7 +43,7 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto ixi = imap.GetFlatIdx(radmoment_internal::xi); auto iphi = imap.GetFlatIdx(radmoment_internal::phi); - const int iRho = imap[fluid_prim::density].first; + const int iRho = imap[fluid_prim::density::name()].first; const int iT = imap[fluid_prim::temperature].first; const int iP = imap[fluid_prim::pressure].first; const int igm1 = imap[fluid_prim::gamma1].first; diff --git a/src/pgen/rhs_tester.cpp b/src/pgen/rhs_tester.cpp index 6e712dd2a..850f58356 100644 --- a/src/pgen/rhs_tester.cpp +++ b/src/pgen/rhs_tester.cpp @@ -20,12 +20,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/rotor.cpp b/src/pgen/rotor.cpp index ac66315f2..6abda006f 100644 --- a/src/pgen/rotor.cpp +++ b/src/pgen/rotor.cpp @@ -32,12 +32,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/sedov.cpp b/src/pgen/sedov.cpp index dab0853eb..95d123cfb 100644 --- a/src/pgen/sedov.cpp +++ b/src/pgen/sedov.cpp @@ -31,12 +31,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/shock_tube.cpp b/src/pgen/shock_tube.cpp index 0db551501..4e38035e9 100644 --- a/src/pgen/shock_tube.cpp +++ b/src/pgen/shock_tube.cpp @@ -35,12 +35,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/pgen/thin_cooling.cpp b/src/pgen/thin_cooling.cpp index b82d77e6f..4ac14c44f 100644 --- a/src/pgen/thin_cooling.cpp +++ b/src/pgen/thin_cooling.cpp @@ -31,11 +31,11 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto &rc = pmb->meshblock_data.Get(); PackIndexMap imap; - auto v = rc->PackVariables( - {p::density, p::velocity, p::energy, p::ye, p::pressure, p::temperature, p::gamma1}, - imap); + auto v = rc->PackVariables({p::density::name(), p::velocity, p::energy, p::ye, + p::pressure, p::temperature, p::gamma1}, + imap); - const int irho = imap[p::density].first; + const int irho = imap[p::density::name()].first; const int ivlo = imap[p::velocity].first; const int ivhi = imap[p::velocity].second; const int ieng = imap[p::energy].first; diff --git a/src/pgen/torus.cpp b/src/pgen/torus.cpp index 2efeb89ca..7859ef57c 100644 --- a/src/pgen/torus.cpp +++ b/src/pgen/torus.cpp @@ -138,13 +138,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { bool do_rad = rad_pkg->Param("active"); PackIndexMap imap; - auto v = rc->PackVariables({fluid_prim::density, fluid_prim::velocity, + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1, radmoment_prim::J, radmoment_prim::H}, imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; @@ -679,11 +679,11 @@ void ComputeBetas(Mesh *pmesh, Real rho_min_bnorm, Real &beta_min_global, PackIndexMap imap; auto v = - rc->PackVariables({fluid_prim::density, fluid_prim::velocity, fluid_prim::bfield, - fluid_prim::pressure, radmoment_prim::J}, + rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::bfield, fluid_prim::pressure, radmoment_prim::J}, imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int iblo = imap[fluid_prim::bfield].first; diff --git a/src/pgen/tov.cpp b/src/pgen/tov.cpp index 0a69b64c6..d56bc2b42 100644 --- a/src/pgen/tov.cpp +++ b/src/pgen/tov.cpp @@ -71,12 +71,13 @@ void ProblemGenerator(MeshBlock *pmb, ParameterInput *pin) { auto geom = Geometry::GetCoordinateSystem(rc.get()); PackIndexMap imap; - auto v = rc->PackVariables( - {fluid_prim::density, fluid_prim::velocity, fluid_prim::energy, fluid_prim::bfield, - fluid_prim::ye, fluid_prim::pressure, fluid_prim::temperature, fluid_prim::gamma1}, - imap); + auto v = rc->PackVariables({fluid_prim::density::name(), fluid_prim::velocity, + fluid_prim::energy, fluid_prim::bfield, fluid_prim::ye, + fluid_prim::pressure, fluid_prim::temperature, + fluid_prim::gamma1}, + imap); - const int irho = imap[fluid_prim::density].first; + const int irho = imap[fluid_prim::density::name()].first; const int ivlo = imap[fluid_prim::velocity].first; const int ivhi = imap[fluid_prim::velocity].second; const int ieng = imap[fluid_prim::energy].first; diff --git a/src/phoebus_boundaries/phoebus_boundaries.cpp b/src/phoebus_boundaries/phoebus_boundaries.cpp index decc5362f..c983257dd 100644 --- a/src/phoebus_boundaries/phoebus_boundaries.cpp +++ b/src/phoebus_boundaries/phoebus_boundaries.cpp @@ -80,7 +80,7 @@ void GenericBC(std::shared_ptr> &rc, bool coarse) { // needed because our conserved variables are densitized auto geom = Geometry::GetCoordinateSystem(rc.get()); - auto &fluid = rc->GetParentPointer()->packages.Get("fluid"); + auto &fluid = rc->GetMeshPointer()->packages.Get("fluid"); const bool rescale = fluid->Param("bc_vars") == "conserved"; // Do the thing @@ -113,7 +113,7 @@ void GenericBC(std::shared_ptr> &rc, bool coarse) { } void OutflowInnerX1(std::shared_ptr> &rc, bool coarse) { - std::shared_ptr pmb = rc->GetBlockPointer(); + auto pmb = rc->GetBlockPointer(); auto geom = Geometry::GetCoordinateSystem(rc.get()); auto bounds = coarse ? pmb->c_cellbounds : pmb->cellbounds; @@ -125,7 +125,7 @@ void OutflowInnerX1(std::shared_ptr> &rc, bool coarse) { // auto nb1 = IndexRange{0, 0}; auto domain = IndexDomain::inner_x1; - auto &fluid = rc->GetParentPointer()->packages.Get("fluid"); + auto &fluid = rc->GetMeshPointer()->packages.Get("fluid"); std::string bc_vars = fluid->Param("bc_vars"); if (bc_vars == "conserved") { @@ -147,7 +147,7 @@ void OutflowInnerX1(std::shared_ptr> &rc, bool coarse) { } void PolarInnerX2(std::shared_ptr> &rc, bool coarse) { - std::shared_ptr pmb = rc->GetBlockPointer(); + auto pmb = rc->GetBlockPointer(); auto geom = Geometry::GetCoordinateSystem(rc.get()); auto bounds = coarse ? pmb->c_cellbounds : pmb->cellbounds; @@ -158,7 +158,7 @@ void PolarInnerX2(std::shared_ptr> &rc, bool coarse) { auto domain = IndexDomain::inner_x2; const int j0 = bounds.GetBoundsJ(IndexDomain::interior).s; - auto &fluid = rc->GetParentPointer()->packages.Get("fluid"); + auto &fluid = rc->GetMeshPointer()->packages.Get("fluid"); std::string bc_vars = fluid->Param("bc_vars"); PARTHENON_REQUIRE(bc_vars == "primitive", "Polar X2 reflecting BCs not supported"); @@ -180,7 +180,7 @@ void PolarInnerX2(std::shared_ptr> &rc, bool coarse) { } void PolarOuterX2(std::shared_ptr> &rc, bool coarse) { - std::shared_ptr pmb = rc->GetBlockPointer(); + auto pmb = rc->GetBlockPointer(); auto geom = Geometry::GetCoordinateSystem(rc.get()); auto bounds = coarse ? pmb->c_cellbounds : pmb->cellbounds; @@ -191,7 +191,7 @@ void PolarOuterX2(std::shared_ptr> &rc, bool coarse) { auto domain = IndexDomain::outer_x2; const int j0 = bounds.GetBoundsJ(IndexDomain::interior).e; - auto &fluid = rc->GetParentPointer()->packages.Get("fluid"); + auto &fluid = rc->GetMeshPointer()->packages.Get("fluid"); std::string bc_vars = fluid->Param("bc_vars"); PARTHENON_REQUIRE(bc_vars == "primitive", "Polar X2 reflecting BCs not supported"); @@ -214,7 +214,7 @@ void PolarOuterX2(std::shared_ptr> &rc, bool coarse) { } void OutflowOuterX1(std::shared_ptr> &rc, bool coarse) { - std::shared_ptr pmb = rc->GetBlockPointer(); + auto pmb = rc->GetBlockPointer(); auto geom = Geometry::GetCoordinateSystem(rc.get()); auto bounds = coarse ? pmb->c_cellbounds : pmb->cellbounds; @@ -230,8 +230,8 @@ void OutflowOuterX1(std::shared_ptr> &rc, bool coarse) { const int pv_lo = imap[fluid_prim::velocity].first; auto idx_H = imap.GetFlatIdx(radmoment_prim::H, false); - auto &fluid = rc->GetParentPointer()->packages.Get("fluid"); - auto &rad = rc->GetParentPointer()->packages.Get("radiation"); + auto &fluid = rc->GetMeshPointer()->packages.Get("fluid"); + auto &rad = rc->GetMeshPointer()->packages.Get("radiation"); std::string bc_vars = fluid->Param("bc_vars"); const int num_species = rad->Param("active") ? rad->Param("num_species") : 0; @@ -307,9 +307,9 @@ TaskStatus ConvertBoundaryConditions(std::shared_ptr> &rc) { } } - auto &pkg = rc->GetParentPointer()->packages.Get("fluid"); - auto &pkg_rad = rc->GetParentPointer()->packages.Get("radiation"); - auto &pkg_fix = rc->GetParentPointer()->packages.Get("fixup"); + auto &pkg = rc->GetMeshPointer()->packages.Get("fluid"); + auto &pkg_rad = rc->GetMeshPointer()->packages.Get("radiation"); + auto &pkg_fix = rc->GetMeshPointer()->packages.Get("fixup"); std::string bc_vars = pkg->Param("bc_vars"); // Apply inflow check to ox1 for BH problem at simulation BC only @@ -330,7 +330,7 @@ TaskStatus ConvertBoundaryConditions(std::shared_ptr> &rc) { } // Inflow check and then p2c - std::shared_ptr pmb = rc->GetBlockPointer(); + auto pmb = rc->GetBlockPointer(); auto geom = Geometry::GetCoordinateSystem(rc.get()); // TODO(BRR) Is this always true? diff --git a/src/phoebus_utils/grid_utils.hpp b/src/phoebus_utils/grid_utils.hpp index ab927648f..45c1e25ff 100644 --- a/src/phoebus_utils/grid_utils.hpp +++ b/src/phoebus_utils/grid_utils.hpp @@ -55,4 +55,16 @@ KOKKOS_FORCEINLINE_FUNCTION Real GetXv(const int i, const int dir, } // namespace Coordinates +namespace PhoebusUtils { +inline Real GetRegionVolume(const parthenon::RegionSize ®) { + using parthenon::CoordinateDirection; + Real vol = 1; + for (int d = X1DIR; d <= X3DIR; ++d) { + CoordinateDirection dir = static_cast(d); + vol *= (reg.xmax(dir) - reg.xmin(dir)); + } + return vol; +} +} // namespace PhoebusUtils + #endif // PHOEBUS_UTILS_GRID_UTILS_HPP_ diff --git a/src/phoebus_utils/variables.hpp b/src/phoebus_utils/variables.hpp index 85867f820..f4b087549 100644 --- a/src/phoebus_utils/variables.hpp +++ b/src/phoebus_utils/variables.hpp @@ -14,8 +14,27 @@ #ifndef PHOEBUS_UTILS_VARIABLES_HPP_ #define PHOEBUS_UTILS_VARIABLES_HPP_ +#include + +#define VARIABLE(ns, varname) \ + struct varname : public parthenon::variable_names::base_t { \ + template \ + KOKKOS_INLINE_FUNCTION varname(Ts &&...args) \ + : parthenon::variable_names::base_t(std::forward(args)...) {} \ + static std::string name() { return #ns "." #varname; } \ + } + +#define VARIABLE_NONS(varname) \ + struct varname : public parthenon::variable_names::base_t { \ + template \ + KOKKOS_INLINE_FUNCTION varname(Ts &&...args) \ + : parthenon::variable_names::base_t(std::forward(args)...) {} \ + static std::string name() { return #varname; } \ + } + namespace fluid_prim { -constexpr char density[] = "p.density"; +VARIABLE(p, density); +// constexpr char density[] = "p.density"; constexpr char velocity[] = "p.velocity"; constexpr char energy[] = "p.energy"; constexpr char bfield[] = "p.bfield"; diff --git a/src/radiation/cooling_function.cpp b/src/radiation/cooling_function.cpp index bd47ddbe2..9e1302131 100644 --- a/src/radiation/cooling_function.cpp +++ b/src/radiation/cooling_function.cpp @@ -26,21 +26,21 @@ TaskStatus LightBulbCalcTau(MeshBlockData *rc) { namespace p = fluid_prim; namespace c = fluid_cons; namespace iv = internal_variables; - auto *pmb = rc->GetParentPointer().get(); + Mesh *pmesh = rc->GetMeshPointer(); - std::vector vars({p::density, iv::tau}); + std::vector vars({p::density::name(), iv::tau}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int ptau = imap[iv::tau].first; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); auto &unit_conv = - pmb->packages.Get("phoebus")->Param("unit_conv"); + pmesh->packages.Get("phoebus")->Param("unit_conv"); parthenon::par_for( DEFAULT_LOOP_PATTERN, "CalcTau", DevExecSpace(), kb.s, kb.e, jb.s, jb.e, ib.s, ib.e, KOKKOS_LAMBDA(const int k, const int j, const int i) { @@ -76,7 +76,7 @@ TaskStatus CheckDoGain(MeshBlockData *rc, bool *do_gain_global) { namespace p = fluid_prim; namespace c = fluid_cons; namespace iv = internal_variables; - auto *pmb = rc->GetParentPointer().get(); + Mesh *pmesh = rc->GetMeshPointer(); std::vector vars({iv::tau}); @@ -84,14 +84,14 @@ TaskStatus CheckDoGain(MeshBlockData *rc, bool *do_gain_global) { auto v = rc->PackVariables(vars, imap); const int ptau = imap[iv::tau].first; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); auto &unit_conv = - pmb->packages.Get("phoebus")->Param("unit_conv"); - auto rad = pmb->packages.Get("radiation").get(); - auto opac = pmb->packages.Get("opacity").get(); + pmesh->packages.Get("phoebus")->Param("unit_conv"); + auto rad = pmesh->packages.Get("radiation").get(); + auto opac = pmesh->packages.Get("opacity").get(); int do_gain_local = 0; bool do_gain; @@ -111,16 +111,16 @@ TaskStatus CoolingFunctionCalculateFourForce(MeshBlockData *rc, const doub namespace p = fluid_prim; namespace c = fluid_cons; namespace iv = internal_variables; - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); - std::vector vars({c::density, p::density, p::velocity, p::temperature, - p::ye, c::energy, iv::Gcov, iv::GcovHeat, iv::GcovCool, - iv::Gye, iv::tau, p::energy}); + std::vector vars({c::density, p::density::name(), p::velocity, + p::temperature, p::ye, c::energy, iv::Gcov, iv::GcovHeat, + iv::GcovCool, iv::Gye, iv::tau, p::energy}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); const int crho = imap[c::density].first; - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int pvlo = imap[p::velocity].first; const int pvhi = imap[p::velocity].second; const int ptemp = imap[p::temperature].first; @@ -133,9 +133,9 @@ TaskStatus CoolingFunctionCalculateFourForce(MeshBlockData *rc, const doub const int GcovHeat = imap[iv::GcovHeat].first; const int GcovCool = imap[iv::GcovCool].first; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); auto &unit_conv = pmb->packages.Get("phoebus")->Param("unit_conv"); diff --git a/src/radiation/mocmc.cpp b/src/radiation/mocmc.cpp index 8f95a8c7e..2db4915d7 100644 --- a/src/radiation/mocmc.cpp +++ b/src/radiation/mocmc.cpp @@ -54,7 +54,7 @@ get_nsamp_per_zone(const int &k, const int &j, const int &i, template void MOCMCInitSamples(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); StateDescriptor *rad = pmb->packages.Get("radiation").get(); @@ -81,14 +81,15 @@ void MOCMCInitSamples(T *rc) { const auto opac = opac_pkg->template Param("opacities"); StateDescriptor *eos = pmb->packages.Get("eos").get(); - std::vector variables{pr::J, pr::H, pf::density, pf::velocity, - pf::temperature, pf::ye, im::dnsamp}; + std::vector variables{pr::J, pr::H, pf::density::name(), + pf::velocity, pf::temperature, pf::ye, + im::dnsamp}; PackIndexMap imap; auto v = rc->PackVariables(variables, imap); auto pJ = imap.GetFlatIdx(pr::J); auto pH = imap.GetFlatIdx(pr::H); - auto pdens = imap[pf::density].first; + auto pdens = imap[pf::density::name()].first; auto pv = imap.GetFlatIdx(fluid_prim::velocity); auto pT = imap[pf::temperature].first; auto pye = imap[pf::ye].first; @@ -232,7 +233,7 @@ void MOCMCInitSamples(T *rc) { template TaskStatus MOCMCSampleBoundaries(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); StateDescriptor *rad = pmb->packages.Get("radiation").get(); @@ -347,7 +348,7 @@ TaskStatus MOCMCSampleBoundaries(T *rc) { template TaskStatus MOCMCReconstruction(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); StateDescriptor *rad = pmb->packages.Get("radiation").get(); @@ -462,7 +463,7 @@ TaskStatus MOCMCReconstruction(T *rc) { template TaskStatus MOCMCTransport(T *rc, const Real dt) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); @@ -503,7 +504,7 @@ template TaskStatus MOCMCFluidSource(T *rc, const Real dt, const bool update_fluid) { // Assume particles are already sorted from MOCMCReconstruction call! - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); StateDescriptor *rad = pmb->packages.Get("radiation").get(); @@ -521,7 +522,7 @@ TaskStatus MOCMCFluidSource(T *rc, const Real dt, const bool update_fluid) { const auto eos_d = eos->template Param("d.EOS"); std::vector variables{ - cr::E, cr::F, pr::J, pr::H, pf::density, + cr::E, cr::F, pr::J, pr::H, pf::density::name(), pf::energy, pf::velocity, pf::temperature, pf::ye, ir::tilPi, ir::kappaH, im::dnsamp, im::Inu0, im::Inu1, im::jinvs}; if (update_fluid) { @@ -534,7 +535,7 @@ TaskStatus MOCMCFluidSource(T *rc, const Real dt, const bool update_fluid) { const auto pJ = imap.GetFlatIdx(pr::J); const auto pH = imap.GetFlatIdx(pr::H); - const auto pdens = imap[pf::density].first; + const auto pdens = imap[pf::density::name()].first; const auto peng = imap[pf::energy].first; const auto pv = imap.GetFlatIdx(fluid_prim::velocity); const auto pT = imap[pf::temperature].first; @@ -784,7 +785,7 @@ TaskStatus MOCMCEddington(T *rc) { // Assume list is sorted! namespace ir = radmoment_internal; - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); auto &sc = pmb->swarm_data.Get(); auto &swarm = sc->Get("mocmc"); StateDescriptor *rad = pmb->packages.Get("radiation").get(); diff --git a/src/radiation/moments.cpp b/src/radiation/moments.cpp index 1a0859db3..ff5ba23e9 100644 --- a/src/radiation/moments.cpp +++ b/src/radiation/moments.cpp @@ -63,12 +63,12 @@ TaskStatus MomentCon2PrimImpl(T *rc) { namespace pr = radmoment_prim; namespace ir = radmoment_internal; - auto *pm = rc->GetParentPointer().get(); - StateDescriptor *rad = pm->packages.Get("radiation").get(); + Mesh *pmesh = rc->GetMeshPointer(); + StateDescriptor *rad = pmesh->packages.Get("radiation").get(); - IndexRange ib = pm->cellbounds.GetBoundsI(IndexDomain::entire); - IndexRange jb = pm->cellbounds.GetBoundsJ(IndexDomain::entire); - IndexRange kb = pm->cellbounds.GetBoundsK(IndexDomain::entire); + IndexRange ib = rc->GetBoundsI(IndexDomain::entire); + IndexRange jb = rc->GetBoundsJ(IndexDomain::entire); + IndexRange kb = rc->GetBoundsK(IndexDomain::entire); std::vector variables{ cr::E, cr::F, pr::J, pr::H, fluid_prim::velocity, @@ -168,7 +168,7 @@ template // TODO(BRR) add domain so we can do this only over interior if we are using prims as // boundary data? TaskStatus MomentCon2Prim(T *rc) { - auto *pm = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); StateDescriptor *rad = pm->packages.Get("radiation").get(); auto method = rad->Param("method"); @@ -194,11 +194,9 @@ TaskStatus MomentPrim2ConImpl(T *rc, IndexDomain domain) { namespace pr = radmoment_prim; namespace ir = radmoment_internal; - auto *pm = rc->GetParentPointer().get(); - - IndexRange ib = pm->cellbounds.GetBoundsI(domain); - IndexRange jb = pm->cellbounds.GetBoundsJ(domain); - IndexRange kb = pm->cellbounds.GetBoundsK(domain); + IndexRange ib = rc->GetBoundsI(domain); + IndexRange jb = rc->GetBoundsJ(domain); + IndexRange kb = rc->GetBoundsK(domain); std::vector variables{cr::E, cr::F, pr::J, pr::H, fluid_prim::velocity}; if (programming::is_specialization_of::value) { @@ -268,7 +266,7 @@ TaskStatus MomentPrim2ConImpl(T *rc, IndexDomain domain) { template TaskStatus MomentPrim2Con(T *rc, IndexDomain domain) { - auto *pm = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); StateDescriptor *rad = pm->packages.Get("radiation").get(); auto method = rad->Param("method"); using settings = @@ -292,7 +290,7 @@ template TaskStatus ReconstructEdgeStates(T *rc) { using namespace PhoebusReconstruction; - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); auto rt = rad_pkg->Param("Recon"); @@ -491,7 +489,7 @@ template TaskStatus ReconstructEdgeStates>(MeshBlockData TaskStatus CalculateFluxesImpl(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); StateDescriptor *rad_pkg = pmb->packages.Get("radiation").get(); StateDescriptor *fix_pkg = pmb->packages.Get("fixup").get(); @@ -748,7 +746,7 @@ TaskStatus CalculateFluxesImpl(T *rc) { template TaskStatus CalculateFluxes(T *rc) { - auto *pm = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); StateDescriptor *rad = pm->packages.Get("radiation").get(); auto method = rad->Param("method"); using settings = @@ -769,7 +767,6 @@ template TaskStatus CalculateFluxes>(MeshBlockData *); template TaskStatus CalculateGeometricSourceImpl(T *rc, T *rc_src) { constexpr int ND = Geometry::NDFULL; - auto *pmb = rc->GetParentPointer().get(); namespace cr = radmoment_cons; namespace pr = radmoment_prim; @@ -796,9 +793,9 @@ TaskStatus CalculateGeometricSourceImpl(T *rc, T *rc_src) { auto idx_E_src = imap_src.GetFlatIdx(cr::E); auto idx_F_src = imap_src.GetFlatIdx(cr::F); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); // Get the background geometry auto geom = Geometry::GetCoordinateSystem(rc); @@ -908,7 +905,7 @@ TaskStatus CalculateGeometricSourceImpl(T *rc, T *rc_src) { template TaskStatus CalculateGeometricSource(T *rc, T *rc_src) { - auto *pm = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); StateDescriptor *rad = pm->packages.Get("radiation").get(); auto method = rad->Param("method"); using settings = @@ -929,10 +926,10 @@ template TaskStatus CalculateGeometricSource>(MeshBlockData< template TaskStatus MomentCalculateOpacities(T *rc) { - auto *pmb = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); - StateDescriptor *opac = pmb->packages.Get("opacity").get(); - StateDescriptor *rad = pmb->packages.Get("radiation").get(); + StateDescriptor *opac = pm->packages.Get("opacity").get(); + StateDescriptor *rad = pm->packages.Get("radiation").get(); const bool rad_mocmc_active = (rad->Param("method") == "mocmc"); if (rad_mocmc_active) { @@ -945,14 +942,14 @@ TaskStatus MomentCalculateOpacities(T *rc) { namespace ir = radmoment_internal; namespace c = fluid_cons; namespace p = fluid_prim; - std::vector vars{p::density, p::temperature, p::ye, p::velocity, - ir::kappaJ, ir::kappaH, ir::JBB}; + std::vector vars{p::density::name(), p::temperature, p::ye, p::velocity, + ir::kappaJ, ir::kappaH, ir::JBB}; PackIndexMap imap; auto v = rc->PackVariables(vars, imap); auto pv = imap.GetFlatIdx(p::velocity); - int prho = imap[p::density].first; + int prho = imap[p::density::name()].first; int pT = imap[p::temperature].first; int pYe = imap[p::ye].first; @@ -960,9 +957,9 @@ TaskStatus MomentCalculateOpacities(T *rc) { auto idx_kappaH = imap.GetFlatIdx(ir::kappaH); auto idx_JBB = imap.GetFlatIdx(ir::JBB); - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::entire); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::entire); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::entire); + IndexRange ib = rc->GetBoundsI(IndexDomain::entire); + IndexRange jb = rc->GetBoundsJ(IndexDomain::entire); + IndexRange kb = rc->GetBoundsK(IndexDomain::entire); // Get the device opacity object const auto &opacities = opac->Param("opacities"); diff --git a/src/radiation/moments_source.cpp b/src/radiation/moments_source.cpp index ebce26fc6..b0d2fb1e5 100644 --- a/src/radiation/moments_source.cpp +++ b/src/radiation/moments_source.cpp @@ -204,7 +204,7 @@ template TaskStatus MomentFluidSourceImpl(T *rc, Real dt, bool update_fluid) { PARTHENON_REQUIRE(USE_VALENCIA, "Covariant MHD formulation not supported!"); - auto *pmb = rc->GetParentPointer().get(); + auto *pmb = rc->GetParentPointer(); StateDescriptor *fluid_pkg = pmb->packages.Get("fluid").get(); StateDescriptor *rad = pmb->packages.Get("radiation").get(); StateDescriptor *eos_pkg = pmb->packages.Get("eos").get(); @@ -217,10 +217,11 @@ TaskStatus MomentFluidSourceImpl(T *rc, Real dt, bool update_fluid) { namespace c = fluid_cons; namespace p = fluid_prim; std::vector vars{ - c::density, c::energy, c::momentum, c::ye, cr::E, cr::F, - c::bfield, p::density, p::temperature, p::energy, p::ye, p::velocity, - p::pressure, p::gamma1, p::bfield, pr::J, pr::H, ir::kappaJ, - ir::kappaH, ir::JBB, ir::tilPi}; + c::density, c::energy, c::momentum, c::ye, cr::E, + cr::F, c::bfield, p::density::name(), p::temperature, p::energy, + p::ye, p::velocity, p::pressure, p::gamma1, p::bfield, + pr::J, pr::H, ir::kappaJ, ir::kappaH, ir::JBB, + ir::tilPi}; PackIndexMap imap; auto v = rc->PackVariables(vars, imap); @@ -235,7 +236,7 @@ TaskStatus MomentFluidSourceImpl(T *rc, Real dt, bool update_fluid) { auto idx_tilPi = imap.GetFlatIdx(ir::tilPi, false); auto pv = imap.GetFlatIdx(p::velocity); - int prho = imap[p::density].first; + int prho = imap[p::density::name()].first; int peng = imap[p::energy].first; int pT = imap[p::temperature].first; int pprs = imap[p::pressure].first; @@ -964,7 +965,7 @@ TaskStatus MomentFluidSourceImpl(T *rc, Real dt, bool update_fluid) { } template TaskStatus MomentFluidSource(T *rc, Real dt, bool update_fluid) { - auto *pm = rc->GetParentPointer().get(); + Mesh *pm = rc->GetMeshPointer(); StateDescriptor *rad = pm->packages.Get("radiation").get(); auto method = rad->Param("method"); using settings = diff --git a/src/radiation/monte_carlo.cpp b/src/radiation/monte_carlo.cpp index 4c674e834..07d67b67b 100644 --- a/src/radiation/monte_carlo.cpp +++ b/src/radiation/monte_carlo.cpp @@ -12,6 +12,7 @@ // publicly, and to permit others to do so. #include "geodesics.hpp" +#include "phoebus_utils/grid_utils.hpp" #include "phoebus_utils/reduction.hpp" #include "phoebus_utils/robust.hpp" #include "radiation.hpp" @@ -53,8 +54,8 @@ void ComputeTotalEmissivity(Mesh *pmesh) { namespace p = fluid_prim; PackIndexMap imap; - auto v = rc->PackVariables({p::density, p::temperature, p::ye}, imap); - const int prho = imap[p::density].first; + auto v = rc->PackVariables({p::density::name(), p::temperature, p::ye}, imap); + const int prho = imap[p::density::name()].first; const int ptemp = imap[p::temperature].first; const int pye = imap[p::ye].first; @@ -89,8 +90,7 @@ void SetWeight(Mesh *pmesh) { const auto nusamp = rad->Param>("nusamp"); auto &code_constants = phoebus_pkg->Param("code_constants"); - const Real sim_vol = - pmesh->mesh_size.x1max * pmesh->mesh_size.x2max * pmesh->mesh_size.x3max; + const Real sim_vol = PhoebusUtils::GetRegionVolume(pmesh->mesh_size); const Real h_code = code_constants.h; const Real dNtot = rad->Param("tune_emission") / (std::pow(sim_vol, 1. / 3.) * 1.0); // Note: may need a dt term here? @@ -150,12 +150,12 @@ TaskStatus MonteCarloSourceParticles(MeshBlock *pmb, MeshBlockData *rc, const Real h_code = code_constants.h; const Real mp_code = code_constants.mp; - std::vector vars({p::density, p::temperature, p::ye, p::velocity, + std::vector vars({p::density::name(), p::temperature, p::ye, p::velocity, "dNdlnu_max", "dNdlnu", "dN", "Ns", iv::Gcov, iv::Gye}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); const int pye = imap[p::ye].first; - const int pdens = imap[p::density].first; + const int pdens = imap[p::density::name()].first; const int ptemp = imap[p::temperature].first; const int pvlo = imap[p::velocity].first; const int pvhi = imap[p::velocity].second; @@ -456,10 +456,10 @@ TaskStatus MonteCarloTransport(MeshBlock *pmb, MeshBlockData *rc, const Real mp_code = code_constants.mp; std::vector vars( - {p::density, p::ye, p::velocity, p::temperature, iv::Gcov, iv::Gye}); + {p::density::name(), p::ye, p::velocity, p::temperature, iv::Gcov, iv::Gye}); PackIndexMap imap; auto v = rc->PackVariables(vars, imap); - const int prho = imap[p::density].first; + const int prho = imap[p::density::name()].first; const int iye = imap[p::ye].first; const int ivlo = imap[p::velocity].first; const int ivhi = imap[p::velocity].second; @@ -585,8 +585,7 @@ TaskStatus MonteCarloUpdateTuning(Mesh *pmesh, std::vector *resolution, const auto t_tune_scattering = rad->Param("t_tune_scattering"); const auto dt_tune_scattering = rad->Param("dt_tune_scattering"); const auto num_particles = rad->Param("num_particles"); - const Real sim_vol = - pmesh->mesh_size.x1max * pmesh->mesh_size.x2max * pmesh->mesh_size.x3max; + const Real sim_vol = PhoebusUtils::GetRegionVolume(pmesh->mesh_size); if (tuning == "static") { // Do nothing diff --git a/src/radiation/radiation.cpp b/src/radiation/radiation.cpp index ea7203aa3..77d01de2a 100644 --- a/src/radiation/radiation.cpp +++ b/src/radiation/radiation.cpp @@ -543,7 +543,6 @@ TaskStatus ApplyRadiationFourForce(MeshBlockData *rc, const double dt) { namespace c = fluid_cons; namespace iv = internal_variables; - auto *pmb = rc->GetParentPointer().get(); std::vector vars( {c::density, c::energy, c::momentum, c::ye, iv::Gcov, iv::Gye}); @@ -557,9 +556,9 @@ TaskStatus ApplyRadiationFourForce(MeshBlockData *rc, const double dt) { const int Gcov_lo = imap[iv::Gcov].first; const int Gcov_hi = imap[iv::Gcov].second; const int Gye = imap[iv::Gye].first; - IndexRange ib = pmb->cellbounds.GetBoundsI(IndexDomain::interior); - IndexRange jb = pmb->cellbounds.GetBoundsJ(IndexDomain::interior); - IndexRange kb = pmb->cellbounds.GetBoundsK(IndexDomain::interior); + IndexRange ib = rc->GetBoundsI(IndexDomain::interior); + IndexRange jb = rc->GetBoundsJ(IndexDomain::interior); + IndexRange kb = rc->GetBoundsK(IndexDomain::interior); parthenon::par_for( DEFAULT_LOOP_PATTERN, "ApplyRadiationFourForce", DevExecSpace(), kb.s, kb.e, jb.s, diff --git a/src/tov/tov.cpp b/src/tov/tov.cpp index 0d051a3ba..c9f88b78f 100644 --- a/src/tov/tov.cpp +++ b/src/tov/tov.cpp @@ -93,7 +93,7 @@ std::shared_ptr Initialize(ParameterInput *pin) { return History::ReduceOneVar>(md, fluid_prim::pressure, 0); }; auto ReduceDens = [](MeshData *md) { - return History::ReduceOneVar>(md, fluid_prim::density, 0); + return History::ReduceOneVar>(md, fluid_prim::density::name(), 0); }; parthenon::HstVar_list hst_vars = {}; hst_vars.emplace_back(parthenon::HistoryOutputVar(HstMax, ReducePress, "max pressure"));