49 integer ,
intent(in) :: feedback_level
50 class(eftcamb_model) ,
intent(in) :: input_model
51 type(eftcamb_parameter_cache),
intent(in) :: params_cache
52 real(dl) ,
intent(in) :: RGR_time
54 real(dl) :: eft_functions(21)
57 if ( feedback_level > 1 )
then 58 write(*,
'(a)')
"***************************************************************" 59 write(*,
'(a,F12.10)')
' EFTCAMB Return to GR time: ', rgr_time
62 if ( feedback_level > 2 )
then 67 write(*,
'(a)')
' EFT functions at RGR time: ' 69 if ( eft_functions(1 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' OmegaV = ', eft_functions(1 ) +
efttogr 70 if ( eft_functions(2 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' OmegaP = ', eft_functions(2 ) +
efttogr 71 if ( eft_functions(3 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' OmegaPP = ', eft_functions(3 ) +
efttogr 72 if ( eft_functions(4 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' OmegaPPP = ', eft_functions(4 ) +
efttogr 73 if ( eft_functions(5 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTc = ', eft_functions(5 ) +
efttogr 74 if ( eft_functions(6 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTLambda = ', eft_functions(6 ) +
efttogr 75 if ( eft_functions(7 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTcdot = ', eft_functions(7 ) +
efttogr 76 if ( eft_functions(8 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTLambdadot = ', eft_functions(8 ) +
efttogr 77 if ( eft_functions(9 ) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma1V = ', eft_functions(9 ) +
efttogr 78 if ( eft_functions(10) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma1P = ', eft_functions(10) +
efttogr 79 if ( eft_functions(11) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma2V = ', eft_functions(11) +
efttogr 80 if ( eft_functions(12) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma2P = ', eft_functions(12) +
efttogr 81 if ( eft_functions(13) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma3V = ', eft_functions(13) +
efttogr 82 if ( eft_functions(14) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma3P = ', eft_functions(14) +
efttogr 83 if ( eft_functions(15) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma4V = ', eft_functions(15) +
efttogr 84 if ( eft_functions(16) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma4P = ', eft_functions(16) +
efttogr 85 if ( eft_functions(18) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma5V = ', eft_functions(18) +
efttogr 86 if ( eft_functions(17) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma4PP = ', eft_functions(17) +
efttogr 87 if ( eft_functions(19) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma5P = ', eft_functions(19) +
efttogr 88 if ( eft_functions(20) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma6V = ', eft_functions(18) +
efttogr 89 if ( eft_functions(21) .gt. 0._dl )
write(*,
'(a18,E13.4)')
' EFTGamma6P = ', eft_functions(19) +
efttogr 101 class(eftcamb_model) ,
intent(in) :: input_model
102 type(eftcamb_parameter_cache),
intent(in) :: params_cache
103 real(dl) ,
intent(in) :: initial_time
104 real(dl) ,
intent(out) :: RGR_time
106 real(dl) :: eft_functions(21)
107 real(dl) :: a_initial, a_final, log_a_initial, log_a_final, log_a_used, a_used
111 rgr_time = initial_time
114 a_initial = initial_time
117 log_a_initial = log10( a_initial )
118 log_a_final = log10( a_final )
124 log_a_used = log_a_initial +
real( i-1 )/
real(
eft_rgr_num_points -1 )*( log_a_final -log_a_initial )
125 a_used = 10._dl**log_a_used
126 eft_functions = 0._dl
131 if ( any( eft_functions > 0._dl ) )
then 138 rgr_time = 1.1_dl*a_final
148 real(dl) ,
intent(in) :: a
149 class(eftcamb_model) ,
intent(in) :: input_model
150 type(eftcamb_parameter_cache) :: params_cache
151 real(dl) ,
intent(out) :: eft_functions(21)
153 type(eftcamb_timestep_cache) :: eft_cache
155 real(dl) :: a2, adotoa, grhonu, gpinu, grhonudot, gpinudot, grhormass_t
161 call eft_cache%initialize()
165 eft_cache%grhob_t = params_cache%grhob/a
166 eft_cache%grhoc_t = params_cache%grhoc/a
167 eft_cache%grhor_t = params_cache%grhornomass/a2
168 eft_cache%grhog_t = params_cache%grhog/a2
170 if ( params_cache%Num_Nu_Massive /= 0 )
then 171 do nu_i = 1, params_cache%Nu_mass_eigenstates
174 grhormass_t = params_cache%grhormass(nu_i)/a**2
175 call params_cache%Nu_background(a*params_cache%nu_masses(nu_i), grhonu, gpinu)
176 eft_cache%grhonu_tot = eft_cache%grhonu_tot + grhormass_t*grhonu
177 eft_cache%gpinu_tot = eft_cache%gpinu_tot + grhormass_t*gpinu
181 eft_cache%grhom_t = eft_cache%grhob_t +eft_cache%grhoc_t +eft_cache%grhor_t +eft_cache%grhog_t +eft_cache%grhonu_tot
182 eft_cache%gpresm_t = (+eft_cache%grhor_t +eft_cache%grhog_t)/3._dl +eft_cache%gpinu_tot
184 select type ( model => input_model )
186 class is ( eftcamb_full_model )
189 call input_model%compute_background_EFT_functions( a, params_cache , eft_cache )
190 call input_model%compute_adotoa( a, params_cache , eft_cache )
191 class is ( eftcamb_designer_model )
195 call input_model%compute_adotoa( a, params_cache , eft_cache )
198 adotoa = eft_cache%adotoa
201 eft_cache%grhonu_tot = 0._dl
202 eft_cache%gpinu_tot = 0._dl
203 if ( params_cache%Num_Nu_Massive /= 0 )
then 204 do nu_i = 1, params_cache%Nu_mass_eigenstates
209 grhormass_t= params_cache%grhormass(nu_i)/a**2
210 call params_cache%Nu_background(a*params_cache%nu_masses(nu_i),grhonu,gpinu)
211 eft_cache%grhonu_tot = eft_cache%grhonu_tot + grhormass_t*grhonu
212 eft_cache%gpinu_tot = eft_cache%gpinu_tot + grhormass_t*gpinu
213 eft_cache%grhonudot_tot = eft_cache%grhonudot_tot + grhormass_t*( params_cache%Nu_drho(a*params_cache%nu_masses(nu_i), adotoa, grhonu)&
214 & -4._dl*adotoa*grhonu )
215 eft_cache%gpinudot_tot = eft_cache%gpinudot_tot + grhormass_t*( params_cache%Nu_pidot(a*params_cache%nu_masses(nu_i),adotoa, gpinu )&
216 & -4._dl*adotoa*gpinu )
220 eft_cache%gpresdotm_t = -4._dl*adotoa*( eft_cache%grhog_t +eft_cache%grhor_t )/3._dl +eft_cache%gpinudot_tot
222 call input_model%compute_H_derivs( a, params_cache, eft_cache )
224 select type ( model => input_model )
225 class is ( eftcamb_designer_model )
226 call input_model%compute_background_EFT_functions( a, params_cache, eft_cache )
229 call input_model%compute_rhoQPQ( a, params_cache, eft_cache )
231 call input_model%compute_secondorder_EFT_functions( a, params_cache, eft_cache )
234 eft_functions( 1) = abs( eft_cache%EFTOmegaV )
235 eft_functions( 2) = abs( a*adotoa*eft_cache%EFTOmegaP )
236 eft_functions( 3) = 0._dl
237 eft_functions( 4) = 0._dl
238 eft_functions( 5) = abs( eft_cache%EFTc/a2 )
239 eft_functions( 6) = abs( eft_cache%EFTLambda/a2 +params_cache%grhov )
240 eft_functions( 7) = abs( eft_cache%EFTcdot/a2 )
241 eft_functions( 8) = abs( eft_cache%EFTLambdadot/a2 )
242 eft_functions( 9) = abs( eft_cache%EFTGamma1V )
243 eft_functions(10) = abs( eft_cache%EFTGamma1P )
244 eft_functions(11) = abs( eft_cache%EFTGamma2V )
245 eft_functions(12) = abs( eft_cache%EFTGamma2P )
246 eft_functions(13) = abs( eft_cache%EFTGamma3V )
247 eft_functions(14) = abs( eft_cache%EFTGamma3P )
248 eft_functions(15) = abs( eft_cache%EFTGamma4V )
249 eft_functions(16) = abs( eft_cache%EFTGamma4P )
250 eft_functions(17) = 0._dl
251 eft_functions(18) = abs( eft_cache%EFTGamma5V )
252 eft_functions(19) = abs( eft_cache%EFTGamma5P )
253 eft_functions(20) = abs( eft_cache%EFTGamma6V )
254 eft_functions(21) = abs( eft_cache%EFTGamma6P )
257 eft_functions = eft_functions -
efttogr subroutine, public eftcambreturntogr_feedback(feedback_level, input_model, params_cache, RGR_time)
Subroutine that prints feedback for the RGR module. Prints something only if EFTCAMB_feedback_level i...
This module contains the definition of the EFTCAMB caches. These are used to store parameters that ca...
This module contains the abstract definition of all the places where EFTCAMB interacts with CAMB...
real(dl), parameter efttogr
Return to GR flag: This is the threshold at which a theory is considered to be exactly GR...
subroutine, public eftcambreturntogr(input_model, params_cache, initial_time, RGR_time)
Subroutine that computes the return to GR of a theory.
This module contains the abstract definition of all the places where EFTCAMB interacts with CAMB in c...
This module contains the abstract definition of all the places where EFTCAMB interacts with CAMB in c...
This module contains the definitions of all the EFTCAMB compile time flags.
This module contains the RGR algorithm. This operates on general EFT models.
subroutine, public eftcambreturntogr_functions(a, input_model, params_cache, eft_functions)
Subroutine that computes the EFT functions as we need them for the RGR function.
integer, parameter eft_rgr_num_points
number of points to sample logaritmically the time in the return to GR module.