SURFEX v7.3
General documentation of Surfex
|
00001 MODULE MODE_COARE30_PSI 00002 ! 00003 ! 00004 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00005 USE PARKIND1 ,ONLY : JPRB 00006 ! 00007 INTERFACE PSIFCTU 00008 MODULE PROCEDURE PSIFUNCTU 00009 END INTERFACE 00010 INTERFACE PSIFCTT 00011 MODULE PROCEDURE PSIFUNCTT 00012 END INTERFACE 00013 ! 00014 CONTAINS 00015 ! 00016 !--------------------------------------------------------------------------------------- 00017 ! 00018 !####################################################################################### 00019 FUNCTION PSIFUNCTU(PZL) RESULT(PSIFCTU) 00020 !####################################################################################### 00021 ! 00022 !**** *PSIFUNCTU* 00023 ! 00024 ! PURPOSE 00025 ! ------- 00026 ! To evaluate the stability function psi for wind speed (if KID=1) or 00027 ! for temperature or humidity profiles (if KID.ne.1) from stability parameter 00028 ! z/L. 00029 ! 00030 ! EXTERNAL 00031 ! -------- 00032 ! 00033 ! IMPLICIT ARGUMENTS 00034 ! ------------------ 00035 ! 00036 ! REFERENCE 00037 ! --------- 00038 ! Lik79 : Liu, W. T., K. B. Katsaros, and J. A. Businger, 1979: 00039 ! Bulk parameterization of air-sea exchanges of heat and water vapor including 00040 ! the molecular constraints at the interface. J. Atm. Sci., 36, 1722--1735. 00041 ! DyH70 : Dyer, A. J., and B. B. Hicks, 1970: Flux-gradient relationship 00042 ! in the constant flux layer. Quart. J. Roy. Meteor. Soc., 96, 715--721. 00043 ! 00044 ! AUTHOR 00045 ! ------ 00046 ! 00047 ! MODIFICATIONS 00048 ! ------------- 00049 !------------------------------------------------------------------------------- 00050 IMPLICIT NONE 00051 ! 00052 ! 0. Declaration 00053 ! 00054 ! 0.1 declaration of arguments 00055 ! 00056 REAL, DIMENSION(:), INTENT(IN) :: PZL !Obukhovs stability parameter 00057 REAL, DIMENSION(SIZE(PZL)) :: PSIFCTU !function psi value 00058 ! 0.2 declaration of local variables 00059 REAL, DIMENSION(SIZE(PZL)) :: ZY,ZX,ZC,ZPSIC,ZPSIK,ZF 00060 INTEGER :: JJ 00061 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00062 ! 00063 IF (LHOOK) CALL DR_HOOK('MODE_COARE30_PSI:PSIFUNCTU',0,ZHOOK_HANDLE) 00064 DO JJ=1,SIZE(PZL) 00065 IF(PZL(JJ)<0.) THEN 00066 ZX(JJ) = (1.0 - 15. * PZL(JJ))**0.25 ! Kansas unstable 00067 ZPSIK(JJ)= 2.0 * LOG((1.0+ZX(JJ) )/2.0) & 00068 + LOG((1.0+ZX(JJ)*ZX(JJ))/2.0) & 00069 - 2.0 * atan(ZX(JJ)) & 00070 + 2.0 * atan(1.0) 00071 ! 00072 ZY(JJ) = (1.0 - 10.15 * PZL(JJ))**0.3333 ! Convective 00073 ZPSIC(JJ)= 1.5 * LOG((ZY(JJ)*ZY(JJ)+ZY(JJ)+1.)/3.) & 00074 - (3.0**0.5) * atan((2.0*ZY(JJ)+1.0)/(3.0**0.5)) & 00075 + 4.0 * atan(1.0)/(3.0**0.5) 00076 ! 00077 ZF(JJ) =PZL(JJ) * PZL(JJ) / (1.0+PZL(JJ)*PZL(JJ)) 00078 ! 00079 PSIFCTU(JJ)=(1.-ZF(JJ)) * ZPSIK(JJ) + ZF(JJ) * ZPSIC(JJ) 00080 ELSE 00081 ZC(JJ)=MIN(50.,0.35*PZL(JJ)) ! Stable 00082 PSIFCTU(JJ)=-((1.+1.*PZL(JJ))**1. + 0.6667*(PZL(JJ)-14.28)/EXP(ZC(JJ)) + 8.525) 00083 ENDIF 00084 ENDDO 00085 IF (LHOOK) CALL DR_HOOK('MODE_COARE30_PSI:PSIFUNCTU',1,ZHOOK_HANDLE) 00086 00087 END FUNCTION PSIFUNCTU 00088 !--------------------------------------------------------------------------------------- 00089 ! 00090 !####################################################################################### 00091 FUNCTION PSIFUNCTT(PZL) RESULT(PSIFCTT) 00092 !####################################################################################### 00093 ! 00094 !**** *PSIFUNCTU* 00095 ! 00096 ! PURPOSE 00097 ! ------- 00098 ! To evaluate the stability function psi for wind speed (if KID=1) or 00099 ! for temperature or humidity profiles (if KID.ne.1) from stability parameter 00100 ! z/L. 00101 ! 00102 ! EXTERNAL 00103 ! -------- 00104 ! 00105 ! IMPLICIT ARGUMENTS 00106 ! ------------------ 00107 ! 00108 ! REFERENCE 00109 ! --------- 00110 ! Lik79 : Liu, W. T., K. B. Katsaros, and J. A. Businger, 1979: 00111 ! Bulk parameterization of air-sea exchanges of heat and water vapor including 00112 ! the molecular constraints at the interface. J. Atm. Sci., 36, 1722--1735. 00113 ! DyH70 : Dyer, A. J., and B. B. Hicks, 1970: Flux-gradient relationship 00114 ! in the constant flux layer. Quart. J. Roy. Meteor. Soc., 96, 715--721. 00115 ! 00116 ! AUTHOR 00117 ! ------ 00118 ! 00119 ! MODIFICATIONS 00120 ! ------------- 00121 !------------------------------------------------------------------------------- 00122 IMPLICIT NONE 00123 ! 00124 ! 0. Declaration 00125 ! 00126 ! 0.1 declaration of arguments 00127 ! 00128 REAL, DIMENSION(:), INTENT(IN) :: PZL !Obukhovs stability parameter 00129 REAL, DIMENSION(SIZE(PZL)) :: PSIFCTT !function psi value 00130 ! 0.2 declaration of local variables 00131 REAL, DIMENSION(SIZE(PZL)) :: ZX,ZY,ZC,ZPSIC,ZPSIK,ZF 00132 INTEGER :: JJ 00133 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00134 ! 00135 IF (LHOOK) CALL DR_HOOK('MODE_COARE30_PSI:PSIFUNCTT',0,ZHOOK_HANDLE) 00136 DO JJ=1,SIZE(PZL) 00137 IF(PZL(JJ)<0.) THEN 00138 ZX(JJ) = (1. - 15. * PZL(JJ))**.5 ! Kansas unstable 00139 ZPSIK(JJ)= 2.0 * LOG((1.0+ZX(JJ) )/2.0) 00140 ! 00141 ZY(JJ) = (1.0 - 34.15 * PZL(JJ))**0.3333 ! Convective 00142 ZPSIC(JJ)= 1.5 * LOG((ZY(JJ)*ZY(JJ)+ZY(JJ)+1.0)/3.) & 00143 - (3.0**0.5) * atan((2.0*ZY(JJ)+1.0)/(3.0**0.5)) & 00144 + 4.0 * atan(1.0)/(3.0**0.5) 00145 ! 00146 ZF(JJ) = PZL(JJ) * PZL(JJ) / (1.0+PZL(JJ)*PZL(JJ)) 00147 ! 00148 PSIFCTT(JJ)= (1.-ZF(JJ)) * ZPSIK(JJ) + ZF(JJ) * ZPSIC(JJ) 00149 ELSE 00150 ZC(JJ)=MIN(50.,0.35*PZL(JJ)) ! Stable 00151 PSIFCTT(JJ)=-((1.+2.*PZL(JJ)/3.)**1.5 + 0.6667*(PZL(JJ)-14.28)/EXP(ZC(JJ)) + 8.525) 00152 ENDIF 00153 ENDDO 00154 IF (LHOOK) CALL DR_HOOK('MODE_COARE30_PSI:PSIFUNCTT',1,ZHOOK_HANDLE) 00155 00156 END FUNCTION PSIFUNCTT 00157 ! 00158 END MODULE MODE_COARE30_PSI