[2089] | 1 | subroutine PHY_Atm_CM_QSat |
---|
| 2 | |
---|
| 3 | !------------------------------------------------------------------------------+ |
---|
| 4 | ! Mon 17-Jun-2013 MAR | |
---|
| 5 | ! | |
---|
| 6 | ! subroutine PHY_Atm_CM_QSat computes specifics Humidities at Saturation | |
---|
| 7 | ! for Cloud Microphysical Scheme used by MAR | |
---|
| 8 | ! | |
---|
| 9 | ! version 3.p.4.1 created by H. Gallee, Sat 23-Mar-2013 | |
---|
| 10 | ! Last Modification by H. Gallee, Mon 17-Jun-2013 | |
---|
| 11 | ! | |
---|
| 12 | !------------------------------------------------------------------------------+ |
---|
| 13 | ! | |
---|
| 14 | ! INPUT : Ta__DY: Air Temperature [K] | |
---|
| 15 | ! ^^^^^ psa_DY: Model Pressure Thickness [kPa] | |
---|
| 16 | ! | |
---|
| 17 | ! OUTPUT : qvswCM : Saturation Specific Humidity over Water [kg/kg] | |
---|
| 18 | ! ^^^^^^ qvsiCM : Saturation Specific Humidity over Ice [kg/kg] | |
---|
| 19 | ! | |
---|
| 20 | ! REFERENCE : Dudhia (1989) JAS, (B1) and (B2) p.3103 | |
---|
| 21 | ! ^^^^^^^^^ | |
---|
| 22 | !------------------------------------------------------------------------------+ |
---|
| 23 | |
---|
| 24 | use Mod_Real |
---|
| 25 | use Mod_PHY____dat |
---|
| 26 | use Mod_PHY____grd |
---|
| 27 | use Mod_PHY_DY_kkl |
---|
| 28 | use Mod_PHY_CM_kkl |
---|
| 29 | |
---|
| 30 | |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | ! Local Variables |
---|
| 34 | ! ================ |
---|
| 35 | |
---|
| 36 | use Mod_Atm_CM_QSa |
---|
| 37 | |
---|
| 38 | |
---|
| 39 | IMPLICIT NONE |
---|
| 40 | |
---|
| 41 | |
---|
| 42 | integer i ,j ,ikl ,k |
---|
| 43 | |
---|
| 44 | real(kind=real8) :: WatIce = 273.16e0 |
---|
| 45 | real(kind=real8) :: ExpWat = 5.138e0 |
---|
| 46 | real(kind=real8) :: ExpWa2 = 6827.e0 |
---|
| 47 | real(kind=real8) :: ExpIce = 6150.e0 |
---|
| 48 | real(kind=real8) :: pr__75 = 75.00 ! 75 [hPa] |
---|
| 49 | real(kind=real8) :: qs__75 = 0.001 ! 0.001 [kg/kg] |
---|
| 50 | |
---|
| 51 | real(kind=real8) :: Wphase |
---|
| 52 | real(kind=real8) :: qvSatI |
---|
| 53 | |
---|
| 54 | |
---|
| 55 | |
---|
| 56 | |
---|
| 57 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 58 | ! ! |
---|
| 59 | ! ALLOCATION |
---|
| 60 | ! ========== |
---|
| 61 | |
---|
| 62 | IF (it_RUN.EQ.1 .OR. FlagDALLOC) THEN ! |
---|
| 63 | allocate ( pa_hPa(mzpp) ) |
---|
| 64 | allocate ( pr_b75(mzpp) ) |
---|
| 65 | allocate ( ei_sat(mzpp) ) |
---|
| 66 | allocate ( ew_sat(mzpp) ) |
---|
| 67 | END IF |
---|
| 68 | ! ! |
---|
| 69 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 70 | |
---|
| 71 | |
---|
| 72 | ! ++++++++++++++++ |
---|
| 73 | DO ikl = 1,kcolp |
---|
| 74 | ! ++++++++++++++++ |
---|
| 75 | |
---|
| 76 | |
---|
| 77 | |
---|
| 78 | ! Temperature (K) and Pressure (hPa) |
---|
| 79 | ! ================================== |
---|
| 80 | |
---|
| 81 | DO k=1,mzpp |
---|
| 82 | pa_hPa(k) = (psa_DY(ikl) * sigma(k) + pt__DY) * 10.0d0 |
---|
| 83 | |
---|
| 84 | |
---|
| 85 | ! Pressure Discriminator |
---|
| 86 | ! ---------------------- |
---|
| 87 | |
---|
| 88 | pr_b75(k) = max(zer0,sign(un_1,pa_hPa(k)-pr__75)) |
---|
| 89 | |
---|
| 90 | |
---|
| 91 | |
---|
| 92 | |
---|
| 93 | ! Saturation Vapor Pressure over Ice |
---|
| 94 | ! ================================== |
---|
| 95 | |
---|
| 96 | ei_sat(k) = & |
---|
| 97 | & 6.1070d0 * exp (ExpIce *(un_1/WatIce-un_1/Ta__DY(ikl,k) ) ) |
---|
| 98 | ! .. Dudhia (1989) JAS, (B1) and (B2) p.3103 |
---|
| 99 | |
---|
| 100 | qvSatI = .622d0*ei_sat(k) & |
---|
| 101 | & /(pa_hPa(k) - .378d0*ei_sat(k) ) |
---|
| 102 | |
---|
| 103 | |
---|
| 104 | |
---|
| 105 | |
---|
| 106 | ! Saturation Vapor Pressure over Water |
---|
| 107 | ! ==================================== |
---|
| 108 | |
---|
| 109 | ew_sat(k) = & |
---|
| 110 | & 6.1078d0 * exp (ExpWat * log(WatIce /Ta__DY(ikl,k) ) ) & |
---|
| 111 | & * exp (ExpWa2 *(un_1/WatIce-un_1/Ta__DY(ikl,k) ) ) |
---|
| 112 | ! .. Dudhia (1989) JAS, (B1) and (B2) p.3103 |
---|
| 113 | ! See also Pielke (1984), p.234 and Stull (1988), p.276 |
---|
| 114 | |
---|
| 115 | qvswCM(ikl,k) = max(epsn , .622d0*ew_sat(k) & |
---|
| 116 | & /(pa_hPa(k) - .378d0*ew_sat(k) )) |
---|
| 117 | ! .. Saturation Vapor Specific Concentration over Water |
---|
| 118 | ! (even for temperatures less than freezing point) |
---|
| 119 | |
---|
| 120 | |
---|
| 121 | |
---|
| 122 | |
---|
| 123 | ! Water Phase Discriminator |
---|
| 124 | ! ========================= |
---|
| 125 | |
---|
| 126 | Wphase = max(zer0,sign(un_1,Ta__DY(ikl,k)-WatIce)) |
---|
| 127 | ! .. Wphase = 1 if Tair > 273.16 |
---|
| 128 | ! 0 if Tair < 273.16 |
---|
| 129 | |
---|
| 130 | |
---|
| 131 | |
---|
| 132 | |
---|
| 133 | ! Saturation Vapor Specific Concentration over Ice |
---|
| 134 | ! ================================================ |
---|
| 135 | |
---|
| 136 | qvsiCM(ikl,k) = & |
---|
| 137 | & max(epsn , qvswCM(ikl,k) * Wphase & |
---|
| 138 | & + qvSatI *(un_1-Wphase)) |
---|
| 139 | |
---|
| 140 | |
---|
| 141 | qvswCM (ikl,k) = pr_b75(k) *qvswCM(ikl,k) +(1.0-pr_b75(k)) *qs__75 |
---|
| 142 | qvsiCM (ikl,k) = pr_b75(k) *qvsiCM(ikl,k) +(1.0-pr_b75(k)) *qs__75 |
---|
| 143 | |
---|
| 144 | |
---|
| 145 | END DO |
---|
| 146 | |
---|
| 147 | ! ++++++++++++++++++++++ |
---|
| 148 | END DO ! ikl = 1,kcolp |
---|
| 149 | ! ++++++++++++++++++++++ |
---|
| 150 | |
---|
| 151 | |
---|
| 152 | |
---|
| 153 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 154 | ! ! |
---|
| 155 | ! DE-ALLOCATION |
---|
| 156 | ! ============= |
---|
| 157 | |
---|
| 158 | IF (FlagDALLOC) THEN ! |
---|
| 159 | deallocate ( pa_hPa ) |
---|
| 160 | deallocate ( pr_b75 ) |
---|
| 161 | deallocate ( ei_sat ) |
---|
| 162 | deallocate ( ew_sat ) |
---|
| 163 | END IF |
---|
| 164 | ! ! |
---|
| 165 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 166 | |
---|
| 167 | |
---|
| 168 | |
---|
| 169 | return |
---|
| 170 | end subroutine PHY_Atm_CM_QSat |
---|