SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/snow_t_wliq_to_heat.F90
Go to the documentation of this file.
00001 !      ########################
00002 MODULE MODI_SNOW_T_WLIQ_TO_HEAT
00003 !      ########################
00004 !
00005 INTERFACE SNOW_T_WLIQ_TO_HEAT
00006 !
00007 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_1D(PHEAT,PRHO,PT,PWLIQ)
00008 REAL, DIMENSION(:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00009 REAL, DIMENSION(:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00010 REAL, DIMENSION(:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00011 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00012 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_1D
00013 !
00014 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_2D(PHEAT,PRHO,PT,PWLIQ)
00015 REAL, DIMENSION(:,:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00016 REAL, DIMENSION(:,:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00017 REAL, DIMENSION(:,:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00018 REAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00019 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_2D
00020 !
00021 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_3D(PHEAT,PRHO,PT,PWLIQ)
00022 REAL, DIMENSION(:,:,:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00023 REAL, DIMENSION(:,:,:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00024 REAL, DIMENSION(:,:,:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00025 REAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00026 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_3D
00027 !
00028 END INTERFACE SNOW_T_WLIQ_TO_HEAT
00029 !
00030 END MODULE MODI_SNOW_T_WLIQ_TO_HEAT
00031 !
00032 !          ###########################################
00033 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_1D(PHEAT,PRHO,PT,PWLIQ)
00034 !          ###########################################
00035 !
00036 USE MODD_SURF_PAR,   ONLY : XUNDEF
00037 USE MODD_CSTS,       ONLY : XTT, XLMTT
00038 USE MODE_SNOW3L
00039 !
00040 !
00041 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00042 USE PARKIND1  ,ONLY : JPRB
00043 !
00044 IMPLICIT NONE
00045 !
00046 !
00047 !
00048 !*      0.1    declarations of arguments
00049 !
00050 REAL, DIMENSION(:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00051 REAL, DIMENSION(:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00052 REAL, DIMENSION(:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00053 REAL, DIMENSION(:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00054 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00055 !
00056 !
00057 !*      0.2    declarations of local variables
00058 !
00059 !---------------------------------------------------------------------------
00060 !
00061 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_1D',0,ZHOOK_HANDLE)
00062 PHEAT = XUNDEF
00063 !
00064 !* effect of temperature on heat
00065 !
00066 WHERE(PRHO/=XUNDEF) PHEAT = (PT-XTT)*SNOW3LSCAP(PRHO) - XLMTT * PRHO
00067 !
00068 !* effect of liquid water
00069 !
00070 IF (PRESENT(PWLIQ)) THEN
00071   WHERE(PRHO/=XUNDEF) PHEAT = PHEAT + XLMTT * PWLIQ
00072 END IF
00073 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_1D',1,ZHOOK_HANDLE)
00074 !
00075 !---------------------------------------------------------------------------
00076 !
00077 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_1D
00078 !
00079 !          ###########################################
00080 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_2D(PHEAT,PRHO,PT,PWLIQ)
00081 !          ###########################################
00082 !
00083 USE MODD_SURF_PAR,   ONLY : XUNDEF
00084 USE MODD_CSTS,       ONLY : XTT, XLMTT
00085 USE MODE_SNOW3L
00086 !
00087 !
00088 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00089 USE PARKIND1  ,ONLY : JPRB
00090 !
00091 IMPLICIT NONE
00092 !
00093 !
00094 !
00095 !*      0.1    declarations of arguments
00096 !
00097 REAL, DIMENSION(:,:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00098 REAL, DIMENSION(:,:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00099 REAL, DIMENSION(:,:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00100 REAL, DIMENSION(:,:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00101 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00102 !
00103 !
00104 !*      0.2    declarations of local variables
00105 !
00106 !---------------------------------------------------------------------------
00107 !
00108 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_2D',0,ZHOOK_HANDLE)
00109 PHEAT = XUNDEF
00110 !
00111 !* effect of temperature on heat
00112 !
00113 WHERE(PRHO/=XUNDEF) PHEAT = (PT-XTT)*SNOW3LSCAP(PRHO) - XLMTT * PRHO
00114 !
00115 !* effect of liquid water
00116 !
00117 IF (PRESENT(PWLIQ)) THEN
00118   WHERE(PRHO/=XUNDEF) PHEAT = PHEAT + XLMTT * PWLIQ
00119 END IF
00120 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_2D',1,ZHOOK_HANDLE)
00121 !
00122 !---------------------------------------------------------------------------
00123 !
00124 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_2D
00125 !
00126 !          ###########################################
00127 SUBROUTINE SNOW_T_WLIQ_TO_HEAT_3D(PHEAT,PRHO,PT,PWLIQ)
00128 !          ###########################################
00129 !
00130 USE MODD_SURF_PAR,   ONLY : XUNDEF
00131 USE MODD_CSTS,       ONLY : XTT, XLMTT
00132 USE MODE_SNOW3L
00133 !
00134 !
00135 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00136 USE PARKIND1  ,ONLY : JPRB
00137 !
00138 IMPLICIT NONE
00139 !
00140 !
00141 !
00142 !*      0.1    declarations of arguments
00143 !
00144 REAL, DIMENSION(:,:,:), INTENT(OUT)          :: PHEAT  ! snow heat density        (J/m3)
00145 REAL, DIMENSION(:,:,:), INTENT(IN)           :: PRHO   ! snow density             (kg/m3)
00146 REAL, DIMENSION(:,:,:), INTENT(IN)           :: PT     ! snow temperature profile (K)
00147 REAL, DIMENSION(:,:,:), INTENT(IN), OPTIONAL :: PWLIQ  ! liquid water profile     (kg/m3)
00148 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00149 !
00150 !
00151 !*      0.2    declarations of local variables
00152 !
00153 !---------------------------------------------------------------------------
00154 !
00155 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_3D',0,ZHOOK_HANDLE)
00156 PHEAT = XUNDEF
00157 !
00158 !* effect of temperature on heat
00159 !
00160 WHERE(PRHO/=XUNDEF) PHEAT = (PT-XTT)*SNOW3LSCAP(PRHO) - XLMTT * PRHO
00161 !
00162 !* effect of liquid water
00163 !
00164 IF (PRESENT(PWLIQ)) THEN
00165   WHERE(PRHO/=XUNDEF) PHEAT = PHEAT + XLMTT * PWLIQ
00166 END IF
00167 IF (LHOOK) CALL DR_HOOK('MODI_SNOW_T_WLIQ_TO_HEAT:SNOW_T_WLIQ_TO_HEAT_3D',1,ZHOOK_HANDLE)
00168 !
00169 !---------------------------------------------------------------------------
00170 !
00171 END SUBROUTINE SNOW_T_WLIQ_TO_HEAT_3D