- Timestamp:
- 2020-05-07T16:11:23+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r4.0-HEAD_r12713_clem_dan_fixcpl/src/ICE/icevar.F90
r12854 r12890 52 52 !! ice_var_itd : convert N-cat to M-cat 53 53 !! ice_var_snwfra : fraction of ice covered by snow 54 !! ice_var_snwblow : distribute snow fall between ice and ocean 54 55 !!---------------------------------------------------------------------- 55 56 USE dom_oce ! ocean space and time domain … … 79 80 PUBLIC ice_var_itd 80 81 PUBLIC ice_var_snwfra 82 PUBLIC ice_var_snwblow 81 83 82 84 INTERFACE ice_var_itd … … 86 88 INTERFACE ice_var_snwfra 87 89 MODULE PROCEDURE ice_var_snwfra_1d, ice_var_snwfra_2d, ice_var_snwfra_3d 90 END INTERFACE 91 92 INTERFACE ice_var_snwblow 93 MODULE PROCEDURE ice_var_snwblow_1d, ice_var_snwblow_2d 88 94 END INTERFACE 89 95 … … 1009 1015 pt_su(:,jl) = ptmsu(:) 1010 1016 ps_i (:,jl) = psmi (:) 1011 ps_i (:,jl) = psmi (:)1012 1017 END DO 1013 1018 ! … … 1059 1064 !! 1060 1065 !! 2) Expand the filling to the cat jlmin-1 and jlmax+1 1061 1066 !! by removing 25% ice area from jlmin and jlmax (resp.) 1062 1067 !! 1063 1068 !! 3) Expand the filling to the empty cat between jlmin and jlmax … … 1293 1298 !!------------------------------------------------------------------- 1294 1299 SUBROUTINE ice_var_snwfra_3d( ph_s, pa_s_fra ) 1295 !!-------------------------------------------------------------------1296 1300 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: ph_s ! snow thickness 1297 1301 REAL(wp), DIMENSION(:,:,:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1298 !!------------------------------------------------------------------- 1299 pa_s_fra(:,:,:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:,:,:) ) 1302 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1303 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1304 ELSEWHERE ; pa_s_fra = 0._wp 1305 END WHERE 1306 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1307 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1308 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1309 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1310 ENDIF 1300 1311 END SUBROUTINE ice_var_snwfra_3d 1301 1312 1302 1313 SUBROUTINE ice_var_snwfra_2d( ph_s, pa_s_fra ) 1303 !!-------------------------------------------------------------------1304 1314 REAL(wp), DIMENSION(:,:), INTENT(in ) :: ph_s ! snow thickness 1305 1315 REAL(wp), DIMENSION(:,:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1306 !!------------------------------------------------------------------- 1307 pa_s_fra(:,:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:,:) ) 1316 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1317 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1318 ELSEWHERE ; pa_s_fra = 0._wp 1319 END WHERE 1320 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1321 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1322 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1323 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1324 ENDIF 1308 1325 END SUBROUTINE ice_var_snwfra_2d 1309 1326 1310 1327 SUBROUTINE ice_var_snwfra_1d( ph_s, pa_s_fra ) 1311 !!-------------------------------------------------------------------1312 1328 REAL(wp), DIMENSION(:), INTENT(in ) :: ph_s ! snow thickness 1313 1329 REAL(wp), DIMENSION(:), INTENT( out) :: pa_s_fra ! ice fraction covered by snow 1314 !!------------------------------------------------------------------- 1315 pa_s_fra(:) = 1._wp - EXP( -0.2_wp * rhos * ph_s(:) ) 1330 IF ( nn_snwfra == 0 ) THEN ! basic 0 or 1 snow cover 1331 WHERE( ph_s > 0._wp ) ; pa_s_fra = 1._wp 1332 ELSEWHERE ; pa_s_fra = 0._wp 1333 END WHERE 1334 ELSEIF( nn_snwfra == 1 ) THEN ! snow cover depends on hsnow (met-office style) 1335 pa_s_fra = 1._wp - EXP( -0.2_wp * rhos * ph_s ) 1336 ELSEIF( nn_snwfra == 2 ) THEN ! snow cover depends on hsnow (cice style) 1337 pa_s_fra = ph_s / ( ph_s + 0.02_wp ) 1338 ENDIF 1316 1339 END SUBROUTINE ice_var_snwfra_1d 1317 1340 1341 !!-------------------------------------------------------------------------- 1342 !! INTERFACE ice_var_snwblow 1343 !! 1344 !! ** Purpose : Compute distribution of precip over the ice 1345 !! 1346 !! Snow accumulation in one thermodynamic time step 1347 !! snowfall is partitionned between leads and ice. 1348 !! If snow fall was uniform, a fraction (1-at_i) would fall into leads 1349 !! but because of the winds, more snow falls on leads than on sea ice 1350 !! and a greater fraction (1-at_i)^beta of the total mass of snow 1351 !! (beta < 1) falls in leads. 1352 !! In reality, beta depends on wind speed, 1353 !! and should decrease with increasing wind speed but here, it is 1354 !! considered as a constant. an average value is 0.66 1355 !!-------------------------------------------------------------------------- 1356 !!gm I think it can be usefull to set this as a FUNCTION, not a SUBROUTINE.... 1357 SUBROUTINE ice_var_snwblow_2d( pin, pout ) 1358 REAL(wp), DIMENSION(:,:), INTENT(in ) :: pin ! previous fraction lead ( 1. - a_i_b ) 1359 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pout 1360 pout = ( 1._wp - ( pin )**rn_snwblow ) 1361 END SUBROUTINE ice_var_snwblow_2d 1362 1363 SUBROUTINE ice_var_snwblow_1d( pin, pout ) 1364 REAL(wp), DIMENSION(:), INTENT(in ) :: pin 1365 REAL(wp), DIMENSION(:), INTENT(inout) :: pout 1366 pout = ( 1._wp - ( pin )**rn_snwblow ) 1367 END SUBROUTINE ice_var_snwblow_1d 1318 1368 1319 1369 #else
Note: See TracChangeset
for help on using the changeset viewer.