source: trunk/LMDZ.TITAN.old/libf/phytitan/inicondens.F @ 3094

Last change on this file since 3094 was 1530, checked in by emillour, 9 years ago

Venus and Titan GCMs:
Updates in the physics to keep up with updates in LMDZ5 (up to
LMDZ5 trunk, rev 2350) concerning dynamics/physics separation:

  • Adapted makelmdz and makelmdz_fcm script to stop if trying to compile 1d model or newstart or start2archive in parallel.
  • got rid of references to "dimensions.h" in physics. Within physics packages, use nbp_lon (=iim), nbp_lat (=jjmp1) and nbp_lev (=llm) from module mod_grid_phy_lmdz (in phy_common) instead. Only partially done for Titan, because of many hard-coded commons; a necessary first step will be to clean these up (using modules).

EM

File size: 7.0 KB
Line 
1      SUBROUTINE inicondens(ny,press,temp,nomy,yc)
2
3c=======================================================================
4c   initialisation des profils de saturation des traceurs
5c=======================================================================
6
7c-----------------------------------------------------------------------
8c   declarations:
9c   -------------
10
11      use dimphy
12      use mod_grid_phy_lmdz, only: nbp_lev
13      IMPLICIT NONE
14#include "YOMCST.h"
15
16c    Arguments :
17c    -----------
18      INTEGER ny
19      real press(nbp_lev),temp(nbp_lev)  ! pressure in mbar !
20      REAL yc(nbp_lev,ny)
21      character*10 nomy(ny+1)
22     
23c    Local variables :
24c    -----------------
25      INTEGER  l,ic
26      real     sy,x
27       
28      do ic=1,ny
29       print*, 'traceur CH(', ic, ')=', nomy(ic),'------------'
30           do l=1,nbp_lev
31
32c  Par defaut, yc est a 1 c'est a dire qu'on ne condense pas
33              yc(l,ic)=1.
34
35              if(nomy(ic).eq."CH4") then
36                 if (temp(l).lt.90.65) then
37                   yc(l,ic)=
38     s             10.0**(4.42507e0 - ( ( ( 1165560.7e0 / TEMP(l) -
39     s             115352.19e0 ) / TEMP(l) + 4055.6016e0 ) / TEMP(l)
40     s            + 453.92414e0 ) / TEMP(l) ) / PRESS(l) * 1013.25e0
41                 else
42                   yc(l,ic)=
43     s             10.0**(3.901408e0 - ( ( 154567.02e0 / TEMP(l) -
44     s             1598.8512e0 ) / TEMP(l) + 437.54809e0 ) / TEMP(l))
45     s             / PRESS(l) * 1013.25e0;
46                 endif
47c maintient a 1.4% minimum               
48                 if (yc(l,ic).lt.0.014) yc(l,ic)=0.014
49              endif
50
51              if(nomy(ic).eq."C2H2") then
52                 yc(l,ic)=
53     s            10.0**(6.09748e0-1644.1e0/TEMP(l)+7.42346e0
54     s           * alog10(1.0e3/TEMP(l)) ) / PRESS(l)*1013.25e0/760.0
55              endif
56
57              if(nomy(ic).eq."C2H4") then
58                 if (temp(l).lt.89.0) then
59                   yc(l,ic)=
60     s              10.0**(1.5477e0 + (1.0e0/TEMP(l) - 0.011e0)
61     s              *(16537.0e0*(1.0e0/TEMP(l) - 0.011e0) - 1038.1e0))
62     s              / PRESS(l) * 1.01325e0 / 760.0
63                 elseif (temp(l).lt.104.0) then
64                   yc(l,ic)=
65     s              10.0**(8.724e0 - 901.6e0/(TEMP(l) - 2.555e0) )
66     s              / PRESS(l) * 1013.25e0 / 760.0
67                 elseif (temp(l).lt.120.0) then
68                   yc(l,ic)=
69     s              10.0**(50.79e0 - 1703.0e0/TEMP(l) - 17.141e0 *
70     s              alog10(TEMP(l)) ) / PRESS(l) * 1013.25e0 / 760.0
71                 elseif (temp(l).lt.155.0) then
72                   yc(l,ic)=
73     s              10.0**(6.74756e0 - 585.0e0/(TEMP(l) - 18.16e0) )
74     s              / PRESS(l) * 1013.25e0 / 760.0
75                 endif
76              endif
77
78              if(nomy(ic).eq."C2H6") then
79                 if (temp(l).lt.90.) then
80                   yc(l,ic)=
81     s              10.0**(10.01e0-1085.0e0/(TEMP(l)-0.561e0) )
82     s                  / PRESS(l) * 1013.25e0 / 760.0e0
83                 else
84                   yc(l,ic)=
85     s              10.0**(5.9366e0 - 1086.17e0/TEMP(l) + 3.83464e0 *
86     s              alog10(1.0e3/TEMP(l)) ) / PRESS(l)*1013.25e0/760.0
87                 endif
88              endif
89
90              if((nomy(ic).eq."CH3CCH")
91     s       .or.(nomy(ic).eq."CH2CCH2")) then
92                 yc(l,ic)=
93     s            10.0**(2.8808e0 - 4.5e0*(249.9e0 - TEMP(l))
94     s                            /(1.15e0*TEMP(l) - 37.485e0) )
95     s                 / PRESS(l) * 1013.25e0 / 760.0e0
96              endif
97
98              if(nomy(ic).eq."C3H6")  then
99                 yc(l,ic)=
100     s            10.0**(7.4463e0 - 1028.5654e0/TEMP(l) )
101     s                 / PRESS(l) * 1013.25e0 / 760.0e0
102              endif
103
104              if(nomy(ic).eq."C3H8")  then
105                 yc(l,ic)=
106     s            10.0**(7.217e0 - 994.30251e0/TEMP(l) )
107     s                 / PRESS(l) * 1013.25e0 / 760.0e0
108              endif
109
110              if((nomy(ic).eq."C4H2")
111     s       .or.(nomy(ic).eq."C4H2s")) then
112                 yc(l,ic)=
113     s            10.0**(96.26781e0 - 4651.872e0/TEMP(l) - 31.68595e0
114     s            *alog10(TEMP(l)) ) / PRESS(l) * 1013.25e0 / 760.0e0
115              endif
116
117              if(nomy(ic).eq."C4H4")  then
118                 yc(l,ic)=
119     s            1.0e3 * exp(9.3898e0 - 2203.57/(TEMP(l)-43.15e0) )
120     s            / PRESS(l)
121              endif
122
123              if(nomy(ic).eq."C4H6")  then
124                 yc(l,ic)=
125     s            10.0**(2.8808e0 - 4.6e0*(262.3e0 - TEMP(l))
126     s                            /(1.15e0*TEMP(l) - 39.345e0) )
127     s                 / PRESS(l) * 1013.25e0 / 760.0e0
128              endif
129
130              if(nomy(ic).eq."C4H10")  then
131                 yc(l,ic)=
132     s            10.0**(8.446e0 - 1461.2e0/TEMP(l) )
133     s                 / PRESS(l) * 1013.25e0 / 760.0e0
134              endif
135
136              if(nomy(ic).eq."C6H2")  then
137                 yc(l,ic)=
138     s            10.0**(4.666e0 - 4956e0/TEMP(l) + 25.845e0 *
139     s            alog10(1.0e3/TEMP(l)) )
140     s                 / PRESS(l) * 1013.25e0 / 760.0e0
141              endif
142
143              if(nomy(ic).eq."C8H2")  then
144                 yc(l,ic)=
145     s            10.0**(3.95e0 - 6613e0/TEMP(l) + 35.055e0 *
146     s            alog10(1.0e3/TEMP(l)) )
147     s                 / PRESS(l) * 1013.25e0 / 760.0e0
148              endif
149
150              if(nomy(ic).eq."AC6H6")  then
151                 x = 1.0e0 - TEMP(l) / 562.2e0
152                 yc(l,ic)=
153     s            48.9e3 * exp( ( 1.33213 * x**1.5 - 6.98273 * x
154     s                           - x**3 * (2.62863 + 3.33399 * x**3) )
155     s                         * 562.2e0/TEMP(l) ) / PRESS(l)
156              endif
157
158              if(nomy(ic).eq."HCN")  then
159                 yc(l,ic)=
160     s            10.0**(8.6165e0 - 1516.5e0/(TEMP(l) - 26.2e0) )
161     s                 / PRESS(l) * 1013.25e0 / 760.0e0
162              endif
163
164              if(nomy(ic).eq."CH3CN")  then
165                 yc(l,ic)=
166     s            10.0**(8.458e0 - 1911.7e0/TEMP(l) )
167     s                 / PRESS(l) * 1013.25e0 / 760.0e0
168              endif
169
170              if(nomy(ic).eq."C2H3CN")  then
171                 yc(l,ic)=
172     s            10.0**(9.3051e0 - 2782.21/(TEMP(l) - 51.15e0) )
173     s                 / PRESS(l) * 1013.25e0 / 760.0e0
174              endif
175
176              if(nomy(ic).eq."NCCN")  then
177                 yc(l,ic)=
178     s            10.0**(7.454e0 - 1832e0/TEMP(l) )
179     s                 / PRESS(l) * 1013.25e0 / 760.0e0
180              endif
181
182              if(nomy(ic).eq."HC3N")  then
183                 yc(l,ic)=
184     s            10.0**(7.7446e0 - 1453.5609e0/TEMP(l) )
185     s                 / PRESS(l) * 1013.25e0 / 760.0e0
186              endif
187
188              if(nomy(ic).eq."C4N2")  then
189                 yc(l,ic)=
190     s            10.0**(8.269e0 - 2155.0e0/TEMP(l) )
191     s                 / PRESS(l) * 1013.25e0 / 760.0e0
192              endif
193
194           enddo
195       enddo
196
197       print*, 'inicondens end'
198       
199      RETURN
200      END
Note: See TracBrowser for help on using the repository browser.