Fixes issue #396 by adding missing parameter in viscous_weno5_sgb_mono case file.
Add monopole checks and make some parameters compulsory
New tests for monopole delay and all monopole supports (except for 6)
Explaination
The original benchmark viscous_weno5_sgb_mono did not specify the monopole support type, so it defaulted to 1. However, support = 1 is not valid for 3D simulations and triggered none of the if-statements in the f_delta function within the monopole module, resulting in f_delta being undefined. I'm not entirely sure why it only started failing on Frontier and Phoenix in my PR #495, but it's probably due to the floating-point numbers being checked differently.
The modified benchmark file should simulate what it intends to simulate, with the computational domain and parameters remaining the same. The only changes are adding Mono(1)%support' : 4 and a rotation of the domain to align the z-axis with the requirements of monopole support 4.
Now, I've made monopole support mandatory through checks (along with other monopole parameters) to prevent this from happening again. I've also added test cases for monopoles as requested (support 6 for cylindrical coordinates cannot be run, so no check is implemented).
Type of change
[x] Bug fix (non-breaking change which fixes an issue)
Scope
[x] This PR comprises a set of related changes with a common goal
How Has This Been Tested?
[x] Passes all tests locally
[x] Passed all tests on Delta
[x] Benchmark runs successfully on Delta
[x] Benchmark runs successfully on Delta after merging with #495
Test Configuration:
What computers and compilers did you use to test this:
Ubuntu 22.04.4 LTS; GNU v11.4.0
Delta
Checklist
[x] I have added comments for the new code
[x] I have added regression tests to the test suite so that people can verify in the future that the feature is behaving as expected
[x] I ran ./mfc.sh format before committing my code
[x] New and existing tests pass locally with my changes, including with GPU capability enabled (both NVIDIA hardware with NVHPC compilers and AMD hardware with CRAY compilers) and disabled (not for AMD hardware)
[x] This PR does not introduce any repeated code (it follows the DRY principle)
[x] I cannot think of a way to condense this code and reduce any introduced additional line count
If your code changes any code source files (anything in src/simulation)
To make sure the code is performing as expected on GPU devices, I have:
[x] Checked that the code compiles using NVHPC compilers
[x] Ran the code on either V100, A100, or H100 GPUs and ensured the new feature performed as expected (the GPU results match the CPU results)
Performance tests are not done as the changes are strictly in the parameter checking and initialization stages, and only involves assigning values to variables.
Description
viscous_weno5_sgb_mono
case file.Explaination
The original benchmark
viscous_weno5_sgb_mono
did not specify the monopole support type, so it defaulted to 1. However, support = 1 is not valid for 3D simulations and triggered none of the if-statements in thef_delta
function within the monopole module, resulting inf_delta
being undefined. I'm not entirely sure why it only started failing on Frontier and Phoenix in my PR #495, but it's probably due to the floating-point numbers being checked differently.The modified benchmark file should simulate what it intends to simulate, with the computational domain and parameters remaining the same. The only changes are adding
Mono(1)%support' : 4
and a rotation of the domain to align the z-axis with the requirements of monopole support 4.Now, I've made monopole support mandatory through checks (along with other monopole parameters) to prevent this from happening again. I've also added test cases for monopoles as requested (support 6 for cylindrical coordinates cannot be run, so no check is implemented).
Type of change
Scope
How Has This Been Tested?
Test Configuration:
Checklist
./mfc.sh format
before committing my codeIf your code changes any code source files (anything in
src/simulation
)To make sure the code is performing as expected on GPU devices, I have:
Performance tests are not done as the changes are strictly in the parameter checking and initialization stages, and only involves assigning values to variables.