Skip to content

4141 remove f90 references from both docstrings and docs#4283

Open
chris-ashe wants to merge 10 commits into
mainfrom
4141-remove-f90-references-from-both-docstrings-and-docs
Open

4141 remove f90 references from both docstrings and docs#4283
chris-ashe wants to merge 10 commits into
mainfrom
4141-remove-f90-references-from-both-docstrings-and-docs

Conversation

@chris-ashe

Copy link
Copy Markdown
Collaborator

Description

Checklist

I confirm that I have completed the following checks:

  • My changes follow the PROCESS style guide
  • I have justified any large differences in the regression tests caused by this pull request in the comments.
  • I have added new tests where appropriate for the changes I have made.
  • If I have had to change any existing unit or integration tests, I have justified this change in the pull request comments.
  • If I have made documentation changes, I have checked they render correctly.
  • I have added documentation for my change, if appropriate.

Copilot AI review requested due to automatic review settings June 3, 2026 08:34
@chris-ashe chris-ashe requested a review from a team as a code owner June 3, 2026 08:34
@chris-ashe chris-ashe added the Documentation Improvements or additions to documentation label Jun 3, 2026
@chris-ashe chris-ashe linked an issue Jun 3, 2026 that may be closed by this pull request
@chris-ashe chris-ashe requested a review from timothy-nunn June 3, 2026 08:35
@chris-ashe

Copy link
Copy Markdown
Collaborator Author

@timothy-nunn Tagging you here is there is lots of Fortran talked about in the vmcon stuff and not sure if it should be touched

Copilot AI 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.

Pull request overview

This pull request updates the codebase documentation and inline docstrings/comments to remove or replace legacy references to Fortran (.f90) with Python (.py), aligning wording with the current Python-centric implementation.

Changes:

  • Replace .f90 references in documentation pages with .py equivalents (solver, physics, stellarator, costs, development docs).
  • Remove/adjust Fortran-specific phrasing in docstrings and comments across models, core solver/input, and tests.
  • Minor cleanup of legacy explanatory comments tied to the former Fortran implementation.

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tracking/tracking_data.py Removes Fortran-specific guidance from tracking-related docstrings/comments.
tests/unit/models/test_pfcoil.py Updates test docstrings/comments to remove “Fortran module variables” phrasing.
tests/unit/models/test_divertor.py Updates module-level test docstring from .f90 to .py.
tests/unit/models/test_availability.py Removes Fortran-specific comments around test isolation.
tests/unit/models/physics/test_plasma_geom.py Updates module-level test docstring from .f90 to .py.
tests/unit/models/physics/test_physics.py Updates module-level test docstring from .f90 to .py.
tests/unit/models/physics/test_impurity_radiation.py Fixes docstring referencing .f90.py to .py.
tests/integration/test_vmcon.py Updates fixture docstring to remove Fortran phrasing.
process/models/tfcoil/superconducting.py Removes legacy Fortran behavior notes from comments.
process/models/tfcoil/base.py Updates docstrings/comments to remove Fortran references.
process/models/stellarator/coils/coils.py Removes comment referencing .f90 provenance for constants.
process/models/power.py Removes “only used in costs.f90” note from comment.
process/models/physics/physics.py Removes Fortran-loop commentary and updates output-related docstring text.
process/models/pfcoil.py Updates model init docstrings and removes Fortran-specific TODO/commentary.
process/models/blankets/hcpb.py Removes “only used by old routines in … .f90” comment.
process/models/blankets/dcll.py Updates .f90 reference in docstring line to .py.
process/main.py Rewrites top-level module docstring away from Fortran runtime description; updates various method docstrings.
process/data_structure/tfcoil_variables.py Updates variable docstring references from initial.f90 to initial.py.
process/data_structure/numerics.py Removes Fortran-specific comments about iteration variables and dictionary generation.
process/core/solver/solver_handler.py Removes Fortran-specific initialization/output comments and adjusts docstring wording.
process/core/solver/iteration_variables.py Removes Fortran-specific doc/comment text in iteration variable metadata and loading logic.
process/core/scan.py Updates class docstring to remove “Fortran scan module” phrasing.
process/core/process_output.py Removes a “remove when Fortran is gone” TODO comment.
process/core/output.py Removes Fortran-specific parameter description in docstring.
process/core/io/vary_run/tools.py Removes Fortran numbering conversion comment.
process/core/io/in_dat/base.py Removes large block comments describing legacy Fortran init/indexing issues.
process/core/io/data_structure_dicts.py Updates docstrings to reference input.py rather than input.f90.
process/core/input.py Updates docstrings and error messages to remove “Fortran module” wording.
process/core/caller.py Removes Fortran-vs-Python distinction in caller docstring.
documentation/source/solver/solver-guide.md Updates solver guide reference from evaluators.f90 to evaluators.py.
documentation/source/physics-models/fusion_reactions/plasma_reactions.md Updates constants.f90 references to constants.py.
documentation/source/fusion-devices/stellarator.md Updates stellarator source reference from stellarator.f90 to stellarator.py.
documentation/source/development/standards.md Updates standards references/examples from Fortran to Python.
documentation/source/development/add-vars.md Updates variable/iteration-variable add instructions from .f90 to .py and replaces examples.
documentation/source/cost-models/cost-models.md Updates costs model source reference from costs.f90 to costs.py.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread process/main.py Outdated
Comment thread documentation/source/development/standards.md Outdated
Comment thread documentation/source/development/standards.md Outdated
Comment thread documentation/source/development/standards.md Outdated
Comment thread documentation/source/development/standards.md Outdated
Comment thread process/core/io/data_structure_dicts.py Outdated
Comment thread process/core/io/data_structure_dicts.py Outdated
Comment on lines 1695 to 1699
"""Subroutine to output the plasma physics information
self.outfile : input integer : Fortran output unit identifier
self.outfile : file to write to
This routine writes the plasma physics information
to a file, in a tidy format.
"""
Comment thread process/core/output.py
Comment on lines 16 to 20
models : process.main.Models
physics and engineering model objects
_outfile : int
Fortran output unit identifier

"""
Comment thread process/models/blankets/dcll.py Outdated
@timothy-nunn timothy-nunn self-assigned this Jun 3, 2026
@codecov-commenter

codecov-commenter commented Jun 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 48.79%. Comparing base (89e1ebe) to head (f087387).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
process/core/input.py 50.00% 1 Missing ⚠️
process/models/stellarator/coils/coils.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4283   +/-   ##
=======================================
  Coverage   48.79%   48.79%           
=======================================
  Files         151      151           
  Lines       29383    29383           
=======================================
  Hits        14337    14337           
  Misses      15046    15046           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@clmould clmould self-requested a review June 3, 2026 13:54

@clmould clmould left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Just a few things from me

Can this comment be deleted:
Image

Can this comment also be deleted please:
Image

Comment thread documentation/source/development/add-vars.md Outdated
Comment thread documentation/source/development/add-vars.md Outdated
Comment thread process/core/input.py
Comment thread process/core/solver/solver_handler.py
if isinstance(value, np.ndarray):
value = value.item()
if isinstance(value, bytes):
# TODO: remove when Fortran is gone

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Does the line below need removing, or has this TODO already been done?

Comment thread process/data_structure/tfcoil_variables.py Outdated
@timothy-nunn

Copy link
Copy Markdown
Collaborator

@chris-ashe I'm going to pass this PR off to Clair while I am on AL.

@timothy-nunn timothy-nunn assigned clmould and unassigned timothy-nunn Jun 5, 2026
@timothy-nunn

Copy link
Copy Markdown
Collaborator

@timothy-nunn Tagging you here is there is lots of Fortran talked about in the vmcon stuff and not sure if it should be touched

Yep fine to leave the VMCON stuff. This should probably be its own issue as a lot of this docs has been moved to the VMCON repository

@chris-ashe chris-ashe force-pushed the 4141-remove-f90-references-from-both-docstrings-and-docs branch from 3d24903 to bdd254b Compare June 19, 2026 11:05

@clmould clmould left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Majority are suggested changes, then a couple qs and also checking some things with @timothy-nunn where I am uncertain

Comment thread process/models/stellarator/stellarator.py Outdated
Comment thread process/core/input.py
continue

# matches (variable name, array index, value)
# NOTE: array index is Fortran-based hence starts at 1.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@timothy-nunn I am unsure if this comment regarding indexing is still required?

Comment thread process/core/output.py
if isinstance(value, np.ndarray):
value = value.item()
if isinstance(value, bytes):
# TODO: remove when Fortran is gone

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@timothy-nunn can this be removed? I am unsure if it is referring to this if statement or something else that was removed already ?

# Initialise iteration variables and bounds in Python: relies on Fortran
# iteration variables being defined above
# Trim maximum size arrays down to actually used size
# Initialise solver variables from numerics module

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
# Initialise solver variables from numerics module
# Initialise iteration variables from numerics module
# Trim maximum size arrays down to actually used size

Think it's worth explaining the slicing

Comment thread process/main.py
This file, process.py, is now analogous to process.f90, which contains the
Fortran "program" statement. This Python module effectively acts as the Fortran
"program".
"""Run `PROCESS` by calling into the Python module.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

should it say 'Python module' or 'Python modules' ?

n_pf_coil_groups = 4
n_pf_coils_in_group = np.array([1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0])

# This 2D array argument discovered via gdb prints as a 1D array, therefore

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Think it's worth keeping the first sentence here to explain the reshaping, but the 2nd can be deleted

Comment thread tracking/tracking_data.py

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Comment on lines +40 to 41
Refrain from declaring or typing known numerical constants directly in the code. Instead call the value from `constants.py`
If the constants doesn't exist then add it with a source link and uncertainty value.

@clmould clmould Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
Refrain from declaring or typing known numerical constants directly in the code. Instead call the value from `constants.py`
If the constants doesn't exist then add it with a source link and uncertainty value.
Refrain from declaring or typing known numerical constants directly in the code. Instead call the value from `constants.py`.
If the constant doesn't exist then add it with a source link.

The constants in constants.py just seem to have a source link?

@@ -100,7 +97,5 @@ def output(self):
Objective function value, solution vector and constraints vector.
"""
self.data.numerics.norm_objf = self.solver.objf

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
self.data.numerics.norm_objf = self.solver.objf
self.data.numerics.norm_objf = self.solver.objf
# Slicing required to trim maximum sized arrays down to actually used size

chris-ashe and others added 2 commits June 22, 2026 09:53
Co-authored-by: clmould <86794332+clmould@users.noreply.github.com>
Co-authored-by: clmould <86794332+clmould@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove F90 references from both docstrings and docs

5 participants