41 #include "Zstdatmos.h" 46 #include "Zstdatmosf.h" 49 call copenf(tempdev,
"stdatmos2%d", icon)
50 if(icon .ne. 0) stop 9999
52 if(icon .ne. 0) stop 9999
56 read(tempdev, *, iostat=ios)
57 * znode(nodes+1), tnode(nodes+1), pnode(nodes+1),
58 * rho(nodes+1), alfa(nodes+1),
d0(nodes+1),
59 * dsum(nodes+1), scaleh(nodes+1)
60 if(ios .ne. 0)
goto 10
61 if(nodes .ge. maxnodes)
then 62 write(*,*)
'numbr of nodes for atmosphere > ', maxnodes
72 if(alfa(i-1) .ne. 0.)
then 73 fd1i(i) =
fd1(znode(i), alfa(i-1), znode(i-1),
75 rhop(i) = rho(i-1) *(-1.
d0 -1.
d0/alfa(i-1)) *
76 * alfa(i-1)/scaleh(i-1)
77 pwp(i) =-2.
d0-1.
d0/alfa(i-1)
79 fd0i(i) = fd0(znode(i), znode(i-1), scaleh(i-1) )
82 fd3 = ((
ha-znode(2))/
hl)**(pw+1.
d0)
87 block data blkstdatmos
93 #include "Zstdatmos.h" 96 * pw /4.36815
d0/, rho00/3.50618
d-3/
109 #include "Zstdatmos.h" 118 if(z .lt. znode(2))
then 122 if(z .lt. znode(i) .or. i .eq. nodes )
then 123 if(alfa(i-1) .ne. 0.)
then 124 if(z .lt. znode(i-1) )
then 125 write(0,*)
' z=',z,
' znode =', znode(i-1)
130 * (z-znode(i-1))/scaleh(i-1) )**(-1.0-1.
d0/alfa(i-1))
134 * rho(i-1) * exp(- (z-znode(i-1))/scaleh(i-1))
153 #include "Zstdatmos.h" 160 #include "Zstdatmosf.h" 166 if(z .lt. znode(2))
then 168 * ( (
ha-z)/
hl)**(pw+1.
d0) -
182 if(z .lt. znode(i) .or. i .eq. nodes-1 )
then 183 if(alfa(i-1) .ne. 0.)
then 185 *
fd1( z, alfa(i-1), znode(i-1), scaleh(i-1) )
196 * fd0(z, znode(i-1), scaleh(i-1) )
220 #include "Zstdatmos.h" 230 if(t .gt. dsum(2))
then 236 temp =( t - dsum(2))/
hl/rho00 * (pw+1.
d0)
248 if(t .gt. dsum(i) .or. i .eq. nodes-1 )
then 249 if(alfa(i-1) .ne. 0.)
then 256 temp =( t -dsum(i))/
d0(i-1)
259 * scaleh(i-1)/alfa(i-1) + znode(i-1)
267 temp = (t -dsum(i)) /
d0(i-1) +
270 cvthick2h =znode(i-1)- log(temp)*scaleh(i-1)
290 #include "Zstdatmos.h" 299 if(z .lt. znode(2))
then 303 if(z .lt. znode(i) .or. i .eq. nodes )
then 304 if(alfa(i-1) .ne. 0.)
then 311 * (z-znode(i-1))/scaleh(i-1) )**pwp(i)
315 * -rho(i-1) * exp(- (z-znode(i-1))/scaleh(i-1))
336 #include "Zstdatmos.h" 345 if(z .lt. znode(2))
then 347 * * ( (
ha - z)/
hl )**(pw-2.
d0)
350 if(z .lt. znode(i) .or. i .eq. nodes )
then 351 if(alfa(i-1) .ne. 0.)
then 353 * rhop(i) * pwp(i) *alfa(i-1)/scaleh(i-1)*
355 * (z-znode(i-1))/scaleh(i-1) )**(pwp(i)-1.
d0)
359 * rho(i-1) * exp(- (z-znode(i-1))/scaleh(i-1))
real *8 function cvthick2h(t)
real *8 function cvh2denp(z)
block data cblkIncident data *Za1ry *HeightOfInj d3
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
! common for std atmosphere real *AlmostVacH ! almost vacuum height real *AlmostVacT ! thickness there hl
block data cblkEvhnp ! currently usable models data RegMdls ad *special data *Cekaon d0
subroutine copenf(io, fnin, icon)
real *8 function cvh2den2p(z)
dE dx *! Nuc Int sampling table d
! common for std atmosphere real *AlmostVacH ! almost vacuum height real *AlmostVacT ! thickness there hlhmi common comstdatm ha
real *8 function cvh2den(z)
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
! to be included just before the execution code ! density as a function of height real * fd1
real *8 function cvh2thick(z)