TABLE OF CONTENTS
- 1. /CollHistory
- 1.1. CollHistory/CollHistEntry
- 1.2. CollHistory/CollHistArray
- 1.3. CollHistory/CollList
- 1.4. CollHistory/DoCollHistory
- 1.5. CollHistory/collHistory
- 1.6. CollHistory/CollHist_GetDoCollHistory
- 1.7. CollHistory/DoInit
- 1.8. CollHistory/CollHist_SetSize
- 1.9. CollHistory/CollHist_ClearArray
- 1.10. CollHistory/CollHist_UpdateHist
- 1.11. CollHistory/CollHist_DoGBC
- 1.12. CollHistory/CollHist_WriteList
- 1.13. CollHistory/CollHist_WriteHistParticle
- 1.14. CollHistory/CollHist_GetV
- 1.15. CollHistory/CollHist_ClassifyHist
/CollHistory [ Modules ]
NAME
module CollHistory
PURPOSE
Here we can store for debugging purposes the full collision history of every (perturbative) particle from the particle vector
Every collision type is stored in a list of type tPreEvList (In fact 1-Body, 2-Body and 3-Body collisions are stored in three independent lists). We identify the collision type by its position in the list. Additionally we encode the "list" by modifying the iEntry value:
- 1-Body: iEntry = iEntry (range: 1 ... 10000)
- 2-Body: iEntry = -iEntry
- 3-Body: iEntry = iEntry + 10000
Therefore for every collision type the (modified) iEntry represents an unique code number.
For each particle in the perturbative particle vector we store now in an additional array the code numbers of the corresponding collition types. This array has the same dimensions as the perturbative particle vector + one additional dimension -- the subsequent collision type codes.
In a collision we have therefore to delete the array entry of the incoming perturbative particle and to create for every final state particle an entry in the array which has one more entry in the third dimension than the array of the incoming particle. (We use the information from insertion/setIntoVector, where the particles were inserted.)
Doing a Garbage Collection on the perturbative particle vector also reshuffles the entries. This has to be respected.
On could think of enhancing the actual stored information by maybe also storing...:
- the HiEnergy type of the collision (this would be an additional field in the PreEvListEntry)
- the time of the collision (this would be an additional field in CollHistEntry)
CollHistory/CollHistEntry [ Types ]
[ Top ] [ CollHistory ] [ Types ]
SOURCE
type CollHistEntry integer, allocatable :: Entries(:) end type CollHistEntry
PURPOSE
The type to store the collision history. The entries are the codes for the collsion types. The size of the array corresponds to the generation.
CollHistory/CollHistArray [ Global module-variables ]
[ Top ] [ CollHistory ] [ Global module-variables ]
SOURCE
type(CollHistEntry), allocatable :: CollHistArray(:,:)
PURPOSE
The global array of the size of the perturbative particle vector, which holds all Collision History information
CollHistory/CollList [ Global module-variables ]
[ Top ] [ CollHistory ] [ Global module-variables ]
SOURCE
type(tPreEvList), save :: CollList1, CollList2, CollList3
PURPOSE
The list to store the 1Body, 2Body and 3Body collision types.
CollHistory/DoCollHistory [ Global module-variables ]
[ Top ] [ CollHistory ] [ Global module-variables ]
SOURCE
logical, save :: DoCollHistory = .false.
PURPOSE
Flag to switch on/off the whole Collision History machinery.
You may set this variable via your jobcard, namelist "collHistory"
CollHistory/collHistory [ Namelists ]
[ Top ] [ CollHistory ] [ Namelists ]
NAME
NAMELIST collHistory
PURPOSE
Includes the switches:
CollHistory/CollHist_GetDoCollHistory [ Functions ]
[ Top ] [ CollHistory ] [ Functions ]
NAME
logical function CollHist_GetDoCollHistory
PURPOSE
return value of DoCollHistory
CollHistory/DoInit [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine DoInit
PURPOSE
Do the init of this module.
INPUTS
- via namelist "collHistory"
OUTPUT
- memory is allocated, no explicit output
CollHistory/CollHist_SetSize [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_SetSize(sizes,localflag)
PURPOSE
Prepare the init of this module by storing the size of the perturbtive particle vector.
INPUTS
- integer, dimension(2) :: sizes -- corresponds to ubound(PertParticles)
OUTPUT
- (none)
NOTES
This routine has to been called before DoInit in order to set the size of the array.
CollHistory/CollHist_ClearArray [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_ClearArray()
PURPOSE
Clears the used CollHistArray. Necessary after every run/in every Init call
INPUTS
- (none)
OUTPUT
- (none)
NOTES
The lists of collisions types are unchanged.
CollHistory/CollHist_UpdateHist [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_UpdateHist(partIn, partOut, posIn, posOut, weight)
PURPOSE
This is the major routine doing all the work for keeping the history of all particles up to date:
- store the collision type in the corresponding list (if necessary)
- remove history for incoming particle
- enhance history for all (stored) outgoing particles
INPUTS
- type(particle), dimension(:) :: partIn -- incoming particles
- type(particle), dimension(:) :: partOut-- outgoing particles
- integer, dimension(2) :: posIn -- (iEns,iPart) of incoming particles
- integer, dimension(:,:) :: posOut -- (iEns,iPart) of outgoing particles (the array has to be as (2,:))
- real :: weight -- perweight of the incoming perturbative particle
OUTPUT
- internal arrays and lists modified.
CollHistory/CollHist_DoGBC [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_DoGBC(iEns,iPart1,iPart2)
PURPOSE
This routine replays modifications done by insertion/GarbageCollection: The information of (iEns,iPart2) has to be moved to (iEns,iPart1)
INPUTS
OUTPUT
- internal arrays modified.
CollHistory/CollHist_WriteList [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_WriteList(fak)
PURPOSE
Write all the collision type lists to files.
INPUTS
- real :: fak -- faktor to multiply the weights with
OUTPUT
- files written
CollHistory/CollHist_WriteHistParticle [ Subroutines ]
[ Top ] [ CollHistory ] [ Subroutines ]
NAME
subroutine CollHist_WriteHistParticle(iFile,iEns,iPart)
PURPOSE
Write the history of a specific particle to a file
INPUTS
- integer :: ifile -- file to be used
- integer :: iEns, iPart -- coordinates of the particle in the particle vector
OUTPUT
- information written to file
CollHistory/CollHist_GetV [ Functions ]
[ Top ] [ CollHistory ] [ Functions ]
NAME
logical function CollHist_GetV(iEntry, V, nIn)
PURPOSE
with Entry code as input return the corresponding History entry
INPUTS
- integer :: iEntry -- history code
OUTPUT
- type(tPreEvListEntry) :: V -- The PreEvList
- integer :: nIn -- number of incoming particles (1-Body,2-Body,3-Body)
- function value: .true. on success
CollHistory/CollHist_ClassifyHist [ Functions ]
[ Top ] [ CollHistory ] [ Functions ]
NAME
integer function CollHist_ClassifyHist(iEns,iPart)
PURPOSE
...
INPUTS
OUTPUT
- function value
NOTES