- Timestamp:
- 2017-07-25T19:44:54+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
r8370 r8373 85 85 REAL(wp) :: zfmdt ! exchange mass flux x time step (J/m2), >0 towards the ocean 86 86 87 REAL(wp), POINTER, DIMENSION(:) :: zqprec ! energy of fallen snow (J.m-3)88 REAL(wp), POINTER, DIMENSION(:) :: zq_su ! heat for surface ablation (J.m-2)89 REAL(wp), POINTER, DIMENSION(:) :: zq_bo ! heat for bottom ablation (J.m-2)90 REAL(wp), POINTER, DIMENSION(:) :: zq_rema ! remaining heat at the end of the routine (J.m-2)91 REAL(wp), POINTER, DIMENSION(:) :: zf_tt ! Heat budget to determine melting or freezing(W.m-2)92 REAL(wp), POINTER, DIMENSION(:) :: zevap_rema ! remaining mass flux from sublimation (kg.m-2)93 94 REAL(wp), POINTER, DIMENSION(:) :: zdh_s_mel ! snow melt95 REAL(wp), POINTER, DIMENSION(:) :: zdh_s_pre ! snow precipitation96 REAL(wp), POINTER, DIMENSION(:) :: zdh_s_sub ! snow sublimation97 98 REAL(wp), POINTER, DIMENSION(:,:) :: zdeltah99 REAL(wp), POINTER, DIMENSION(:,:) :: zh_i ! ice layer thickness100 INTEGER , POINTER, DIMENSION(:,:) :: icount ! number of layers vanished by melting101 102 REAL(wp), POINTER, DIMENSION(:) :: zeh_i ! total ice heat content (J.m-2)103 REAL(wp), POINTER, DIMENSION(:) :: zsnw ! distribution of snow after wind blowing87 REAL(wp), DIMENSION(jpij) :: zqprec ! energy of fallen snow (J.m-3) 88 REAL(wp), DIMENSION(jpij) :: zq_su ! heat for surface ablation (J.m-2) 89 REAL(wp), DIMENSION(jpij) :: zq_bo ! heat for bottom ablation (J.m-2) 90 REAL(wp), DIMENSION(jpij) :: zq_rema ! remaining heat at the end of the routine (J.m-2) 91 REAL(wp), DIMENSION(jpij) :: zf_tt ! Heat budget to determine melting or freezing(W.m-2) 92 REAL(wp), DIMENSION(jpij) :: zevap_rema ! remaining mass flux from sublimation (kg.m-2) 93 94 REAL(wp), DIMENSION(jpij) :: zdh_s_mel ! snow melt 95 REAL(wp), DIMENSION(jpij) :: zdh_s_pre ! snow precipitation 96 REAL(wp), DIMENSION(jpij) :: zdh_s_sub ! snow sublimation 97 98 REAL(wp), DIMENSION(jpij,nlay_i) :: zdeltah 99 REAL(wp), DIMENSION(jpij,nlay_i) :: zh_i ! ice layer thickness 100 INTEGER , DIMENSION(jpij,nlay_i) :: icount ! number of layers vanished by melting 101 102 REAL(wp), DIMENSION(jpij) :: zeh_i ! total ice heat content (J.m-2) 103 REAL(wp), DIMENSION(jpij) :: zsnw ! distribution of snow after wind blowing 104 104 105 105 REAL(wp) :: zswitch_sal … … 107 107 ! Heat conservation 108 108 INTEGER :: num_iter_max 109 110 109 !!------------------------------------------------------------------ 111 110 112 111 ! Discriminate between varying salinity (nn_icesal=2) and prescribed cases (other values) 113 112 SELECT CASE( nn_icesal ) ! varying salinity or not 114 CASE( 1, 3 ) ; zswitch_sal = 0 115 CASE( 2 ) ; zswitch_sal = 1 113 CASE( 1, 3 ) ; zswitch_sal = 0._wp ! prescribed salinity profile 114 CASE( 2 ) ; zswitch_sal = 1._wp ! varying salinity profile 116 115 END SELECT 117 116 118 CALL wrk_alloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 119 CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zeh_i ) 120 CALL wrk_alloc( jpij, nlay_i, zdeltah, zh_i ) 121 CALL wrk_alloc( jpij, nlay_i, icount ) 122 123 zqprec (:) = 0._wp ; zq_su (:) = 0._wp ; zq_bo (:) = 0._wp ; zf_tt(:) = 0._wp 124 zq_rema (:) = 0._wp ; zsnw (:) = 0._wp ; zevap_rema(:) = 0._wp ; 125 zdh_s_mel(:) = 0._wp ; zdh_s_pre(:) = 0._wp ; zdh_s_sub(:) = 0._wp ; zeh_i(:) = 0._wp 126 127 zdeltah(:,:) = 0._wp ; zh_i(:,:) = 0._wp 128 icount (:,:) = 0 129 130 ! Initialize enthalpy at nlay_i+1 131 DO ji = 1, nidx 132 e_i_1d(ji,nlay_i+1) = 0._wp 117 DO ji = 1, nidx 118 icount (ji,:) = 0 119 zdh_s_mel(ji) = 0._wp 120 e_i_1d(ji,nlay_i+1) = 0._wp ! Initialize enthalpy at nlay_i+1 133 121 END DO 134 122 135 123 ! initialize layer thicknesses and enthalpies 136 h_i_old ( :,0:nlay_i+1) = 0._wp137 eh_i_old( :,0:nlay_i+1) = 0._wp124 h_i_old (1:nidx,0:nlay_i+1) = 0._wp 125 eh_i_old(1:nidx,0:nlay_i+1) = 0._wp 138 126 DO jk = 1, nlay_i 139 127 DO ji = 1, nidx … … 204 192 CALL lim_thd_snwblow( 1. - at_i_1d(1:nidx), zsnw(1:nidx) ) ! snow distribution over ice after wind blowing 205 193 206 zdeltah( :,:) = 0._wp194 zdeltah(1:nidx,:) = 0._wp 207 195 DO ji = 1, nidx 208 196 !----------- … … 239 227 240 228 ! If heat still available (zq_su > 0), then melt more snow 241 zdeltah( :,:) = 0._wp229 zdeltah(1:nidx,:) = 0._wp 242 230 DO jk = 1, nlay_s 243 231 DO ji = 1, nidx … … 263 251 ! qla_ice is always >=0 (upwards), heat goes to the atmosphere, therefore snow sublimates 264 252 ! clem comment: not counted in mass/heat exchange in limsbc since this is an exchange with atm. (not ocean) 265 zdeltah( :,:) = 0._wp253 zdeltah(1:nidx,:) = 0._wp 266 254 DO ji = 1, nidx 267 255 zdh_s_sub(ji) = MAX( - ht_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice ) … … 303 291 ! 3.4 Surface ice ablation 304 292 !-------------------------- 305 zdeltah( :,:) = 0._wp ! important293 zdeltah(1:nidx,:) = 0._wp ! important 306 294 DO jk = 1, nlay_i 307 295 DO ji = 1, nidx … … 498 486 ! 4.2 Basal melt 499 487 !---------------- 500 zdeltah( :,:) = 0._wp ! important488 zdeltah(1:nidx,:) = 0._wp ! important 501 489 DO jk = nlay_i, 1, -1 502 490 DO ji = 1, nidx … … 583 571 ! If heat still available for melting and snow remains, then melt more snow 584 572 !------------------------------------------- 585 zdeltah( :,:) = 0._wp ! important573 zdeltah(1:nidx,:) = 0._wp ! important 586 574 DO ji = 1, nidx 587 575 zq_rema(ji) = zq_su(ji) + zq_bo(ji) … … 668 656 DO ji = 1, nidx 669 657 IF( ht_i_1d(ji) == 0._wp ) a_i_1d(ji) = 0._wp 670 END DO 671 672 CALL wrk_dealloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 673 CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zeh_i ) 674 CALL wrk_dealloc( jpij, nlay_i, zdeltah, zh_i ) 675 CALL wrk_dealloc( jpij, nlay_i, icount ) 676 ! 658 END DO 677 659 ! 678 660 END SUBROUTINE lim_thd_dh
Note: See TracChangeset
for help on using the changeset viewer.