Skip to content

Commit 3639574

Browse files
authored
Fix empty bibliography in CI docs build (#1142)
* Fix empty bibliography by installing texlive-binaries in CI Doxygen uses bib2xhtml.pl which shells out to bibtex to format the bibliography. Without bibtex installed, citelist.html is empty and all \cite references render as plain text. Also removes duplicate graphviz entry. * Add math symbols to parameter registry, cross-ref validation, and doc fixes - Add math_symbol field to ParamDef for LaTeX symbol mapping (e.g. gamma -> γ_k) - Define ~70 symbols inline on _r() calls in definitions.py (single source of truth) - Show Symbol column in auto-generated parameters.md for physics parameters - Extend lint_docs.py to validate param refs in case.md (518 refs, was unchecked) - Add @ref cross-link validation between doc pages - Fix doc bugs: radiue->radius, t_step_end->t_step_stop, remove stale tau_wrt row - Add cross-page @ref links between equations.md, case.md, and parameters.md - Update contributing guide Step 1 to document math= and desc= kwargs * Address review: list-based table headers, robust @page/@ref checks - Build markdown table headers from column lists instead of string concat - Use re.search with MULTILINE for @page detection (handles leading whitespace) - Strip code blocks before scanning for @ref targets (avoids false positives) * Tighten param prefix check to require structural boundary Match family prefixes only at structural boundaries to avoid silently accepting typos like patch_ic as valid. * Validate both family and attribute for compound params Tighten compound-param validation to require both a known family prefix and a known attribute. Immediately caught two doc bugs: z_comain -> z_domain typo, model%%filepath -> model_filepath. * Fix Doxygen warnings across docs and Fortran sources (510 → 5) - Remove filename args from @file directives in all 52 .fpp files - Add @param docs to 13 undocumented subroutines, remove duplicate !< inline comments - Convert raw $...$ math to Doxygen \f$...\f$ in m_riemann_solvers.fpp - Add @cond/@endcond around #ifdef blocks that confuse Doxygen parser - Fix getting-started.md HTML (<h3> in <summary>), contributing.md (@: escaping) - Fix stale @param names in m_data_input.f90 - Remove obsolete Doxyfile tags (HTML_TIMESTAMP, LATEX_TIMESTAMP), fix PROJECT_NAME quoting - Add stable {#id} anchors to generated case_constraints.md and cli-reference.md - Add _escape_doxygen() helper for CLI help text, add missing precheck command - Extend lint_docs.py with math syntax and section anchor checks * Remove duplicate References page, link directly to Bibliography The manual references.md page just redirected to the auto-generated Bibliography (citelist). Remove it and point the sidebar link directly to \ref citelist to avoid two near-identical sidebar entries. * Redo Fortran source doc fixes without comment mangling Previous commit used an overly broad regex that stripped @param, @brief, and first words from comments across all .fpp files. Restore all source files from master and re-apply only: - Remove filename args from @file directives (58 files) - Convert raw $...$ math to \f$...\f$ in m_riemann_solvers.fpp - Add @cond/@endcond for #ifdef blocks with vendor attributes - Fix stale @param name in m_data_input.f90
1 parent 56bff68 commit 3639574

74 files changed

Lines changed: 578 additions & 276 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- name: Build Doxygen
2222
run: |
2323
sudo apt update -y
24-
sudo apt install -y cmake ninja-build graphviz graphviz
24+
sudo apt install -y cmake ninja-build graphviz texlive-binaries
2525
git clone https://github.com/doxygen/doxygen.git ../doxygen
2626
cd ../doxygen
2727
git checkout Release_1_16_1

docs/Doxyfile.in

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ DOXYFILE_ENCODING = UTF-8
3535
# title of most generated pages and in a few other places.
3636
# The default value is: My Project.
3737

38-
PROJECT_NAME = "@DOXYGEN_PROJECT_NAME@"
38+
PROJECT_NAME = @DOXYGEN_PROJECT_NAME@
3939

4040
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
4141
# could be handy for archiving the generated documentation or if some version
@@ -970,7 +970,7 @@ FILTER_SOURCE_PATTERNS =
970970
# (index.html). This can be useful if you have a project on for instance GitHub
971971
# and want to reuse the introduction page also for the doxygen output.
972972

973-
USE_MDFILE_AS_MAINPAGE = readme.md
973+
USE_MDFILE_AS_MAINPAGE =
974974

975975
#---------------------------------------------------------------------------
976976
# Configuration options related to source browsing
@@ -1205,14 +1205,6 @@ HTML_COLORSTYLE_SAT = 255
12051205

12061206
HTML_COLORSTYLE_GAMMA = 113
12071207

1208-
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1209-
# page will contain the date and time when the page was generated. Setting this
1210-
# to YES can help to show when doxygen was last run and thus if the
1211-
# documentation is up to date.
1212-
# The default value is: NO.
1213-
# This tag requires that the tag GENERATE_HTML is set to YES.
1214-
1215-
HTML_TIMESTAMP = NO
12161208

12171209
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
12181210
# documentation will contain a main index with vertical navigation menus that
@@ -1801,13 +1793,6 @@ LATEX_HIDE_INDICES = NO
18011793

18021794
LATEX_BIB_STYLE = plain
18031795

1804-
# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
1805-
# page will contain the date and time when the page was generated. Setting this
1806-
# to NO can help when comparing the output of multiple runs.
1807-
# The default value is: NO.
1808-
# This tag requires that the tag GENERATE_LATEX is set to YES.
1809-
1810-
LATEX_TIMESTAMP = NO
18111796

18121797
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
18131798
# path from which the emoji images will be read. If a relative path is entered,

docs/documentation/case.md

Lines changed: 55 additions & 52 deletions
Large diffs are not rendered by default.

docs/documentation/contributing.md

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ Both human reviewers and AI code reviewers reference this section.
148148
### Memory and Allocation
149149

150150
- **ALLOCATE/DEALLOCATE pairing:** Every `@:ALLOCATE()` must have a matching `@:DEALLOCATE()`. Missing deallocations leak GPU memory.
151-
- **@:ACC_SETUP_VFs / @:ACC_SETUP_SFs:** Vector/scalar fields must have GPU pointer setup before use in kernels.
151+
- **`@:ACC_SETUP_VFs` / `@:ACC_SETUP_SFs`:** Vector/scalar fields must have GPU pointer setup before use in kernels.
152152
- **Conditional allocation:** If an array is allocated inside an `if` block, its deallocation must follow the same condition.
153153
- **Out-of-bounds access:** Fortran is permissive with assumed-shape arrays. Check that index arithmetic stays within declared bounds.
154154

@@ -212,10 +212,27 @@ Adding a parameter touches both the Python toolchain and Fortran source. Follow
212212
Add a call to `_r()` inside the `_load()` function:
213213

214214
```python
215-
_r("my_param", REAL, {"my_feature_tag"})
215+
_r("my_param", REAL, {"my_feature_tag"},
216+
desc="Description of the parameter",
217+
math=r"\f$\xi\f$")
216218
```
217219

218-
The arguments are: name, type (`INT`, `REAL`, `LOG`, `STR`), and a set of feature tags. You can add an explicit description with `desc="..."`, otherwise one is auto-generated from `_SIMPLE_DESCS` or `_ATTR_DESCS`.
220+
The arguments are:
221+
- **name**: parameter name (must match the Fortran namelist variable)
222+
- **type**: `INT`, `REAL`, `LOG`, `STR`, or `A_REAL` (analytic expression)
223+
- **tags**: set of feature tags for grouping (e.g. `{"bubbles"}`, `{"mhd"}`)
224+
- **desc**: human-readable description (optional; auto-generated from `_SIMPLE_DESCS` or `_ATTR_DESCS` if omitted)
225+
- **math**: LaTeX math symbol in Doxygen format (optional; shown in the Symbol column of @ref parameters)
226+
227+
For indexed families like `fluid_pp`, put the symbol next to its attribute name using tuples:
228+
229+
```python
230+
for f in range(1, NF + 1):
231+
px = f"fluid_pp({f})%"
232+
for a, sym in [("gamma", r"\f$\gamma_k\f$"),
233+
("my_attr", r"\f$\xi_k\f$")]: # <-- add here
234+
_r(f"{px}{a}", REAL, math=sym)
235+
```
219236

220237
**Step 2: Add constraints** (same file, `CONSTRAINTS` dict)
221238

docs/documentation/equations.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ Each section notes the input parameter(s) that activate the corresponding physic
77

88
The models and algorithms described here are detailed in \cite Wilfong26 (MFC 5.0) and \cite Bryngelson21. Foundational references for each model are cited inline; see the \ref citelist "Bibliography" for full details.
99

10+
For parameter details and allowed values, see @ref case "Case Files" and the @ref parameters "Case Parameters" reference.
11+
1012
---
1113

1214
## 1. Overview

docs/documentation/getting-started.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ for a Linux experience.
7070

7171
<details>
7272

73-
<summary><h3>Windows + WSL (Recommended)</h3></summary>
73+
<summary><b>Windows + WSL (Recommended)</b></summary>
7474

7575
Install [Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/en-us/windows/wsl/) on Windows 11:
7676
Either
@@ -92,7 +92,7 @@ Once you have WSL installed, you can follow the instructions for *nix systems ab
9292

9393
<details>
9494

95-
<summary><h3>Native Windows (Intel)</h3></summary>
95+
<summary><b>Native Windows (Intel)</b></summary>
9696

9797
Install the latest version of:
9898
- [Microsoft Visual Studio Community](https://visualstudio.microsoft.com/)
@@ -118,7 +118,9 @@ You will also have access to the `.sln` Microsoft Visual Studio solution files f
118118

119119
</details>
120120

121-
<summary><h3>MacOS</h3></summary>
121+
<details>
122+
123+
<summary><b>MacOS</b></summary>
122124

123125
Using [Homebrew](https://brew.sh/) you can install the necessary dependencies
124126
before configuring your environment:

docs/documentation/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ Welcome to the Multi-component Flow Code (MFC) documentation.
3535
## About
3636

3737
- @ref papers "Papers" - Publications using MFC
38-
- @ref references "References" - Bibliography
38+
- \ref citelist "Bibliography" - Cited references
3939
- @ref authors "Authors" - Contributors

docs/documentation/references.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

docs/documentation/visualization.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,30 @@ For analysis and processing of the database using VisIt's capability, the user i
5454
## Serial data output
5555

5656
If ``parallel_io = 'F'``, MFC will output the conservative variables to a directory `D/`.
57-
If multiple cores are used ($\mathtt{ppn > 1}$), then a separate file is created for each core.
57+
If multiple cores are used (\f$\mathtt{ppn > 1}\f$), then a separate file is created for each core.
5858
If only one coordinate dimension (`n = 0` and `p = 0`) exists, the primitive variables will also be written to `D/`.
5959
The file names correspond to the variables associated with each equation solved by MFC.
6060
They are written at every `t_step_save` time step.
6161
The conservative variables are
6262

63-
$$ {(\rho \alpha)}\_{1}, \dots, (\rho\alpha)\_{N\_c}, \rho u\_{1}, \dots, \rho u\_{N\_d}, E, \alpha\_1, \dots, \alpha\_{N\_c} $$
63+
\f[ (\rho \alpha)_{1}, \dots, (\rho\alpha)_{N_c}, \rho u_{1}, \dots, \rho u_{N_d}, E, \alpha_1, \dots, \alpha_{N_c} \f]
6464

6565
and the primitive variables are
6666

67-
$$ {(\rho \alpha)}\_1, \dots, (\rho\alpha)\_{N\_c}, u\_1, \dots, u\_{N\_d}, p, \alpha\_1, \dots, \alpha\_{N\_c} $$
67+
\f[ (\rho \alpha)_1, \dots, (\rho\alpha)_{N_c}, u_1, \dots, u_{N_d}, p, \alpha_1, \dots, \alpha_{N_c} \f]
6868

6969
where $N_c$ are the number of components `num_fluids` and $N_d$ is the number of spatial dimensions.
7070
There are exceptions: if `model_eqns = 3`, then the six-equation model appends these variables with the internal energies of each component.
7171
If there are sub-grid bubbles `bubbles = T`, then the bubble variables are also written.
7272
These depend on the bubble dynamics model used.
7373
If ``polytropic = 'T'``, then the conservative variables are appended by
7474

75-
$$ n\_b R\_1, n\_b {\\dot R}\_1, \dots, n\_b R\_{N\_b}, n\_b {\\dot R}\_{N\_b} $$
75+
\f[ n_b R_1, n_b \dot{R}_1, \dots, n_b R_{N_b}, n_b \dot{R}_{N_b} \f]
7676

7777
where $n_B$ is the bubble number density, and $N_b$ is the number of bubble sizes (see the matching variable in the input file, `Nb`).
7878
The primitive bubble variables do not include $n_B$:
7979

80-
$$ R\_1, {\\dot R}\_1, \dots, R\_{N\_b}, {\\dot R}\_{N\_b} $$
80+
\f[ R_1, \dot{R}_1, \dots, R_{N_b}, \dot{R}_{N_b} \f]
8181

8282
## Remote Visualization on PACE Phoenix
8383

src/common/m_boundary_common.fpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
!>
2-
!! @file m_boundary_conditions_common.fpp
2+
!! @file
33
!! @brief Contains module m_boundary_conditions_common
44

55
!> @brief The purpose of the module is to apply noncharacteristic and processor

0 commit comments

Comments
 (0)