Skip to content

Align intent() statements in all modules#804

Merged
danieljprice merged 16 commits into
masterfrom
format-bot
Mar 5, 2026
Merged

Align intent() statements in all modules#804
danieljprice merged 16 commits into
masterfrom
format-bot

Conversation

@danieljprice

@danieljprice danieljprice commented Mar 5, 2026

Copy link
Copy Markdown
Owner

Description:
Implemented alignment bot to nicely format and align intent() declarations in all modules in a consistent manner

Components modified:

  • Setup (src/setup)
  • Main code (src/main)
  • Moddump utilities (src/utils/moddump)
  • Analysis utilities (src/utils/analysis)
  • Test suite (src/tests)
  • Documentation (docs/)
  • Build/CI (build/ or github actions)

Type of change:

  • Bug fix
  • Physics improvements
  • Better initial conditions
  • Performance improvements
  • Documentation update
  • Better testing
  • Code cleanup / refactor
  • Other (please describe)

Testing:
./bots.sh --only align --amend

Did you run the bots? yes, including the new align-bot

Did you update relevant documentation in the docs directory? no

Did you add comments such that the purpose of the code is understandable? yes

Is there a unit test that could be added for this feature/bug? no

If so, please describe what a unit test might check:
should not break the build

Related issues: #

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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 enhances code readability and maintainability by enforcing a consistent formatting standard for intent() declarations in Fortran modules. An automated bot was used to apply these changes, ensuring uniform alignment and improving the overall aesthetic and structural integrity of the codebase.

Highlights

  • Automated Code Formatting: Implemented an alignment bot to automatically format and align intent() declarations within Fortran modules, ensuring consistent code style.
  • Enhanced Alignment Logic: The underlying Perl script (scripts/no-dims.pl) was updated to improve its parsing and alignment capabilities, particularly for handling optional attributes and dimension statements in Fortran declarations.
  • Codebase-Wide Consistency: Applied the new alignment rules across numerous Fortran source files in the src/main/ directory, standardizing the appearance of variable declarations.

🧠 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.

Changelog
  • scripts/no-dims.pl
    • Added example comments for intent() alignment.
    • Updated the regex for type pattern matching to include more Fortran types.
    • Modified dimension statement removal to handle various spacing and positions.
    • Refactored the alignment logic to correctly handle optional attributes and ensure consistent padding.
  • src/main/H2regions.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/apr.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/apr_region.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/centreofmass.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/checkconserved.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/config.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/cons2prim.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/cons2primsolver.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/cooling.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/cooling_functions.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/cooling_koyamainutsuka.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/cooling_molecular.f90
    • Removed dimension keyword from array declarations and aligned intent() keywords for subroutine parameters.
  • src/main/cooling_radapprox.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/cooling_solver.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/damping.f90
    • Aligned intent() keywords for subroutine and function parameters.
  • src/main/dens.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/deriv.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/dtype_kdtree.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/dust.f90
    • Aligned intent() keywords for function parameters.
  • src/main/dust_formation.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/egg.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/energies.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/eos.f90
    • Aligned intent() and optional keywords for subroutine and function parameters, and fixed spacing for a public integer declaration.
  • src/main/eos_HIIR.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/eos_barotropic.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/eos_gasradrec.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/eos_helmholtz.f90
    • Aligned intent() keywords for function parameters.
  • src/main/eos_idealplusrad.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/eos_mesa.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/eos_mesa_microphysics.f90
    • Removed dimension keyword from allocatable array declarations and aligned intent() keywords for subroutine parameters.
  • src/main/eos_piecewise.f90
    • Aligned intent() keywords for subroutine and function parameters.
  • src/main/eos_stamatellos.f90
    • Aligned intent() keywords for subroutine and function parameters, and fixed spacing for a save integer declaration.
  • src/main/eos_stratified.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/evolve.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/evolve_planet.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/evolve_utils.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/evwrite.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/extern_Bfield.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/extern_corotate.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/extern_densprofile.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/extern_gnewton.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/extern_gr.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/extern_spiral.f90
    • Aligned intent() keywords for function parameters.
  • src/main/externalforces.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/externalforces_gr.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/force.F90
    • Aligned intent() and optional keywords for subroutine parameters and fixed spacing for parameter declarations.
  • src/main/geometry.f90
    • Aligned intent() keywords for subroutine parameters and fixed spacing for a parameter declaration.
  • src/main/get_apr_level.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/growth.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/growth_coala.F90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/h2chem.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/initial.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_BHL.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_bondi.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_disk.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_firehose.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_galcen_winds.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_keplerian.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_keplerianshear.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/inject_masstransfer.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_randomwind.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/inject_sim.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_sne.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_steadydisc.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_streamer.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_streamer_pineda.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_unifwind.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_wind.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/inject_windtunnel.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/interp_metric.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/inverse4x4.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/ionization.f90
    • Removed dimension keyword from allocatable array declarations and aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/kdtree.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/libphantom-amuse.f90
    • Aligned intent() keywords for subroutine parameters and fixed spacing for double precision declarations.
  • src/main/memory.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/metric_binarybh.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_et.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/metric_et_utils.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_flrw.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_kerr-schild.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_kerr.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_minkowski.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_schwarzschild.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/metric_tools.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/mf_write.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/mpi_balance.F90
    • Removed dimension keyword from array declarations and aligned intent() and optional keywords for subroutine parameters.
  • src/main/mpi_dens.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/mpi_derivs.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/mpi_force.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/mpi_memory.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/mpi_tree.F90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/mpi_utils.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/neigh_kdtree.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/part.F90
    • Aligned intent() keywords for function parameters.
  • src/main/partinject.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/porosity.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/ptmass.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/ptmass_heating.f90
    • Aligned intent() keywords for subroutine and function parameters.
  • src/main/ptmass_radiation.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/radiation_implicit.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/radiation_utils.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/random.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/readwrite_dumps.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/readwrite_infile.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/relaxem.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/subgroup.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/substepping.F90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/timestep.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/tmunu2grid.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/main/units.f90
    • Aligned intent() keywords for subroutine and function parameters.
  • src/main/utils_allocate.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_apr.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_dumpfiles.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/utils_ephemeris.f90
    • Aligned intent() and optional keywords for function and subroutine parameters.
  • src/main/utils_evfiles.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_getneighbours.F90
    • Removed dimension keyword from allocatable array declarations and aligned intent() keywords for subroutine parameters.
  • src/main/utils_gr.f90
    • Aligned intent() and optional keywords for subroutine and function parameters.
  • src/main/utils_gravwave.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/utils_linalg.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/utils_mathfunc.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_mpc.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/utils_orbits.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/utils_raytracer.f90
    • Removed dimension keyword from allocatable array declarations and aligned intent() and optional keywords for subroutine parameters.
  • src/main/utils_rhomach.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_sort.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_splitmerge.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/utils_system.f90
    • Aligned intent() and optional keywords for function parameters.
  • src/main/utils_tables.f90
    • Aligned intent() keywords for function and subroutine parameters.
  • src/main/utils_testsuite.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/main/utils_timing.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_vectors.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/utils_velocitydispersion_vs_scale.f90
    • Removed dimension keyword from allocatable array declarations and aligned intent() keywords for subroutine parameters.
  • src/main/wind.F90
    • Removed dimension keyword from allocatable array declarations and aligned intent() and optional keywords for subroutine parameters.
  • src/main/wind_equations.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/main/writeheader.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/density_profiles.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/grids_for_setup.f90
    • Removed dimension keyword from allocatable array declarations and aligned intent() keywords for subroutine parameters.
  • src/setup/readwrite_kepler.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/readwrite_mesa.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/relax_star.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_Bfield.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_cubic_core.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_disc.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_dust.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_dust_options.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_fixedentropycore.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_galaxies.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_galcen_stars.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_grdisc.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_grtde.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_hierarchical.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_hierarchical_utils.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_kh.f90
    • Aligned intent() keywords for function parameters.
  • src/setup/set_localdisk.f90
    • Fixed spacing for a parameter declaration.
  • src/setup/set_masstransfer.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_orbit.f90
    • Aligned intent() and optional keywords for function and subroutine parameters.
  • src/setup/set_planetdisc.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_planets.f90
    • Aligned intent() keywords for subroutine parameters and removed dimension keyword from a declaration.
  • src/setup/set_shock.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_slab.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_softened_core.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_solarsystem.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_sphere.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_sphereinbox.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_star.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_star_utils.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_starcluster.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_streamer.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_torus.f90
    • Aligned intent() keywords for subroutine parameters.
  • src/setup/set_unifdis.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_units.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_wind.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/set_windtunnel.f90
    • Aligned intent() and optional keywords for subroutine parameters.
  • src/setup/stretchmap.f90
    • Aligned intent() and optional keywords for subroutine parameters.
Activity
  • The pull request was created by danieljprice.
  • The pull request description indicates that the changes were implemented using an alignment bot.
  • The author ran the align-bot for testing.
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.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces an alignment script for Fortran code and applies it across the codebase. The script, scripts/no-dims.pl, not only aligns intent() statements but also standardizes array declarations by removing the dimension attribute, reorders declarations for consistency, and normalizes spacing.

The changes to the Perl script itself are excellent. Notably, it fixes a critical bug in the regular expression used for matching Fortran type declarations and corrects how whitespace is handled in multi-word types like double precision. These fixes significantly improve the script's robustness and correctness.

The resulting formatting changes in the Fortran files are extensive but consistent, leading to a more uniform code style throughout the repository. The changes appear to be correct and align with the script's intended purpose.

Note: Security Review did not run due to the size of the PR.

Comment thread scripts/no-dims.pl
Comment thread scripts/no-dims.pl
@danieljprice
danieljprice merged commit 42079f3 into master Mar 5, 2026
802 of 807 checks passed
@danieljprice
danieljprice deleted the format-bot branch March 5, 2026 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant