Ignore:
Timestamp:
Jul 29, 2024, 11:01:04 PM (3 months ago)
Author:
abarral
Message:

Put YOMCST.h into modules

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/phylmd/methox.F90

    r5101 r5144  
    1 SUBROUTINE METHOX(KIDIA,  KFDIA,  KLON,  KLEV,PQ,     PTENQ,  PAP )
     1SUBROUTINE METHOX(KIDIA, KFDIA, KLON, KLEV, PQ, PTENQ, PAP)
    22
    3 !**** *METHOX*   - Calculate humidity tendencies from methane
    4 !                  oxidation and photolysis
     3  !**** *METHOX*   - Calculate humidity tendencies from methane
     4  !                  oxidation and photolysis
    55
    6 !**   INTERFACE.
    7 !     ----------
    8 !        CALL *METHOX* FROM *CALLPAR*
    9 !              ------        -------
     6  !**   INTERFACE.
     7  !     ----------
     8  !        CALL *METHOX* FROM *CALLPAR*
     9  !              ------        -------
    1010
    11 !        EXPLICIT ARGUMENTS :
    12 !        --------------------
    13 !     PARAMETER     DESCRIPTION                                   UNITS
    14 !     ---------     -----------                                   -----
    15 !     INPUT PARAMETERS (INTEGER):
     11  !        EXPLICIT ARGUMENTS :
     12  !        --------------------
     13  !     PARAMETER     DESCRIPTION                                   UNITS
     14  !     ---------     -----------                                   -----
     15  !     INPUT PARAMETERS (INTEGER):
    1616
    17 !    *KIDIA*        START POINT
    18 !    *KFDIA*        END POINT
    19 !    *KLON*         NUMBER OF GRID POINTS PER PACKET
    20 !    *KLEV*         NUMBER OF LEVELS
     17  !    *KIDIA*        START POINT
     18  !    *KFDIA*        END POINT
     19  !    *KLON*         NUMBER OF GRID POINTS PER PACKET
     20  !    *KLEV*         NUMBER OF LEVELS
    2121
    22 !     INPUT PARAMETERS (REAL):
     22  !     INPUT PARAMETERS (REAL):
    2323
    24 !    *PAP*          PRESSURE                                      PA
    25 !    *PQ*           SPECIFIC HUMIDITY                             KG/KG
     24  !    *PAP*          PRESSURE                                      PA
     25  !    *PQ*           SPECIFIC HUMIDITY                             KG/KG
    2626
    27 !     UPDATED PARAMETERS (REAL):
     27  !     UPDATED PARAMETERS (REAL):
    2828
    29 !    *PTENQ*        TENDENCY OF SPECIFIC HUMIDITY                 KG/(KG*S)
     29  !    *PTENQ*        TENDENCY OF SPECIFIC HUMIDITY                 KG/(KG*S)
    3030
    31 !        NONE
     31  !        NONE
    3232
    33 !        IMPLICIT ARGUMENTS :
    34 !        --------------------
    35 !        MODULE YOEMETH
    36 !        MODULE YOMCST
     33  !        IMPLICIT ARGUMENTS :
     34  !        --------------------
     35  !        MODULE YOEMETH
     36  !        MODULE YOMCST
    3737
    38 !     METHOD.
    39 !     -------
    40 !        SEE RD-MEMO R60.1/AJS/31
     38  !     METHOD.
     39  !     -------
     40  !        SEE RD-MEMO R60.1/AJS/31
    4141
    42 !     EXTERNALS.
    43 !     ----------
    44 !        NONE
     42  !     EXTERNALS.
     43  !     ----------
     44  !        NONE
    4545
    46 !     REFERENCE.
    47 !     ----------
    48 !        SEE RD-MEMO R60.1/AJS/31
     46  !     REFERENCE.
     47  !     ----------
     48  !        SEE RD-MEMO R60.1/AJS/31
    4949
    50 !     AUTHOR.
    51 !     -------
    52 !        C.JAKOB   *ECMWF*
     50  !     AUTHOR.
     51  !     -------
     52  !        C.JAKOB   *ECMWF*
    5353
    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 !     ------------------------------------------------------------------
     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  !     ------------------------------------------------------------------
    6060
    61 USE YOEMETH   , ONLY: RALPHA1 ,RALPHA2  ,RQLIM   ,&
    62    RPBOTOX,  RPBOTPH ,RPTOPOX  ,RPTOPPH ,&
    63    RALPHA3,  RLOGPPH
     61  USE YOEMETH, ONLY: RALPHA1, RALPHA2, RQLIM, &
     62          RPBOTOX, RPBOTPH, RPTOPOX, RPTOPPH, &
     63          RALPHA3, RLOGPPH
     64  USE lmdz_yomcst
    6465
    65 IMPLICIT NONE
     66  IMPLICIT NONE
    6667
    67 INCLUDE "YOMCST.h"
     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
    6876
    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  INTEGER :: JK, JL
    7778
    78 INTEGER :: JK, JL
     79  REAL :: ZARG, ZPRATIO, ZTAU1, ZTAU2, ZTDAYS
    7980
    80 REAL :: ZARG, ZPRATIO, ZTAU1, ZTAU2, ZTDAYS
     81  DO JK = 1, KLEV
     82    DO JL = KIDIA, KFDIA
    8183
    82 DO JK=1,KLEV
    83   DO JL=KIDIA,KFDIA
     84      LLOXID = PAP(JL, JK) < RPBOTOX.AND.PQ(JL, JK) < RQLIM
     85      LLPHOTO = PAP(JL, JK) < RPBOTPH
    8486
    85     LLOXID=PAP(JL,JK) < RPBOTOX.AND.PQ(JL,JK) < RQLIM
    86     LLPHOTO=PAP(JL,JK) < RPBOTPH
     87      !     METHANE OXIDATION
    8788
    88 !     METHANE OXIDATION
     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
     98      ENDIF
    8999
    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)
     100      !     PHOTOLYSIS
     101
     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
    96111      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
     112    ENDDO
    113113  ENDDO
    114 ENDDO
    115114
    116115END SUBROUTINE METHOX
Note: See TracChangeset for help on using the changeset viewer.