1
!% Contains a module which implements a isothermal halo spin distribution.
3
module Dark_Matter_Profiles_Concentrations_Gao20008
4
!% Implements a isothermal halo spin distribution.
7
public :: Dark_Matter_Concentrations_Gao20008_Initialize
11
!# <darkMatterConcentrationMethod>
12
!# <unitName>Dark_Matter_Concentrations_Gao20008_Initialize</unitName>
13
!# </darkMatterConcentrationMethod>
14
subroutine Dark_Matter_Concentrations_Gao20008_Initialize(darkMatterConcentrationMethod,Dark_Matter_Profile_Concentration_Get)
15
!% Initializes the ``Gao 2008'' halo concentration module.
16
use ISO_Varying_String
18
type(varying_string), intent(in) :: darkMatterConcentrationMethod
19
procedure(), pointer, intent(inout) :: Dark_Matter_Profile_Concentration_Get
21
if (darkMatterConcentrationMethod == 'Gao 2008') Dark_Matter_Profile_Concentration_Get => Dark_Matter_Profile_Concentration_Gao2008
24
end subroutine Dark_Matter_Concentrations_Gao20008_Initialize
26
double precision function Dark_Matter_Profile_Concentration_Gao2008(thisNode)
27
!% Returns the concentration of the dark matter profile of {\tt thisNode} using the method of \cite{gao_redshift_2008}. More
28
!% specifically, we fit the redshift dependence of the parameters $A$ and $B$ in the fitting formula of
29
!% \cite{gao_redshift_2008} and use these fits to find $A$ and $B$ at any given redshift, from which we then compute the
30
!% concentration. Note that the fits of \cite{gao_redshift_2008} were computed using Einasto profile fits and utilizing
31
!% $M_{200}$ and $c_{200}$.
34
use Cosmology_Functions
36
type(treeNode), intent(inout), pointer :: thisNode
37
double precision, parameter :: littleHubbleConstantGao2008=0.73d0
38
double precision :: logarithmHaloMass,logarithmExpansionFactor,parameterA,parameterB
40
logarithmHaloMass =dlog10(littleHubbleConstantGao2008*Tree_Node_Mass(thisNode) )
41
logarithmExpansionFactor =dlog10(Expansion_Factor( Tree_Node_Time(thisNode)))
42
parameterA =-0.140d0*dexp(-((logarithmExpansionFactor+0.05d0)/0.35d0)**2)
43
parameterB = 2.646d0*dexp(-((logarithmExpansionFactor+0.00d0)/0.50d0)**2)
44
Dark_Matter_Profile_Concentration_Gao2008=10.0d0**(parameterA*logarithmHaloMass+parameterB)
46
end function Dark_Matter_Profile_Concentration_Gao2008
48
end module Dark_Matter_Profiles_Concentrations_Gao20008