source: trunk/LMDZ.MARS/libf/phymars/mztvc_626fh.F @ 469

Last change on this file since 469 was 414, checked in by aslmd, 14 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: 4.3 KB
Line 
1c***********************************************************************
2                                                           
3        subroutine mztvc_626fh(ig)
4
5c       jul 2011 malv+fgg
6c***********************************************************************
7                                                           
8        implicit none                                 
9                                                           
10!!!!!!!!!!!!!!!!!!!!!!!                         
11! common variables & constants                 
12                                                           
13        include 'nltedefs.h'         
14        include 'nlte_atm.h'       
15        include 'nlte_data.h'       
16        include 'tcr_15um.h'
17        include 'nlte_matrix.h'     
18        include 'nlte_curtis.h'     
19                                                           
20!!!!!!!!!!!!!!!!!!!!!!!                         
21! arguments                                     
22                 
23        integer   ig   ! ADDED FOR TRACEBACK
24                                                           
25!!!!!!!!!!!!!!!!!!!!!!!                         
26! local variables                               
27                                                           
28        real*4 cdummy(nl,nl), csngl(nl,nl)             
29                                                           
30        real*8 cax1(nl,nl), cax2(nl,nl), cax3(nl,nl)   
31        real*8 v1(nl), v2(nl), v3(nl), cm_factor, vc_factor       
32                                                           
33        integer itauout,icfout,itableout, interpol,ismooth, isngldble         
34        integer i,j,ik,ist,isot,ib,itt                 
35                                                           
36        !character      bandcode*2
37        character       isotcode*2
38        !character      codmatrx_hot*5                     
39                                                           
40!!!!!!!!!!!!!!!!!!!!!!!                         
41! external functions                           
42                                                           
43        external bandid                               
44        character*2 bandid                             
45                                                           
46!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!               
47! subroutines called:                           
48!       mz4sub, dmzout, readc_mz4, readcupdw, mztf   
49                                                           
50!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!               
51! formatos                                     
52 132    format(i2)                                 
53                                                           
54************************************************************************
55************************************************************************
56                                                           
57        isngldble = 1           ! =1 --> dble precission       
58                                                           
59        fileroot = 'cfl'                               
60                                                           
61        ist = 1                                       
62        isot = 26                                     
63        write (isotcode,132) isot 
64                             
65        call zerov( vc121, nl )
66
67        do 11, ik=1,3                                 
68                                                           
69          ib=ik+1                                     
70                                                           
71          call mztvc (ig,v1, ib, 1, irw_mztf, imu, 0,0,0 )
72                                                           
73          do i=1,nl                                   
74                                                           
75            if(ik.eq.1)then                           
76                vc_factor = dble(667.75/618.03)               
77            elseif(ik.eq.2)then                       
78                vc_factor = 1.d0                             
79            elseif(ik.eq.3)then                       
80                vc_factor = dble(667.75/720.806)             
81            end if                                     
82                                                           
83            vc121(i) = vc121(i) + v1(i) * vc_factor   
84
85          end do         
86                                                           
8711      continue                                     
88                                                           
89                                                           
90        return                                         
91        end                                           
Note: See TracBrowser for help on using the repository browser.