source: LMDZ5/branches/IPSLCM5A2.1_ISO/libf/phyiso/methox.F90 @ 4003

Last change on this file since 4003 was 3331, checked in by acozic, 6 years ago

Add modification for isotopes

  • Property svn:executable set to *
File size: 4.5 KB
Line 
1SUBROUTINE METHOX(KIDIA,  KFDIA,  KLON,  KLEV,PQ,     PTENQ,  PAP  &
2#ifdef ISO     
3        & ,Pxt,PTENxt &
4#endif
5        & )
6
7!**** *METHOX*   - Calculate humidity tendencies from methane
8!                  oxidation and photolysis
9
10!**   INTERFACE.
11!     ----------
12!        CALL *METHOX* FROM *CALLPAR*
13!              ------        -------
14
15!        EXPLICIT ARGUMENTS :
16!        --------------------
17!     PARAMETER     DESCRIPTION                                   UNITS
18!     ---------     -----------                                   -----
19!     INPUT PARAMETERS (INTEGER):
20
21!    *KIDIA*        START POINT
22!    *KFDIA*        END POINT
23!    *KLON*         NUMBER OF GRID POINTS PER PACKET
24!    *KLEV*         NUMBER OF LEVELS
25
26!     INPUT PARAMETERS (REAL):
27
28!    *PAP*          PRESSURE                                      PA
29!    *PQ*           SPECIFIC HUMIDITY                             KG/KG
30
31!     UPDATED PARAMETERS (REAL):
32
33!    *PTENQ*        TENDENCY OF SPECIFIC HUMIDITY                 KG/(KG*S)
34
35!        NONE
36
37!        IMPLICIT ARGUMENTS :
38!        --------------------
39!        MODULE YOEMETH
40!        MODULE YOMCST
41
42!     METHOD.
43!     -------
44!        SEE RD-MEMO R60.1/AJS/31
45
46!     EXTERNALS.
47!     ----------
48!        NONE
49
50!     REFERENCE.
51!     ----------
52!        SEE RD-MEMO R60.1/AJS/31
53
54!     AUTHOR.
55!     -------
56!        C.JAKOB   *ECMWF*
57
58!     MODIFICATIONS.
59!     --------------
60!        ORIGINAL : 98-04-07
61!        M.Hamrud      01-Oct-2003 CY28 Cleaning
62!        D. Cugnet     24-Feb-2012 Adapted for LMDZ
63!     ------------------------------------------------------------------
64
65USE YOEMETH   , ONLY : RALPHA1 ,RALPHA2  ,RQLIM   ,&
66 & RPBOTOX,  RPBOTPH ,RPTOPOX  ,RPTOPPH ,&
67 & RALPHA3,  RLOGPPH 
68#ifdef ISO
69USE infotrac_phy, ONLY: ntraciso,niso
70USE isotopes_mod, ONLY: Rmethox, iso_eau
71#ifdef ISOVERIF
72  USE isotopes_verif_mod, ONLY: errmax,errmaxrel,iso_verif_egalite_choix
73#endif
74#ifdef ISOTRAC
75    use isotrac_mod, only: izone_poubelle,index_zone,index_iso
76#endif
77#endif
78
79IMPLICIT NONE
80
81#include "YOMCST.h"
82
83INTEGER,INTENT(IN)    :: KLON
84INTEGER,INTENT(IN)    :: KLEV
85INTEGER,INTENT(IN)    :: KIDIA
86INTEGER,INTENT(IN)    :: KFDIA
87REAL   ,INTENT(IN)    :: PQ(KLON,KLEV)
88REAL   ,INTENT(INOUT) :: PTENQ(KLON,KLEV)
89REAL   ,INTENT(IN)    :: PAP(KLON,KLEV)
90LOGICAL :: LLOXID,         LLPHOTO
91
92INTEGER :: JK, JL
93
94REAL :: ZARG, ZPRATIO, ZTAU1, ZTAU2, ZTDAYS
95
96#ifdef ISO
97REAL   ,INTENT(IN)    :: Pxt(ntraciso,KLON,KLEV)
98REAL   ,INTENT(INOUT) :: PTENxt(ntraciso,KLON,KLEV)
99INTEGER :: ixt
100#ifdef ISOTRAC
101integer izone_recoit
102#endif
103#endif
104
105
106DO JK=1,KLEV
107  DO JL=KIDIA,KFDIA
108
109    LLOXID=PAP(JL,JK) < RPBOTOX.AND.PQ(JL,JK) < RQLIM
110    LLPHOTO=PAP(JL,JK) < RPBOTPH
111    PTENQ(JL,JK)=0.0 ! ajout CRisi pour init   
112
113!     METHANE OXIDATION
114
115    IF(LLOXID) THEN
116      IF(PAP(JL,JK) <= RPTOPOX) THEN
117        ZTDAYS=100.
118      ELSE
119        ZPRATIO=(LOG(PAP(JL,JK)/RPTOPOX))**4./LOG(RPBOTOX/PAP(JL,JK))
120        ZTDAYS=100.*(1+RALPHA1*ZPRATIO)
121      ENDIF
122      ZTAU1=86400.*ZTDAYS
123      PTENQ(JL,JK)=PTENQ(JL,JK)+(RQLIM-PQ(JL,JK))/ZTAU1
124    ENDIF
125
126!     PHOTOLYSIS
127
128    IF(LLPHOTO) THEN
129      IF(PAP(JL,JK) <= RPTOPPH) THEN
130        ZTDAYS=3.
131      ELSE
132        ZARG=RALPHA2-RALPHA3*(1+COS((RPI*LOG(PAP(JL,JK)/RPBOTPH))/RLOGPPH))
133        ZTDAYS=1.0/(EXP(ZARG)-0.01)
134      ENDIF
135      ZTAU2=86400.*ZTDAYS
136      PTENQ(JL,JK)=PTENQ(JL,JK)-PQ(JL,JK)/ZTAU2
137    ENDIF
138  ENDDO
139ENDDO
140
141#ifdef ISO
142        ! supposer une source d'eau avec composition constante.
143        ! dans la biblio: Bilan masse basé sur Zhan et al 2006. 
144        write(*,*) 'Rmethox=',Rmethox
145DO JK=1,KLEV
146  DO JL=KIDIA,KFDIA       
147        do ixt=1,niso
148          PTENxt(ixt,JL,JK)=PTENQ(JL,JK)*Rmethox(ixt)
149        enddo
150  ENDDO
151ENDDO
152#ifdef ISOTRAC
153        ! mettre dans la zone poubelle.
154izone_recoit= izone_poubelle
155DO JK=1,KLEV
156  DO JL=KIDIA,KFDIA 
157        do ixt=niso+1,ntraciso
158            if (index_zone(ixt).eq.izone_recoit) then
159               PTENxt(ixt,JK,JL)=PTENxt(index_iso(ixt),JK,JL)
160            else
161               PTENxt(ixt,JK,JL)=0.0
162            endif
163        enddo   !do ixt=niso+1,ntraciso
164  ENDDO
165ENDDO
166#endif
167#ifdef ISOVERIF
168DO JK=1,KLEV
169  DO JL=KIDIA,KFDIA
170        if (iso_eau.gt.0) then
171            call iso_verif_egalite_choix(PTENxt(iso_eau,JK,JL), &
172     &        PTENQ(JK,JL),'methox 163', &
173     &        errmax,errmaxrel)
174        endif
175  ENDDO
176ENDDO
177#endif
178#endif
179        write(*,*) 'methox 158: PTENQ(30,35)=',PTENQ(30,35)
180        write(*,*) 'PTENQ(30,34)=',PTENQ(30,34)
181        write(*,*) 'PTENQ(30,33)=',PTENQ(30,33)
182        write(*,*) 'PTENQ(30,32)=',PTENQ(30,32)
183
184END SUBROUTINE METHOX
185
186
Note: See TracBrowser for help on using the repository browser.