1 | c********************************************************************** |
---|
2 | |
---|
3 | subroutine column |
---|
4 | $ (co2x,o2x,o3px,h2x,h2ox,h2o2x,tx,nz,iz,zenit,co2colx,o2colx, |
---|
5 | $ o3pcolx,h2o2colx) |
---|
6 | |
---|
7 | |
---|
8 | c nov 2002 fgg first version |
---|
9 | |
---|
10 | c********************************************************************** |
---|
11 | |
---|
12 | implicit none |
---|
13 | |
---|
14 | |
---|
15 | c common variables and constants |
---|
16 | |
---|
17 | include 'param.h' |
---|
18 | include 'param_v3.h' |
---|
19 | |
---|
20 | |
---|
21 | |
---|
22 | c local parameters and variables |
---|
23 | |
---|
24 | |
---|
25 | |
---|
26 | c 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 | |
---|
44 | c 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 | |
---|
66 | c local variables |
---|
67 | |
---|
68 | integer i,j,k,icol,indexint !indexes |
---|
69 | real*8 znt |
---|
70 | |
---|
71 | c External functions |
---|
72 | |
---|
73 | external ch |
---|
74 | real ch |
---|
75 | |
---|
76 | |
---|
77 | c*************************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 | |
---|