151 parameter(halventime = 5, pointsinunit = 32)
154 * totalpoints = blocks * pointsinunit + 1 )
163 real*8 y(0:totalpoints), w(0:totalpoints)
164 real*8 opy(0:totalpoints),omy(0:totalpoints)
165 real*8 f(0:totalpoints)
166 real*8 machmin, machmax
172 real*8 t, c1, ans1, ans2, step, f2, ytox, ytoxn, ytoxp
173 real*8 temp, xa(2), expm, expp
174 integer i,
j, jstep, k
180 ytox(k) = c1*(
y(k) + 1) +
a 181 ytoxn(k) = -c1*opy(k)
194 tmax = log(log(sqrt(machmin)/2)/(-2))
196 h = 2*
tmax/totalpoints
201 do i = 0, totalpoints
203 temp = halfpi * sinh(
t)
209 opy(
i) = 2*expp/(expp + expm)
210 omy(
i) = 2*expm/(expp + expm)
212 w(
i) = cosh(
t) / cosh( halfpi*sinh(
t) )**2
229 do j = 0, totalpoints, jstep
231 * mod( mod(
j, pointsinunit), jstep*2) .eq. 0)
then 235 if(
y(
j) .lt. 0. )
then 240 f2 = func( xa ) * w(
j)
247 if(abs(ans2) .gt. 1.
d0)
then 248 error =abs( abs(ans1/ans2)-1.
d0 )
249 if(error .le. eps)
then 255 error =abs( abs(ans1/ans2)-1.
d0 )
256 if(error .le. eps)
then 267 ans = ans2 * halfpi *c1
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine kdmachmnmx(xmin, xmax)
atmos%rho(atmos%nodes) **exp(-(z-atmos%z(atmos%nodes))/Hinf) elseif(z .lt. atmos%z(1)) then ans=atmos%rho(1) **exp((atmos%z(1) -z)/atmos%H(1)) else call kdwhereis(z, atmos%nodes, atmos%z, 1, i) a=atmos%a(i) if(a .ne. 0.d0) then ans=atmos%rho(i) **(1+a *(z-atmos%z(i))/atmos%H(i)) **(-1.0d0-1.d0/a) else ans=*atmos%rho(i) *exp(-(z-atmos%z(i))/atmos%H(i)) endif endif ! zsave=z ! endif cvh2den=ans end ! ---------------------------------- real *8 function cvh2temp(z) implicit none ! vettical height to temperatur(Kelvin) real *8 z ! input. vertical height in m ! output is temperature of the atmospher in Kelvin real *8 ans integer i if(z .gt. atmos%z(atmos%nodes)) then ans=atmos%T(atmos%nodes) elseif(z .lt. atmos%z(1)) then ans=atmos%T(1)+atmos%b(1) *(z - atmos%z(1)) else call kdwhereis(z, atmos%nodes, atmos%z, 1, i) ans=atmos%T(i)+atmos%b(i) *(z-atmos%z(i)) endif cvh2temp=ans end !--------------------------------------------- real *8 function cthick2h(t) implicit none real *8 t ! input. air thickness in kg/m^2 real *8 logt, ans integer i real *8 dod0, fd, a logt=log(t) if(t .ge. atmos%cumd(1)) then ans=atmos%z(1) - *(logt - atmos%logcumd(1)) *atmos%H(1) elseif(t .le. atmos%cumd(atmos%nodes)) then ans=atmos%z(atmos%nodes) - *Hinf *log(t/atmos%cumd(atmos%nodes)) else call kdwhereis(t, atmos%nodes, atmos%cumd, 1, i) ! i is such that X(i) > x >=x(i+1) ans
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon true
real(4), dimension(:), allocatable, save h
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
real(4), dimension(:), allocatable, save temp
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
latitude latitude this system is used *****************************************************************! type coord sequence union map real y
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon ! knockon is considered Obsolete *PhotoProd false
dE dx *! Nuc Int sampling table f