LMDZ
methox.F90
Go to the documentation of this file.
1 SUBROUTINE methox(KIDIA, KFDIA, KLON, KLEV,PQ, PTENQ, PAP )
2 
3 !**** *METHOX* - Calculate humidity tendencies from methane
4 ! oxidation and photolysis
5 
6 !** INTERFACE.
7 ! ----------
8 ! CALL *METHOX* FROM *CALLPAR*
9 ! ------ -------
10 
11 ! EXPLICIT ARGUMENTS :
12 ! --------------------
13 ! PARAMETER DESCRIPTION UNITS
14 ! --------- ----------- -----
15 ! INPUT PARAMETERS (INTEGER):
16 
17 ! *KIDIA* START POINT
18 ! *KFDIA* END POINT
19 ! *KLON* NUMBER OF GRID POINTS PER PACKET
20 ! *KLEV* NUMBER OF LEVELS
21 
22 ! INPUT PARAMETERS (REAL):
23 
24 ! *PAP* PRESSURE PA
25 ! *PQ* SPECIFIC HUMIDITY KG/KG
26 
27 ! UPDATED PARAMETERS (REAL):
28 
29 ! *PTENQ* TENDENCY OF SPECIFIC HUMIDITY KG/(KG*S)
30 
31 ! NONE
32 
33 ! IMPLICIT ARGUMENTS :
34 ! --------------------
35 ! MODULE YOEMETH
36 ! MODULE YOMCST
37 
38 ! METHOD.
39 ! -------
40 ! SEE RD-MEMO R60.1/AJS/31
41 
42 ! EXTERNALS.
43 ! ----------
44 ! NONE
45 
46 ! REFERENCE.
47 ! ----------
48 ! SEE RD-MEMO R60.1/AJS/31
49 
50 ! AUTHOR.
51 ! -------
52 ! C.JAKOB *ECMWF*
53 
54 ! MODIFICATIONS.
55 ! --------------
56 ! ORIGINAL : 98-04-07
57 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
58 ! D. Cugnet 24-Feb-2012 Adapted for LMDZ
59 ! ------------------------------------------------------------------
60 
61 USE yoemeth , ONLY : ralpha1 ,ralpha2 ,rqlim ,&
63  & ralpha3, rlogpph
64 
65 IMPLICIT NONE
66 
67 #include "YOMCST.h"
68 
69 INTEGER,INTENT(IN) :: KLON
70 INTEGER,INTENT(IN) :: KLEV
71 INTEGER,INTENT(IN) :: KIDIA
72 INTEGER,INTENT(IN) :: KFDIA
73 REAL ,INTENT(IN) :: PQ(klon,klev)
74 REAL ,INTENT(INOUT) :: PTENQ(klon,klev)
75 REAL ,INTENT(IN) :: PAP(klon,klev)
76 LOGICAL :: LLOXID, LLPHOTO
77 
78 INTEGER :: JK, JL
79 
80 REAL :: ZARG, ZPRATIO, ZTAU1, ZTAU2, ZTDAYS
81 
82 DO jk=1,klev
83  DO jl=kidia,kfdia
84 
85  lloxid=pap(jl,jk) < rpbotox.AND.pq(jl,jk) < rqlim
86  llphoto=pap(jl,jk) < rpbotph
87 
88 ! METHANE OXIDATION
89 
90  IF(lloxid) THEN
91  IF(pap(jl,jk) <= rptopox) THEN
92  ztdays=100.
93  ELSE
94  zpratio=(log(pap(jl,jk)/rptopox))**4./log(rpbotox/pap(jl,jk))
95  ztdays=100.*(1+ralpha1*zpratio)
96  ENDIF
97  ztau1=86400.*ztdays
98  ptenq(jl,jk)=ptenq(jl,jk)+(rqlim-pq(jl,jk))/ztau1
99  ENDIF
100 
101 ! PHOTOLYSIS
102 
103  IF(llphoto) THEN
104  IF(pap(jl,jk) <= rptopph) THEN
105  ztdays=3.
106  ELSE
107  zarg=ralpha2-ralpha3*(1+cos((rpi*log(pap(jl,jk)/rpbotph))/rlogpph))
108  ztdays=1.0/(exp(zarg)-0.01)
109  ENDIF
110  ztau2=86400.*ztdays
111  ptenq(jl,jk)=ptenq(jl,jk)-pq(jl,jk)/ztau2
112  ENDIF
113  ENDDO
114 ENDDO
115 
116 END SUBROUTINE methox
117 
118 
subroutine methox(KIDIA, KFDIA, KLON, KLEV, PQ, PTENQ, PAP)
Definition: methox.F90:2
real ralpha3
Definition: YOEMETH.F90:41
real rpbotox
Definition: YOEMETH.F90:37
real rqlim
Definition: YOEMETH.F90:36
real rlogpph
Definition: YOEMETH.F90:42
real ralpha1
Definition: YOEMETH.F90:34
real rptopox
Definition: YOEMETH.F90:39
real rpbotph
Definition: YOEMETH.F90:38
real ralpha2
Definition: YOEMETH.F90:35
real rptopph
Definition: YOEMETH.F90:40