source: trunk/LMDZ.MARS/libf/phymars/NLTE_leedat.F @ 414

Last change on this file since 414 was 414, checked in by aslmd, 13 years ago

LMDZ.MARS : NEW NLTE MODEL FROM GRANADA AMIGOS

23/11/11 == FGG + MALV

New parameterization of the NLTE 15 micron cooling. The old parameterization is kept as an option, including or not variable atomic oxygen concentration. A new flag is introduced in callphys.def, nltemodel, to select which parameterization wants to be used (new one, old one with variable [O], or old one with fixed [O], see below). Includes many new subroutines and commons in phymars. Some existing routines are also modified:

-physiq.F. Call to the new subroutine NLTE_leedat in first call. Call to nltecool modified to allow for variable atomic oxygen. Depending on the value of nltemodel, the new subroutine NLTEdlvr09_TCOOL is called instead of nltecool.

-inifis.F. Reading of nltemodel is added.

-callkeys.h Declaration of nltemodel is added.

The following lines should be added to callphys.def (ideally after setting callnlte):

# NLTE 15um scheme to use.
# 0-> Old scheme, static oxygen
# 1-> Old scheme, dynamic oxygen
# 2-> New scheme
nltemodel = 2

A new directory, NLTEDAT, has to be included in datagcm.

Improvements into NLTE NIR heating parameterization to take into account variability with O/CO2 ratio and SZA. A new subroutine, NIR_leedat.F, and a new common, NIRdata.h, are included. A new flag, nircorr, is added in callphys.def, to include or not these corrections. The following files are modified:

-nirco2abs.F: nq and pq are added in the arguments. The corrections factors are interpolated to the GCM grid and included in the clculation. A new subroutine, interpnir, is added at the end of the file.

-physiq.F: Call to NIR_leedat added at first call. Modified call to nirco2abs

-inifis: Reading new flag nircorr.

-callkeys.h: Declaration of nircorr.

The following lines have to be added to callphys.def (ideally after callnirco2):

# NIR NLTE correction for variable SZA and O/CO2?
# matters only if callnirco2=T
# 0-> no correction
# 1-> include correction
nircorr=1

A new data file, NIRcorrection_feb2011.dat, has to be included in datagcm.

Small changes to the molecular diffusion scheme to fix the number of species considered, to avoid problems when compiling with more than 15 tracers (for example, when CH4 is included). Modified subroutines: aeronomars/moldiff.F and aeronomars/moldiffcoeff.F

File size: 5.5 KB
Line 
1c***********************************************************************
2        subroutine NLTE_leedat                             
3                                               
4c       reads planetary and molecular parameters     
5                                               
6c       jan 98  malv            first version   
7c       jul 2011 malv+fgg       adapted to LMD-MGCM
8c***********************************************************************
9                                               
10        implicit none                                 
11                                               
12        include 'nltedefs.h'         
13        include 'nlte_data.h'       
14        include 'datafile.h'
15        include 'nlte_curtis.h'
16                                               
17                                               
18c local variables                               
19        integer         i,j, k,lun1, lun2                     
20        integer         ib
21        integer         isot
22        character       isotcode*2
23        character       ibcode1*1
24                             
25c formats                                       
26132     format (i2)
27101     format(i1)                               
28c***********************************************************************
29                                               
30        lun1 = 1                                       
31        lun2 = 2   
32
33        do k=1,nisot                                   
34!         encode (2,132,isotcode) indexisot(k) 
35          write (isotcode,132) indexisot(k)       
36          open (lun1,                                 
37     @        file=trim(datafile)//'/NLTEDAT/enelow'//isotcode//'.dat',
38     @        status='old')                               
39          open (lun2,                                 
40     @        file=trim(datafile)//'/NLTEDAT/deltanu'//isotcode//'.dat',           
41     @        status='old')                               
42            read (lun1,*)                             
43            read (lun2,*)                             
44            read (lun1,*) (elow(k,i), i=1,nb)         
45            read (lun2,*) (deltanu(k,i), i=1,nb)       
46          close (lun1)                                 
47          close (lun2)                                 
48        end do                                         
49         
50
51c       Call to rhist
52       
53        hfile1='hid'
54!       if (ib.eq.13 .or. ib.eq.14 ) hfile1 = dirspec//'his'
55        if (ib.eq.13 .or. ib.eq.14 ) hfile1 = 'his'
56         
57        ib=1
58        do isot=1,4
59c       Cases 1,2,3,4
60           if (isot.eq.1) hisfile = hfile1//'26-1.dat'
61           if (isot.eq.2) hisfile = hfile1//'28-1.dat'
62           if (isot.eq.3) hisfile = hfile1//'36-1.dat'
63           if (isot.eq.4) hisfile = hfile1//'27-1.dat'
64           call rhist(1.0)
65           if (isot.eq.1) then !Case 1
66              mm_c1=mm
67              nbox_c1=nbox
68              tmin_c1=tmin
69              tmax_c1=tmax
70              do i=1,nbox_max
71                 no_c1(i)=no(i)
72                 dist_c1(i)=dist(i)
73                 do j=1,nhist
74                    sk1_c1(j,i)=sk1(j,i)
75                    xls1_c1(j,i)=xls1(j,i)
76                    xln1_c1(j,i)=xln1(j,i)
77                    xld1_c1(j,i)=xld1(j,i)
78                 enddo
79              enddo
80              do j=1,nhist
81                 thist_c1(j)=thist(j)
82              enddo
83           else if(isot.eq.2) then !Case 2
84              mm_c2=mm
85              nbox_c2=nbox
86              tmin_c2=tmin
87              tmax_c2=tmax
88              do i=1,nbox_max
89                 no_c2(i)=no(i)
90                 dist_c2(i)=dist(i)
91                 do j=1,nhist
92                    sk1_c2(j,i)=sk1(j,i)
93                    xls1_c2(j,i)=xls1(j,i)
94                    xln1_c2(j,i)=xln1(j,i)
95                    xld1_c2(j,i)=xld1(j,i)
96                 enddo
97              enddo
98              do j=1,nhist
99                 thist_c2(j)=thist(j)
100              enddo
101           else if (isot.eq.3) then ! Case 3
102              mm_c3=mm
103              nbox_c3=nbox
104              tmin_c3=tmin
105              tmax_c3=tmax
106              do i=1,nbox_max
107                 no_c3(i)=no(i)
108                 dist_c3(i)=dist(i)
109                 do j=1,nhist
110                    sk1_c3(j,i)=sk1(j,i)
111                    xls1_c3(j,i)=xls1(j,i)
112                    xln1_c3(j,i)=xln1(j,i)
113                    xld1_c3(j,i)=xld1(j,i)
114                 enddo
115              enddo
116              do j=1,nhist
117                 thist_c3(j)=thist(j)
118              enddo
119           else if (isot.eq.4) then ! Case 4
120              mm_c4=mm
121              nbox_c4=nbox
122              tmin_c4=tmin
123              tmax_c4=tmax
124              do i=1,nbox_max
125                 no_c4(i)=no(i)
126                 dist_c4(i)=dist(i)
127                 do j=1,nhist
128                    sk1_c4(j,i)=sk1(j,i)
129                    xls1_c4(j,i)=xls1(j,i)
130                    xln1_c4(j,i)=xln1(j,i)
131                    xld1_c4(j,i)=xld1(j,i)
132                 enddo
133              enddo
134              do j=1,nhist
135                 thist_c4(j)=thist(j)
136              enddo
137           endif
138        enddo
139        do ib=2,4
140           isot=1
141           write (ibcode1,101) ib
142           hisfile = hfile1//'26-'//ibcode1//'.dat'
143           call rhist (1.0)
144           if (ib.eq.2) then !Case 5
145              mm_c5=mm
146              nbox_c5=nbox
147              tmin_c5=tmin
148              tmax_c5=tmax
149              do i=1,nbox_max
150                 no_c5(i)=no(i)
151                 dist_c5(i)=dist(i)
152                 do j=1,nhist
153                    sk1_c5(j,i)=sk1(j,i)
154                    xls1_c5(j,i)=xls1(j,i)
155                    xln1_c5(j,i)=xln1(j,i)
156                    xld1_c5(j,i)=xld1(j,i)
157                 enddo
158              enddo
159              do j=1,nhist
160                 thist_c5(j)=thist(j)
161              enddo
162           else if (ib.eq.3) then !Case 6
163              mm_c6=mm
164              nbox_c6=nbox
165              tmin_c6=tmin
166              tmax_c6=tmax
167              do i=1,nbox_max
168                 no_c6(i)=no(i)
169                 dist_c6(i)=dist(i)
170                 do j=1,nhist
171                    sk1_c6(j,i)=sk1(j,i)
172                    xls1_c6(j,i)=xls1(j,i)
173                    xln1_c6(j,i)=xln1(j,i)
174                    xld1_c6(j,i)=xld1(j,i)
175                 enddo
176              enddo
177              do j=1,nhist
178                 thist_c6(j)=thist(j)
179              enddo
180           else if (ib.eq.4) then !Case 7
181              mm_c7=mm
182              nbox_c7=nbox
183              tmin_c7=tmin
184              tmax_c7=tmax
185              do i=1,nbox_max
186                 no_c7(i)=no(i)
187                 dist_c7(i)=dist(i)
188                 do j=1,nhist
189                    sk1_c7(j,i)=sk1(j,i)
190                    xls1_c7(j,i)=xls1(j,i)
191                    xln1_c7(j,i)=xln1(j,i)
192                    xld1_c7(j,i)=xld1(j,i)
193                 enddo
194              enddo
195              do j=1,nhist
196                 thist_c7(j)=thist(j)
197              enddo
198           endif
199        enddo
200
201c end                                           
202        return                                         
203
204        end                                           
205                                               
206
Note: See TracBrowser for help on using the repository browser.