13 call copenf(tempdev, atmosfile, icon)
14 if(icon .ne. 0) stop 9999
16 if(icon .ne. 0) stop 9999
21 read(tempdev, *, iostat=ios)
22 * atmos%z(nodes+1), atmos%T(nodes+1), atmos%P(nodes+1),
23 * atmos%rho(nodes+1), atmos%a(nodes+1), atmos%d0(nodes+1),
24 * atmos%cumd(nodes+1), atmos%H(nodes+1)
25 if(ios .ne. 0)
goto 10
26 if(nodes .ge. maxnodes)
then 27 write(msg,*)
'numbr of nodes for atmosphere > ', maxnodes
31 if(mostz .eq. 0 .and. znode(nodes) .gt. 2900.)
then 40 if(anode(i) .ne. 0.)
then 41 fd1i(i) =
fd1(znode(i+1), anode(i), znode(i),
43 rhopnode(i) = rhonode(i) *(-1.
d0 -1.
d0/anode(i)) *
44 * anode(i)/scalehnode(i)
45 pwp(i) =-2.
d0-1.
d0/anode(i)
47 fd0i(i) = fd0( znode(i+1), znode(i), scalehnode(i) )
65 if( z .ge. znode(mostz) .and. z .lt. znode(mostz+1))
then 67 elseif( z .ge znode(mostz + 1) .and. z .lt. znode(mostz+2)
then 71 if(z .ge. znode(i-1) .and. z .lt. znode(i))
then 77 call cerrormsg(
'height becomes too small ', 0)
81 if(anode(i) .ne. 0.)
then 85 * (z-znode(i))/scalehnode(i) )**(-1.0-1.
d0/anode(i))
88 * rhonode(i) * exp(- (z-znode(i))/scalehnode(i))
100 #include "Zstdatmos.h" 106 #include "Zstdatmosf.h" 117 if( z .ge. znode(mostz) .and. z .lt. znode(mostz+1))
then 119 elseif( z .ge znode(mostz + 1) .and. z .lt. znode(mostz+2)
then 123 if(z .ge. znode(i-1) .and. z .lt. znode(i))
then 129 call cerrormsg(
'height becomes too small ', 0)
134 if(anode(i) .ne. 0.)
then 137 * 1.0-
fd1(z, anode(i), znode(i), scalehnode(i))
142 * fd0(z, znode(i), scalehnode(i) )
161 if(
z .ge. znode(mostz) .and.
z .lt. znode(mostz+1))
then 163 elseif(
z .ge znode(mostz + 1) .and.
z .lt. znode(mostz+2)
then 167 if(
z .ge. znode(i-1) .and.
z .lt. znode(i))
then 173 call cerrormsg(
'height becomes too small ', 0)
178 if(anode(i) .ne. 0. )
then 184 temp =1.0 - (dsumnode(i) - t )/d0node(i)
187 * scalehnode(i)/anode(i) + znode(i)
194 temp =1.0- (t -dsumnode(i)) /d0node(i)
196 cvthick2h =znode(i)- log(temp)*scalehnode(i)
211 #include "Zstdatmos.h" 218 if( z .ge. znode(mostz) .and. z .lt. znode(mostz+1))
then 220 elseif( z .ge znode(mostz + 1) .and. z .lt. znode(mostz+2)
then 224 if(z .ge. znode(i-1) .and. z .lt. znode(i))
then 230 call cerrormsg(
'height becomes too small ', 0)
235 if(anode(i) .ne. 0.)
then 242 * (z-znode(i))/scalehnode(i) )**pwp(i)
245 * -rhonode(i) * exp(- (z-znode(i))/scalehnode(i))
261 #include "Zstdatmos.h" 270 if(z .lt. znode(2))
then 272 * * ( (
ha - z)/
hl )**(pw-2.d0node)
275 if(z .lt. znode(i) .or. i .eq. nodes )
then 276 if(anode(i-1) .ne. 0.)
then 278 * rhonodep(i) * pwp(i) *anode(i-1)/scalehnode(i-1)*
279 * (1.d0node + anode(i-1)*
280 * (z-znode(i-1))/scalehnode(i-1) )**(pwp(i)-1.d0node)
284 * rhonode(i-1) * exp(- (z-znode(i-1))/scalehnode(i-1))
subroutine cerrormsg(msg, needrtn)
real *8 function cvthick2h(t)
real *8 function cvh2denp(z)
subroutine kdwhereis(x, in, a, step, loc)
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)
! common for std atmosphere real *AlmostVacH ! almost vacuum height real *AlmostVacT ! thickness there hlhmi common comstdatm ha
real *8 function cvh2den(z)
! to be included just before the execution code ! density as a function of height real * fd1
real *8 function cvh2thick(z)