Skip to content

Named values for enumerated case parameters and AST-based analytic IC codegen#1550

Open
sbryngelson wants to merge 13 commits into
MFlowCode:masterfrom
sbryngelson:named-parameter-values
Open

Named values for enumerated case parameters and AST-based analytic IC codegen#1550
sbryngelson wants to merge 13 commits into
MFlowCode:masterfrom
sbryngelson:named-parameter-values

Conversation

@sbryngelson

Copy link
Copy Markdown
Member

Summary

This PR makes two coordinated ease-of-use refactorings to the case-parameter layer, both driven by the same strategy: one source of truth, generated everywhere, with no behavior change. The full golden test suite passes at every step with zero golden-file regenerations.

  1. Named values for enumerated parameters. Case files can now write "riemann_solver": "hllc" instead of "riemann_solver": 2, and the Fortran decision sites compare against generated named constants instead of magic integers. Integer codes remain fully supported (they are still the namelist wire format).
  2. AST-based analytic IC code generation. The regex string-substitution that turned analytic expressions ("0.5 + 0.2*sin(2*pi*x/lx)") into Fortran is replaced by a Python-ast translator that validates expressions at case-load time.

Strategy

MFC's enumerated parameters (model_eqns, riemann_solver, time_stepper, …) encoded their vocabularies as integers that users had to memorize and that appeared independently in four places: the case file, the Python validator, the Fortran decision sites, and the docs. Keeping those in sync was manual. The existing parameter pipeline (toolchain/mfc/params/definitions.py → generated Fortran declarations/namelists at CMake configure time) already solved this problem for parameter declarations, so this PR extends the same mechanism to parameter values:

  • Each enumerated parameter's CONSTRAINTS entry gains a names mapping (e.g. {"hll": 1, "hllc": 2, "hlld": 4, "lax_friedrichs": 5}), validated at registry load (lowercase identifiers, exact coverage of choices, no duplicates).
  • From that single mapping we generate: the accepted case-file spellings (normalized to integers the moment a Case is constructed, so JSON-schema validation, physics validation, and the Fortran namelist are untouched), a third generated include generated_constants.fpp with integer, parameter :: riemann_solver_hllc = 2-style constants exposed through m_constants, name-aware validation errors ('riemann_solver' must be one of 1 (hll), 2 (hllc), …), and the docs tables.
  • Fortran decision sites then adopt the constants mechanically: riemann_solver == 1riemann_solver == riemann_solver_hll. This PR sweeps riemann_solver, model_eqns, and time_stepper (116 sites across all three executables and common); the remaining vocabularies (bubble_model, avg_state, wave_speeds, recon_type, muscl_lim, int_comp, format, precision) have constants generated and ready, with their sweeps left as mechanical follow-ups.

The analytic-IC work follows the same philosophy applied to expressions. The old re.sub(r"[a-zA-Z]+", …) token substitution had silent-corruption modes: it tokenized through underscores so tau_e could never match its own mapping (the trailing e was then substituted with Euler's number), the e inside scientific-notation literals like 2e-3 inside larger expressions was likewise corrupted, and an unknown variable like x0 passed through silently to become a Fortran compile error far from its cause. The new translator parses the expression, resolves every variable through an explicit map, restricts calls to a whitelist of Fortran intrinsics (plus pi), regenerates parentheses by operator precedence, and reports unknown names as immediate, named errors at case load — listing the available variables. As a bonus it fixes a latent precision hazard: float literals that emit in exponent form now carry a _wp suffix (a bare 1e+20 is a single-precision literal in Fortran).

User-facing changes

  • "riemann_solver": "hllc", "model_eqns": "5eq", "time_stepper": "rk3", etc. now work in case files; integer codes continue to work unchanged.
  • ./mfc.sh validate case.py --migrate rewrites a case file from integer codes to named syntax in place, gated on validation passing, and self-verifies by reloading the migrated file and comparing the normalized parameters (restoring the original on any mismatch or load failure).
  • All 145 bundled examples are migrated to named syntax (every rewrite mechanically verified against the mapping; five files also picked up CRLF→LF normalization from the rewrite).
  • Validation errors for enumerated parameters now show names next to codes.
  • Analytic expression errors are now load-time and specific: patch_icpp(1)%pres: unknown variable 'x0' in 'x0 + 1'. Available: beta, eps, lx, ly, ….
  • One deliberate break: bare e in analytic expressions is no longer substituted with Euler's number — it was the root cause of the tau_e/scientific-notation corruption. Write exp(1.0) or a literal. No bundled example used it. Documented in case.md.

Verification

Every change was gated on no-functional-change evidence:

  • The full golden suite (579 tests) was run to completion three times on compute nodes — after the Fortran constants generation + riemann_solver sweep, after the model_eqns/time_stepper sweep, and after the analytic-IC switchover — zero golden-file diffs, zero regenerations.
  • A corpus-equivalence test pins the AST translator's output against a faithful reimplementation of the legacy regex for every analytic expression harvested from the bundled examples, and stays in the suite as a regression net.
  • Generated .fpp before/after comparison for analytic examples: byte-identical modulo whitespace, except one case where the AST emitter drops mathematically redundant parentheses with identical left-to-right FP evaluation order (verified by the golden run).
  • ./mfc.sh precheck passes on every commit; the toolchain pytest suite grew from 129 to 319+ tests.

Follow-ups (intentionally out of scope)

  • Fortran adoption sweeps for the remaining 8 named vocabularies (constants already generated; same recipe as the sweeps here).
  • Named values for BC type codes and patch geometries (need per-index constraint support in the registry).
  • lint_docs.py currently whitelists value names mentioned in case.md individually; a generic "all registered value names are valid tokens" rule would replace the growing skip list.

Copilot AI review requested due to automatic review settings June 10, 2026 04:35

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 PR extends MFC’s parameter pipeline so enumerated case parameters can be written using named values (while preserving the existing integer “wire format”), and replaces legacy analytic-IC expression substitution with an AST-based translator for safer, validated Fortran emission.

Changes:

  • Add names mappings to enumerated parameter constraints and generate Fortran named integer constants (generated_constants.fpp) consumed via m_constants.
  • Add ./mfc.sh validate ... --migrate to rewrite integer codes in case files to named syntax with a reload-and-compare safety check.
  • Sweep selected Fortran decision sites (e.g., model_eqns, time_stepper, riemann_solver) and migrate examples to named syntax; update docs/validation error formatting to display names alongside codes.

Reviewed changes

Copilot reviewed 185 out of 185 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
toolchain/mfc/validate.py Adds --migrate flow to rewrite case files after successful validation, with semantic safety check.
toolchain/mfc/params/schema.py Enhances choices validation messages to display code→name mappings when available.
toolchain/mfc/params/migrate.py Implements text-based migration of integer codes to named values.
toolchain/mfc/params/generators/fortran_gen.py Generates per-target generated_constants.fpp in addition to decls/namelist includes.
toolchain/mfc/params/generators/docs_gen.py Renders enumerated constraints with both numeric codes and backticked names.
toolchain/mfc/params_tests/test_names.py Adds coverage for names well-formedness, normalization behavior, and error/docs strings.
toolchain/mfc/params_tests/test_migrate.py Adds tests for the case-file migration rewriter and documents known limitations.
toolchain/mfc/params_tests/test_fortran_gen.py Updates generator tests to expect the new constants include output and count.
toolchain/mfc/lint_docs.py Extends docs-token skip list for prose examples and analytic-expression intrinsic names.
toolchain/mfc/cli/commands.py Adds --migrate flag to the validate command.
src/simulation/m_time_steppers.fpp Replaces magic integers with generated named constants for time_stepper and model_eqns.
src/simulation/m_start_up.fpp Uses named constants for time_stepper and model_eqns decision sites.
src/simulation/m_pressure_relaxation.fpp Uses named constants for model_eqns comparisons.
src/simulation/m_ibm.fpp Uses named constants for model_eqns comparisons in IBM logic.
src/simulation/m_global_parameters.fpp Uses named constants for model_eqns selection and related conditionals.
src/simulation/m_data_output.fpp Uses named constants for model_eqns checks affecting output paths/derived values.
src/simulation/m_bubbles_EL.fpp Uses named constants for time_stepper selection in bubble integrator stages.
src/simulation/m_acoustic_src.fpp Uses named constants for model_eqns checks in acoustic energy update paths.
src/simulation/include/inline_riemann.fpp Uses named constants for riemann_solver checks in inline Riemann logic.
src/pre_process/m_icpp_patches.fpp Uses named constants for model_eqns checks in patch initialization paths.
src/pre_process/m_global_parameters.fpp Uses named constants for model_eqns selection and related conditionals.
src/pre_process/m_data_output.fpp Uses named constants for model_eqns checks affecting output.
src/pre_process/m_check_patches.fpp Uses named constants for model_eqns in patch constraint checks.
src/pre_process/m_assign_variables.fpp Uses named constants for model_eqns branching and 6-eq behavior.
src/post_process/m_global_parameters.fpp Uses named constants for model_eqns selection and related conditionals.
src/post_process/m_derived_variables.fpp Uses named constants for model_eqns branching.
src/post_process/m_data_output.fpp Uses named constants for model_eqns checks affecting output variable selection.
src/common/m_phase_change.fpp Uses named constants for model_eqns checks in phase-change updates.
src/common/m_constants.fpp Includes auto-generated named constants for enumerated parameters via generated_constants.fpp.
examples/nD_perfect_reactor/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_turb_mixing/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_TaylorGreenVortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_TaylorGreenVortex_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_sphbubcollapse/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_shockdroplet/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_shockdroplet_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_rotating_sphere/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_recovering_sphere/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_rayleigh_taylor/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_rayleigh_taylor_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_performance_test/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_patch_spherical_harmonic/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_mibm_sphere_head_on_collision/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_IGR_TaylorGreenVortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_IGR_TaylorGreenVortex_nvidia/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_IGR_jet/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_IGR_jet_1fluid/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_IGR_33jet/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_ibm_stl_test/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_ibm_stl_pyramid/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_ibm_stl_ellipsoid/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_ibm_bowshock/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_brio_wu/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_advection_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_acoustic_support7/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_acoustic_support3/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/3D_acoustic_support11/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_zero_circ_vortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_zero_circ_vortex_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_whale_bubble_annulus/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_viscous/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_viscous_shock_tube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_tumbling_rectangle/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_triple_point/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_Thermal_Flatplate/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_TaylorGreenVortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shocktube_phasechange/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shockdroplet/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shockdroplet_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shockbubble/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shock_cloud_rmhd/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_shearlayer/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_riemann_test/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_riemann_test_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_richtmyer_meshkov/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_rayleigh_taylor/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_patch_modal_shape/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_patch_modal_shape_exp/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_orszag_tang/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_orszag_tang_hyper_cleaning/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mixing_artificial_Ma/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mibm_shock_cylinder/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mibm_particle_cloud/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mibm_cylinder_in_cross_flow/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mhd_rotor/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_mhd_magnetic_vortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_lungwave/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_lungwave_horizontal/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_lid_driven_cavity/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_laplace_pressure_jump/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_kelvin_helmholtz/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_jet/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_isentropicvortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_isentropicvortex_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_IGR_triple_point/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_IGR_2fluid/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_stl_wedge/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_stl_test/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_stl_MFCCharacter/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_steady_shock/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_multiphase/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_ellipse/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_cfl_dt/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_ibm_airfoil/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_hardcoded_ic/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_GreshoVortex/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_forward_facing_step/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_cont_damage/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_bubbly_steady_shock/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_backward_facing_step/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_axisym_shockwatercavity/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_axisym_shockbubble/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_axisym_hypoelasticity/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_advection/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_advection_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_advection_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_support9/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_support6_axisym/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_support5/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_support2/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_support10_axisym/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_pulse/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_pulse_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_acoustic_broadband/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/2D_5wave_quasi1D/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_vacuum/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_vacuum_restart/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_titarevtorro/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_titarevtorro_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_sodshocktube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_sodshocktube_muscl/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_sodHypo/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_sod_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_wenoz5/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_wenom5/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_wenojs5/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_teno7/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_teno5/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_old/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_shuosher_analytical/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_reactive_shocktube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_qbmm/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_poly_bubscreen/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_multispecies_diffusion/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_mhd_smooth_alfven_wave/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_laxshocktube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_kapilashocktube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_inert_shocktube/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_impact/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_hypo_2materials/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_exp_tube_phasechange/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_exp_bubscreen/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_euler_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_dai_woodward/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_dai_woodward_hlld/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_cont_damage/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_bubblescreen/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_brio_wu/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_brio_wu_rmhd/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_brio_wu_hlld/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_advection_convergence/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_acoustic_sine_wavelength/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_acoustic_sine_frequency/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_acoustic_gauss_sigmatime/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_acoustic_gauss_sigmadist/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/1D_acoustic_dipole/case.py Migrates enumerated parameter values from integer codes to named syntax.
examples/0D_bubblecollapse_adap/case.py Migrates enumerated parameter values from integer codes to named syntax.

Comment thread toolchain/mfc/params/migrate.py Outdated
@codecov

codecov Bot commented Jun 10, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 29.24528% with 75 lines in your changes missing coverage. Please review.
✅ Project coverage is 60.57%. Comparing base (1f02a6f) to head (86bd6d6).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
src/simulation/m_cbc.fpp 0.00% 0 Missing and 8 partials ⚠️
src/simulation/m_viscous.fpp 0.00% 8 Missing ⚠️
src/post_process/m_start_up.fpp 0.00% 0 Missing and 7 partials ⚠️
src/simulation/m_time_steppers.fpp 40.00% 0 Missing and 6 partials ⚠️
src/common/m_variables_conversion.fpp 54.54% 0 Missing and 5 partials ⚠️
src/post_process/m_data_output.fpp 0.00% 5 Missing ⚠️
src/pre_process/m_assign_variables.fpp 0.00% 0 Missing and 5 partials ⚠️
src/simulation/m_global_parameters.fpp 20.00% 1 Missing and 3 partials ⚠️
src/post_process/m_global_parameters.fpp 40.00% 1 Missing and 2 partials ⚠️
src/pre_process/m_global_parameters.fpp 40.00% 1 Missing and 2 partials ⚠️
... and 13 more
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1550   +/-   ##
=======================================
  Coverage   60.57%   60.57%           
=======================================
  Files          73       73           
  Lines       20264    20265    +1     
  Branches     2949     2948    -1     
=======================================
+ Hits        12275    12276    +1     
  Misses       6000     6000           
  Partials     1989     1989           

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants