| Summary: | Incorrect output energy using LEND | ||
|---|---|---|---|
| Product: | Geant4 | Reporter: | James V <jev720> |
| Component: | processes/hadronic/models/lend | Assignee: | dennis.herbert.wright |
| Status: | RESOLVED WONTFIX | ||
| Severity: | major | ||
| Priority: | P4 | ||
| Version: | 10.5 | ||
| Hardware: | Apple | ||
| OS: | Mac OS X | ||
| Attachments: |
Screenshots
Screenshot4 Screenshot5 Screenshot6 |
||
I have done some more testing and found this affects other reactions that have 2+ bodies in the output, for example, Li6(n,a)H3, which also has incorrect output energy like the B10(n,a)Li7 reaction.
To make it more familiar, I used example Hadr03 for better reproducibility, here is the result using QGSP_BIC_HP and ShieldingLEND with B10 isotope target:
Hadr03 example output using QGSP_BIC_HP:
The run is 100000 neutron of 1e-05 eV through 10 m of B10 (density: 2.46 g/cm3 )
Process calls frequency:
nCapture= 12 neutronInelastic= 99988
.
MeanFreePath: 344.06 nm +- 343.1 nm massic: 0.084638 mg/cm2
CrossSection: 29065 cm^-1 massic: 11815 cm2/g
crossSection per atom: 1.9645e+05 barn
.
Verification: crossSections from G4HadronicProcessStore:
nCapture= 1.5336 cm2/g 25.499 barn
neutronInelastic= 11785 cm2/g 1.9595e+05 barn
total= 11787 cm2/g 1.9598e+05 barn
.
List of nuclear reactions:
neutron + B10 --> N gamma or e- + B11: 12 Q = 13.066 MeV
neutron + B10 --> N gamma or e- + alpha + Li7: 93670 Q = 2.7904 MeV
neutron + B10 --> alpha + Li7: 6318 Q = 2.7901 MeV
number of gamma or e- (ic): N = 1 --> 5
.
List of generated particles:
B11: 12 Emean = 3.7641 keV ( 1.3211 keV --> 6.4208 keV)
Li7: 99988 Emean = 851 keV ( 831.89 keV --> 1.0143 MeV)
alpha: 99988 Emean = 1.4916 MeV ( 1.4716 MeV --> 1.7772 MeV)
gamma: 169268 Emean = 265.43 keV ( 1.0001 keV --> 11.456 MeV)
Momentum balance: Pmean = 28.836 keV ( 853.5 eV --> 82.715 keV)`
Hadr03 example output using ShieldingLEND:
The run is 100000 neutron of 1e-05 eV through 10 m of B10 (density: 2.46 g/cm3 )
Process calls frequency:
nCapture= 18 neutronInelastic= 99982
.
MeanFreePath: 350.66 nm +- 349.85 nm massic: 0.086262 mg/cm2
CrossSection: 28518 cm^-1 massic: 11593 cm2/g
crossSection per atom: 1.9275e+05 barn
.
Verification: crossSections from G4HadronicProcessStore:
nCapture= 1.5126 cm2/g 25.15 barn
neutronInelastic= 11624 cm2/g 1.9328e+05 barn
total= 11626 cm2/g 1.933e+05 barn
.
List of nuclear reactions:
neutron + B10 --> N gamma or e- + B11: 18 Q = 13.604 MeV
neutron + B10 --> N gamma or e- + alpha + Li7: 93810 Q = 5.3463 MeV
neutron + B10 --> alpha + Li7: 6172 Q = 5.3461 MeV
number of gamma or e- (ic): N = 1 --> 4
.
List of generated particles:
B11: 18 Emean = 4.7141 keV ( 260.61 eV --> 14.003 keV)
Li7: 99982 Emean = 1.7796 MeV ( 1.7688 MeV --> 1.9424 MeV)
alpha: 99982 Emean = 3.1186 MeV ( 3.0998 MeV --> 3.4038 MeV)
gamma: 93854 Emean = 479.99 keV ( 477.6 keV --> 11.456 MeV)
Momentum balance: Pmean = 448.04 keV ( 0.03038 eV --> 477.6 keV)
We can see from the cross section summary and number of alpha+Li7 particles produced that the cross section data of G4NDL and LEND are the same. Just the issue of incorrect Q and kinetic energy in the output products.
I have found the cause of the issue by looking at the XML files in the LEND data folders. I found in LEND_GND1.3_ENDF.BVII.1/neutrons/005_B_010/005_B_010.000.xml at approximately line 400 under "Program DICTIN", it has the definition of the particles with their mass and energy states:
[See screenshot 4]
However in the GIDI source files of Geant4, located under source/particles/management/src/MCGIDI_mass.cc,
it has the atomic masses of the nuclei stated, but with different values for alpha and Li7:
[See screenshot 5]
We see that the LEND XML data files has alpha=4.0015 amu and Li7=7.0143 amu, while GIDI has them stated again as alpha=4.0026 amu and Li7=7.0160 amu. After I edited the LEND XML file for B10 to have the same particle mass as GIDI, LEND started behaving as expected, with the same result as BIC_HP and literature:
Hadr03 example output using ShieldingLEND AFTER changing LEND XML data file:
The run is 100000 neutron of 1e-05 eV through 10 m of B10 (density: 2.46 g/cm3 )
Process calls frequency:
nCapture= 18 neutronInelastic= 99982
.
MeanFreePath: 350.66 nm +- 349.85 nm massic: 0.086262 mg/cm2
CrossSection: 28518 cm^-1 massic: 11593 cm2/g
crossSection per atom: 1.9275e+05 barn
.
Verification: crossSections from G4HadronicProcessStore:
nCapture= 1.5126 cm2/g 25.15 barn
neutronInelastic= 11624 cm2/g 1.9328e+05 barn
total= 11626 cm2/g 1.933e+05 barn
.
List of nuclear reactions:
neutron + B10 --> N gamma or e- + B11: 18 Q = 13.604 MeV
neutron + B10 --> N gamma or e- + alpha + Li7: 93810 Q = 2.7896 MeV
neutron + B10 --> alpha + Li7: 6172 Q = 2.7897 MeV
number of gamma or e- (ic): N = 1 --> 4
.
List of generated particles:
B11: 18 Emean = 4.7141 keV ( 260.61 eV --> 14.003 keV)
Li7: 99982 Emean = 850.62 keV ( 839.9 keV --> 1.0134 MeV)
alpha: 99982 Emean = 1.4909 MeV ( 1.4721 MeV --> 1.7762 MeV)
gamma: 93854 Emean = 479.99 keV ( 477.6 keV --> 11.456 MeV)
Momentum balance: Pmean = 448.04 keV ( 0.03036 eV --> 477.6 keV)
This fix also corrects other two body output reactions such as Li6(n,a)H3.
Discussion:
The GND1.3 data file used by LEND (the XML file) is the same as one that can be downloaded from the ENDF website for the desired reactions. It also has the different mass definitions for alpha and Li7. If an older evaluation is used, such as ENDF6 the GND file has the same particle masses as GIDI_mass.
I believe that there may have been some slight correction that was made to the GND file to apply a correction, but this hasn't been realised in the LEND model of Geant4.
My guess is that the GIDI processor for the LEND data files was originally made for ENDF6 and wasn't updated after some 'correction' was made to the GND data file for ENDF7. So when the neutronInelastic process happens, the energy conservation cannot be calculated properly due to different definitions of the particle masses.
This is a major issue that needs to be addressed by the LEND development team.
Created attachment 654 [details]
Screenshot4
Created attachment 655 [details]
Screenshot5
Thanks for your detailed explanation of the problem. However, I'm a bit confused; looking at your screen shots, it seems that the masses for He4 and Li7 are the same in both shots.
Screen shot 4 (file): He4: 4.0026, Li7: 7.0160
Screen shot 5 (code): He4: 4.0026, Li7: 7.0160
Where did you get the file folder from which you took screen shot 4?
You say LEND_GND1.3_ENDF.BVII.1/neutrons/005_B_010/005_B_010.000.xml, but when I look at my copy of that file I see
<particle name="He4" genre="nucleus" mass="4.00150484717963 amu"
and
<particle name="Li7" genre="nucleus" mass="7.01435769921245 amu">
I downloaded my files from ftp://gdo-nuclear.ucllnl.org/
When I do the same comparison, I see:
file: He4: 4.0015, Li7: 7.0143
code: He4: 4.0026, Li7: 7.0160
So I concur that there is a difference, but I'm puzzled by your screen shots.
Created attachment 690 [details]
Screenshot6
Original 005_B_010.000.xml file
Hello Dennis, Thank you very much for the reply. I apologise for the late response (the notification went to my junk folder). Indeed, I downloaded the files from ftp://gdo-nuclear.ucllnl.org/ as well. The previous Screenshot4 (file) I uploaded was of the edited XML file's particle mass to get LEND to work. In the original XML file, I also have He4: 4.00150484717963, Li7: 7.01435769921245. Sorry for the confusion. I have uploaded Screenshot6, showing my original LEND_GND1.3_ENDF.BVII.1/neutrons/005_B_010/005_B_010.000.xml file. ------------------------------------------------------------------ For a general update on what I have found: as stated initially, I am doing regression testing of major physics lists of Geant4 (and MCNP) for monoenergetic neutrons being directed into a water box. The neutron fluence and neutron energy distribution as a function of depth in the water box is similar for BICHP and ShieldingLEND - even without having to alter the neutron XML files. The major reactions of H1(n,G)H2 and protons from neutron elastic scattering with H1 are also similar without having to alter the 001_H_001.000 XML file. The depth dose in water for neutron energies less than 20 MeV for BICHP, Shielding and ShieldingLEND is the same. However, there is some issues above 20 MeV, please see below. The major difference between LEND and other physics is when there is a two body interaction. I saw this originally for B10(n,a)Li7 and editing the XML file for B10 fixed the problem. When we are considering neutrons higher than 20 MeV in water, additional two body interactions arise. These include O16(n,a+d)B11, O16(n,n+p+d)C13, O16(n,n+2a+d)Li6, etc. Consequently, the same incorrect output energies were seen in the water box for neutrons higher than 20 MeV. As such, I had to edit the O16 LEND data (008_O_016.000.XML) as well with the same particle mass defined in MCGIDI_mass.cc. After making this change to the XML file, the depth dose in water of ShieldingLEND matches Shielding for neutron energies higher than 20 MeV as expected. This problem may also exist for other nuclei, though I have only tested with updating the particle mass for H1, H2, O16, O17, O18, and B10 LEND XML files. ------------------------------------------------------------------ SUMMARY of the above block of text: I have found that editing the particle masses in LEND XML files for any reaction involving a two body reaction to match MCGIDI_mass.cc will provide comparable agreement with other physics lists. Other nuclei should be tested for inconsistencies. Question 1) Do you know if the GIDI code that works with LEND data has been updated in later versions of Geant4? Question 2) If it hasn't been updated, do you think it is appropriate to address this for the next version of Geant4? Possibly by updating the definitions in MCGIDI_mass.cc to match the current GND1.3 particle mass definitions that can be obtained from the ENDF database (which is the same those hosted from ftp://gdo-nuclear.ucllnl.org/)? Hi James, The GIDI code, specifically the nuclear masses, has not been updated since at least 2018, if not longer. SLAC and LLNL were working on this jointly, but the SLAC team lost funding, and also the person who was doing it. The LLNL team have not done much lately as they are waiting for their funding. To answer your second question, I think it is definitely worth doing the update, especially in light of your finding. I will contact the LLNL person responsible (Jerome Verbeke)to get his opinion. I expect he will agree, but not be forthcoming with manpower, at least until his grant comes through. Dennis We have not heard from the people who can do this update, so for now I will close this report. I hope the the funding for this will eventually come through. |
Created attachment 649 [details] Screenshots Hello, I am doing some simple simulations with mono energetic neutrons comparing hadronic physics lists including QGSP_BICHP, QGSP_BERTHP, QGSP_BICAllHP, QGSP_INCLXXHP, Shielding and ShieldingLEND. When I am using ShieldingLEND (which is Shielding but with LEND instead of HP data libraries), I have found some issues with boron capture energies. For a simple test, I used the ‘radioprotection’ example and a 1cm3 cube of natural boron (G4_B from NISTManager) in vacuum. I checked the output using /tracking/verbose 1 and saw that incorrect energies were being produced from the neutronInelastic process with Boron-10, the kinetic energy of the particles are double what they should be, please see ‘screenshot 1’ below. The neutron physics that is built when using ‘ShieldingLEND’ physics list option is shown in ‘screenshot 2’. For reference, the secondary product energies with the 94% B10(n,a)Li7 capture reaction should be alpha=1.47MeV, Li7=0.84MeV, gamma=0.478MeV. The Q value is 2.78MeV. We see that the gamma is correct (it is stated as a discrete energy in the ENDF/LEND data file), but alpha and Li7 seem to be doing some sort of energy balancing that is failing. I also tried other materials from NIST such as G4_BORON_CARBIDE and defining the B-10 isotope explicitly using G4Isotope with Z, N, A numbers. I also tried changing the temperature of the material: 0K, 273K, 300K but it was always the same result. It is occurring for all the monoenergetic neutrons I tested: 0.0025 eV, 0.1 eV, 1eV, 10 eV, 100eV, 1keV, 10keV, 100keV, 1MeV, 2MeV, 5MeV. Interestingly, the number of boron capture reactions per incident neutron is the same for Shielding and ShieldingLEND, just the output KE being different for alpha and Li7. I then thought that there may be a bug with the overlapping of many cross sections seen here for neutronInelastic. So I then used no prebuilt hadronic physics list and added the LEND model to the neutron inelastic process manually to force only this one to be used as shown above in ‘screenshot 3’. Unfortunately the same result was given for the boron capture reactions after this physics change. So this tells us that the incorrect energies is due to the LEND inelastic model or its data set. I have tested this using Geant4 versions: 10.4.p02, 10.5.p01, 10.6.p02. I have also tried on different operating systems: Mac OSX 10.15, CentOS 7 and CentOS 8. I have discussed with other users and they produce the same incorrect KE result independently in their simulations. Is anyone able to provide any information about this? Thank you very much in advance.