@@ -28,308 +28,75 @@ jobs:
28
28
sudo apt-get update -y -qq
29
29
sudo apt-get -qq -y install curl cmake jq clang g++>=9.3.0
30
30
31
- - name : Compile and run for Z = 1
32
- run : |
33
- cd unit_test/burn_cell_metal_chem
34
- make -j 2
35
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
36
-
37
- - name : Print backtrace
38
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
39
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
40
-
41
- - name : Compare to stored output for Z = 1
42
- run : |
43
- set -e
44
- cd unit_test/burn_cell_metal_chem
45
- line_numbers=(4461 4463 4465 4467 4468 4471 4472 4475 4481 4486)
46
- threshold=0.01
47
- error_found=false
48
- for line_number in "${line_numbers[@]}"; do
49
-
50
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
51
- # Adjust the line number for reference_solution_1.out
52
- reference_line_number=$((line_number - 4460))
53
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1.out)
54
-
55
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
56
-
57
- if (( $(echo "$difference > $threshold" | bc -l) )); then
58
- echo "Line number: $line_number"
59
- echo "Value in test.out: $value1"
60
- echo "Value in reference_solution_1.out: $value2"
61
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
62
- echo
63
- error_found=true
64
- fi
65
- done
66
- if [[ $error_found == true ]]; then
67
- exit 1
68
- fi
69
-
70
- - name : Run for Z = 1 at z = 10
71
- run : |
72
- cd unit_test/burn_cell_metal_chem
73
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1_z10 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
74
-
75
- - name : Print backtrace
76
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
77
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
78
-
79
- - name : Compare to stored output for Z = 1 at z = 10
80
- run : |
81
- set -e
82
- cd unit_test/burn_cell_metal_chem
83
- line_numbers=(1613 1615 4456 4458 4460 4463 4470 4476 4481)
84
- threshold=0.01
85
- error_found=false
86
- for line_number in "${line_numbers[@]}"; do
87
-
88
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
89
- # Adjust the line number for reference_solution_1_z10.out
90
- reference_line_number=$((line_number - 1612))
91
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1_z10.out)
92
-
93
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
94
-
95
- if (( $(echo "$difference > $threshold" | bc -l) )); then
96
- echo "Line number: $line_number"
97
- echo "Value in test.out: $value1"
98
- echo "Value in reference_solution_1_z10.out: $value2"
99
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
100
- echo
101
- error_found=true
102
- fi
103
- done
104
- if [[ $error_found == true ]]; then
105
- exit 1
106
- fi
107
-
108
- - name : Run for Z = 1e-1
109
- run : |
110
- cd unit_test/burn_cell_metal_chem
111
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-1 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
112
-
113
- - name : Print backtrace
114
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
115
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
116
-
117
- - name : Compare to stored output for Z = 1e-1
118
- run : |
119
- set -e
120
- cd unit_test/burn_cell_metal_chem
121
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
122
- threshold=0.01
123
- error_found=false
124
- for line_number in "${line_numbers[@]}"; do
125
-
126
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
127
- # Adjust the line number for reference_solution
128
- reference_line_number=$((line_number - 4437))
129
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-1.out)
130
-
131
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
132
-
133
- if (( $(echo "$difference > $threshold" | bc -l) )); then
134
- echo "Line number: $line_number"
135
- echo "Value in test.out: $value1"
136
- echo "Value in reference_solution_1e-1.out: $value2"
137
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
138
- echo
139
- error_found=true
140
- fi
141
- done
142
- if [[ $error_found == true ]]; then
143
- exit 1
144
- fi
145
-
146
- - name : Run for Z = 1e-2
147
- run : |
148
- cd unit_test/burn_cell_metal_chem
149
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-2 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
150
-
151
- - name : Print backtrace
152
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
153
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
154
-
155
- - name : Compare to stored output for Z = 1e-2
156
- run : |
157
- set -e
158
- cd unit_test/burn_cell_metal_chem
159
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
160
- threshold=0.01
161
- error_found=false
162
- for line_number in "${line_numbers[@]}"; do
163
-
164
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
165
- # Adjust the line number for reference_solution
166
- reference_line_number=$((line_number - 4437))
167
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-2.out)
168
-
169
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
170
-
171
- if (( $(echo "$difference > $threshold" | bc -l) )); then
172
- echo "Line number: $line_number"
173
- echo "Value in test.out: $value1"
174
- echo "Value in reference_solution_1e-2.out: $value2"
175
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
176
- echo
177
- error_found=true
178
- fi
179
- done
180
- if [[ $error_found == true ]]; then
181
- exit 1
182
- fi
183
-
184
- - name : Run for Z = 1e-3
185
- run : |
186
- cd unit_test/burn_cell_metal_chem
187
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-3 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
188
-
189
- - name : Print backtrace
190
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
191
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
192
-
193
- - name : Compare to stored output for Z = 1e-3
31
+ - name : Run and compare outputs for different Z values
194
32
run : |
195
33
set -e
196
34
cd unit_test/burn_cell_metal_chem
197
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
198
- threshold=0.01
199
- error_found=false
200
- for line_number in "${line_numbers[@]}"; do
201
35
202
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
203
- # Adjust the line number for reference_solution
204
- reference_line_number=$((line_number - 4437))
205
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-3.out)
206
-
207
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
208
-
209
- if (( $(echo "$difference > $threshold" | bc -l) )); then
210
- echo "Line number: $line_number"
211
- echo "Value in test.out: $value1"
212
- echo "Value in reference_solution_1e-3.out: $value2"
213
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
214
- echo
215
- error_found=true
36
+ declare -A line_numbers_map=(
37
+ ["Z=1"]="4461 4463 4465 4467 4468 4471 4472 4475 4481 4486"
38
+ ["Z=1_z10"]="1613 1615 4456 4458 4460 4463 4470 4476 4481"
39
+ ["Z=1e-1"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
40
+ ["Z=1e-2"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
41
+ ["Z=1e-3"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
42
+ ["Z=1e-4"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
43
+ ["Z=1e-5"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
44
+ ["Z=1e-6"]="4438 4440 4442 4444 4445 4448 4449 4452 4458 4463"
45
+ )
46
+
47
+ declare -A ref_map=(
48
+ ["Z=1"]="reference_solution_1.out"
49
+ ["Z=1_z10"]="reference_solution_1_z10.out"
50
+ ["Z=1e-1"]="reference_solution_1e-1.out"
51
+ ["Z=1e-2"]="reference_solution_1e-2.out"
52
+ ["Z=1e-3"]="reference_solution_1e-3.out"
53
+ ["Z=1e-4"]="reference_solution_1e-4.out"
54
+ ["Z=1e-5"]="reference_solution_1e-5.out"
55
+ ["Z=1e-6"]="reference_solution_1e-6.out"
56
+ )
57
+
58
+ for Z in "Z=1" "Z=1_z10" "Z=1e-1" "Z=1e-2" "Z=1e-3" "Z=1e-4" "Z=1e-5" "Z=1e-6"; do
59
+ input_file="inputs_metal_chem_${Z//Z=/}"
60
+ output_file="test_${Z//Z=/}.out"
61
+ ./main1d.gnu.DEBUG.ex $input_file amrex.fpe_trap_{invalid,zero,overflow}=1 > $output_file
62
+
63
+ line_numbers="${line_numbers_map[$Z]}"
64
+ ref_file="${ref_map[$Z]}"
65
+
66
+ error_found=false
67
+ for line_number in $line_numbers; do
68
+ value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' $output_file)
69
+
70
+ # Adjust the line number for the reference file
71
+ if [[ "$Z" == "Z=1" ]]; then
72
+ reference_line_number=$((line_number - 4460))
73
+ elif [[ "$Z" == "Z=1_z10" ]]; then
74
+ reference_line_number=$((line_number - 1612))
75
+ else
76
+ reference_line_number=$((line_number - 4437))
77
+ fi
78
+
79
+ value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' $ref_file)
80
+
81
+ difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
82
+
83
+ if (( $(echo "$difference > 0.01" | bc -l) )); then
84
+ echo "Z: $Z"
85
+ echo "Line number: $line_number"
86
+ echo "Value in $output_file: $value1"
87
+ echo "Value in $ref_file: $value2"
88
+ echo "Difference between test and reference value is $difference, more than allowed threshold of 0.01"
89
+ echo
90
+ error_found=true
91
+ fi
92
+ done
93
+
94
+ if [[ $error_found == true ]]; then
95
+ exit 1
216
96
fi
217
97
done
218
- if [[ $error_found == true ]]; then
219
- exit 1
220
- fi
221
-
222
- - name : Run for Z = 1e-4
223
- run : |
224
- cd unit_test/burn_cell_metal_chem
225
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-4 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
226
98
227
- - name : Print backtrace
99
+ - name : Print backtrace if any failure
228
100
if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
229
101
run : cat unit_test/burn_cell_metal_chem/Backtrace.0
230
102
231
- - name : Compare to stored output for Z = 1e-4
232
- run : |
233
- set -e
234
- cd unit_test/burn_cell_metal_chem
235
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
236
- threshold=0.01
237
- error_found=false
238
- for line_number in "${line_numbers[@]}"; do
239
-
240
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
241
- # Adjust the line number for reference_solution
242
- reference_line_number=$((line_number - 4437))
243
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-4.out)
244
-
245
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
246
-
247
- if (( $(echo "$difference > $threshold" | bc -l) )); then
248
- echo "Line number: $line_number"
249
- echo "Value in test.out: $value1"
250
- echo "Value in reference_solution_1e-4.out: $value2"
251
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
252
- echo
253
- error_found=true
254
- fi
255
- done
256
- if [[ $error_found == true ]]; then
257
- exit 1
258
- fi
259
-
260
- - name : Run for Z = 1e-5
261
- run : |
262
- cd unit_test/burn_cell_metal_chem
263
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-5 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
264
-
265
- - name : Print backtrace
266
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
267
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
268
-
269
- - name : Compare to stored output for Z = 1e-5
270
- run : |
271
- set -e
272
- cd unit_test/burn_cell_metal_chem
273
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
274
- threshold=0.01
275
- error_found=false
276
- for line_number in "${line_numbers[@]}"; do
277
-
278
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
279
- # Adjust the line number for reference_solution
280
- reference_line_number=$((line_number - 4437))
281
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-5.out)
282
-
283
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
284
-
285
- if (( $(echo "$difference > $threshold" | bc -l) )); then
286
- echo "Line number: $line_number"
287
- echo "Value in test.out: $value1"
288
- echo "Value in reference_solution_1e-5.out: $value2"
289
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
290
- echo
291
- error_found=true
292
- fi
293
- done
294
- if [[ $error_found == true ]]; then
295
- exit 1
296
- fi
297
-
298
- - name : Run for Z = 1e-6
299
- run : |
300
- cd unit_test/burn_cell_metal_chem
301
- ./main1d.gnu.DEBUG.ex inputs_metal_chem_1e-6 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out
302
-
303
- - name : Print backtrace
304
- if : ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }}
305
- run : cat unit_test/burn_cell_metal_chem/Backtrace.0
306
-
307
- - name : Compare to stored output for Z = 1e-6
308
- run : |
309
- set -e
310
- cd unit_test/burn_cell_metal_chem
311
- line_numbers=(4438 4440 4442 4444 4445 4448 4449 4452 4458 4463)
312
- threshold=0.01
313
- error_found=false
314
- for line_number in "${line_numbers[@]}"; do
315
-
316
- value1=$(awk 'NR=='"$line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH); else print 0}' test.out)
317
- # Adjust the line number for reference_solution
318
- reference_line_number=$((line_number - 4437))
319
- value2=$(awk 'NR=='"$reference_line_number"' {match($0, /[+-]?[0-9]+([.][0-9]+)?[eE]?[+-]?[0-9]+/); if (RSTART) print substr($0, RSTART, RLENGTH)}' reference_solution_1e-6.out)
320
-
321
- difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }')
322
-
323
- if (( $(echo "$difference > $threshold" | bc -l) )); then
324
- echo "Line number: $line_number"
325
- echo "Value in test.out: $value1"
326
- echo "Value in reference_solution_1e-6.out: $value2"
327
- echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold"
328
- echo
329
- error_found=true
330
- fi
331
- done
332
- if [[ $error_found == true ]]; then
333
- exit 1
334
- fi
335
-
0 commit comments