[4728] | 1 | SUBROUTINE CLOUD_OVERLAP_DECORR_LEN & |
---|
| 2 | & (KIDIA, KFDIA, KLON, PGEMU, KDECOLAT, & |
---|
| 3 | & PDECORR_LEN_EDGES_KM, PDECORR_LEN_WATER_KM, PDECORR_LEN_RATIO) |
---|
| 4 | |
---|
| 5 | ! CLOUD_OVERLAP_DECORR_LEN |
---|
| 6 | ! |
---|
| 7 | ! (C) Copyright 2016- ECMWF. |
---|
| 8 | ! |
---|
| 9 | ! This software is licensed under the terms of the Apache Licence Version 2.0 |
---|
| 10 | ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. |
---|
| 11 | ! |
---|
| 12 | ! In applying this licence, ECMWF does not waive the privileges and immunities |
---|
| 13 | ! granted to it by virtue of its status as an intergovernmental organisation |
---|
| 14 | ! nor does it submit to any jurisdiction. |
---|
| 15 | ! |
---|
| 16 | ! PURPOSE |
---|
| 17 | ! ------- |
---|
| 18 | ! Calculate the cloud overlap decorrelation length as a function of |
---|
| 19 | ! latitude for use in the radiation scheme |
---|
| 20 | ! |
---|
| 21 | ! INTERFACE |
---|
| 22 | ! --------- |
---|
| 23 | ! CLOUD_OVERLAP_DECORR_LEN is called from RADLSWR and RADIATION_SCHEME |
---|
| 24 | ! |
---|
| 25 | ! AUTHOR |
---|
| 26 | ! ------ |
---|
| 27 | ! Robin Hogan, ECMWF (using code extracted from radlswr.F90) |
---|
| 28 | ! Original: 2016-02-16 |
---|
| 29 | ! |
---|
| 30 | ! MODIFICATIONS |
---|
| 31 | ! ------------- |
---|
| 32 | ! |
---|
| 33 | ! ------------------------------------------------------------------- |
---|
| 34 | |
---|
| 35 | USE PARKIND1 , ONLY : JPIM, JPRB |
---|
| 36 | USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK |
---|
| 37 | USE YOMCST , ONLY : RPI |
---|
| 38 | USE YOECLD , ONLY : RDECORR_CF, RDECORR_CW |
---|
| 39 | |
---|
| 40 | ! ------------------------------------------------------------------- |
---|
| 41 | |
---|
| 42 | IMPLICIT NONE |
---|
| 43 | |
---|
| 44 | ! INPUT ARGUMENTS |
---|
| 45 | |
---|
| 46 | ! *** Array dimensions and ranges |
---|
| 47 | INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process |
---|
| 48 | INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process |
---|
| 49 | INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns |
---|
| 50 | |
---|
| 51 | ! *** Configuration variable controlling the overlap scheme |
---|
| 52 | INTEGER(KIND=JPIM),INTENT(IN) :: KDECOLAT |
---|
| 53 | |
---|
| 54 | ! *** Single-level variables |
---|
| 55 | REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) ! Sine of latitude |
---|
| 56 | |
---|
| 57 | ! OUTPUT ARGUMENTS |
---|
| 58 | |
---|
| 59 | ! *** Decorrelation lengths for cloud edges and cloud water content, |
---|
| 60 | ! *** in km |
---|
| 61 | REAL(KIND=JPRB), INTENT(OUT) :: PDECORR_LEN_EDGES_KM(KLON) |
---|
| 62 | REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_WATER_KM(KLON) |
---|
| 63 | |
---|
| 64 | ! Ratio of water-content to cloud-edge decorrelation lengths |
---|
| 65 | REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_RATIO |
---|
| 66 | |
---|
| 67 | ! LOCAL VARIABLES |
---|
| 68 | |
---|
| 69 | REAL(KIND=JPRB) :: ZRADIANS_TO_DEGREES, ZABS_LAT_DEG, ZCOS_LAT |
---|
| 70 | |
---|
| 71 | INTEGER(KIND=JPIM) :: JL |
---|
| 72 | |
---|
| 73 | REAL(KIND=JPHOOK) :: ZHOOK_HANDLE |
---|
| 74 | |
---|
| 75 | ! ------------------------------------------------------------------- |
---|
| 76 | |
---|
| 77 | IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',0,ZHOOK_HANDLE) |
---|
| 78 | |
---|
| 79 | ! ------------------------------------------------------------------- |
---|
| 80 | |
---|
| 81 | IF (KDECOLAT == 0) THEN |
---|
| 82 | |
---|
| 83 | ! Decorrelation lengths are constant values |
---|
| 84 | PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) = RDECORR_CF |
---|
| 85 | IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN |
---|
| 86 | PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = RDECORR_CW |
---|
| 87 | ENDIF |
---|
| 88 | IF (PRESENT(PDECORR_LEN_RATIO)) THEN |
---|
| 89 | PDECORR_LEN_RATIO = RDECORR_CW / RDECORR_CF |
---|
| 90 | ENDIF |
---|
| 91 | |
---|
| 92 | ELSE |
---|
| 93 | |
---|
| 94 | ZRADIANS_TO_DEGREES = 180.0_JPRB / RPI |
---|
| 95 | |
---|
| 96 | IF (KDECOLAT == 1) THEN |
---|
| 97 | ! Shonk et al. (2010) Eq. 13 formula |
---|
| 98 | DO JL = KIDIA,KFDIA |
---|
| 99 | ZABS_LAT_DEG = ABS(ASIN(PGEMU(JL)) * ZRADIANS_TO_DEGREES) |
---|
| 100 | PDECORR_LEN_EDGES_KM(JL) = 2.899_JPRB - 0.02759_JPRB * ZABS_LAT_DEG |
---|
| 101 | ENDDO |
---|
| 102 | ELSE ! KDECOLAT == 2 |
---|
| 103 | DO JL = KIDIA,KFDIA |
---|
| 104 | ! Shonk et al. (2010) but smoothed over the equator |
---|
| 105 | ZCOS_LAT = COS(ASIN(PGEMU(JL))) |
---|
| 106 | PDECORR_LEN_EDGES_KM(JL) = 0.75_JPRB + 2.149_JPRB * ZCOS_LAT*ZCOS_LAT |
---|
| 107 | ENDDO |
---|
| 108 | ENDIF |
---|
| 109 | |
---|
| 110 | ! Both KDECOLAT = 1 and 2 assume that the decorrelation length for |
---|
| 111 | ! cloud water content is half that for cloud edges |
---|
| 112 | IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN |
---|
| 113 | PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) * 0.5_JPRB |
---|
| 114 | ENDIF |
---|
| 115 | |
---|
| 116 | IF (PRESENT(PDECORR_LEN_RATIO)) THEN |
---|
| 117 | PDECORR_LEN_RATIO = 0.5_JPRB |
---|
| 118 | ENDIF |
---|
| 119 | |
---|
| 120 | ENDIF |
---|
| 121 | |
---|
| 122 | ! ------------------------------------------------------------------- |
---|
| 123 | |
---|
| 124 | IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',1,ZHOOK_HANDLE) |
---|
| 125 | |
---|
| 126 | END SUBROUTINE CLOUD_OVERLAP_DECORR_LEN |
---|