Skip to content

Commit 6b7c777

Browse files
committed
Add CheMFC test cases
1 parent 693837c commit 6b7c777

File tree

26 files changed

+3819
-80
lines changed

26 files changed

+3819
-80
lines changed

benchmarks/5eq_rk3_weno3_hllc/case.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@
1414
description="This MFC case was created for the purposes of benchmarking MFC.",
1515
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
1616

17-
parser.add_argument("--mfc", type=str, metavar="DICT", help=argparse.SUPPRESS)
18-
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16, help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
17+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
18+
help="MFC's toolchain's internal state.")
19+
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16,
20+
help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
1921

2022
ARGS = vars(parser.parse_args())
21-
DICT = json.loads(ARGS["mfc"])
23+
DICT = ARGS["mfc"]
2224

2325
size = 1 if DICT["gpu"] else 0
2426

benchmarks/hypo_hll/case.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
description="This MFC case was created for the purposes of benchmarking MFC.",
1313
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
1414

15-
parser.add_argument("--mfc", type=str, metavar="DICT", help=argparse.SUPPRESS)
16-
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16, help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
15+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
16+
help="MFC's toolchain's internal state.")
17+
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16,
18+
help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
1719

1820
ARGS = vars(parser.parse_args())
19-
DICT = json.loads(ARGS["mfc"])
21+
DICT = ARGS["mfc"]
2022

2123
size = 1 if DICT["gpu"] else 0
2224

benchmarks/ibm/case.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
description="This MFC case was created for the purposes of benchmarking MFC.",
1212
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
1313

14-
parser.add_argument("--mfc", type=str, metavar="DICT", help=argparse.SUPPRESS)
15-
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16, help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
14+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
15+
help="MFC's toolchain's internal state.")
16+
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16,
17+
help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
1618

1719
ARGS = vars(parser.parse_args())
18-
DICT = json.loads(ARGS["mfc"])
20+
DICT = ARGS["mfc"]
1921

2022
size = 1 if DICT["gpu"] else 0
2123

benchmarks/viscous_weno5_sgb_acoustic/case.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
description="This MFC case was created for the purposes of benchmarking MFC.",
1717
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
1818

19-
parser.add_argument("--mfc", type=str, metavar="DICT", help=argparse.SUPPRESS)
20-
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16, help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
19+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
20+
help="MFC's toolchain's internal state.")
21+
parser.add_argument("--gbpp", type=int, metavar="MEM", default=16,
22+
help="Adjusts the problem size per rank to fit into [MEM] GB of GPU memory per GPU.")
2123

2224
ARGS = vars(parser.parse_args())
23-
DICT = json.loads(ARGS["mfc"])
25+
DICT = ARGS["mfc"]
2426

2527
size = 1 if DICT["gpu"] else 0
2628

docs/documentation/case.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,17 @@ Input files can accept command line arguments, forwarded by `mfc.sh run`.
3434
Consider this example from the `scaling` case:
3535

3636
```python
37-
import argparse
37+
import json, argparse
3838

3939
parser = argparse.ArgumentParser(
4040
prog="scaling",
4141
description="Weak- and strong-scaling benchmark case.",
4242
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
4343

44-
parser.add_argument("--mfc", type=str, metavar="DICT", default='{}')
44+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
45+
help="MFC's toolchain's internal state.")
4546
parser.add_argument("-s", "--scaling", type=str, metavar="SCALING", choices=["weak", "strong"],
46-
help="Whether weak- or strong-scaling is being exercised.")
47+
help="Whether weak- or strong-scaling is being exercised.")
4748

4849
# Your parsed arguments are here
4950
args = parser.parse_args()

examples/1D_inert_shocktube/case.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,21 @@
44
# + https://doi.org/10.1016/j.compfluid.2013.10.014: 4.3. Multi-component inert shock tube
55

66
import json
7+
import argparse
8+
79
import cantera as ct
810

11+
parser = argparse.ArgumentParser(
12+
prog="nD_inert_shocktube",
13+
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
14+
15+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
16+
help="MFC's toolchain's internal state.")
17+
parser.add_argument("--no-chem", dest='chemistry', default=True, action="store_false",
18+
help="Disable chemistry.")
19+
20+
args = parser.parse_args()
21+
922
ctfile = 'h2o2.yaml'
1023
sol_L = ct.Solution(ctfile)
1124
sol_L.TPX = 400, 8000, 'H2:2,O2:1,AR:7'
@@ -18,7 +31,6 @@
1831
dt = 5e-9
1932
Tend = 40e-6
2033

21-
chemistry = True
2234
NT = int(Tend / dt)
2335
SAVE_COUNT = 200
2436
NS = NT // SAVE_COUNT
@@ -62,7 +74,7 @@
6274
# ==========================================================================
6375

6476
# Chemistry ================================================================
65-
'chemistry' : 'F' if not chemistry else 'T',
77+
'chemistry' : 'F' if not args.chemistry else 'T',
6678
'chem_params%advection' : 'T',
6779
'chem_params%diffusion' : 'F',
6880
'chem_params%reactions' : 'T',
@@ -104,7 +116,7 @@
104116
# ==========================================================================
105117
}
106118

107-
if chemistry:
119+
if args.chemistry:
108120
for i in range(len(sol_L.Y)):
109121
case[f'patch_icpp(1)%Y({i+1})'] = sol_L.Y[i]
110122
case[f'patch_icpp(2)%Y({i+1})'] = sol_R.Y[i]

examples/1D_reactive_shocktube/case.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,21 @@
44
# + https://doi.org/10.1016/j.ijhydene.2023.03.190: Verification of numerical method
55
# + https://doi.org/10.1016/j.compfluid.2013.10.014: 4.7. Multi-species reactive shock tube
66

7-
import json
7+
import json, argparse
88
import cantera as ct
99

10+
parser = argparse.ArgumentParser(
11+
prog="1D_reactive_shocktube",
12+
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
13+
14+
parser.add_argument("--mfc", type=json.loads, default='{}', metavar="DICT",
15+
help="MFC's toolchain's internal state.")
16+
parser.add_argument("--no-chem", dest='chem', default=True, action="store_false",
17+
help="Disable chemistry.")
18+
parser.add_argument("--scale", type=float, default=1, help="Scale.")
19+
20+
args = parser.parse_args()
21+
1022
ctfile = 'h2o2.yaml'
1123
sol_L = ct.Solution(ctfile)
1224
sol_L.DPX = 0.072, 7173, 'H2:2,O2:1,AR:7'
@@ -18,7 +30,7 @@
1830
u_r = -487.34
1931

2032
L = 0.12
21-
Nx = 800
33+
Nx = 800 * args.scale
2234
dx = L/Nx
2335
dt = dx/abs(u_r)*0.01
2436
Tend=230e-6
@@ -27,8 +39,6 @@
2739
SAVE_COUNT=100
2840
NS=NT//SAVE_COUNT
2941

30-
chemistry = True
31-
3242
case = {
3343
# Logistics ================================================================
3444
'run_time_info' : 'T',
@@ -45,7 +55,7 @@
4555
't_step_stop' : NT,
4656
't_step_save' : NS,
4757
't_step_print' : NS,
48-
'parallel_io' : 'F',
58+
'parallel_io' : 'T' if args.mfc.get("mpi", True) else 'F',
4959

5060
# Simulation Algorithm Parameters ==========================================
5161
'model_eqns' : 2,
@@ -66,7 +76,7 @@
6676
'bc_x%end' :-3,
6777

6878
# Chemistry ================================================================
69-
'chemistry' : 'F' if not chemistry else 'T',
79+
'chemistry' : 'F' if not args.chemistry else 'T',
7080
'chem_params%advection' : 'T',
7181
'chem_params%diffusion' : 'F',
7282
'chem_params%reactions' : 'T',
@@ -77,6 +87,7 @@
7787
'format' : 1,
7888
'precision' : 2,
7989
'prim_vars_wrt' : 'T',
90+
'chem_wrt_T' : 'T',
8091
# ==========================================================================
8192

8293
# ==========================================================================
@@ -105,8 +116,9 @@
105116
# ==========================================================================
106117
}
107118

108-
if chemistry:
119+
if args.chemistry:
109120
for i in range(len(sol_L.Y)):
121+
case[f'chem_wrt_Y({i + 1})'] = 'T'
110122
case[f'patch_icpp(1)%Y({i+1})'] = sol_L.Y[i]
111123
case[f'patch_icpp(2)%Y({i+1})'] = sol_R.Y[i]
112124

examples/nD_perfect_reactor/analyze.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import matplotlib.pyplot as plt
55

66
import mfc.viz
7-
from case import dt, NS, Tend, SAVE_COUNT, sol
7+
from case import dt, Tend, SAVE_COUNT, sol
88

99

1010
case = mfc.viz.Case(".", dt)

0 commit comments

Comments
 (0)