Problem 1964 - overflow in photon evaporation for Xe154
Summary: overflow in photon evaporation for Xe154
Status: RESOLVED FIXED
Alias: None
Product: Geant4
Classification: Unclassified
Component: processes/hadronic/models/de_excitation (show other problems)
Version: 10.3
Hardware: All All
: P4 normal
Assignee: Vladimir.Ivantchenko
URL:
Depends on:
Blocks:
 
Reported: 2017-04-11 13:45 CEST by Davide Mancusi
Modified: 2017-06-17 12:36 CEST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description Davide Mancusi 2017-04-11 13:45:51 CEST
I ran into an FPE yesterday with Geant4 v10.3.p01. Here is the interesting part of the backtrace:

(gdb) bt
#0  0x00002aaab2cf6c70 in G4LevelReader::LevelManager (this=this@entry=0x197c18d0, Z=Z@entry=54, A=A@entry=134, nlev=nlev@entry=0, infile=...)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4LevelReader.cc:553
#1  0x00002aaab2cf8cc8 in G4LevelReader::CreateLevelManagerNEW (this=0x197c18d0, Z=Z@entry=54, A=A@entry=134)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4LevelReader.cc:455
#2  0x00002aaab2cfca1d in G4NuclearLevelData::InitialiseForIsotope (this=this@entry=0x2aaab417baa0 <G4NuclearLevelData::GetInstance()::theData>, Z=54, A=134)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4NuclearLevelData.cc:409
#3  0x00002aaab2cfcab8 in G4NuclearLevelData::GetLevelManager (this=0x2aaab417baa0 <G4NuclearLevelData::GetInstance()::theData>, Z=54, A=<optimized out>)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/management/src/G4NuclearLevelData.cc:362
#4  0x00002aaab2d176a1 in G4PhotonEvaporation::InitialiseLevelManager (A=<optimized out>, Z=<optimized out>, this=0x197c17e0)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/include/G4PhotonEvaporation.hh:156
#5  G4PhotonEvaporation::GenerateGamma (this=this@entry=0x197c17e0, nucleus=nucleus@entry=0x1cb657d0)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4PhotonEvaporation.cc:271
#6  0x00002aaab2d193e3 in G4PhotonEvaporation::BreakUpChain (this=0x197c17e0, products=0x197c16f8, nucleus=0x1cb657d0)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/photon_evaporation/src/G4PhotonEvaporation.cc:148
#7  0x00002aaab2ca9daa in G4Evaporation::BreakFragment (this=0x197c1750, theResult=0x197c16f8, theResidualNucleus=0x1cb657d0)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/evaporation/src/G4Evaporation.cc:215
#8  0x00002aaab2cf26ea in G4ExcitationHandler::BreakItUp (this=0x197c1690, theInitialState=...)
    at /home/davide/src/geant4/geant4-official/geant4.10.03.p01/geant4.10.03.p01/source/processes/hadronic/models/de_excitation/handler/src/G4ExcitationHandler.cc:336

The FPE is actually an overflow within photon evaporation, and it is connected with Xe134, as you can see from the backtrace. The culprit is the following line (G4LevelReader.cc:553):

    fTime     *= fTimeFactor;

where

(gdb) p fTime
$40 = 1.83033999e+30
(gdb) p fTimeFactor
$41 = 1.44269504e+09

fTime and fTimeFactor are both floats, hence the overflow FPE. The value of fTime comes from the first line of data file PhotonEvaporation4.3.2/correlated_gamma/z54.a134:

   0  -        0 1.83034e+30   0.0   0

I ran the same code with v10.2.p03 and it works fine. Diffing the source files between v10.2.p03 and v10.3.p01 shows that fTime and fTimeFactor (along with some other attributes) have recently been demoted from double to float, which might explain the issue. Other isotopes are probably affected.

It should be possible to reproduce it by passing the following G4Fragment to G4PhotonEvaporation::BreakUpChain():

(gdb) p *nucleus
$44 = {theA = 134, theZ = 54, theExcitationEnergy = 5.6448892244516173, theGroundStateMass = 124704.68388613772, theMomentum = {pp = {
      dx = -1836.9722472263795, dy = 1060.5399372169402, dz = 1808.7782486594756, static tolerance = 2.22045e-14}, ee = 124741.48064700555,
    static tolerance = 2.22045e-14, static metric = 1}, thePolarization = 0x0, creatorModel = -1, numberOfParticles = 1, numberOfCharged = 0,
  numberOfHoles = 56, numberOfChargedHoles = 0, numberOfShellElectrons = 0, xLevel = 0, theParticleDefinition = 0x0, spin = 0, theCreationTime = 0,
  static minFragExcitation = 9.9999999999999991e-06}

Cheers,
Davide
Comment 1 Vladimir.Ivantchenko 2017-06-17 12:36:13 CEST
Hi Davide,

for 10.4beta the energy and the time of life inside internal nuclear level database are double and not float anymore.

Vladimir