diff --git a/.github/workflows/burn_cell_metal_chem.yml b/.github/workflows/burn_cell_metal_chem.yml index 54e262446..b188353d5 100644 --- a/.github/workflows/burn_cell_metal_chem.yml +++ b/.github/workflows/burn_cell_metal_chem.yml @@ -48,7 +48,7 @@ jobs: for line_number in "${line_numbers[@]}"; do 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) - # Adjust the line number for reference_solution_1.0.out + # Adjust the line number for reference_solution_1.out reference_line_number=$((line_number - 24)) 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) @@ -57,7 +57,45 @@ jobs: if (( $(echo "$difference > $threshold" | bc -l) )); then echo "Line number: $line_number" echo "Value in test.out: $value1" - echo "Value in reference_solution_1.0.out: $value2" + echo "Value in reference_solution_1.out: $value2" + echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold" + echo + error_found=true + fi + done + if [[ $error_found == true ]]; then + exit 1 + fi + + - name: Run for Z = 1 at z = 10 + run: | + cd unit_test/burn_cell_metal_chem + ./main1d.gnu.DEBUG.ex inputs_metal_chem_1_z10 amrex.fpe_trap_{invalid,zero,overflow}=1 > test.out + + - name: Print backtrace + if: ${{ failure() && hashFiles('unit_test/burn_cell_metal_chem/Backtrace.0') != '' }} + run: cat unit_test/burn_cell_metal_chem/Backtrace.0 + + - name: Compare to stored output for Z = 1 at z = 10 + run: | + set -e + cd unit_test/burn_cell_metal_chem + line_numbers=(4461 4463 4465 4467 4468 4471 4472 4475 4481 4486) + threshold=0.01 + error_found=false + for line_number in "${line_numbers[@]}"; do + + 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) + # Adjust the line number for reference_solution_1_z10.out + reference_line_number=$((line_number - 24)) + 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) + + difference=$(awk -v val1="$value1" -v val2="$value2" 'BEGIN { printf "%.2f", (val1 - val2) / val2 }') + + if (( $(echo "$difference > $threshold" | bc -l) )); then + echo "Line number: $line_number" + echo "Value in test.out: $value1" + echo "Value in reference_solution_1_z10.out: $value2" echo "Difference between test and reference value is $difference, more than allowed threshold of $threshold" echo error_found=true