SURFEX v7.3
General documentation of Surfex
|
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