SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE DIAG_CPL_ESM_WATER (PTSTEP,PZON10M,PMER10M,PSFU,PSFV, & 00003 PSWD,PSWU,PGFLUX,PSFTQ,PRAIN,PSNOW, & 00004 PLW,PTICE,PSFTH_ICE,PSFTQ_ICE, & 00005 PDIR_SW,PSCA_SW ) 00006 ! ##################################################################### 00007 ! 00008 !!**** *DIAG_CPL_ESM_WATER * - Computes diagnostics over sea for 00009 !! Earth system model coupling 00010 !! 00011 !! PURPOSE 00012 !! ------- 00013 ! 00014 !!** METHOD 00015 !! ------ 00016 !! 00017 !! REFERENCE 00018 !! --------- 00019 !! 00020 !! 00021 !! AUTHOR 00022 !! ------ 00023 !! B. Decharme 00024 !! 00025 !! MODIFICATIONS 00026 !! ------------- 00027 !! Original 08/2009 00028 !!------------------------------------------------------------------ 00029 ! 00030 USE MODD_CSTS, ONLY : XSTEFAN, XLSTT 00031 USE MODD_WATER_PAR, ONLY : XEMISWATICE 00032 ! 00033 USE MODD_WATFLUX_n, ONLY : XCPL_WATER_WIND,XCPL_WATER_EVAP,XCPL_WATER_HEAT, & 00034 XCPL_WATER_SNET,XCPL_WATER_FWSU,XCPL_WATER_FWSV, & 00035 XCPL_WATER_RAIN,XCPL_WATER_SNOW,XCPL_WATER_FWSM, & 00036 XICE_ALB, XCPL_WATERICE_SNET, & 00037 XCPL_WATERICE_EVAP,XCPL_WATERICE_HEAT 00038 ! 00039 ! 00040 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00041 USE PARKIND1 ,ONLY : JPRB 00042 ! 00043 IMPLICIT NONE 00044 ! 00045 !* 0.1 declarations of arguments 00046 ! 00047 REAL, INTENT(IN) :: PTSTEP ! atmospheric time-step 00048 REAL, DIMENSION(:), INTENT(IN) :: PZON10M ! zonal wind 00049 REAL, DIMENSION(:), INTENT(IN) :: PMER10M ! meridian wind 00050 REAL, DIMENSION(:), INTENT(IN) :: PSFU ! zonal wind stress 00051 REAL, DIMENSION(:), INTENT(IN) :: PSFV ! meridian wind stress 00052 REAL, DIMENSION(:), INTENT(IN) :: PSWD ! total incoming short wave radiation 00053 REAL, DIMENSION(:), INTENT(IN) :: PSWU ! total upward short wave radiation 00054 REAL, DIMENSION(:), INTENT(IN) :: PGFLUX ! storage flux 00055 REAL, DIMENSION(:), INTENT(IN) :: PSFTQ ! water flux 00056 REAL, DIMENSION(:), INTENT(IN) :: PRAIN ! Rainfall 00057 REAL, DIMENSION(:), INTENT(IN) :: PSNOW ! Snowfall 00058 REAL, DIMENSION(:), INTENT(IN) :: PLW ! longwave radiation (on horizontal surf.) 00059 REAL, DIMENSION(:), INTENT(IN) :: PSFTH_ICE ! heat flux (W/m2) 00060 REAL, DIMENSION(:), INTENT(IN) :: PSFTQ_ICE ! water flux (kg/m2/s) 00061 REAL, DIMENSION(:), INTENT(IN) :: PTICE ! Ice Surface Temperature 00062 REAL, DIMENSION(:,:),INTENT(IN):: PDIR_SW ! direct solar radiation (on horizontal surf.) 00063 REAL, DIMENSION(:,:),INTENT(IN):: PSCA_SW ! diffuse solar radiation (on horizontal surf.) 00064 ! 00065 !* 0.2 declarations of local variables 00066 ! 00067 REAL, DIMENSION(SIZE(XICE_ALB)) :: ZSWU 00068 ! 00069 INTEGER :: ISWB ! number of SW bands 00070 INTEGER :: JSWB ! loop counter on number of SW bands 00071 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00072 ! 00073 !------------------------------------------------------------------------------------- 00074 ! Total or free-ice water flux 00075 !------------------------------------------------------------------------------------- 00076 ! 00077 !* 10m wind speed (m) 00078 ! 00079 IF (LHOOK) CALL DR_HOOK('DIAG_CPL_ESM_WATER',0,ZHOOK_HANDLE) 00080 XCPL_WATER_WIND(:) = XCPL_WATER_WIND(:) + PTSTEP * SQRT(PZON10M(:)**2+PMER10M(:)**2) 00081 ! 00082 !* wind stress (Pa.s) 00083 ! 00084 XCPL_WATER_FWSU(:) = XCPL_WATER_FWSU(:) + PTSTEP * PSFU(:) 00085 XCPL_WATER_FWSV(:) = XCPL_WATER_FWSV(:) + PTSTEP * PSFV(:) 00086 XCPL_WATER_FWSM(:) = XCPL_WATER_FWSM(:) + PTSTEP * SQRT(PSFU(:)**2+PSFV(:)**2) 00087 ! 00088 !* Solar net heat flux (J/m2) 00089 ! 00090 XCPL_WATER_SNET(:) = XCPL_WATER_SNET(:) + PTSTEP * (PSWD(:) - PSWU(:)) 00091 ! 00092 !* Non solar heat flux (J/m2) 00093 ! 00094 XCPL_WATER_HEAT(:) = XCPL_WATER_HEAT(:) + PTSTEP * (PGFLUX(:) + PSWU(:) - PSWD(:)) 00095 ! 00096 !* Evaporation (mm/day) 00097 ! 00098 XCPL_WATER_EVAP(:) = XCPL_WATER_EVAP(:) + PTSTEP * PSFTQ(:) 00099 ! 00100 !* Precip (mm/day) 00101 ! 00102 XCPL_WATER_RAIN(:) = XCPL_WATER_RAIN(:) + PTSTEP * PRAIN(:) 00103 XCPL_WATER_SNOW(:) = XCPL_WATER_SNOW(:) + PTSTEP * PSNOW(:) 00104 ! 00105 !------------------------------------------------------------------------------------- 00106 ! Ice flux 00107 !------------------------------------------------------------------------------------- 00108 ! 00109 ISWB = SIZE(PDIR_SW,2) 00110 ! 00111 !* Solar net heat flux (J/m2) 00112 ! 00113 ZSWU(:)=0.0 00114 DO JSWB=1,ISWB 00115 ZSWU(:) = ZSWU(:) + (PDIR_SW(:,JSWB)+PSCA_SW(:,JSWB)) * XICE_ALB(:) 00116 ENDDO 00117 ! 00118 XCPL_WATERICE_SNET(:) = XCPL_WATERICE_SNET(:) + PTSTEP * (PSWD(:) - ZSWU(:)) 00119 ! 00120 !* Non solar heat flux (J/m2) 00121 ! 00122 XCPL_WATERICE_HEAT(:) = XCPL_WATERICE_HEAT(:) + PTSTEP * ( XEMISWATICE*(PLW(:)-XSTEFAN*PTICE(:)**4) & 00123 - PSFTH_ICE(:) - XLSTT*PSFTQ_ICE(:) ) 00124 ! 00125 !* Sublimation (mm/day) 00126 ! 00127 XCPL_WATERICE_EVAP(:) = XCPL_WATERICE_EVAP(:) + PTSTEP * PSFTQ_ICE(:) 00128 IF (LHOOK) CALL DR_HOOK('DIAG_CPL_ESM_WATER',1,ZHOOK_HANDLE) 00129 ! 00130 !------------------------------------------------------------------------------------- 00131 ! 00132 END SUBROUTINE DIAG_CPL_ESM_WATER