Open paulromano opened 2 years ago
This is due to the ENDF precision while using ASCII ENDF files to exchange information between NJOY modules. Since we only have 6 digits after the decimal point, 10000001 get printed as 1.000000+7, leading to a difference of 1 K which fails the test in the first subroutine.
Switching to binary mode resolve this without any code changes, but I'm inclined to add a relative tolerance check on the temperature as well.
10000010 actually works because you can write this as 1.000001+7 in an ASCII ENDF file. Gotta love fixed precision.
@whaeck Is there anywhere one can find an up-to-date description of the ACE binary format? I do see that going to binary fixes this, but if you write an ASCII ACE file the precision is lost at the last step.
As far as I know, the binary ACE format is actually compiler dependent (and you need the same one for MCNP for it to read the file) - at least it was like that over 15 years ago. I could not get binary ACE files coming out of NJOY get accepted by different versions of MCNP(X).
We're actually looking into a new binary format for the data going into MCNP but that is still for out in the future.
Ok, that seems like a wise idea. Thanks for the clarification @whaeck!
Broadening H2 from ENDF/B-VIII.0 to T=10,000,001 K results in strange error in ACER. Namely, with the following input:
Running this with NJOY, I get:
I'm not sure what exactly it is that makes NJOY break. Other large temperatures (e.g., T=10,000,010 K) seem to work.