diff --git a/src/pre_process/m_check_ib_patches.fpp b/src/pre_process/m_check_ib_patches.fpp index 9943ee2b59..7e1f9aa1d7 100644 --- a/src/pre_process/m_check_ib_patches.fpp +++ b/src/pre_process/m_check_ib_patches.fpp @@ -41,6 +41,8 @@ contains if (i <= num_ibs) then ! call s_check_patch_geometry(i) call s_int_to_str(i, iStr) + @:PROHIBIT(patch_ib(i)%geometry == dflt_int, "IB patch undefined. & + patch_ib("//trim(iStr)//")%geometry must be set.") ! Constraints on the geometric initial condition patch parameters if (patch_ib(i)%geometry == 2) then @@ -60,22 +62,15 @@ contains else if (patch_ib(i)%geometry == 5 .or. & patch_ib(i)%geometry == 12) then call s_check_model_ib_patch_geometry(i) - else if (patch_ib(i)%geometry == dflt_int) then - call s_prohibit_abort("IB patch undefined", & - "patch_ib("//trim(iStr)//")%geometry must be set.") else call s_prohibit_abort("Invalid IB patch", & "patch_ib("//trim(iStr)//")%geometry must be "// & "2-4, 8-10, 11 or 12.") end if else - if (patch_ib(i)%geometry == dflt_int) then - call s_check_inactive_ib_patch_geometry(i) - else - call s_prohibit_abort("Inactive IB patch defined", & - "patch_ib("//trim(iStr)//")%geometry "// & - "must not be set for inactive patches.") - end if + @:PROHIBIT(patch_ib(i)%geometry /= dflt_int, "Inactive IB patch defined. "// & + "patch_ib("//trim(iStr)//")%geometry must not be set for inactive patches.") + call s_check_inactive_ib_patch_geometry(i) end if end do diff --git a/src/pre_process/m_check_patches.fpp b/src/pre_process/m_check_patches.fpp index 4d7d04abed..2a73bd98c0 100644 --- a/src/pre_process/m_check_patches.fpp +++ b/src/pre_process/m_check_patches.fpp @@ -46,6 +46,17 @@ contains if (i <= num_patches) then ! call s_check_patch_geometry(i) call s_int_to_str(i, iStr) + @:PROHIBIT(patch_icpp(i)%geometry == 6, "Invalid patch geometry number. "// & + "patch_icpp("//trim(iStr)//")%geometry is deprecated.") + @:PROHIBIT(patch_icpp(i)%geometry == 7, "Invalid patch geometry number. "// & + "patch_icpp("//trim(iStr)//")%geometry is deprecated.") + @:PROHIBIT(patch_icpp(i)%geometry == 13, "Invalid patch geometry number. "// & + "patch_icpp("//trim(iStr)//")%geometry is deprecated.") + @:PROHIBIT(patch_icpp(i)%geometry == 15, "Invalid patch geometry number. "// & + "patch_icpp("//trim(iStr)//")%geometry is deprecated.") + @:PROHIBIT(patch_icpp(i)%geometry == dflt_int, "Invalid patch geometry number. "// & + "patch_icpp("//trim(iStr)//")%geometry must be set.") + ! Constraints on the geometric initial condition patch parameters if (patch_icpp(i)%geometry == 1) then call s_check_line_segment_patch_geometry(i) @@ -57,12 +68,6 @@ contains call s_check_line_sweep_patch_geometry(i) elseif (patch_icpp(i)%geometry == 5) then call s_check_ellipse_patch_geometry(i) - elseif (patch_icpp(i)%geometry == 6) then - call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(iStr)//")%geometry "// & - "is deprecated") - elseif (patch_icpp(i)%geometry == 7) then - call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(iStr)//")%geometry "// & - "is deprecated") elseif (patch_icpp(i)%geometry == 8) then call s_check_sphere_patch_geometry(i) elseif (patch_icpp(i)%geometry == 9) then @@ -73,31 +78,21 @@ contains call s_check_plane_sweep_patch_geometry(i) elseif (patch_icpp(i)%geometry == 12) then call s_check_ellipsoid_patch_geometry(i) - elseif (patch_icpp(i)%geometry == 13) then - call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(iStr)//")%geometry "// & - "is deprecated") elseif (patch_icpp(i)%geometry == 14) then call s_check_spherical_harmonic_patch_geometry(i) - elseif (patch_icpp(i)%geometry == 15) then - call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(iStr)//")%geometry "// & - "is deprecated") elseif (patch_icpp(i)%geometry == 20) then call s_check_2D_TaylorGreen_vortex_patch_geometry(i) elseif (patch_icpp(i)%geometry == 21) then call s_check_model_geometry(i) - elseif (patch_icpp(i)%geometry == dflt_int) then - call s_prohibit_abort("Active patch undefined", "patch_icpp("//trim(iStr)//")%geometry must be set") else call s_prohibit_abort("Invalid patch geometry number", "patch_icpp("//trim(iStr)//")%geometry "// & "must be between 1 and 21") end if else - if (patch_icpp(i)%geometry == dflt_int) then - call s_check_inactive_patch_geometry(i) - else - call s_prohibit_abort("Inactive patch defined", "patch_icpp("//trim(iStr)//")%geometry must not be set. "// & - "Patch "//trim(iStr)//" is inactive as the number of patches is "//trim(num_patches_str)) - end if + @:PROHIBIT(patch_icpp(i)%geometry /= dflt_int, "Inactive patch defined. "// & + "patch_icpp("//trim(iStr)//")%geometry not be set for inactive patches. "// & + "Patch "//trim(iStr)//" is inactive as the number of patches is "//trim(num_patches_str)) + call s_check_inactive_patch_geometry(i) end if end do diff --git a/toolchain/bootstrap/format.sh b/toolchain/bootstrap/format.sh index f4c18fe723..9467c68aa8 100644 --- a/toolchain/bootstrap/format.sh +++ b/toolchain/bootstrap/format.sh @@ -1,11 +1,26 @@ #!/bin/bash +# Function to display help message +show_help() { + echo "Usage: $(basename "$0") [OPTIONS]" + echo "This function formats all code in and below the current execution directory." + echo "" + echo "Options:" + echo " -h, --help Display this help message and exit." + echo " -j, --jobs JOBS Runs JOBS number of jobs." + echo "" + exit 0 +} + while [[ $# -gt 0 ]]; do case "$1" in -j|--jobs) JOBS="$2" shift ;; + -h | --help) + show_help + ;; *) echo "Format, unknown argument: $1." exit 1 diff --git a/toolchain/bootstrap/modules.sh b/toolchain/bootstrap/modules.sh index fe7fed5918..2a0245fc80 100644 --- a/toolchain/bootstrap/modules.sh +++ b/toolchain/bootstrap/modules.sh @@ -1,5 +1,23 @@ #!/bin/bash +# Function to display help message +show_help() { + echo "Usage: $(basename "$0") [OPTIONS]" + echo "This function loads in modules for a specific computer and mode" + echo "" + echo "Options:" + echo " -h, --help Display this help message and exit." + echo " -c, --computer COMPUTER Configures for COMPUTER environment." + echo " Options: Ascent (a) | Frontier (f) | Summit (s) | Wombat (w)" + echo " Bridges2 (b) | Expanse (e) | Delta (d) | DeltaAI (dai)" + echo " Phoenix (p) | Richardson (r) | Oscar (o)" + echo " Carpenter Cray (cc) | Carpenter GNU (c) | Nautilus (n)" + echo " -m, --mode MODE Configures into MODE." + echo " Options: gpu (g) | cpu (c)" + echo "" + exit 0 +} + unset u_c unset u_cg @@ -12,6 +30,7 @@ while [[ $# -gt 0 ]]; do case $1 in -c|--computer) u_c="$2"; shift; shift; ;; -m|--mode) u_cg="$2"; shift; shift; ;; + -h|--help) show_help; shift; shift; ;; -*|--*) echo "Unknown option $1"; return; ;; esac done diff --git a/toolchain/mfc/args.py b/toolchain/mfc/args.py index e476e0a209..d3de6769c3 100644 --- a/toolchain/mfc/args.py +++ b/toolchain/mfc/args.py @@ -17,16 +17,23 @@ def parse(config): formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) + # Here are all of the parser arguments that call functions in other python files parsers = parser.add_subparsers(dest="command") - run = parsers.add_parser(name="run", help="Run a case with MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - test = parsers.add_parser(name="test", help="Run MFC's test suite.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - build = parsers.add_parser(name="build", help="Build MFC and its dependencies.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - clean = parsers.add_parser(name="clean", help="Clean build artifacts.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - bench = parsers.add_parser(name="bench", help="Benchmark MFC (for CI).", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - bench_diff = parsers.add_parser(name="bench_diff", help="Compare MFC Benchmarks (for CI).", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - count = parsers.add_parser(name="count", help="Count LOC in MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - count_diff = parsers.add_parser(name="count_diff", help="Count LOC in MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - packer = parsers.add_parser(name="packer", help="Packer utility (pack/unpack/compare)", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + run = parsers.add_parser(name="run", help="Run a case with MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + test = parsers.add_parser(name="test", help="Run MFC's test suite.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + build = parsers.add_parser(name="build", help="Build MFC and its dependencies.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + clean = parsers.add_parser(name="clean", help="Clean build artifacts.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + bench = parsers.add_parser(name="bench", help="Benchmark MFC (for CI).", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + bench_diff = parsers.add_parser(name="bench_diff", help="Compare MFC Benchmarks (for CI).", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + count = parsers.add_parser(name="count", help="Count LOC in MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + count_diff = parsers.add_parser(name="count_diff", help="Count LOC in MFC.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + packer = parsers.add_parser(name="packer", help="Packer utility (pack/unpack/compare).", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + + # These parser arguments all call BASH scripts, and they only exist so that they show up in the help message + parsers.add_parser(name="load", help="Loads the MFC environment with source.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parsers.add_parser(name="lint", help="Lints all code after editing.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parsers.add_parser(name="format", help="Formats all code after editing.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parsers.add_parser(name="spelling", help="Runs the spell checker after editing.", formatter_class=argparse.ArgumentDefaultsHelpFormatter) packers = packer.add_subparsers(dest="packer") pack = packers.add_parser(name="pack", help="Pack a case into a single file.", formatter_class=argparse.ArgumentDefaultsHelpFormatter)