source: trunk/LMDZ.MARS/libf/aeronomars/column.F @ 317

Last change on this file since 317 was 38, checked in by emillour, 14 years ago

Ajout du modè Martien (mon LMDZ.MARS.BETA, du 28/01/2011) dans le rértoire mars, pour pouvoir suivre plus facilement les modifs.
EM

File size: 4.3 KB
Line 
1c**********************************************************************
2
3      subroutine column
4     $ (co2x,o2x,o3px,h2x,h2ox,h2o2x,tx,nz,iz,zenit,co2colx,o2colx,
5     $ o3pcolx,h2o2colx)
6
7
8c     nov 2002        fgg           first version
9
10c**********************************************************************
11
12      implicit none
13
14
15c     common variables and constants
16
17      include 'param.h'
18      include 'param_v3.h'
19
20
21
22c    local parameters and variables
23
24
25
26c     input and output variables
27
28      integer    nz
29      real       co2colx(nz)                 !column density of CO2 (cm^-2)
30      real       o2colx(nz)                  !column density of O2(cm^-2)
31      real       o3pcolx(nz)                 !column density of O(3P)(cm^-2)
32      real       h2o2colx(nz)                !column density of H2O2(cm^-2)
33      real       co2x(nz)                    !density of CO2(cm^-3)
34      real       o2x(nz)                     !density of O2(cm^-3)
35      real       o3px(nz)                    !density of O(3P)(cm^-3)
36      real       h2x(nz)                     !density of H2(cm^-3)
37      real       h2ox(nz)                    !density of H2O(cm^-3)
38      real       h2o2x(nz)                   !density of H2O2(cm^-3)
39      real       jtot(nz)                    !output: heating rate(erg/s)
40      real       tx(nz)                      !temperature profile
41      real       iz(nz+1)                    !height profile
42      real       zenit
43
44c     local variables
45
46      real       xx
47      real       grav(nzmax)
48      real       ntx(nzmax)
49      real       pmmixx(nzmax)
50      real       Hmix(nzmax)
51      real       nint(nzmax)
52      real       co2vmrx(nzmax)
53      real       o2vmrx(nzmax)
54      real       o3pvmrx(nzmax)
55      real       h2vmrx(nzmax)
56      real       h2ovmrx(nzmax)
57      real       h2o2vmrx(nzmax)
58      real       Hco2
59      real       Ho3p
60      real       Ho2
61      real       Hh2o2
62      real       chapm(nzmax)
63
64
65
66c     local variables
67
68      integer    i,j,k,icol,indexint          !indexes
69      real*8     znt
70
71c External functions
72
73       external    ch
74       real        ch
75
76
77c*************************PROGRAM STARTS*******************************
78
79      do i=1,nz
80         xx = ( radio + iz(i) ) * 1.e5
81         ntx(i)=co2x(i)+o2x(i)+o3px(i)+h2x(i)+h2ox(i)+h2o2x(i)
82         co2vmrx(i)=co2x(i)/ntx(i)
83         o2vmrx(i)=o2x(i)/ntx(i)
84         o3pvmrx(i)=o3px(i)/ntx(i)
85         h2vmrx(i)=h2x(i)/ntx(i)
86         h2ovmrx(i)=h2ox(i)/ntx(i)
87         h2o2vmrx(i)=h2o2x(i)/ntx(i)
88         pmmixx(i) = (pmco2*co2x(i)+pmo2*o2x(i)
89     $                + pmo3p*o3px(i))/ntx(i)
90         grav(i) = gg * masa /(xx**2)
91         Hmix(i) = kboltzman*tx(i)*n_avog / (pmmixx(i)*grav(i))
92         nint(i) = -Hmix(i)*ntx(i)*
93     $   (exp((iz(i)-iz(i+1))*1e5/Hmix(i))-1)
94      end do
95
96      xx = kboltzman * tx(nz) * n_avog / grav(nz)
97      Ho3p = xx / pmo3p
98      Hco2 = xx / pmco2
99      Ho2  = xx / pmo2
100      Hh2o2 = xx / pmh2o2
101      o3pcolx(nz) = o3px(nz) * Ho3p
102      co2colx(nz) = co2x(nz) * Hco2
103      h2o2colx(nz) = h2o2x(nz) * Hh2o2
104      o2colx(nz) = o2x(nz) * Ho2
105      do i=1,nz-1
106         co2colx(i) = co2colx(nz)
107         o2colx(i) = o2colx(nz)
108         o3pcolx(i) = o3pcolx(nz)
109         h2o2colx(i) = h2o2colx(nz)
110         do j=i,nz-1
111            co2colx(i) = co2colx(i) + nint(j)
112     $                   * ((co2vmrx(j+1) + co2vmrx(j)) / 2.)
113            o2colx(i) = o2colx(i) + nint(j)
114     $                  * ((o2vmrx(j+1) + o2vmrx(j)) / 2.)
115            o3pcolx(i) = o3pcolx(i) + nint(j)
116     $                   * ((o3pvmrx(j+1) + o3pvmrx(j)) /2.)
117            h2o2colx(i) = h2o2colx(i) +nint(j)
118     $                     * ((h2o2vmrx(j+1) + h2o2vmrx(j)) / 2.)
119         end do
120      end do
121
122      znt=zenit*3.1416/180.
123      if(zenit.gt.80.0) then
124         do i=1,nz
125            chapm(i) = 
126     $           ch( (iz(i)+radio)/(Hmix(i)*1.e-5),znt)
127         enddo
128      end if
129      znt=zenit*3.1416/180.
130      do i=1,nz
131         if(zenit.le.80.0) then
132            co2colx(i)=co2colx(i)/cos(znt)
133            o2colx(i)=o2colx(i)/cos(znt)
134            o3pcolx(i)=o3pcolx(i)/cos(znt)
135            h2o2colx(i)=h2o2colx(i)/cos(znt)
136         else
137            co2colx(i)=co2colx(i)*chapm(i)
138            o2colx(i)=o2colx(i)*chapm(i)
139            o3pcolx(i)=o3pcolx(i)*chapm(i)
140            h2o2colx(i)=h2o2colx(i)*chapm(i)
141         end if
142      end do
143
144
145      return
146
147
148      end
149
150
151
152
153
Note: See TracBrowser for help on using the repository browser.