[SPH] Fix ComputeLuminosity bug - #2340
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe luminosity computation now uses ghost-merged omega values and ghost-particle counts. The node exposes the new count edge, validates omega sizes against ghost counts, and updates the solver wiring. ChangesLuminosity ghost-data flow
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix · Severity of issue fixed: Medium Suggested reviewers: Merge Risk: ⚪ Minimal · up to The ghost-particle luminosity wiring is consistent across the node, solver, and validation layers, with no actionable merge-blocking issue identified. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Thanks @y-lapeyre for opening this PR! You can do multiple things directly here: Once the workflow completes a message will appear displaying informations related to the run. Also the PR gets automatically reviewed by gemini, you can: |
|
I'm switching your node to the EXPAND_NODE_EDGES macro while i'm at it |
Workflow reportworkflow report corresponding to commit ad0a9c4 Light CI is enabled (the default for pull requests). This will only run the basic tests and not the full tests. Pre-commit check reportPre-commit check: ✅ Test pipeline can run. Clang-tidy diff reportSuggested changesDetailed changes :diff --git a/src/shammodels/ramses/src/modules/EulerTimeDerivativeGas.cpp b/src/shammodels/ramses/src/modules/EulerTimeDerivativeGas.cpp
index 6b95ea29..81895f0a 100644
--- a/src/shammodels/ramses/src/modules/EulerTimeDerivativeGas.cpp
+++ b/src/shammodels/ramses/src/modules/EulerTimeDerivativeGas.cpp
@@ -38,7 +38,7 @@ namespace {
const shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>> &spans_dy_v,
const shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>> &spans_dz_v,
const shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>>
- &spans_grad_P,
+ &spans_grad_p,
shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tscal>> &spans_dt_rho,
shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>> &spans_dt_vel,
@@ -63,7 +63,7 @@ namespace {
spans_dx_v,
spans_dy_v,
spans_dz_v,
- spans_grad_P},
+ spans_grad_p},
sham::DDMultiRef{spans_dt_rho, spans_dt_vel, spans_dt_press},
cell_counts,
[gamma](
@@ -75,28 +75,28 @@ namespace {
const Tvec *__restrict dx_v,
const Tvec *__restrict dy_v,
const Tvec *__restrict dz_v,
- const Tvec *__restrict grad_P,
+ const Tvec *__restrict grad_p,
Tscal *__restrict dt_rho,
Tvec *__restrict dt_vel,
Tscal *__restrict dt_press) {
Tscal rho_i = rho[i];
Tvec v_i = vel[i];
- Tscal P_i = press[i];
+ Tscal p_i = press[i];
Tvec grad_rho_i = grad_rho[i];
Tvec dx_v_i = dx_v[i];
Tvec dy_v_i = dy_v[i];
Tvec dz_v_i = dz_v[i];
- Tvec grad_P_i = grad_P[i];
+ Tvec grad_p_i = grad_p[i];
dt_rho[i] = -(
sham::dot(v_i, grad_rho_i) + rho_i * (dx_v_i[0] + dy_v_i[1] + dz_v_i[2]));
dt_vel[i]
- = -(v_i[0] * dx_v_i + v_i[1] * dy_v_i + v_i[2] * dz_v_i + grad_P_i / rho_i);
+ = -(v_i[0] * dx_v_i + v_i[1] * dy_v_i + v_i[2] * dz_v_i + grad_p_i / rho_i);
dt_press[i]
- = -(gamma * P_i * (dx_v_i[0] + dy_v_i[1] + dz_v_i[2])
- + sham::dot(v_i, grad_P_i));
+ = -(gamma * p_i * (dx_v_i[0] + dy_v_i[1] + dz_v_i[2])
+ + sham::dot(v_i, grad_p_i));
});
}
};
@@ -150,7 +150,7 @@ namespace shammodels::basegodunov::modules {
auto dx_v = get_ro_edge_base(5).get_tex_symbol();
auto dy_v = get_ro_edge_base(6).get_tex_symbol();
auto dz_v = get_ro_edge_base(7).get_tex_symbol();
- auto grad_P = get_ro_edge_base(8).get_tex_symbol();
+ auto grad_p = get_ro_edge_base(8).get_tex_symbol();
auto dt_rho = get_rw_edge_base(0).get_tex_symbol();
auto dt_vel = get_rw_edge_base(1).get_tex_symbol();
auto dt_press = get_rw_edge_base(2).get_tex_symbol();
@@ -182,7 +182,7 @@ namespace shammodels::basegodunov::modules {
shambase::replace_all(tex, "{dx_v}", dx_v);
shambase::replace_all(tex, "{dy_v}", dy_v);
shambase::replace_all(tex, "{dz_v}", dz_v);
- shambase::replace_all(tex, "{grad_P}", grad_P);
+ shambase::replace_all(tex, "{grad_P}", grad_p);
shambase::replace_all(tex, "{block_count}", block_count);
shambase::replace_all(tex, "{gamma}", sham::format("{}", gamma));
shambase::replace_all(tex, "{block_size}", sham::format("{}", block_size));
diff --git a/src/shammodels/ramses/src/modules/InterpolateToFace.cpp b/src/shammodels/ramses/src/modules/InterpolateToFace.cpp
index 710b5156..35ecb5f8 100644
--- a/src/shammodels/ramses/src/modules/InterpolateToFace.cpp
+++ b/src/shammodels/ramses/src/modules/InterpolateToFace.cpp
@@ -84,7 +84,7 @@ namespace {
Tscal dt_interp;
shamrock::PatchDataFieldSpanPointer<Tscal> dt_rho_cell;
- class acc {
+ class Acc {
public:
GetShift<Tvec, TgridVec, AMRBlock> shift_get;
@@ -96,7 +96,7 @@ namespace {
Tscal dt_interp;
- acc(const Tvec *aabb_block_lower,
+ Acc(const Tvec *aabb_block_lower,
const Tscal *aabb_cell_size,
const Tscal *rho_cell,
const Tvec *grad_rho_cell,
@@ -128,8 +128,8 @@ namespace {
}
};
- inline acc get_read_access(sham::EventList &deps) {
- return acc(
+ inline Acc get_read_access(sham::EventList &deps) {
+ return Acc(
aabb_block_lower.get_read_access(deps),
aabb_cell_size.get_read_access(deps),
rho_cell.get_read_access(deps),
@@ -139,7 +139,7 @@ namespace {
dt_rho_cell.get_read_access(deps));
}
- inline void complete_event_state(sycl::event e) {
+ inline void complete_event_state(const sycl::event& e) {
aabb_block_lower.complete_event_state(e);
aabb_cell_size.complete_event_state(e);
rho_cell.complete_event_state(e);
@@ -164,7 +164,7 @@ namespace {
Tscal dt_interp;
shamrock::PatchDataFieldSpanPointer<Tvec> dt_vel_cell;
- class acc {
+ class Acc {
public:
GetShift<Tvec, TgridVec, AMRBlock> shift_get;
@@ -178,7 +178,7 @@ namespace {
Tscal dt_interp;
- acc(const Tvec *aabb_block_lower,
+ Acc(const Tvec *aabb_block_lower,
const Tscal *aabb_cell_size,
const Tvec *vel_cell,
const Tvec *dx_v_cell,
@@ -220,8 +220,8 @@ namespace {
}
};
- inline acc get_read_access(sham::EventList &deps) {
- return acc(
+ inline Acc get_read_access(sham::EventList &deps) {
+ return Acc(
aabb_block_lower.get_read_access(deps),
aabb_cell_size.get_read_access(deps),
vel_cell.get_read_access(deps),
@@ -233,7 +233,7 @@ namespace {
dt_vel_cell.get_read_access(deps));
}
- inline void complete_event_state(sycl::event e) {
+ inline void complete_event_state(const sycl::event& e) {
aabb_block_lower.complete_event_state(e);
aabb_cell_size.complete_event_state(e);
vel_cell.complete_event_state(e);
@@ -252,71 +252,71 @@ namespace {
shamrock::PatchDataFieldSpanPointer<Tvec> aabb_block_lower;
shamrock::PatchDataFieldSpanPointer<Tscal> aabb_cell_size;
shamrock::PatchDataFieldSpanPointer<Tscal> P_cell;
- shamrock::PatchDataFieldSpanPointer<Tvec> grad_P_cell;
+ shamrock::PatchDataFieldSpanPointer<Tvec> grad_p_cell;
// For time interpolation
Tscal dt_interp;
- shamrock::PatchDataFieldSpanPointer<Tscal> dt_P_cell;
+ shamrock::PatchDataFieldSpanPointer<Tscal> dt_p_cell;
- class acc {
+ class Acc {
public:
GetShift<Tvec, TgridVec, AMRBlock> shift_get;
const Tscal *acc_P_cell;
- const Tvec *acc_grad_P_cell;
+ const Tvec *acc_grad_p_cell;
// For time interpolation
- const Tscal *acc_dt_P_cell;
+ const Tscal *acc_dt_p_cell;
Tscal dt_interp;
- acc(const Tvec *aabb_block_lower,
+ Acc(const Tvec *aabb_block_lower,
const Tscal *aabb_cell_size,
const Tscal *P_cell,
- const Tvec *grad_P_cell,
+ const Tvec *grad_p_cell,
// For time interpolation
Tscal dt_interp,
- const Tscal *dt_P_cell)
+ const Tscal *dt_p_cell)
: shift_get(aabb_block_lower, aabb_cell_size), acc_P_cell{P_cell},
- acc_grad_P_cell{grad_P_cell}, acc_dt_P_cell{dt_P_cell}, dt_interp(dt_interp) {}
+ acc_grad_p_cell{grad_p_cell}, acc_dt_p_cell{dt_p_cell}, dt_interp(dt_interp) {}
std::array<Tscal, 2> get_link_field_val(u32 id_a, u32 id_b) const {
auto [shift_a, shift_b] = shift_get.get_shifts(id_a, id_b);
Tscal P_a = acc_P_cell[id_a];
- Tvec grad_P_a = acc_grad_P_cell[id_a];
- Tscal P_b = acc_P_cell[id_b];
- Tvec grad_P_b = acc_grad_P_cell[id_b];
+ Tvec grad_P_a = acc_grad_p_cell[id_a];
+ Tscal p_b = acc_P_cell[id_b];
+ Tvec grad_p_b = acc_grad_p_cell[id_b];
- Tscal dtP_cell_a = acc_dt_P_cell[id_a];
- Tscal dtP_cell_b = acc_dt_P_cell[id_b];
+ Tscal dt_p_cell_a = acc_dt_p_cell[id_a];
+ Tscal dt_p_cell_b = acc_dt_p_cell[id_b];
- Tscal P_face_a = P_a + sycl::dot(grad_P_a, shift_a) + dtP_cell_a * dt_interp;
- Tscal P_face_b = P_b + sycl::dot(grad_P_b, shift_b) + dtP_cell_b * dt_interp;
+ Tscal p_face_a = P_a + sycl::dot(grad_P_a, shift_a) + dt_p_cell_a * dt_interp;
+ Tscal p_face_b = p_b + sycl::dot(grad_p_b, shift_b) + dt_p_cell_b * dt_interp;
SHAM_ASSERT(P_face_a >= 0.0);
SHAM_ASSERT(P_face_b >= 0.0);
- return {P_face_a, P_face_b};
+ return {p_face_a, p_face_b};
}
};
- inline acc get_read_access(sham::EventList &deps) {
- return acc(
+ inline Acc get_read_access(sham::EventList &deps) {
+ return Acc(
aabb_block_lower.get_read_access(deps),
aabb_cell_size.get_read_access(deps),
P_cell.get_read_access(deps),
- grad_P_cell.get_read_access(deps),
+ grad_p_cell.get_read_access(deps),
dt_interp,
- dt_P_cell.get_read_access(deps));
+ dt_p_cell.get_read_access(deps));
}
- inline void complete_event_state(sycl::event e) {
+ inline void complete_event_state(const sycl::event& e) {
aabb_block_lower.complete_event_state(e);
aabb_cell_size.complete_event_state(e);
P_cell.complete_event_state(e);
- grad_P_cell.complete_event_state(e);
- dt_P_cell.complete_event_state(e);
+ grad_p_cell.complete_event_state(e);
+ dt_p_cell.complete_event_state(e);
}
};
@@ -334,7 +334,7 @@ namespace {
Tscal dt_interp;
shamrock::PatchDataFieldSpanPointer<Tscal> dt_rho_dust_cell;
- class acc {
+ class Acc {
public:
GetShift<Tvec, TgridVec, AMRBlock> shift_get;
u32 nvar;
@@ -347,7 +347,7 @@ namespace {
Tscal dt_interp;
- acc(u32 nvar,
+ Acc(u32 nvar,
const Tvec *aabb_block_lower,
const Tscal *aabb_cell_size,
const Tscal *rho_dust_cell,
@@ -380,8 +380,8 @@ namespace {
}
};
- inline acc get_read_access(sham::EventList &deps) {
- return acc(
+ inline Acc get_read_access(sham::EventList &deps) {
+ return Acc(
nvar,
aabb_block_lower.get_read_access(deps),
aabb_cell_size.get_read_access(deps),
@@ -392,7 +392,7 @@ namespace {
dt_rho_dust_cell.get_read_access(deps));
}
- inline void complete_event_state(sycl::event e) {
+ inline void complete_event_state(const sycl::event& e) {
aabb_block_lower.complete_event_state(e);
aabb_cell_size.complete_event_state(e);
rho_dust_cell.complete_event_state(e);
@@ -417,7 +417,7 @@ namespace {
Tscal dt_interp;
shamrock::PatchDataFieldSpanPointer<Tvec> dt_vel_dust_cell;
- class acc {
+ class Acc {
public:
GetShift<Tvec, TgridVec, AMRBlock> shift_get;
u32 nvar;
@@ -432,7 +432,7 @@ namespace {
Tscal dt_interp;
- acc(u32 nvar,
+ Acc(u32 nvar,
const Tvec *aabb_block_lower,
const Tscal *aabb_cell_size,
const Tvec *vel_dust_cell,
@@ -480,8 +480,8 @@ namespace {
}
};
- inline acc get_read_access(sham::EventList &deps) {
- return acc(
+ inline Acc get_read_access(sham::EventList &deps) {
+ return Acc(
nvar,
aabb_block_lower.get_read_access(deps),
aabb_cell_size.get_read_access(deps),
@@ -494,7 +494,7 @@ namespace {
dt_vel_dust_cell.get_read_access(deps));
}
- inline void complete_event_state(sycl::event e) {
+ inline void complete_event_state(const sycl::event& e) {
aabb_block_lower.complete_event_state(e);
aabb_cell_size.complete_event_state(e);
vel_dust_cell.complete_event_state(e);
@@ -844,7 +844,7 @@ void shammodels::basegodunov::modules::InterpolateToFacePress<Tvec, TgridVec>::
auto spans_block_cell_sizes = edges.spans_block_cell_sizes.get_spans();
auto spans_cell0block_aabb_lower = edges.spans_cell0block_aabb_lower.get_spans();
auto spans_press = edges.spans_press.get_spans();
- auto spans_grad_P = edges.spans_grad_P.get_spans();
+ auto spans_grad_p = edges.spans_grad_P.get_spans();
auto spans_dt_press = edges.spans_dt_press.get_spans();
using Interp = PressInterpolate<Tvec, TgridVec, AMRBlock>;
@@ -854,7 +854,7 @@ void shammodels::basegodunov::modules::InterpolateToFacePress<Tvec, TgridVec>::
spans_cell0block_aabb_lower.get(id),
spans_block_cell_sizes.get(id),
spans_press.get(id),
- spans_grad_P.get(id),
+ spans_grad_p.get(id),
dt_interp,
spans_dt_press.get(id)};
});Detailed changes :+ src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:26: warning: Member NODE_EDGES(X_RO, X_RW) (macro definition) of file ComputeLuminosity.hpp is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:29: warning: Compound shammodels::sph::modules::NodeComputeLuminosity is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:37: warning: Member NodeComputeLuminosity(Tscal part_mass, Tscal alpha_u) (function) of class shammodels::sph::modules::NodeComputeLuminosity is not documented.
+ src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:40: warning: Compound shammodels::sph::modules::NodeComputeLuminosity is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:40: warning: Compound shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:41: warning: Member part_counts (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:42: warning: Member neigh_cache (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:43: warning: Member xyz (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:44: warning: Member hpart (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:45: warning: Member omega (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:46: warning: Member u (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:47: warning: Member pressure (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
+ src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:48: warning: Member NodeComputeLuminosity(Tscal part_mass, Tscal alpha_u) (function) of class shammodels::sph::modules::NodeComputeLuminosity is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:48: warning: Member luminosity (variable) of struct shammodels::sph::modules::NodeComputeLuminosity::Edges is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:51: warning: Member set_edges(std::shared_ptr< shamrock::solvergraph::Indexes< u32 > > part_counts, std::shared_ptr< shammodels::sph::solvergraph::NeighCache > neigh_cache, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tvec > > xyz, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tscal > > hpart, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tscal > > omega, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tscal > > u, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tscal > > pressure, std::shared_ptr< shamrock::solvergraph::IFieldSpan< Tscal > > luminosity) (function) of class shammodels::sph::modules::NodeComputeLuminosity is not documented.
- src/shammodels/sph/include/shammodels/sph/modules/ComputeLuminosity.hpp:64: warning: Member get_edges() (function) of class shammodels::sph::modules::NodeComputeLuminosity is not documented. |
|
Queued — the merge queue status continues in this comment ↓. |
Merge Queue Status
This pull request spent 2 hours 14 minutes 43 seconds in the queue, including 2 hours 3 minutes 59 seconds running CI. Required conditions to merge
|
Fixes #2339.
The omega edge plugged into the node was the patch-local one instead of the one including ghosts.