Skip to content

Commit

Permalink
feat: Add output of the transfer function in the power spectrum task
Browse files Browse the repository at this point in the history
  • Loading branch information
abensonca committed Aug 6, 2021
1 parent 46ad368 commit c07eb99
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions source/tasks.power_spectrum.F90
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use :: Power_Spectra , only : powerSpectrumClass
use :: Power_Spectra_Nonlinear , only : powerSpectrumNonlinearClass
use :: Power_Spectrum_Window_Functions, only : powerSpectrumWindowFunctionClass
use :: Transfer_Functions , only : transferFunctionClass

!![
<task name="taskPowerSpectra">
Expand All @@ -39,6 +40,7 @@
class (cosmologyParametersClass ), pointer :: cosmologyParameters_ => null()
class (cosmologyFunctionsClass ), pointer :: cosmologyFunctions_ => null()
class (linearGrowthClass ), pointer :: linearGrowth_ => null()
class (transferFunctionClass ), pointer :: transferFunction_ => null()
class (powerSpectrumClass ), pointer :: powerSpectrum_ => null()
class (powerSpectrumNonlinearClass ), pointer :: powerSpectrumNonlinear_ => null()
class (powerSpectrumWindowFunctionClass ), pointer :: powerSpectrumWindowFunction_ => null()
Expand Down Expand Up @@ -74,6 +76,7 @@ function powerSpectraConstructorParameters(parameters) result(self)
class (cosmologyParametersClass ), pointer :: cosmologyParameters_
class (cosmologyFunctionsClass ), pointer :: cosmologyFunctions_
class (linearGrowthClass ), pointer :: linearGrowth_
class (transferFunctionClass ), pointer :: transferFunction_
class (powerSpectrumClass ), pointer :: powerSpectrum_
class (powerSpectrumNonlinearClass ), pointer :: powerSpectrumNonlinear_
class (powerSpectrumWindowFunctionClass), pointer :: powerSpectrumWindowFunction_
Expand Down Expand Up @@ -118,6 +121,7 @@ function powerSpectraConstructorParameters(parameters) result(self)
<objectBuilder class="cosmologyParameters" name="cosmologyParameters_" source="parameters"/>
<objectBuilder class="cosmologyFunctions" name="cosmologyFunctions_" source="parameters"/>
<objectBuilder class="linearGrowth" name="linearGrowth_" source="parameters"/>
<objectBuilder class="transferFunction" name="transferFunction_" source="parameters"/>
<objectBuilder class="powerSpectrum" name="powerSpectrum_" source="parameters"/>
<objectBuilder class="powerSpectrumNonlinear" name="powerSpectrumNonlinear_" source="parameters"/>
<objectBuilder class="powerSpectrumWindowFunction" name="powerSpectrumWindowFunction_" source="parameters"/>
Expand All @@ -133,6 +137,7 @@ function powerSpectraConstructorParameters(parameters) result(self)
& cosmologyParameters_ , &
& cosmologyFunctions_ , &
& linearGrowth_ , &
& transferFunction_ , &
& powerSpectrum_ , &
& powerSpectrumNonlinear_ , &
& powerSpectrumWindowFunction_, &
Expand All @@ -144,6 +149,7 @@ function powerSpectraConstructorParameters(parameters) result(self)
<objectDestructor name="cosmologyParameters_" />
<objectDestructor name="cosmologyFunctions_" />
<objectDestructor name="linearGrowth_" />
<objectDestructor name="transferFunction_" />
<objectDestructor name="powerSpectrum_" />
<objectDestructor name="powerSpectrumNonlinear_" />
<objectDestructor name="powerSpectrumWindowFunction_"/>
Expand All @@ -162,6 +168,7 @@ function powerSpectraConstructorInternal( &
& cosmologyParameters_ , &
& cosmologyFunctions_ , &
& linearGrowth_ , &
& transferFunction_ , &
& powerSpectrum_ , &
& powerSpectrumNonlinear_ , &
& powerSpectrumWindowFunction_, &
Expand All @@ -176,6 +183,7 @@ function powerSpectraConstructorInternal( &
class (cosmologyParametersClass ), intent(in ), target :: cosmologyParameters_
class (cosmologyFunctionsClass ), intent(in ), target :: cosmologyFunctions_
class (linearGrowthClass ), intent(in ), target :: linearGrowth_
class (transferFunctionClass ), intent(in ), target :: transferFunction_
class (powerSpectrumClass ), intent(in ), target :: powerSpectrum_
class (powerSpectrumNonlinearClass ), intent(in ), target :: powerSpectrumNonlinear_
class (powerSpectrumWindowFunctionClass), intent(in ), target :: powerSpectrumWindowFunction_
Expand All @@ -186,7 +194,7 @@ function powerSpectraConstructorInternal( &
logical , intent(in ) :: includeNonLinear
type (varying_string ), intent(in ) :: outputGroup
!![
<constructorAssign variables="wavenumberMinimum, wavenumberMaximum, pointsPerDecade, includeNonLinear, outputGroup,*cosmologyParameters_,*cosmologyFunctions_,*linearGrowth_,*powerSpectrum_,*powerSpectrumNonlinear_,*powerSpectrumWindowFunction_,*cosmologicalMassVariance_, *outputTimes_"/>
<constructorAssign variables="wavenumberMinimum, wavenumberMaximum, pointsPerDecade, includeNonLinear, outputGroup,*cosmologyParameters_,*cosmologyFunctions_,*linearGrowth_,*transferFunction_,*powerSpectrum_,*powerSpectrumNonlinear_,*powerSpectrumWindowFunction_,*cosmologicalMassVariance_, *outputTimes_"/>
!!]

return
Expand All @@ -203,6 +211,7 @@ subroutine powerSpectraDestructor(self)
<objectDestructor name="self%cosmologyParameters_" />
<objectDestructor name="self%cosmologyFunctions_" />
<objectDestructor name="self%linearGrowth_" />
<objectDestructor name="self%transferFunction_" />
<objectDestructor name="self%powerSpectrum_" />
<objectDestructor name="self%powerSpectrumNonlinear_" />
<objectDestructor name="self%powerSpectrumWindowFunction_"/>
Expand Down Expand Up @@ -237,7 +246,7 @@ subroutine powerSpectraPerform(self,status)
double precision , allocatable , dimension(:,:) :: powerSpectrumNonLinear , sigmaNonLinear , &
& sigma , sigmaGradient , &
& powerSpectrumLinear , growthFactor , &
& growthFactorLogDerivative
& growthFactorLogDerivative, transferFunction
double precision :: wavenumberMinimum , wavenumberMaximum
type (integrator ) :: integrator_
type (hdf5Object ) :: outputsGroup , outputGroup , &
Expand All @@ -252,6 +261,7 @@ subroutine powerSpectraPerform(self,status)
! Allocate arrays for power spectra.
call allocateArray(wavenumber ,[wavenumberCount ])
call allocateArray(powerSpectrumLinear ,[wavenumberCount,outputCount])
call allocateArray(transferFunction ,[wavenumberCount,outputCount])
call allocateArray(massScale ,[wavenumberCount ])
call allocateArray(sigma ,[wavenumberCount,outputCount])
call allocateArray(sigmaGradient ,[wavenumberCount,outputCount])
Expand Down Expand Up @@ -288,6 +298,8 @@ subroutine powerSpectraPerform(self,status)
growthFactorLogDerivative(iWavenumber,iOutput)=self%linearGrowth_ %logarithmicDerivativeExpansionFactor(time=self%outputTimes_%time(iOutput),wavenumber=wavenumber(iWavenumber))
! Compute power spectrum.
powerSpectrumLinear (iWavenumber,iOutput)=+self%powerSpectrum_ %power (time=self%outputTimes_%time(iOutput),wavenumber=wavenumber(iWavenumber))
! Compute transfer function.
transferFunction (iWavenumber,iOutput)=+self%transferFunction_ %value ( wavenumber=wavenumber(iWavenumber))
! Compute fluctuation on this mass scale.
sigma (iWavenumber,iOutput)=+self%cosmologicalMassVariance_%rootVariance (time=self%outputTimes_%time(iOutput),mass =massScale (iWavenumber))
! Compute gradient of mass fluctuations.
Expand Down Expand Up @@ -333,6 +345,7 @@ subroutine powerSpectraPerform(self,status)
call outputGroup %writeDataset (powerSpectrumLinear (:,iOutput),'powerSpectrum' ,'The power spectrum.' ,datasetReturned=dataset)
call dataset %writeAttribute(megaParsec**3 ,'unitsInSI' )
call dataset %close ( )
call outputGroup %writeDataset (transferFunction (:,iOutput),'transferFunction' ,'The transfer function.' )
call outputGroup %writeDataset (sigma (:,iOutput),'sigma' ,'The mass fluctuation on this scale.' )
call outputGroup %writeDataset (sigmaGradient (:,iOutput),'alpha' ,'Logarithmic deriative of the mass flucation with respect to mass.' )
if (self%includeNonLinear) then
Expand Down

0 comments on commit c07eb99

Please sign in to comment.