TABLE OF CONTENTS
- 1. /densitymodule
- 1.1. densitymodule/densitySwitch
- 1.2. densitymodule/linearInterpolation
- 1.3. densitymodule/gridSize
- 1.4. densitymodule/gridPoints
- 1.5. densitymodule/gridSpacing
- 1.6. densitymodule/densityInput_proton
- 1.7. densitymodule/densityInput_neutron
- 1.8. densitymodule/setnewsmearing
- 1.9. densitymodule/newsmearing
- 1.10. densitymodule/numberLargePoints
- 1.11. densitymodule/init
- 1.12. densitymodule/initDensity
- 1.13. densitymodule/acceptGrid
- 1.14. densitymodule/getBaryonDensity
- 1.15. densitymodule/densityAt
- 1.16. densitymodule/updateDensity
- 1.16.1. updateDensity/initDensityWeights
- 1.16.2. updateDensity/FillStaticDensity
- 1.17. densitymodule/storeFields
- 1.18. densitymodule/updateRMF
- 1.19. densitymodule/energyDeterminationRMF
- 1.20. densitymodule/Particle4Momentum_RMF
- 1.21. densitymodule/true4Momentum_RMF
- 1.22. densitymodule/get_densitySwitch
- 1.23. densitymodule/get_realGridSpacing
- 1.24. densitymodule/getGridSpacing
- 1.25. densitymodule/getGridPoints
- 1.26. densitymodule/GetGridIndex
- 1.27. densitymodule/boostToLRF
- 1.28. densitymodule/fermiMomentum_sym
- 1.29. densitymodule/fermiMomentum_noIsospin
- 1.30. densitymodule/FermiMomAt
- 1.31. densitymodule/writeDensityPlane
/densitymodule [ Modules ]
NAME
module densitymodule
PURPOSE
Administrates the calculation of the density.
densitymodule/densitySwitch [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
integer, save :: densitySwitch=1
PURPOSE
This switch decides whether the density is static or dynamic during the run. ("Static" makes sense only for fixed target scenarios!)
One can use a static density if the nucleus stays roughly in its ground state during the collision.
possible values:
- 0: Density is set to 0.
- 1: Dynamic density according to test-particle distribution.
- 2: Static density (not for heavy-ion collisions).
- 3: Resting matter: Density is given by the two input parameters "densityInput_neutron" and "densityInput_proton".
densitymodule/linearInterpolation [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
logical, save :: linearInterpolation = .true.
PURPOSE
If this switch is 'true', then the dynamic-density mode uses linear interpolation to determine the density in between the gridpoints.
densitymodule/gridSize [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
real, dimension(1:3), save, public :: gridSize = (/12.,12.,12./)
PURPOSE
Size of density grid in fm.
densitymodule/gridPoints [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
integer, dimension(1:3), save, public :: gridPoints = (/30,30,30/)
PURPOSE
Number of gridpoints in each space direction.
densitymodule/gridSpacing [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
real, dimension(1:3), save, public :: gridSpacing = 1.
PURPOSE
Spacing of the grid in each dimension, determined by gridSize/gridPoints.
densitymodule/densityInput_proton [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
real, save :: densityInput_proton=0.084
PURPOSE
Assumed proton density if densitySwitch=3
densitymodule/densityInput_neutron [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
real, save :: densityInput_neutron=0.084
PURPOSE
Assumed neutron density if densitySwitch=3
densitymodule/setnewsmearing [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
logical, save :: setnewsmearing=.false.
PURPOSE
Readjust the smearing to a different width if .true.
densitymodule/newsmearing [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
real, save :: newsmearing=1.
PURPOSE
Use a smearing width as in a grid wtih newsmearing times the gridspacing
densitymodule/numberLargePoints [ Global module-variables ]
[ Top ] [ densitymodule ] [ Global module-variables ]
SOURCE
integer, save, public :: numberLargePoints=2
PURPOSE
Number of points which are considered to the left and right to smear density on
densitymodule/init [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine init
PURPOSE
read the namelist, initalize (parts of) the module
densitymodule/initDensity [ Namelists ]
[ Top ] [ densitymodule ] [ Namelists ]
NAME
NAMELIST /initDensity/
PURPOSE
Includes the input switches and variables:
- densitySwitch
- linearInterpolation
- densityInput_proton
- densityInput_neutron
- gridSize
- gridPoints
- setnewsmearing
- newsmearing
- numberLargePoints
densitymodule/acceptGrid [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine acceptGrid(GridSpacing_x,GridSpacing_y,GridSpacing_z)
PURPOSE
Accepts the grid spacings and recalculates the numbers of points in each direction. Needed for relativistic HIC, when initial nuclei are Lorentz-contracted. Called from the module initHeavyIon.
densitymodule/getBaryonDensity [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
real function getBaryonDensity (pos)
PURPOSE
Evaluate the baryon density at a certain position.
densitymodule/densityAt [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
type(dichte) function densityAt(r)
PURPOSE
Evaluate density at some space-point r.
INPUTS
- real, dimension(1:3), intent(in) :: r --- position where density should be calculated
densitymodule/updateDensity [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
subroutine updateDensity(parts)
PURPOSE
Updates the vector densityField which is used by densityAt and stores the density of the testparticles.
INPUTS
- type(particle) parts(:,:)
NOTE This routine does not gets faster when using OpenMP.
updateDensity/initDensityWeights [ Functions ]
[ Top ] [ updateDensity ] [ Functions ]
NAME
subroutine initDensityWeights
PURPOSE
- Initializes weights which are used to evaluate the densities at the gridpoints.
- Each particle has some coordinate off the gridpoints. Therefore it is needed to define weights which tell how much a particle at position r contributes to the ith grid point. The particle are smeared with a gaussian distribution.
- The width is chosen such that it is equal to the maximum of the gridspacings.
INPUTS
- type(particle) Parts(:,:)
USES
- idTable, particleDefinition
updateDensity/FillStaticDensity [ Functions ]
[ Top ] [ updateDensity ] [ Functions ]
NAME
subroutine FillStaticDensity
PURPOSE
In the case of static density, this fills the fields densityField and totalDensity with values of the density parametrization. Needed in the case of RMF calculations and also for Coulomb potential.
densitymodule/storeFields [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine storeFields
PURPOSE
Store the old values of the omega, rho and density fields.
densitymodule/updateRMF [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine updateRMF(Parts)
PURPOSE
Updates the sigmaField which is needed when the propagation with the RMF is done. Updates also the baryon velocities which are needed in the subsequent updating of the baryon 4-current by the subroutine updateDensity.
INPUTS
- type(particle), dimension(:,:) :: Parts
USES
idTable, particleDefinition,RMF,ADI,constants
NOTES
The scalarDensity is computed as well.
densitymodule/energyDeterminationRMF [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine energyDeterminationRMF(Parts)
PURPOSE
This subroutine determines the one-particle energy E^*, which is the zeroth component of the kinetic four-momentum in the frame, where the space components of the kinetic four-momentum are given.
INPUTS
- type(particle),intent(inOut) :: Parts ! Particle whose energy should be calculated.
NOTES
Should be used in RMF-mode. Please, notice, that not the full single-particle energy is computed here. The vector field contribution is missed in E^*.
densitymodule/Particle4Momentum_RMF [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine Particle4Momentum_RMF(teilchen,momentum)
PURPOSE
This subroutine determines the canonical four-momentum in computational frame (i.e. where mesonic mean fields are given).
INPUTS
- type(particle),intent(in) :: teilchen ! Particle
OUTPUT
NOTES
Should be used in RMF-mode. It is supposed, that the kinetic four-momentum of the particle is already determined by the subroutine energyDeterminationRMF earlier. Electromagnetic part is not included.
densitymodule/true4Momentum_RMF [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine true4Momentum_RMF(teilchen,momentum,inside_grid_flag)
PURPOSE
This subroutine determines the "true" sigle-particle 4-momentum, i.e. the 4-momentum which is additive to produce the total 4-momentum of the system in the computational frame.
INPUTS
OUTPUT
- real, dimension(0:3), intent(out) :: momentum ! "true" 4-momentum of the particle
- logical, optional, intent(out) :: inside_grid_flag ! .true. if the particle is inside grid ! .false. otherwise
NOTES
- Should be used in RMF-mode. The input particle kinetic 4-momentum must be given in the computational frame (where the density field is defined).
- Formula for the fieldenergy updated; gradient terms replaced the corresponding sources using the meson-field equations and partial integrations.
densitymodule/get_densitySwitch [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
function get_densitySwitch()
PURPOSE
If not yet done, reads input from jobcard and then returns densitySwitch.
densitymodule/get_realGridSpacing [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
function get_realGridSpacing()
PURPOSE
returns GridSize
RESULT
real, dimension(1:3) gridSize in units of fermi
densitymodule/getGridSpacing [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
function getGridSpacing()
PURPOSE
Evaluates GridSize for Derivatives.
RESULT
real, dimension(1:3) gridSize in units of fermi
densitymodule/getGridPoints [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
function getGridPoints()
PURPOSE
returns GridPoints
RESULT
integer, dimension(1:3) gridPoints in units of fermi
densitymodule/GetGridIndex [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
logical function GetGridIndex(r,ind,add)
PURPOSE
Returns .false. if the point is outside the grid (then 'ind' is invalid). Otherwise 'ind' is the index of the corresponding coordinate.
NOTES
The first tests according the real grid size is necessary, since it may give integer overfloats, if one only checks the integer values.
densitymodule/boostToLRF [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
subroutine boostToLRF (teilchen, switch, density)
PURPOSE
Boosts particle between "Local Rest Frame (LRF)" and "calculation frame (CF)".
INPUTS
- type(particle), intent(inout) :: teilchen ! Particle which is to be boosted
- integer, intent(in) :: switch ! 1= boost from CF to LRF ! 2= boost from LRF to CF
NOTES
The LRF is the frame in which the baryon current vanishes. If the density is very small, then no boost takes place.
densitymodule/fermiMomentum_sym [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
real function fermiMomentum_sym(rho)
PURPOSE
Evaluate the fermi momentum for symmetric nuclear matter. Assumption: rho_p=rho_n !!!
INPUTS
- real, intent(in) :: rho ! density in fm^-3
RESULT
densitymodule/fermiMomentum_noIsospin [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
real function fermiMomentum_noIsospin(rho)
PURPOSE
Evaluate the fermi momentum for a gas of fermions.
INPUTS
- real, intent(in) :: rho ! density in fm^-3 (ATTENTION: Do not use rho(nucleon) but rho(proton) or rho(neutron)
RESULT
densitymodule/FermiMomAt [ Functions ]
[ Top ] [ densitymodule ] [ Functions ]
NAME
real function FermiMomAt(pos,charge)
PURPOSE
calculate the fermi momentum at some position. If no charge is given it uses the averaged proton/neutron densities, otherwise it uses the corresponding isospin channel
INPUTS
- real, dimension(1:3) :: pos -- the space coordinates
- integer, OPTIONAL :: charge -- the isospin channel
densitymodule/writeDensityPlane [ Subroutines ]
[ Top ] [ densitymodule ] [ Subroutines ]
NAME
PURPOSE
Write the density to a file as cuts according some planes
INPUTS
- character*(*) :: fName -- name of file to write to
- integer :: iPlane -- selection of plane to write (see below)
possible values for iPlane:
- 1: yz-plane (through origin)
- 2: xz-plane (through origin)
- 3: xy-plane (through origin)