D-T-He 1D-recycling integrated (regression) test.
New integrated regression test for reaction diagnostics. Adds T and He ions,atoms to the 1D-recycling example in order to test non-symmetric charge exchange.
Very weird test failure. On the CI, the integration tests are ostensibly configured with -DCMAKE_BUILD_TYPE=Release (i.e. -O3), but the diagnostics computed in the new test all match the reference data generated on my desktop with -O0. It's not just close, they're the same to within 4 ULPs. If I fudge it by setting the test to always compare against the -O0 reference data, it passes on CI.
Not sure what's going on here...
@mikekryjak I've rejigged this test so that it applies strict (same double) tolerances when using -O0 or -01, but allows larger differences with -O2, -O3 or -Ofast.
I don't fully understand why those higher optimisation levels change the result on some cpus but not on others (e.g. those used by the default github runners). My local builds were using exactly the same gcc version and virtually identical flags to the github build... maybe the runner's architecture doesn't allow the same vectorisation that I was getting? Not sure.
Anyway, I think that's as good as I can do for now!
Following advice from the dev meeting yesterday, I'll try and make this test more robust by comparing at steady state instead.
This case sounds more and more useful the more I look at it. Two comments:
- Add
diagnose = trueunder each species block in the input file to enable all the diagnostic variables which will then allow temperature to be saved. We need temperature because it's the field most affected by conduction. - If we add thermal force, then it will basically test all the closure apart from electron viscosity, which would be awesome. However, thermal force currently won't work for interactions between light species because the closure is not valid in this limit: https://github.com/boutproject/hermes-3/blob/e027256ddb126faf676b453429352abd20048c17/docs/sphinx/equations.rst?plain=1#L562-L564 https://github.com/boutproject/hermes-3/blob/e027256ddb126faf676b453429352abd20048c17/src/thermal_force.cxx#L75-L81
Can we add an overwrite flag and include it in this simulation for testing purposes? We can then use it to test https://github.com/boutproject/hermes-3/pull/399.
Can we add an overwrite flag and include it in this simulation for testing purposes? We can then use it to test #399.
This seems to increase the test (serial) run time from ~42 s to ~180 s...
Can we add an overwrite flag and include it in this simulation for testing purposes? We can then use it to test #399.
This seems to increase the test (serial) run time from ~42 s to ~180 s...
Can you shorten the test? Now that we have the Zenodo route, could we use it to store the restart file? Saying that, I haven't implemented it yet...
Currently I'm running from flat initial profiles with
nout = 3
timestep = 5000
Could certainly try restart files instead... I'll take a look at the CMake changes that David pointed us to and see how easy it it is to cherry pick them onto their own branch.