SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/diag_cpl_esm_water.F90
Go to the documentation of this file.
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