Skip to content

Conversation

@Guo-astro
Copy link
Contributor

Summary

This PR adds the main solver class and VTK output for GSPH.

Depends on: #1452 (Physics modules)

Files added

Solver.hpp/cpp:

  • Main GSPH solver orchestrating the simulation
  • Predictor-corrector time integration (leapfrog)
  • Wall boundary condition support (dynamic wall particles)
  • Ghost particle exchange for distributed computing
  • Neighbor search using compressed BVH trees
  • Timestep calculation based on CFL and signal velocity

modules/io/VTKDump.hpp/cpp:

  • VTK Legacy format output for visualization
  • Outputs positions, velocity, density, pressure, internal energy
  • Supports both local and ghost particle output
  • Compatible with ParaView and other VTK viewers

Key features

  • Time integration: Predictor-corrector (leapfrog) scheme
    • Predictor: half-timestep position/velocity update
    • Corrector: full update after force computation
  • Adaptive smoothing length: Density iteration to maintain neighbor count
  • EOS computation: Pressure and sound speed from adiabatic/isothermal EOS
  • Wall boundaries: Dynamic wall particles that continue FCC lattice pattern

CMakeLists.txt updates

  • Added Solver.cpp and VTKDump.cpp to sources

Test plan

  • Builds successfully with all previous PRs
  • Template instantiations compile for all kernel types
  • VTK output can be loaded in ParaView

@gemini-code-assist
Copy link

Summary of Changes

Hello @Guo-astro, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly expands the simulation capabilities by integrating a new Godunov Smoothed Particle Hydrodynamics (GSPH) solver. This solver offers a more advanced approach to fluid dynamics by employing Riemann solvers for inter-particle forces and includes robust features for time integration, boundary handling, and adaptive particle properties. Additionally, it introduces a VTK output module, enhancing the ability to visualize and analyze simulation results.

Highlights

  • GSPH Solver Implementation: Introduces the core GSPH (Godunov Smoothed Particle Hydrodynamics) solver, which orchestrates the simulation using a predictor-corrector time integration scheme (leapfrog). It incorporates wall boundary conditions with dynamic wall particles, ghost particle exchange for distributed computing, and neighbor search using compressed BVH trees.
  • VTK Output for Visualization: Adds a new module for outputting simulation data in VTK Legacy format. This enables visualization of particle positions, velocity, density, pressure, and internal energy, supporting both local and ghost particle output, compatible with tools like ParaView.
  • Advanced Hydrodynamics Features: Implements key features for GSPH, including a predictor-corrector (leapfrog) time integration, adaptive smoothing length via density iteration, and computation of pressure and sound speed using adiabatic or isothermal Equations of State (EOS). It also supports dynamic wall boundaries that maintain an FCC lattice pattern.
  • Riemann Solver Integration: The GSPH method utilizes Riemann solvers at particle interfaces to compute forces, replacing traditional artificial viscosity. The solver configuration allows for different Riemann solver types (Iterative, HLLC) and reconstruction methods (PiecewiseConstant, MUSCL).
  • Build System Updates: The CMakeLists.txt file has been updated to include the new GSPH solver and VTK I/O source files, ensuring they are properly compiled and linked within the project.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This PR introduces a significant new feature: the GSPH solver. The implementation is comprehensive, covering time integration, boundary conditions, neighbor search, and I/O. The code is well-structured into modules for configuration, storage, and computation, which is great for maintainability. The use of modern C++ features like std::variant for configuration is commendable.

My review focuses on a few key areas for improvement:

  • Code Duplication: There are duplicated implementations of the Riemann solvers, which should be consolidated.
  • Hardcoded Values: Some parts of the code have hardcoded values (like dimensionality or magic numbers) that should be generalized or made into named constants.
  • Efficiency: Some operations involving particle data manipulation could be optimized.
  • Clarity: Some parts of the implementation, particularly in the time integration and density calculation, could be clarified to improve readability and maintainability.

Overall, this is a solid contribution. Addressing these points will make the new solver more robust and easier to maintain.

@Guo-astro
Copy link
Contributor Author

Rebased onto main. Previous Gemini comments are outdated - they referred to files from PRs #1450, #1451, #1452 which are now merged into main.

This PR now only contains:

  • Solver.hpp/cpp (main GSPH solver)
  • IterateSmoothingLengthDensity.hpp/cpp (h-iteration module)
  • VTKDump.hpp/cpp (visualization output)
  • CMakeLists.txt update

The rebase also fixed:

  • Replaced solver_config.gamma with solver_config.get_eos_gamma()
  • Removed non-existent GSPHCheckpoint include
  • Stubbed checkpoint methods for future implementation

@Guo-astro Guo-astro force-pushed the gsph-solver-io branch 2 times, most recently from 3506a11 to b2268d4 Compare December 26, 2025 23:21
Copy link
Member

@tdavidcl tdavidcl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi,

I'm fine with most of this PR, there is only a few changes that i would like to address before merging:

  • In the exemples folder most things are scattered accross multiple files. But since there no pure python package for shamrock i prefer having scripts that are standalone for the time being (for example using the sedov.py directly in the script running the sedov test), also then the __init__.py can be removed.
  • The sedov.py script is nice, we already have src/shamphys/include/shamphys/SedovTaylor.hpp that does this but where the time dependance is missing (I'm only using a reference dataset). Could you implement the logic of sedov.py in it ?
  • Since the use of VTK require moving it to shammodels/common this would be nice as a separate PR.

@Guo-astro
Copy link
Contributor Author

Guo-astro commented Dec 27, 2025

@tdavidcl

Changes made:

  • Removed __init__.py files from exemples/common/ directories (standalone scripts preferred)
  • Embedded SedovAnalytical class directly into animate_sedov_csv.py
  • Deleted exemples/common/analytical/ directory with sedov.py
  • Reverted SPH VTKDump.cpp to original (cross-module refactoring moved to separate future PR)
  • Deleted VTKDumpUtils.hpp shared utility header
  • Rewrote GSPH VTKDump.cpp with standalone helper functions in anonymous namespace

@tdavidcl
Copy link
Member

* Reverted SPH `VTKDump.cpp` to original (cross-module refactoring moved to separate future PR)

Oh sorry maybe I wasn't clear. I meant that the PR is fine but that i would like to merge the VTK change first. You can keep this one as is but make a sub-pr for the vtk that i would merge first.

@Guo-astro
Copy link
Contributor Author

Guo-astro commented Dec 27, 2025

@tdavidcl Created the VTK refactoring sub-PR as requested: #1490

Once that is merged, this PR can be rebased on main to use the shared utilities.

tdavidcl added a commit that referenced this pull request Dec 27, 2025
This enables other models (e.g., GSPH) to reuse the same VTK output
code.

## Context

This is a prerequisite PR for #1453 (GSPH solver). The maintainer
requested that the VTK refactoring be merged as a separate PR first.

---------

Co-authored-by: David--Cléris Timothée <timothee.davidcleris@proton.me>
@tdavidcl
Copy link
Member

i merged #1490

@Guo-astro
Copy link
Contributor Author

Rebased onto main after PR #1490 was merged.

The branch now builds on top of the shared VTK utilities from #1490.

@Guo-astro Guo-astro requested a review from tdavidcl December 27, 2025 21:57
Adds main solver class and VTK output for GSPH:

Solver.hpp/cpp:
- Main GSPH solver orchestrating the simulation
- Predictor-corrector time integration (leapfrog)
- Ghost particle exchange via SPH's BasicSPHGhostHandler
- Neighbor search using compressed BVH trees
- Timestep calculation based on CFL and signal velocity

modules/io/VTKDump.hpp/cpp:
- VTK Legacy format output for visualization
- Outputs positions, velocity, density, pressure, internal energy
- Compatible with ParaView

SPH code reuse (no duplication):
- IterateSmoothingLengthDensity: uses SPH's module for h-iteration
- LoopSmoothingLengthIter: uses SPH's outer loop
- Ghost handling: BasicSPHGhostHandler for all BC types
- Forces: sph_pressure_symetric() with Riemann solver pressure
- Density utilities: rho_h(), h_rho(), newtown_iterate_new_h()
- Safe division: inv_sat_zero() for numerical stability

Performance improvement:
- Density/omega computed ONCE after h converges (not on every iteration)
- Previous approach recomputed density/omega 10+ times wastefully

Fixes compatibility with main:
- Use get_eos_gamma() instead of gamma member variable
- Stub checkpoint methods (GSPHCheckpoint to be added separately)
- Add Model.hpp/cpp with high-level GSPH interface
- Add pyGSPHModel.cpp with pybind11 bindings for Python
- Use shared ShamrockDump mechanism for checkpoints (same as SPH)
- Remove duplicate checkpoint methods from Solver (reuse SPH pattern)
- Add example scripts for Sod shock tube and Sedov blast
- Add analytical Riemann solver utilities for validation
Python scripts:
- Delete duplicate run_gsph_sod_tube.py (same as gsph_sod_shock_tube.py)
- Update animate_sod_tube.py to use shamrock.phys.SodTube instead of custom riemann.py
- Replace riemann.py with sedov.py (keep only SedovAnalytical, use shamphys.SodTube for Sod)

C++ VTK dump utilities:
- Create shared VTKDumpUtils.hpp in shammodels/common/io/
- Refactor both SPH and GSPH VTKDump.cpp to use shared utilities
- Eliminates 5 duplicated helper functions (start_dump, vtk_dump_add_patch_id, etc.)

Net reduction: ~528 lines of duplicate code removed
- Move animation scripts from gsph/scripts/ to common/visualization/
- Make scripts generic for both SPH and GSPH solvers
- Fix broken import in gen_gsph_gif.py (now animate_sod_vtk.py)
- Use shamrock.phys.SodTube instead of deleted riemann.py

New structure:
  common/visualization/
    animate_sod_vtk.py   - VTK-based Sod tube animation
    animate_sod_csv.py   - CSV-based Sod tube animation
    animate_sedov_csv.py - CSV-based Sedov blast animation

All scripts now accept --solver SPH|GSPH argument for generic use.
Renamed functions to use intent-based naming:
- set_value_in_a_box -> set_field_in_box
- set_value_in_sphere -> set_field_in_sphere
- set_field_value_lambda -> apply_field_from_position

Added comprehensive docstrings with usage examples.
Updated Python bindings and example script.
- Remove __init__.py files from exemples/common/ (standalone scripts preferred)
- Embed SedovAnalytical class directly in animate_sedov_csv.py
- Delete exemples/common/analytical/ directory with sedov.py module
- Revert SPH VTKDump.cpp to original implementation (move refactoring to separate PR)
- Remove VTKDumpUtils.hpp shared utility header (move refactoring to separate PR)
- Rewrite GSPH VTKDump.cpp with standalone helper functions in anonymous namespace
Add SedovTaylorAnalytical class with:
- Configurable parameters: gamma, E_blast, rho_0, ndim
- shock_radius(t): compute shock radius at time t
- shock_velocity(t): compute shock velocity at time t
- post_shock_density(): compute post-shock density
- get_value(r, t): compute density, velocity, pressure at (r, t)
- solution_at_time(): compute full radial profile at time t

Uses tabulated Sedov constants (xi_0) for common gamma/dimension
combinations and self-similar profile approximations.

References:
- Sedov (1959) "Similarity and Dimensional Methods in Mechanics"
- Taylor (1950) "The Formation of a Blast Wave"
- Fix missing include: shamalgs/memory/memory.hpp -> shamalgs/memory.hpp
- Add xyzh_ghost_layout to SolverStorage for BasicSPHGhostHandler
- Update GhostHandle constructor calls with 4th argument
- Rename set_reconstruct_first_order -> set_reconstruct_piecewise_constant
- Update Python bindings to match SolverConfig API
@Guo-astro
Copy link
Contributor Author

Fixed the check error

@github-actions
Copy link

Workflow report

workflow report corresponding to commit 4c0116d
Commiter email is timothee.davidcleris@proton.me
GitHub page artifact URL GitHub page artifact link (can expire)

Pre-commit check report

Pre-commit check: ✅

trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
check for merge conflicts................................................Passed
check that executables have shebangs.....................................Passed
check that scripts with shebangs are executable..........................Passed
check for added large files..............................................Passed
check for case conflicts.................................................Passed
check for broken symlinks................................................Passed
check yaml...............................................................Passed
detect private key.......................................................Passed
No-tabs checker..........................................................Passed
Tabs remover.............................................................Passed
Validate GitHub Workflows................................................Passed
clang-format.............................................................Passed
black....................................................................Passed
ruff check...............................................................Passed
Check doxygen headers....................................................Passed
Check license headers....................................................Passed
Check #pragma once.......................................................Passed
Check SYCL #include......................................................Passed
No ssh in git submodules remote..........................................Passed

Test pipeline can run.

Clang-tidy diff report


/__w/Shamrock/Shamrock/src/shamrock/include/shamrock/io/LegacyVtkWritter.hpp:458:9: warning: 3 uninitialized fields at the end of the constructor call [clang-analyzer-optin.cplusplus.UninitializedObject]
  458 |         LegacyVtkWritter(LegacyVtkWritter &&other)
      |         ^
/__w/Shamrock/Shamrock/src/shambase/include/shambase/time.hpp:100:13: note: uninitialized field 'this->timer.nanosec'
  100 |         f64 nanosec; ///< Time in nanosecond
      |             ^~~~~~~
/__w/Shamrock/Shamrock/src/shamrock/include/shamrock/io/LegacyVtkWritter.hpp:169:13: note: uninitialized field 'this->points_count'
  169 |         u64 points_count;
      |             ^~~~~~~~~~~~
/__w/Shamrock/Shamrock/src/shamrock/include/shamrock/io/LegacyVtkWritter.hpp:172:13: note: uninitialized field 'this->cells_count'
  172 |         u64 cells_count;
      |             ^~~~~~~~~~~
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:168:31: note: 'has_uint' is false
  168 |         const u32 iuint     = has_uint ? pdl.get_field_idx<Tscal>("uint") : 0;
      |                               ^~~~~~~~
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:168:31: note: '?' condition is false
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:245:46: note: Calling 'start_dump<hipsycl::sycl::vec<double, 3>>'
  245 |         shamrock::LegacyVtkWritter writter = start_dump<Tvec>(scheduler(), filename);
      |                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:37:9: note: Assuming 'loglevel' is < 'logval'
   37 |         shamlog_debug_mpi_ln("gsph::vtk", "rank count =", num_obj);
      |         ^
/__w/Shamrock/Shamrock/src/shambase/include/shambase/logs/loglevels.hpp:89:9: note: expanded from macro 'shamlog_debug_mpi_ln'
   89 |     if (shambase::logs::details::loglevel >= LogLevel_DebugMPI::logval) {                          \
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:37:9: note: Taking false branch
   37 |         shamlog_debug_mpi_ln("gsph::vtk", "rank count =", num_obj);
      |         ^
/__w/Shamrock/Shamrock/src/shambase/include/shambase/logs/loglevels.hpp:89:5: note: expanded from macro 'shamlog_debug_mpi_ln'
   89 |     if (shambase::logs::details::loglevel >= LogLevel_DebugMPI::logval) {                          \
      |     ^
/__w/Shamrock/Shamrock/src/shammodels/gsph/src/modules/io/VTKDump.cpp:43:16: note: Calling move constructor for 'LegacyVtkWritter'
   43 |         return writer;
      |                ^~~~~~
/__w/Shamrock/Shamrock/src/shamrock/include/shamrock/io/LegacyVtkWritter.hpp:458:9: note: 3 uninitialized fields at the end of the constructor call
  458 |         LegacyVtkWritter(LegacyVtkWritter &&other)
      |         ^~~~~~~~~~~~~~~~

4 warnings generated.
Suppressed 3 warnings (3 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.

Doxygen diff with main

Removed warnings : 10
New warnings : 111
Warnings count : 7494 → 7595 (1.3%)

Detailed changes :
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:101: warning: Member resize_simulation_box(std::pair< Tvec, Tvec > box) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:105: warning: Member do_vtk_dump(std::string filename, bool add_patch_world_id) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:109: warning: Member get_total_part_count() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:111: warning: Member total_mass_to_part_mass(f64 totmass) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:113: warning: Member get_ideal_fcc_box(Tscal dr, std::pair< Tvec, Tvec > box) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:114: warning: Member get_ideal_hcp_box(Tscal dr, std::pair< Tvec, Tvec > box) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:116: warning: Member get_hfact() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:118: warning: Member rho_h(Tscal h) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:122: warning: Member add_cube_fcc_3d(Tscal dr, std::pair< Tvec, Tvec > _box) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:123: warning: Member add_cube_hcp_3d(Tscal dr, std::pair< Tvec, Tvec > _box) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:296: warning: Member get_sum(std::string name) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:316: warning: Member gen_default_config() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:325: warning: Member set_solver_config(SolverConfig cfg) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:334: warning: Member solver_logs_last_rate() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:335: warning: Member solver_logs_last_obj_count() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:341: warning: Member load_from_dump(std::string fname) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:364: warning: Member dump(std::string fname) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:382: warning: Member timestep() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:384: warning: Member evolve_once() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:389: warning: Member evolve_until(Tscal target_time, i32 niter_max=-1) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:64: warning: Member Tscal (typedef) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:65: warning: Member dim (variable) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:66: warning: Member Kernel (typedef) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:68: warning: Member Solver (typedef) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:69: warning: Member SolverConfig (typedef) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:71: warning: Member ctx (variable) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:72: warning: Member solver (variable) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:74: warning: Member Model(ShamrockCtx &ctx) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:80: warning: Member init_scheduler(u32 crit_split, u32 crit_merge) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:83: warning: Member get_box_dim_fcc_3d(Tscal dr, u32 xcnt, u32 ycnt, u32 zcnt) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:87: warning: Member set_cfl_cour(Tscal cfl_cour) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:91: warning: Member set_cfl_force(Tscal cfl_force) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:95: warning: Member set_particle_mass(Tscal gpart_mass) (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Model.hpp:99: warning: Member get_particle_mass() (function) of class shammodels::gsph::Model is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:101: warning: Member build_ghost_cache() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:102: warning: Member clear_ghost_cache() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:104: warning: Member merge_position_ghost() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:107: warning: Member RTree (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:108: warning: Member build_merged_pos_trees() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:109: warning: Member clear_merged_pos_trees() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:111: warning: Member compute_presteps_rint() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:112: warning: Member reset_presteps_rint() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:114: warning: Member start_neighbors_cache() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:115: warning: Member reset_neighbors_cache() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:117: warning: Member gsph_prestep(Tscal time_val, Tscal dt) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:119: warning: Member apply_position_boundary(Tscal time_val) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:121: warning: Member do_predictor_leapfrog(Tscal dt) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:123: warning: Member init_ghost_layout() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:125: warning: Member communicate_merge_ghosts_fields() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:126: warning: Member reset_merge_ghosts_fields() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:128: warning: Member compute_omega() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:129: warning: Member compute_eos_fields() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:130: warning: Member reset_eos_fields() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:132: warning: Member prepare_corrector() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:154: warning: Member apply_corrector(Tscal dt, u64 Npart_all) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:156: warning: Member update_sync_load_values() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:158: warning: Member Solver(ShamrockCtx &context) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:160: warning: Member init_solver_graph() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:162: warning: Member vtk_do_dump(std::string filename, bool add_patch_world_id) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:164: warning: Member print_timestep_logs() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:173: warning: Member evolve_once() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:175: warning: Member evolve_once_time_expl(Tscal t_current, Tscal dt_input) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:182: warning: Member evolve_until(Tscal target_time, i32 niter_max=-1) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:47: warning: Compound shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:48: warning: Member rank (variable) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:49: warning: Member rate (variable) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:50: warning: Member npart (variable) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:51: warning: Member tcompute (variable) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:53: warning: Member rate_sum() (function) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:54: warning: Member npart_sum() (function) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:55: warning: Member tcompute_max() (function) of struct shammodels::gsph::TimestepLog is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:70: warning: Member Tscal (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:71: warning: Member dim (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:72: warning: Member Kernel (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:74: warning: Member Config (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:76: warning: Member u_morton (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:78: warning: Member Rkern (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:80: warning: Member context (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:81: warning: Member scheduler() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:83: warning: Member storage (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:85: warning: Member solver_config (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:86: warning: Member solve_logs (variable) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:88: warning: Member init_required_fields() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:91: warning: Member gen_serial_patch_tree() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:92: warning: Member reset_serial_patch_tree() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:95: warning: Member GhostHandle (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:96: warning: Member GhostHandleCache (typedef) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:98: warning: Member gen_ghost_handler(Tscal time_val) (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/Solver.hpp:99: warning: Member reset_ghost_handler() (function) of class shammodels::gsph::Solver is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:107: warning: Member ghost_layout (variable) of struct shammodels::gsph::SolverStorage is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:108: warning: Member merged_patchdata_ghost (variable) of struct shammodels::gsph::SolverStorage is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:109: warning: Member merged_patchdata_ghost (variable) of struct shammodels::gsph::SolverStorage is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:115: warning: Member soundspeed (variable) of struct shammodels::gsph::SolverStorage is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:116: warning: Member soundspeed (variable) of struct shammodels::gsph::SolverStorage is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:124: warning: Member old_duint (variable) of struct shammodels::gsph::SolverStorage is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:125: warning: Member old_duint (variable) of struct shammodels::gsph::SolverStorage is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:128: warning: Member interface (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:129: warning: Member interface (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:129: warning: Member neighbors (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:130: warning: Member io (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:130: warning: Member neighbors (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:131: warning: Member io (variable) of struct shammodels::gsph::SolverStorage::Timings is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:133: warning: Member reset() (function) of struct shammodels::gsph::SolverStorage::Timings is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:134: warning: Member reset() (function) of struct shammodels::gsph::SolverStorage::Timings is not documented.
- src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:134: warning: Member timings_details (variable) of struct shammodels::gsph::SolverStorage is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/SolverStorage.hpp:135: warning: Member timings_details (variable) of struct shammodels::gsph::SolverStorage is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:27: warning: Compound shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:29: warning: Member Tscal (typedef) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:30: warning: Member dim (variable) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:31: warning: Member Kernel (typedef) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:33: warning: Member Config (typedef) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:35: warning: Member context (variable) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:36: warning: Member solver_config (variable) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:38: warning: Member VTKDump(ShamrockCtx &context, Config &solver_config) (function) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/include/shammodels/gsph/modules/io/VTKDump.hpp:41: warning: Member do_dump(std::string filename, bool add_patch_world_id) (function) of class shammodels::gsph::modules::VTKDump is not documented.
+ src/shammodels/gsph/src/pyGSPHModel.cpp:302: warning: Member Register_pymod(pygsphmodel) (function) of file pyGSPHModel.cpp is not documented.
+ src/shammodels/gsph/src/pyGSPHModel.cpp:38: warning: Member add_gsph_instance(py::module &m, std::string name_config, std::string name_model) (function) of file pyGSPHModel.cpp is not documented.

Copy link
Member

@tdavidcl tdavidcl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Also the exemples folder will be removed in the future in favor of a symlink to doc/sphinx/examples, so it would be nice if the one you are adding ends up there in the future. It will allow their systematic testing and they will appear in the doc https://shamrock-code.github.io/Shamrock/sphinx/_as_gen/index.html

@tdavidcl tdavidcl merged commit 02b5199 into Shamrock-code:main Dec 28, 2025
61 checks passed
Guo-astro added a commit to Guo-astro/shamrock that referenced this pull request Dec 29, 2025
Add pyGSPHModel.cpp to CMakeLists.txt Sources list. The file was
added in PR Shamrock-code#1453 but was missing from the build configuration,
causing shamrock.get_Model_GSPH() to not be available at runtime.
DavidFang03 pushed a commit to DavidFang03/Shamrock that referenced this pull request Jan 6, 2026
This enables other models (e.g., GSPH) to reuse the same VTK output
code.

## Context

This is a prerequisite PR for Shamrock-code#1453 (GSPH solver). The maintainer
requested that the VTK refactoring be merged as a separate PR first.

---------

Co-authored-by: David--Cléris Timothée <timothee.davidcleris@proton.me>
DavidFang03 pushed a commit to DavidFang03/Shamrock that referenced this pull request Jan 6, 2026
Co-authored-by: David--Cléris Timothée <timothee.davidcleris@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants