source: LMDZ6/branches/Amaury_dev/libf/phylmd/methox.F90 @ 5441

Last change on this file since 5441 was 5144, checked in by abarral, 5 months ago

Put YOMCST.h into modules

File size: 3.0 KB
RevLine 
[5144]1SUBROUTINE METHOX(KIDIA, KFDIA, KLON, KLEV, PQ, PTENQ, PAP)
[2136]2
[5144]3  !**** *METHOX*   - Calculate humidity tendencies from methane
4  !                  oxidation and photolysis
[2136]5
[5144]6  !**   INTERFACE.
7  !     ----------
8  !        CALL *METHOX* FROM *CALLPAR*
9  !              ------        -------
[2136]10
[5144]11  !        EXPLICIT ARGUMENTS :
12  !        --------------------
13  !     PARAMETER     DESCRIPTION                                   UNITS
14  !     ---------     -----------                                   -----
15  !     INPUT PARAMETERS (INTEGER):
[2136]16
[5144]17  !    *KIDIA*        START POINT
18  !    *KFDIA*        END POINT
19  !    *KLON*         NUMBER OF GRID POINTS PER PACKET
20  !    *KLEV*         NUMBER OF LEVELS
[2136]21
[5144]22  !     INPUT PARAMETERS (REAL):
[2136]23
[5144]24  !    *PAP*          PRESSURE                                      PA
25  !    *PQ*           SPECIFIC HUMIDITY                             KG/KG
[2136]26
[5144]27  !     UPDATED PARAMETERS (REAL):
[2136]28
[5144]29  !    *PTENQ*        TENDENCY OF SPECIFIC HUMIDITY                 KG/(KG*S)
[2136]30
[5144]31  !        NONE
[2136]32
[5144]33  !        IMPLICIT ARGUMENTS :
34  !        --------------------
35  !        MODULE YOEMETH
36  !        MODULE YOMCST
[2136]37
[5144]38  !     METHOD.
39  !     -------
40  !        SEE RD-MEMO R60.1/AJS/31
[2136]41
[5144]42  !     EXTERNALS.
43  !     ----------
44  !        NONE
[2136]45
[5144]46  !     REFERENCE.
47  !     ----------
48  !        SEE RD-MEMO R60.1/AJS/31
[2136]49
[5144]50  !     AUTHOR.
51  !     -------
52  !        C.JAKOB   *ECMWF*
[2136]53
[5144]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  !     ------------------------------------------------------------------
[2136]60
[5144]61  USE YOEMETH, ONLY: RALPHA1, RALPHA2, RQLIM, &
62          RPBOTOX, RPBOTPH, RPTOPOX, RPTOPPH, &
63          RALPHA3, RLOGPPH
64  USE lmdz_yomcst
[2136]65
[5144]66  IMPLICIT NONE
[2136]67
[5144]68  INTEGER, INTENT(IN) :: KLON
69  INTEGER, INTENT(IN) :: KLEV
70  INTEGER, INTENT(IN) :: KIDIA
71  INTEGER, INTENT(IN) :: KFDIA
72  REAL, INTENT(IN) :: PQ(KLON, KLEV)
73  REAL, INTENT(INOUT) :: PTENQ(KLON, KLEV)
74  REAL, INTENT(IN) :: PAP(KLON, KLEV)
75  LOGICAL :: LLOXID, LLPHOTO
[2136]76
[5144]77  INTEGER :: JK, JL
[2136]78
[5144]79  REAL :: ZARG, ZPRATIO, ZTAU1, ZTAU2, ZTDAYS
[2136]80
[5144]81  DO JK = 1, KLEV
82    DO JL = KIDIA, KFDIA
[2136]83
[5144]84      LLOXID = PAP(JL, JK) < RPBOTOX.AND.PQ(JL, JK) < RQLIM
85      LLPHOTO = PAP(JL, JK) < RPBOTPH
[2136]86
[5144]87      !     METHANE OXIDATION
[2136]88
[5144]89      IF(LLOXID) THEN
90        IF(PAP(JL, JK) <= RPTOPOX) THEN
91          ZTDAYS = 100.
92        ELSE
93          ZPRATIO = (LOG(PAP(JL, JK) / RPTOPOX))**4. / LOG(RPBOTOX / PAP(JL, JK))
94          ZTDAYS = 100. * (1 + RALPHA1 * ZPRATIO)
95        ENDIF
96        ZTAU1 = 86400. * ZTDAYS
97        PTENQ(JL, JK) = PTENQ(JL, JK) + (RQLIM - PQ(JL, JK)) / ZTAU1
[2136]98      ENDIF
99
[5144]100      !     PHOTOLYSIS
[2136]101
[5144]102      IF(LLPHOTO) THEN
103        IF(PAP(JL, JK) <= RPTOPPH) THEN
104          ZTDAYS = 3.
105        ELSE
106          ZARG = RALPHA2 - RALPHA3 * (1 + COS((RPI * LOG(PAP(JL, JK) / RPBOTPH)) / RLOGPPH))
107          ZTDAYS = 1.0 / (EXP(ZARG) - 0.01)
108        ENDIF
109        ZTAU2 = 86400. * ZTDAYS
110        PTENQ(JL, JK) = PTENQ(JL, JK) - PQ(JL, JK) / ZTAU2
[2136]111      ENDIF
[5144]112    ENDDO
[2136]113  ENDDO
114
115END SUBROUTINE METHOX
116
117
Note: See TracBrowser for help on using the repository browser.