Skip to content

Commit 4c52155

Browse files
authored
Document dimensions, stored-parameter conventions, and strengthen doc linter (#1150)
1 parent b104aea commit 4c52155

7 files changed

Lines changed: 470 additions & 12 deletions

File tree

.github/workflows/test.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ jobs:
4949
run: |
5050
! grep -iR -e '\.\.\.' -e '\-\-\-' -e '===' ./src/*
5151
52+
- name: Lint Docs
53+
run: python3 toolchain/mfc/lint_docs.py
54+
5255
file-changes:
5356
name: Detect File Changes
5457
runs-on: 'ubuntu-latest'

docs/documentation/case.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ These physical parameters must be consistent with fluid material's parameters de
298298
#### Elliptic Smoothing
299299

300300
Initial conditions in which not all patches support the `patch_icpp(j)%%smoothen` parameter can still be smoothed by applying iterations of the heat equation to the initial condition.
301-
This is enabled by adding `'elliptic_smoothing': "T",` and `'elliptic_smoothing_iters': N,` to the case dictionary, where `N` is the number of smoothing iterations to apply.
301+
This is enabled by adding ``'elliptic_smoothing': "T",`` and ``'elliptic_smoothing_iters': N,`` to the case dictionary, where `N` is the number of smoothing iterations to apply.
302302

303303
### 4. Immersed Boundary Patches {#sec-immersed-boundary-patches}
304304

@@ -387,6 +387,14 @@ Details of implementation of viscosity in MFC can be found in \cite Coralic15.
387387

388388
- `fluid_pp(i)%%G` is required for `hypoelasticity`.
389389

390+
> **Stored-form parameters:** The values `gamma`, `pi_inf`, and `Re(1)`/`Re(2)` are **not** the raw physical quantities. MFC expects transformed stored forms:
391+
> - `gamma` = \f$1/(\gamma-1)\f$, not \f$\gamma\f$ itself
392+
> - `pi_inf` = \f$\gamma\,\pi_\infty / (\gamma - 1)\f$, not \f$\pi_\infty\f$ itself
393+
> - `Re(1)` = \f$1/\mu\f$ (inverse viscosity), not \f$\mu\f$ itself
394+
>
395+
> Setting `gamma = 1.4` for air is a common mistake; the correct value is `1.0 / (1.4 - 1.0) = 2.5`.
396+
> See @ref sec-stored-forms and @ref sec-material-values in the Equations reference for the full table.
397+
390398
### 6. Simulation Algorithm {#sec-simulation-algorithm}
391399

392400
See @ref equations "Equations" for the mathematical models these parameters control.
@@ -658,7 +666,7 @@ If `file_per_process` is true, then pre_process, simulation, and post_process mu
658666

659667
- `cons_vars_wrt` and `prim_vars_wrt` activate the output of conservative and primitive state variables into the database.
660668

661-
- `[variable's name]_wrt` activates the output of each specified variable into the database.
669+
- ``[variable's name]_wrt`` activates the output of each specified variable into the database.
662670

663671
- `schlieren_alpha(i)` specifies the intensity of the numerical Schlieren of $i$-th component.
664672

@@ -898,11 +906,11 @@ The parameters are optionally used to define initial velocity profiles and pertu
898906

899907
- `mixlayer_vel_profile` activates setting the mean streamwise velocity to a hyperbolic tangent profile. This option works only for `n > 0`.
900908

901-
- `mixlayer_vel_coef` is a parameter for the hyperbolic tangent profile of a mixing layer when `mixlayer_vel_profile = 'T'`. The mean streamwise velocity profile is given as:
909+
- `mixlayer_vel_coef` is a parameter for the hyperbolic tangent profile of a mixing layer when ``mixlayer_vel_profile = 'T'``. The mean streamwise velocity profile is given as:
902910

903911
\f[ u = \text{patch\_icpp(1)\%vel(1)} \cdot \tanh( y_{cc} \cdot \text{mixlayer\_vel\_coef}) \f]
904912

905-
- `mixlayer_perturb` activates the velocity perturbation for a temporal mixing layer with hyperbolic tangent mean streamwise velocity profile, using an inverter version of the spectrum-based synthetic turbulence generation method proposed by \cite Guo23. This option only works for `p > 0` and `mixlayer_vel_profile = 'T'`.
913+
- `mixlayer_perturb` activates the velocity perturbation for a temporal mixing layer with hyperbolic tangent mean streamwise velocity profile, using an inverter version of the spectrum-based synthetic turbulence generation method proposed by \cite Guo23. This option only works for `p > 0` and ``mixlayer_vel_profile = 'T'``.
906914

907915
### 11. Phase Change Model {#sec-phase-change}
908916
| Parameter | Type | Description |

docs/documentation/contributing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ $:END_GPU_PARALLEL_LOOP()
380380
Key rules:
381381
- Always pair `$:GPU_PARALLEL_LOOP(...)` with `$:END_GPU_PARALLEL_LOOP()`
382382
- Use `collapse(n)` to fuse nested loops when the loop bounds are independent
383-
- Declare all loop-local temporaries in `private='[...]'`
383+
- Declare all loop-local temporaries in ``private='[...]'``
384384
- Never use `stop` or `error stop` inside a GPU loop
385385

386386
### How to Allocate and Manage GPU Arrays

docs/documentation/equations.md

Lines changed: 203 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,208 @@ The parameter `model_eqns` (1, 2, 3, or 4) selects the governing equation set.
2929

3030
---
3131

32+
## 1b. Units, Dimensions, and Non-Dimensionalization {#sec-units-dimensions}
33+
34+
### General Users: Dimensional Handling {#sec-dimensional-handling}
35+
36+
#### Dimensions In = Dimensions Out {#sec-dimensions-in-out}
37+
38+
The main flow solver (Navier-Stokes equations, Riemann solvers, viscous stress, body forces, surface tension, etc.) is **unit-agnostic**: whatever units the user provides for the initial and boundary conditions, the solver preserves them throughout the computation. If the user inputs SI units, the outputs are in SI units. If the user inputs CGS, the outputs are in CGS. No internal non-dimensionalization is performed by the flow solver.
39+
40+
This means that for simulations **without** sub-grid bubble models, the user can work in any consistent unit system without additional effort.
41+
42+
#### Stored Parameter Conventions {#sec-stored-forms}
43+
44+
Several EOS and transport parameters use **transformed stored forms** that differ from the standard physical values. This is the most common source of input errors:
45+
46+
| Parameter | Physical quantity | What MFC expects (stored form) |
47+
|---|---|---|
48+
| `fluid_pp(i)%%gamma` | Heat capacity ratio \f$\gamma\f$ | \f$\Gamma = \frac{1}{\gamma - 1}\f$ |
49+
| `fluid_pp(i)%%pi_inf` | Stiffness pressure \f$\pi_\infty\f$ [Pa] | \f$\Pi_\infty = \frac{\gamma\,\pi_\infty}{\gamma - 1}\f$ [Pa] |
50+
| `fluid_pp(i)%%Re(1)` | Dynamic viscosity \f$\mu\f$ | \f$1/\mu\f$ (inverse viscosity) |
51+
| `fluid_pp(i)%%Re(2)` | Bulk viscosity \f$\mu_b\f$ | \f$1/\mu_b\f$ (inverse bulk viscosity) |
52+
53+
These transformations arise because MFC internally solves the energy equation using the transformed variables \f$\Gamma\f$ and \f$\Pi_\infty\f$ (see Section 3.1), and the viscous stress is computed by dividing by `Re` rather than multiplying by \f$\mu\f$.
54+
55+
**Common mistake:** setting `fluid_pp(1)%%gamma = 1.4` for air. The correct value is `1.0 / (1.4 - 1.0) = 2.5`. Setting `gamma = 1.4` corresponds to a physical \f$\gamma \approx 1.71\f$, which is not a standard gas.
56+
57+
#### Common Material Values {#sec-material-values}
58+
59+
Pre-computed stored-form values for common fluids (SI units):
60+
61+
| Material | \f$\gamma\f$ | \f$\pi_\infty\f$ [Pa] | `gamma` (stored) | `pi_inf` (stored) [Pa] |
62+
|---|---|---|---|---|
63+
| Air | 1.4 | 0 | 2.5 | 0 |
64+
| Helium | 5/3 | 0 | 1.5 | 0 |
65+
| Water (Tait) | 4.4 | 6.0e8 | 0.2941 | 7.76e8 |
66+
| Water (\cite LeMetayer04) | 6.12 | 3.43e8 | 0.1953 | 4.10e8 |
67+
68+
Example for an air-water simulation:
69+
70+
```python
71+
# Air (fluid 1)
72+
gam_a = 1.4
73+
"fluid_pp(1)%gamma": 1.0 / (gam_a - 1.0), # = 2.5
74+
"fluid_pp(1)%pi_inf": 0.0,
75+
76+
# Water (fluid 2)
77+
gam_w = 4.4
78+
pi_w = 6.0e8 # Pa
79+
"fluid_pp(2)%gamma": 1.0 / (gam_w - 1.0), # ≈ 0.294
80+
"fluid_pp(2)%pi_inf": gam_w * pi_w / (gam_w - 1.0), # ≈ 7.76e8
81+
```
82+
83+
For viscous cases, provide the **reciprocal** of the dynamic viscosity:
84+
85+
```python
86+
mu = 1.002e-3 # water viscosity [Pa·s]
87+
"fluid_pp(1)%Re(1)": 1.0 / mu, # ≈ 998
88+
```
89+
90+
#### Unit Consistency {#sec-unit-consistency}
91+
92+
The solver does not check or convert units. All inputs must use the **same consistent unit system** (e.g., all SI or all CGS). Mixing units — for example, pressures in atmospheres with densities in kg/m³ — will produce silently incorrect results.
93+
94+
### Bubble Users: Non-Dimensional Framework {#sec-bubble-nondim}
95+
96+
#### Non-Dimensional Bubble Dynamics {#sec-nondim-bubble-dynamics}
97+
98+
The sub-grid bubble models (`bubbles_euler = .true.` or `bubbles_lagrange = .true.`) solve the bubble wall dynamics in **non-dimensional form**. The bubble wall pressure equation as implemented is:
99+
100+
\f[p_{bw} = \left(\text{Ca} + \frac{2}{\text{We}_b\,R_0}\right)\left(\frac{R_0}{R}\right)^{3\gamma} - \text{Ca} - \frac{4\,\text{Re}_{\text{inv}}\,\dot{R}}{R} - \frac{2}{R\,\text{We}_b}\f]
101+
102+
Here \f$R\f$ and \f$R_0\f$ are non-dimensional radii (scaled by \f$x_0\f$), and \f$\dot{R}\f$ is a non-dimensional wall speed (scaled by \f$u_0\f$); the entire bubble ODE is solved in non-dimensional variables.
103+
104+
The dimensionless groups are:
105+
106+
| Dimensionless group | Definition | Code variable | Computed from |
107+
|---|---|---|---|
108+
| \f$\text{Ca}\f$ (Cavitation number) | \f$p_{0,\text{ref}} - p_v\f$ | `Ca` | `bub_pp%%p0ref - bub_pp%%pv` |
109+
| \f$\text{Eu}\f$ (Euler number) | \f$p_{0,\text{ref}}\f$ | `Eu` | `bub_pp%%p0ref` |
110+
| \f$\text{We}_b\f$ (bubble Weber number) | \f$1/\sigma\f$ | `Web` | `1 / bub_pp%%ss` |
111+
| \f$\text{Re}_{\text{inv}}\f$ (inverse bubble Reynolds number) | \f$\mu_l\f$ | `Re_inv` | `bub_pp%%mu_l` |
112+
113+
Because the bubble equations use these dimensionless numbers directly, all `bub_pp%%` inputs are interpreted by the code as **already non-dimensional**. The code does **not** non-dimensionalize bubble quantities internally. Therefore, when bubbles are enabled, the simulation must be run in a **fully non-dimensional** form: **all** inputs — flow ICs/BCs, EOS parameters, domain lengths, `dt`, and `bub_pp%%` values — must be scaled with the same \f$(x_0, p_0, \rho_0, u_0, t_0, T_0)\f$ reference quantities, or the coupled solution will be physically incorrect.
114+
115+
#### Reference Scales {#sec-reference-scales}
116+
117+
When using bubble models, the user must choose reference scales and non-dimensionalize **all** inputs (flow and bubble) consistently. The standard convention used in the MFC examples is:
118+
119+
| Reference quantity | Symbol | Typical choice |
120+
|---|---|---|
121+
| Length | \f$x_0\f$ | \f$R_{0,\text{ref}}\f$ (reference bubble radius) |
122+
| Pressure | \f$p_0\f$ | \f$p_{0,\text{ref}}\f$ (reference bubble pressure) |
123+
| Density | \f$\rho_0\f$ | \f$\rho_{0,\text{ref}}\f$ (reference liquid density) |
124+
| Velocity | \f$u_0\f$ | \f$\sqrt{p_0 / \rho_0}\f$ (derived) |
125+
| Time | \f$t_0\f$ | \f$x_0 / u_0\f$ (derived) |
126+
| Temperature | \f$T_0\f$ | \f$T_{0,\text{ref}}\f$ (reference temperature) |
127+
128+
#### Non-Dimensionalization of Input Parameters {#sec-nondim-inputs}
129+
130+
The following table lists every `bub_pp%%` parameter and its required non-dimensionalization:
131+
132+
| Parameter | Physical meaning | Non-dimensional form |
133+
|---|---|---|
134+
| `bub_pp%%R0ref` | Reference bubble radius | \f$R_{0,\text{ref}} / x_0\f$ |
135+
| `bub_pp%%p0ref` | Reference bubble pressure | \f$p_{0,\text{ref}} / p_0\f$ |
136+
| `bub_pp%%rho0ref` | Reference liquid density | \f$\rho_{0,\text{ref}} / \rho_0\f$ |
137+
| `bub_pp%%T0ref` | Reference temperature | \f$T_{0,\text{ref}} / T_0\f$ (typically 1) |
138+
| `bub_pp%%ss` | Surface tension \f$\sigma\f$ | \f$\sigma / (\rho_0\,x_0\,u_0^2)\f$ |
139+
| `bub_pp%%pv` | Vapor pressure | \f$p_v / p_0\f$ |
140+
| `bub_pp%%mu_l` | Liquid dynamic viscosity | \f$\mu_l / (\rho_0\,x_0\,u_0)\f$ |
141+
| `bub_pp%%mu_v` | Vapor dynamic viscosity | \f$\mu_v / (\rho_0\,x_0\,u_0)\f$ |
142+
| `bub_pp%%mu_g` | Gas dynamic viscosity | \f$\mu_g / (\rho_0\,x_0\,u_0)\f$ |
143+
| `bub_pp%%vd` | Vapor diffusivity | \f$D / (x_0\,u_0)\f$ |
144+
| `bub_pp%%k_v` | Vapor thermal conductivity | \f$k_v\,T_0 / (x_0\,\rho_0\,u_0^3)\f$ |
145+
| `bub_pp%%k_g` | Gas thermal conductivity | \f$k_g\,T_0 / (x_0\,\rho_0\,u_0^3)\f$ |
146+
| `bub_pp%%cp_v` | Vapor specific heat | \f$c_{p,v}\,T_0 / u_0^2\f$ |
147+
| `bub_pp%%cp_g` | Gas specific heat | \f$c_{p,g}\,T_0 / u_0^2\f$ |
148+
| `bub_pp%%R_v` | Vapor gas constant | \f$R_v\,T_0 / u_0^2\f$ |
149+
| `bub_pp%%R_g` | Gas gas constant | \f$R_g\,T_0 / u_0^2\f$ |
150+
| `bub_pp%%gam_v` | Vapor heat capacity ratio | Already dimensionless (no scaling) |
151+
| `bub_pp%%gam_g` | Gas heat capacity ratio | Already dimensionless (no scaling) |
152+
| `bub_pp%%M_v` | Vapor molar mass | Consistent units; only ratios are used (no scaling needed) |
153+
| `bub_pp%%M_g` | Gas molar mass | Consistent units; only ratios are used (no scaling needed) |
154+
155+
When the reference scales match the bubble reference values (e.g., \f$x_0 = R_{0,\text{ref}}\f$, \f$p_0 = p_{0,\text{ref}}\f$, \f$\rho_0 = \rho_{0,\text{ref}}\f$), the reference parameters simplify to unity: `bub_pp%%R0ref = 1`, `bub_pp%%p0ref = 1`, `bub_pp%%rho0ref = 1`.
156+
157+
#### Flow Parameters with Bubbles {#sec-flow-params-bubbles}
158+
159+
When bubbles are enabled, the flow-level parameters must also be non-dimensionalized with the same reference scales:
160+
161+
| Parameter | Non-dimensional form |
162+
|---|---|
163+
| `x_domain%%beg`, `x_domain%%end` | Domain bounds divided by \f$x_0\f$ |
164+
| `patch_icpp(i)%%pres` | Pressure divided by \f$p_0\f$ |
165+
| `patch_icpp(i)%%alpha_rho(j)` | Partial density divided by \f$\rho_0\f$ |
166+
| `patch_icpp(i)%%vel(j)` | Velocity divided by \f$u_0\f$ |
167+
| `fluid_pp(i)%%gamma` | \f$1/(\gamma_i - 1)\f$ (dimensionless, same as without bubbles) |
168+
| `fluid_pp(i)%%pi_inf` | \f$\gamma_i\,\pi_{\infty,i} / [(\gamma_i - 1)\,p_0]\f$ (scaled by reference pressure) |
169+
| `fluid_pp(i)%%Re(1)` | \f$\rho_0\,x_0\,u_0 / \mu_i\f$ (Reynolds number, inverse viscosity) |
170+
| `dt` | Time step divided by \f$t_0\f$ |
171+
172+
#### Two Different Viscosity Parameters {#sec-two-viscosities}
173+
174+
MFC has two conceptually distinct viscosity-related parameters that serve different physical roles:
175+
176+
1. **`fluid_pp(i)%%Re(1)`** — Used for the **macroscopic flow viscous stress tensor** (Navier-Stokes equations). This is \f$1/\mu\f$ in dimensional simulations, or \f$\rho_0 x_0 u_0 / \mu\f$ (a Reynolds number) when non-dimensionalized. It appears as a **divisor** in the viscous stress computation:
177+
\f[\tau_{ij} \propto \frac{\nabla u}{\text{Re}}\f]
178+
Stored in the physical\_parameters derived type (`src/common/m_derived_types.fpp`).
179+
180+
2. **`bub_pp%%mu_l`** — Used for **microscale bubble wall viscous damping** (Rayleigh-Plesset / Keller-Miksis equations). This is the non-dimensional liquid viscosity \f$\mu_l / (\rho_0 x_0 u_0)\f$. It appears as a **multiplier** in the bubble wall pressure:
181+
\f[p_{bw} \ni -\frac{4\,\text{Re}_{\text{inv}}\,\dot{R}}{R}\f]
182+
Stored in the subgrid\_bubble\_physical\_parameters derived type (`src/common/m_derived_types.fpp`).
183+
184+
These two parameters represent viscous effects at fundamentally different scales — bulk flow dissipation vs. single-bubble-wall damping — and are stored in separate derived types with separate code paths. They are **not** interchangeable: `fluid_pp%%Re(1)` is an inverse viscosity while `bub_pp%%mu_l` is a viscosity (non-dimensionalized).
185+
186+
### Worked Examples {#sec-nondim-example}
187+
188+
#### Example: Non-Dimensionalizing a Bubble Case {#sec-bubble-example}
189+
190+
A typical bubble case setup in `case.py` follows this pattern:
191+
192+
```python
193+
import math
194+
195+
# Physical properties (SI units)
196+
rho_l = 1.0e03 # liquid density [kg/m³]
197+
mu_l = 1.002e-03 # liquid viscosity [kg/(m·s)]
198+
ss = 0.07275 # surface tension [kg/s²]
199+
pv = 2.3388e03 # vapor pressure [Pa]
200+
gam_l = 7.15 # liquid stiffened gas gamma
201+
pi_inf = 306.0e06 # liquid stiffened gas pi_inf [Pa]
202+
203+
# Bubble reference values (SI)
204+
R0ref = 10.0e-06 # reference bubble radius [m]
205+
p0ref = 112.9e03 # reference bubble pressure [Pa]
206+
rho0ref = rho_l # reference density [kg/m³]
207+
208+
# Derived reference scales
209+
x0 = R0ref
210+
p0 = p0ref
211+
rho0 = rho0ref
212+
u0 = math.sqrt(p0 / rho0)
213+
t0 = x0 / u0
214+
215+
# Non-dimensional inputs
216+
params = {
217+
"bub_pp%R0ref": R0ref / x0, # = 1.0
218+
"bub_pp%p0ref": p0ref / p0, # = 1.0
219+
"bub_pp%rho0ref": rho0ref / rho0, # = 1.0
220+
"bub_pp%ss": ss / (rho0 * x0 * u0**2), # surface tension
221+
"bub_pp%pv": pv / p0, # vapor pressure
222+
"bub_pp%mu_l": mu_l / (rho0 * x0 * u0), # liquid viscosity
223+
224+
"fluid_pp(1)%gamma": 1.0 / (gam_l - 1.0),
225+
"fluid_pp(1)%pi_inf": gam_l * (pi_inf / p0) / (gam_l - 1.0),
226+
"fluid_pp(1)%Re(1)": rho0 * x0 * u0 / mu_l, # flow Re (inverse!)
227+
}
228+
```
229+
230+
Note the inverse relationship: `fluid_pp%%Re(1) = 1 / bub_pp%%mu_l` when both use the same reference scales and the same physical viscosity. This is expected — they encode the same physical viscosity but in reciprocal forms for their respective equations.
231+
232+
---
233+
32234
## 2. Governing PDEs
33235

34236
### 2.1 Five-Equation Model (`model_eqns = 2`)
@@ -137,7 +339,7 @@ The pressure is recovered from the total energy as:
137339

138340
\f[\frac{1}{\rho\,c^2} = \sum_k \frac{\alpha_k}{\rho_k\,c_k^2}\f]
139341

140-
Input parameters per fluid: `gamma` (\f$\gamma_k\f$), `pi_inf` (\f$\pi_{\infty,k}\f$), `cv` (\f$c_{v,k}\f$), `qv` (\f$q_{v,k}\f$), `qvp` (\f$q'_{v,k}\f$).
342+
Input parameters per fluid: `gamma` (\f$\Gamma_k = 1/(\gamma_k - 1)\f$), `pi_inf` (\f$\Pi_{\infty,k} = \gamma_k\,\pi_{\infty,k}/(\gamma_k - 1)\f$), `cv` (\f$c_{v,k}\f$), `qv` (\f$q_{v,k}\f$), `qvp` (\f$q'_{v,k}\f$). Note that `gamma` and `pi_inf` are stored in transformed form, not as the raw physical values (see Section 1b).
141343

142344
### 3.2 Ideal Gas EOS (Chemistry, `chemistry = .true.`)
143345

docs/documentation/getting-started.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,12 @@ MFC has example cases in the `examples` folder. You can run such a case interact
198198

199199
Please refer to the @ref running "Running" document for more information on `case.py` files and how to run them.
200200

201+
## Units and Dimensions
202+
203+
MFC is **unit-agnostic**: the solver performs no internal unit conversions. Whatever units you provide for initial conditions, boundary conditions, and material properties, the same units appear in the output.
204+
205+
The only requirement is **consistency** — all inputs must use the same unit system. Note that some parameters use **transformed stored forms** rather than standard physical values (e.g., `gamma` expects \f$1/(\gamma-1)\f$, not \f$\gamma\f$ itself). See @ref sec-stored-forms for details.
206+
201207
## Helpful Tools
202208

203209
### Parameter Lookup

docs/documentation/testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ To test the post-processing code, append the `-a` or `--test-all` option:
9999
./mfc.sh test -a -j 8
100100
```
101101

102-
This argument will re-run the test stack with `parallel_io='T'`, which generates silo_hdf5 files.
102+
This argument will re-run the test stack with ``parallel_io='T'``, which generates silo_hdf5 files.
103103
It will also turn most write parameters (`*_wrt`) on.
104104
Then, it searches through the silo files using `h5dump` to ensure that there are no `NaN`s or `Infinity`s.
105105
Although adding this option does not guarantee that accurate `.silo` files are generated, it does ensure that the post-process code does not fail or produce malformed data.

0 commit comments

Comments
 (0)