TABLE OF CONTENTS
- 1. /initNucleus_in_PS
- 1.1. initNucleus_in_PS/improvedMC
- 1.2. initNucleus_in_PS/improvedMC_speedup
- 1.3. initNucleus_in_PS/HiTail
- 1.4. initNucleus_in_PS/determine_Fermi_momentum_by_binding_energy
- 1.5. initNucleus_in_PS/determine_Fermi_new_NucDLDA
- 1.6. initNucleus_in_PS/useEnergySF
- 1.7. initNucleus_in_PS/compressedFlag
- 1.8. initNucleus_in_PS/ScaleFactor
- 1.9. initNucleus_in_PS/useCdA
- 1.10. initNucleus_in_PS/z_shift
- 1.11. initNucleus_in_PS/zeroNucleusMomentum
- 1.12. initNucleus_in_PS/printMomDist
- 1.13. initNucleus_in_PS/init
- 1.14. initNucleus_in_PS/InitNucleus_in_PS
- 1.15. initNucleus_in_PS/initNucPhaseSpace
- 1.15.1. initNucPhaseSpace/chooseCharge
- 1.15.2. initNucPhaseSpace/choosePosition
- 1.15.3. initNucPhaseSpace/chooseMomentum
- 1.15.4. initNucPhaseSpace/chooseAbsMomentum
- 1.15.5. initNucPhaseSpace/boostIt
- 1.15.6. initNucPhaseSpace/chooseEnergySF
- 1.15.7. initNucPhaseSpace/reduceNucleusMomentum
- 1.15.8. initNucPhaseSpace/doPrintMomDist
- 1.16. initNucleus_in_PS/FermiMomCdA
/initNucleus_in_PS [ Modules ]
NAME
module initNucleus_in_PS
PURPOSE
Module which establishes the test-particle representation of a nucleus.
initNucleus_in_PS/improvedMC [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical,save :: improvedMC=.false.
PURPOSE
- If this flag is set to .true. then we use the information of the already initialized nucleons to decide on the position of a nucleon which has to be initialized.
- This prescription only works properly if the smearing width is really small. Therefore it is switched off by default.
initNucleus_in_PS/improvedMC_speedup [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
integer,save :: improvedMC_speedup=500
PURPOSE
- If improvedMC is set to .true. then this variable defines the speedup of the algorithm.
- The number defines how often the density field is updated.
- A large value of this parameter yields a less accurate test-particle distribution and a faster initialization.
initNucleus_in_PS/HiTail [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical,save :: HiTail = .false.
PURPOSE
If HiTail is set to .true., then a simple parametrization of n(p) is used to initialize the nucleon momenta (cf. function chooseAbsMomentum for details).
initNucleus_in_PS/determine_Fermi_momentum_by_binding_energy [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: determine_Fermi_momentum_by_binding_energy=.false.
PURPOSE
If set to .true., the Fermi momentum will determined by E_B=p_f**2/(2m)+U(rho,p_F), where E_B is the binding energy per nucleon.
initNucleus_in_PS/determine_Fermi_new_NucDLDA [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: determine_Fermi_new_NucDLDA=.false.
PURPOSE
If set to .true., the Fermi momentum will be set to a value such that there are no unbound nucleons at the initialisation.
initNucleus_in_PS/useEnergySF [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: useEnergySF=.false.
PURPOSE
If set to .true., then a spectral function is used to choose the energy.
initNucleus_in_PS/compressedFlag [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: compressedFlag=.false.
PURPOSE
If set to .true., then a spherically deformed nucleus is initialized (isotropic compression/expansion; protons & neutrons in phase). This type of deformation corresponds to a giant-monopol resonance mode.
initNucleus_in_PS/ScaleFactor [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
Real, save :: ScaleFactor=1.
PURPOSE
If compressedFlag=.true., then rescale coordinates by ScaleFactor.
initNucleus_in_PS/useCdA [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: useCdA = .false.
PURPOSE
Instead of the usual momentum distribution according a fermi gas, use the momentum parametrizations as given in:
- C. Ciofi degli Ati, S. Simula, PRC 53, 1689 (1996)
These exist only for 2H,3He,4He,12C,160 40Ca,56Fe,208Pb
initNucleus_in_PS/z_shift [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
real, parameter :: z_shift = 100.
PURPOSE
Artificial shift along z-axis between projectile & target nuclei to avoid overlapping between them when the density is updated.
NOTES
Relevant only for heavy-ion collisions.
initNucleus_in_PS/zeroNucleusMomentum [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: zeroNucleusMomentum = .true.
PURPOSE
Indicate whether a procedure should be called to try to find a momentum init where the sum of all nucleon momenta (per ensemble) is zero (or at least close to zero).
At the moment, only a hill climbing algorithm is available, which changes the directions of the momenta randomly. The resulting averaged nucleus momentum is in the order of 10 MeV.
Without that, the average nucleus momentum goes ~0.17GeV*sqrt(A).
(Applies only for A>2.)
initNucleus_in_PS/printMomDist [ Global module-variables ]
[ Top ] [ initNucleus_in_PS ] [ Global module-variables ]
SOURCE
logical, save :: printMomDist = .false.
PURPOSE
Flag to indicate, whether momentum distribution is written to file
initNucleus_in_PS/init [ Subroutines ]
[ Top ] [ initNucleus_in_PS ] [ Subroutines ]
NAME
subroutine init
PURPOSE
initialize the module
initNucleus_in_PS/InitNucleus_in_PS [ Namelists ]
[ Top ] [ initNucleus_in_PS ] [ Namelists ]
NAME
Namelist /InitNucleus_in_PS/
PURPOSE
Includes the switches:
- improvedMC
- improvedMC_speedup
- HiTail
- determine_Fermi_momentum_by_binding_energy
- determine_Fermi_new_NucDLDA
- useEnergySF
- compressedFlag
- ScaleFactor
- useCdA
- zeroNucleusMomentum
- printMomDist
initNucleus_in_PS/initNucPhaseSpace [ Subroutines ]
[ Top ] [ initNucleus_in_PS ] [ Subroutines ]
NAME
subroutine initNucPhaseSpace(teilchen,nuc)
PURPOSE
Represents nucleus 'nuc' in phase space by testparticles which are stored in vector 'teilchen'. The ordering in the vector teilchen is choosen to be random.
bahaviour according mass:
- A=1: Elementary event, no fermi motion.
- A=2,Z=1: We call the deuterium routine, which does a special momentum distribitution.
- A>2: Uses fermi gas distribution of nucleons for all nuclei.
NOTES
- For A>2 it is checked that the radius of the nucleus is properly initialized.
- The particles are initialized with %pert=.false. since all nuclei must be in the real particle vector.
- All nucleons in a nucleus get the same "%event" number. This variable is raised by one after each nucleus-initialization. Therefore the first nucleus gets "%event=1", the second "%event=2" and so on...
INPUTS
OUTPUT
- type(particle),dimension(:,:),intent(inout) :: teilchen
initNucPhaseSpace/chooseCharge [ Functions ]
[ Top ] [ initNucPhaseSpace ] [ Functions ]
NAME
integer function chooseCharge(k)
PURPOSE
Choose randomly the charge of a nucleon
initNucPhaseSpace/choosePosition [ Functions ]
[ Top ] [ initNucPhaseSpace ] [ Functions ]
NAME
function choosePosition() result(r)
PURPOSE
initNucPhaseSpace/chooseMomentum [ Subroutines ]
[ Top ] [ initNucPhaseSpace ] [ Subroutines ]
NAME
subroutine chooseMomentum(part)
PURPOSE
initNucPhaseSpace/chooseAbsMomentum [ Functions ]
[ Top ] [ initNucPhaseSpace ] [ Functions ]
NAME
real function chooseAbsMomentum
PURPOSE
return the absolute value of the momentum in units of pFermi
NOTES
we have to initalize according p^2*n(p) !!!
normally the value of p lies between 0 and 1 and n(p)=1.
Via the flag 'HiTail' you can switch into a mode, where the distribution n(p) is given by * 0.83 for p = 0 .. 1 * h*exp(-A*p)/p^2 for p > 1 .
The functional form of the tail is choosen to allow for simple random number generation.
The slope parameter of the tail is fitted to calculations of Kalok
initNucPhaseSpace/boostIt [ Subroutines ]
[ Top ] [ initNucPhaseSpace ] [ Subroutines ]
NAME
subroutine boostIt(nucl, part)
PURPOSE
initNucPhaseSpace/chooseEnergySF [ Subroutines ]
[ Top ] [ initNucPhaseSpace ] [ Subroutines ]
NAME
subroutine chooseEnergySF
PURPOSE
set the energies and masses of the realparticles according to a recipe of Ankowski et al (arXiv:0711.2031v2). The energy is choosen according to a spectral function for the initial state nucleons which accounts for the shell structure.
NOTES
- Only implemented for oxygen!
- This does not affect the momentum distribution!
initNucPhaseSpace/reduceNucleusMomentum [ Subroutines ]
[ Top ] [ initNucPhaseSpace ] [ Subroutines ]
NAME
subroutine reduceNucleusMomentum
PURPOSE
This routine loops over all all nucleons and replaces rnadomly the direction of the nucleon momentum, if the nucleus momentum (i.e. the sum over all nucleon momenta in this ensemble) gets smaller by this. The number of loops is chosen as 'const/A'.
The resulting averaged nucleus momentum is ~ 10MeV.
initNucPhaseSpace/doPrintMomDist [ Subroutines ]
[ Top ] [ initNucPhaseSpace ] [ Subroutines ]
NAME
subroutine doPrintMomDist
PURPOSE
write out the momentum distribution
initNucleus_in_PS/FermiMomCdA [ Functions ]
[ Top ] [ initNucleus_in_PS ] [ Functions ]
NAME
real function FermiMomCdA(nucA,k)
PURPOSE
calculate the parametrizations according:
- C. Ciofi degli Ati, S. Simula, PRC 53, 1689 (1996)
These exist only for 2H,3He,4He,12C,160 40Ca,56Fe,208Pb
INPUTS
- integer :: nucA -- the size of the nucleus
- real :: k -- the momentum in GeV
OUTPUT
The function value n(k) in fm^3