SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_INLINE_FLAKE_n (PTA, PTS, PQA, PPA, PPS, PRHOA, PZONA, PMERA, & 00003 PHT, PHW, & 00004 PCD, PCDN, PCH, PRI, PHU, & 00005 PZ0, PZ0H, & 00006 PQSAT, & 00007 PSFTH, PSFTQ, PSFZON, PSFMER, & 00008 PDIR_SW, PSCA_SW, PLW, & 00009 PDIR_ALB, PSCA_ALB, PEMIS, PTRAD ) 00010 ! ############################################################################### 00011 ! 00012 !!**** *DIAG_INLINE_FLAKE_n * - computes diagnostics during FLAKE time-step 00013 !! 00014 !! PURPOSE 00015 !! ------- 00016 ! 00017 !!** METHOD 00018 !! ------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! V. Masson 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 01/2004 00031 !! S. Riette 06/2009 CLS_2M becomes CLS_TQ, CLS_TQ and CLS_WIND have one 00032 !! more argument (height of diagnostic) 00033 !!------------------------------------------------------------------ 00034 ! 00035 00036 ! 00037 ! 00038 USE MODD_CSTS, ONLY : XTT 00039 USE MODD_SURF_PAR, ONLY : XUNDEF 00040 USE MODD_FLAKE_n, ONLY : LSBL 00041 USE MODD_DIAG_FLAKE_n, ONLY : N2M, LSURF_BUDGET, LCOEF, LSURF_VARS, & 00042 XT2M, XQ2M, XHU2M, XZON10M, XMER10M, & 00043 XRN, XH, XLE, XLEI, XGFLUX, & 00044 XRI, XCD, XCH, XCE, XZ0, XZ0H, & 00045 XQS, XSWD, XSWU, XLWD, & 00046 XLWU, XSWBD, XSWBU, XFMU, XFMV 00047 ! 00048 USE MODI_PARAM_CLS 00049 USE MODI_CLS_TQ 00050 USE MODI_CLS_WIND 00051 USE MODI_DIAG_SURF_BUDGET_WATER 00052 ! 00053 ! 00054 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00055 USE PARKIND1 ,ONLY : JPRB 00056 ! 00057 IMPLICIT NONE 00058 ! 00059 !* 0.1 declarations of arguments 00060 ! 00061 REAL, DIMENSION(:), INTENT(IN) :: PTA ! atmospheric temperature 00062 REAL, DIMENSION(:), INTENT(IN) :: PTS ! surface temperature 00063 REAL, DIMENSION(:), INTENT(IN) :: PQA ! atmospheric specific humidity 00064 REAL, DIMENSION(:), INTENT(IN) :: PPA ! atmospheric level pressure 00065 REAL, DIMENSION(:), INTENT(IN) :: PPS ! surface pressure 00066 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density 00067 REAL, DIMENSION(:), INTENT(IN) :: PZONA ! zonal wind 00068 REAL, DIMENSION(:), INTENT(IN) :: PMERA ! meridian wind 00069 REAL, DIMENSION(:), INTENT(IN) :: PHT ! atmospheric level height 00070 REAL, DIMENSION(:), INTENT(IN) :: PHW ! atmospheric level height for wind 00071 REAL, DIMENSION(:), INTENT(IN) :: PCD ! drag coefficient for momentum 00072 REAL, DIMENSION(:), INTENT(IN) :: PCDN ! neutral drag coefficient 00073 REAL, DIMENSION(:), INTENT(IN) :: PCH ! drag coefficient for heat 00074 REAL, DIMENSION(:), INTENT(IN) :: PRI ! Richardson number 00075 REAL, DIMENSION(:), INTENT(IN) :: PHU ! near-surface humidity 00076 REAL, DIMENSION(:), INTENT(IN) :: PZ0 ! roughness length for momentum 00077 REAL, DIMENSION(:), INTENT(IN) :: PZ0H ! roughness length for heat 00078 REAL, DIMENSION(:), INTENT(IN) :: PQSAT ! humidity at saturation 00079 REAL, DIMENSION(:), INTENT(IN) :: PSFZON ! zonal friction 00080 REAL, DIMENSION(:), INTENT(IN) :: PSFMER ! meridian friction 00081 REAL, DIMENSION(:), INTENT(IN) :: PSFTH ! heat flux (W/m2) 00082 REAL, DIMENSION(:), INTENT(IN) :: PSFTQ ! water flux (kg/m2/s) 00083 REAL, DIMENSION(:,:),INTENT(IN):: PDIR_SW ! direct solar radiation (on horizontal surf.) 00084 ! ! (W/m2) 00085 REAL, DIMENSION(:,:),INTENT(IN):: PSCA_SW ! diffuse solar radiation (on horizontal surf.) 00086 ! ! (W/m2) 00087 REAL, DIMENSION(:), INTENT(IN) :: PLW ! longwave radiation (on horizontal surf.) 00088 REAL, DIMENSION(:), INTENT(IN) :: PTRAD ! radiative temperature (K) 00089 REAL, DIMENSION(:,:),INTENT(IN):: PDIR_ALB ! direct albedo for each spectral band (-) 00090 REAL, DIMENSION(:,:),INTENT(IN):: PSCA_ALB ! diffuse albedo for each spectral band (-) 00091 REAL, DIMENSION(:), INTENT(IN) :: PEMIS ! emissivity (-) 00092 ! 00093 !* 0.2 declarations of local variables 00094 ! 00095 REAL, DIMENSION(SIZE(PTA)) :: ZH 00096 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00097 !------------------------------------------------------------------------------------- 00098 ! 00099 IF (LHOOK) CALL DR_HOOK('DIAG_INLINE_FLAKE_N',0,ZHOOK_HANDLE) 00100 IF (.NOT. LSBL) THEN 00101 ! 00102 IF (N2M==1) THEN 00103 ! 00104 CALL PARAM_CLS(PTA, PTS, PQA, PPA, PRHOA, PZONA, PMERA, PHT, PHW, & 00105 PSFTH, PSFTQ, PSFZON, PSFMER, & 00106 XT2M, XQ2M, XHU2M, XZON10M, XMER10M ) 00107 ! 00108 !* Richardson number 00109 ! 00110 XRI = PRI 00111 ! 00112 ELSE IF (N2M==2) THEN 00113 ZH(:)=2. 00114 CALL CLS_TQ(PTA, PQA, PPA, PPS, PHT, & 00115 PCD, PCH, PRI, & 00116 PTS, PHU, PZ0H, ZH, & 00117 XT2M, XQ2M, XHU2M ) 00118 ZH(:)=10. 00119 CALL CLS_WIND(PZONA, PMERA, PHW, & 00120 PCD, PCDN, PRI, ZH, & 00121 XZON10M, XMER10M ) 00122 XRI = PRI 00123 END IF 00124 ! 00125 ELSE 00126 ! 00127 IF (N2M>=1) THEN 00128 XT2M = XUNDEF 00129 XQ2M = XUNDEF 00130 XHU2M = XUNDEF 00131 XZON10M = XUNDEF 00132 XMER10M = XUNDEF 00133 XRI = PRI 00134 ENDIF 00135 ! 00136 ENDIF 00137 ! 00138 IF (LSURF_BUDGET) THEN 00139 ! 00140 CALL DIAG_SURF_BUDGET_WATER (XTT, PRHOA, PSFTH, PSFTQ, & 00141 PDIR_SW, PSCA_SW, PLW, & 00142 PDIR_ALB, PSCA_ALB, PEMIS, PTRAD, & 00143 PSFZON, PSFMER, & 00144 XRN, XH, XLE, XLEI, XGFLUX, & 00145 XSWD, XSWU, XSWBD, XSWBU, XLWD, XLWU, & 00146 XFMU, XFMV ) 00147 ! 00148 END IF 00149 ! 00150 IF (LCOEF) THEN 00151 ! 00152 !* Transfer coefficients 00153 ! 00154 XCD = PCD 00155 XCH = PCH 00156 XCE = PCH 00157 ! 00158 !* Roughness lengths 00159 ! 00160 XZ0 = PZ0 00161 XZ0H = PZ0H 00162 ! 00163 END IF 00164 ! 00165 IF (LSURF_VARS) THEN 00166 ! 00167 !* Humidity at saturation 00168 ! 00169 XQS = PQSAT 00170 ! 00171 END IF 00172 IF (LHOOK) CALL DR_HOOK('DIAG_INLINE_FLAKE_N',1,ZHOOK_HANDLE) 00173 !------------------------------------------------------------------------------------- 00174 ! 00175 END SUBROUTINE DIAG_INLINE_FLAKE_n