- Timestamp:
- 2012-11-21T14:19:18+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r3294 r3625 10 10 #if defined key_lim3 11 11 !!---------------------------------------------------------------------- 12 !! 'key_lim3' : LIM3 sea-ice model12 !! 'key_lim3' LIM-3 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 USE par_oce ! ocean parameters 15 USE dom_oce ! ocean domain 16 USE phycst ! physical constants (ocean directory) 17 USE sbc_oce ! surface boundary condition: ocean fields 18 USE thd_ice ! LIM thermodynamics 19 USE ice ! LIM variables 20 USE par_ice ! LIM parameters 21 USE dom_ice ! LIM domain 22 USE limthd_lac ! LIM 23 USE limvar ! LIM 24 USE limcons ! LIM 25 USE in_out_manager ! I/O manager 26 USE lbclnk ! lateral boundary condition - MPP exchanges 27 USE lib_mpp ! MPP library 28 USE wrk_nemo ! work arrays 29 USE prtctl ! Print control 14 USE par_oce ! ocean parameters 15 USE dom_oce ! ocean domain 16 USE phycst ! physical constants (ocean directory) 17 USE sbc_oce ! surface boundary condition: ocean fields 18 USE thd_ice ! LIM thermodynamics 19 USE ice ! LIM variables 20 USE par_ice ! LIM parameters 21 USE dom_ice ! LIM domain 22 USE limthd_lac ! LIM 23 USE limvar ! LIM 24 USE limcons ! LIM 25 USE in_out_manager ! I/O manager 26 USE lbclnk ! lateral boundary condition - MPP exchanges 27 USE lib_mpp ! MPP library 28 USE wrk_nemo ! work arrays 29 USE prtctl ! Print control 30 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 30 31 31 32 IMPLICIT NONE … … 38 39 PUBLIC lim_itd_me_alloc ! called by iceini.F90 39 40 40 REAL(wp) 41 REAL(wp) 42 REAL(wp) 41 REAL(wp) :: epsi11 = 1.e-11_wp ! constant values 42 REAL(wp) :: epsi10 = 1.e-10_wp ! constant values 43 REAL(wp) :: epsi06 = 1.e-06_wp ! constant values 43 44 44 45 !----------------------------------------------------------------------- … … 47 48 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: asum ! sum of total ice and open water area 48 49 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: aksum ! ratio of area removed to area ridged 49 50 ! 50 51 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: athorn ! participation function; fraction of ridging/ 51 52 ! ! closing associated w/ category n 52 53 ! 53 54 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hrmin ! minimum ridge thickness 54 55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hrmax ! maximum ridge thickness … … 70 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: dvirdgdt ! rate of ice volume ridged (m/s) 71 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: opening ! rate of opening due to divergence/shear (1/s) 73 ! 72 74 !!---------------------------------------------------------------------- 73 75 !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010) … … 126 128 INTEGER :: ji, jj, jk, jl ! dummy loop index 127 129 INTEGER :: niter, nitermax = 20 ! local integer 128 LOGICAL :: asum_error 129 INTEGER :: iterate_ridging 130 REAL(wp) :: w1, tmpfac , dti! local scalar130 LOGICAL :: asum_error ! flag for asum .ne. 1 131 INTEGER :: iterate_ridging ! if true, repeat the ridging 132 REAL(wp) :: w1, tmpfac ! local scalar 131 133 CHARACTER (len = 15) :: fieldid 132 134 REAL(wp), POINTER, DIMENSION(:,:) :: closing_net ! net rate at which area is removed (1/s) … … 152 154 ! 1) Thickness categories boundaries, ice / o.w. concentrations, init_ons 153 155 !-----------------------------------------------------------------------------! 154 ! Set hi_max(ncat) to a big value to ensure that all ridged ice 155 ! is thinner than hi_max(ncat). 156 ! Set hi_max(ncat) to a big value to ensure that all ridged ice is thinner than hi_max(ncat). 156 157 157 158 hi_max(jpl) = 999.99 158 159 159 Cp = 0.5 * grav * (rau0-rhoic) * rhoic / rau0 ! proport const for PE 160 CALL lim_itd_me_ridgeprep ! prepare ridging 161 160 Cp = 0.5 * grav * (rau0-rhoic) * rhoic / rau0 ! proport const for PE 161 ! 162 CALL lim_itd_me_ridgeprep ! prepare ridging 163 ! 162 164 IF( con_i) CALL lim_column_sum( jpl, v_i, vt_i_init ) ! conservation check 163 165 … … 166 168 msnow_mlt(ji,jj) = 0._wp 167 169 esnow_mlt(ji,jj) = 0._wp 168 dardg1dt (ji,jj) 169 dardg2dt (ji,jj) 170 dvirdgdt (ji,jj) 171 opening (ji,jj) 170 dardg1dt (ji,jj) = 0._wp 171 dardg2dt (ji,jj) = 0._wp 172 dvirdgdt (ji,jj) = 0._wp 173 opening (ji,jj) = 0._wp 172 174 173 175 !-----------------------------------------------------------------------------! … … 201 203 ! to give asum = 1.0 after ridging. 202 204 203 divu_adv(ji,jj) = ( 1._wp - asum(ji,jj) ) / rdt_ice ! asum found in ridgeprep205 divu_adv(ji,jj) = ( 1._wp - asum(ji,jj) ) * r1_rdtice ! asum found in ridgeprep 204 206 205 207 IF( divu_adv(ji,jj) < 0._wp ) closing_net(ji,jj) = MAX( closing_net(ji,jj), -divu_adv(ji,jj) ) … … 207 209 ! 2.3 opning 208 210 !------------ 209 ! Compute the (non-negative) opening rate that will give 210 ! asum = 1.0 after ridging. 211 ! Compute the (non-negative) opening rate that will give asum = 1.0 after ridging. 211 212 opning(ji,jj) = closing_net(ji,jj) + divu_adv(ji,jj) 212 213 END DO … … 257 258 IF ( a_i(ji,jj,jl) > epsi11 .AND. athorn(ji,jj,jl) > 0._wp )THEN 258 259 w1 = athorn(ji,jj,jl) * closing_gross(ji,jj) * rdt_ice 259 IF ( w1 >a_i(ji,jj,jl) ) THEN260 IF ( w1 > a_i(ji,jj,jl) ) THEN 260 261 tmpfac = a_i(ji,jj,jl) / w1 261 262 closing_gross(ji,jj) = closing_gross(ji,jj) * tmpfac … … 291 292 ELSE 292 293 iterate_ridging = 1 293 divu_adv (ji,jj) = (1._wp - asum(ji,jj)) / rdt_ice294 divu_adv (ji,jj) = (1._wp - asum(ji,jj)) * r1_rdtice 294 295 closing_net(ji,jj) = MAX( 0._wp, -divu_adv(ji,jj) ) 295 296 opning (ji,jj) = MAX( 0._wp, divu_adv(ji,jj) ) … … 308 309 309 310 IF( iterate_ridging == 1 ) THEN 310 IF( niter .GT.nitermax ) THEN311 IF( niter > nitermax ) THEN 311 312 WRITE(numout,*) ' ALERTE : non-converging ridging scheme ' 312 313 WRITE(numout,*) ' niter, iterate_ridging ', niter, iterate_ridging … … 323 324 ! Update fresh water and heat fluxes due to snow melt. 324 325 325 dti = 1._wp / rdt_ice326 327 326 asum_error = .false. 328 327 … … 330 329 DO ji = 1, jpi 331 330 332 IF (ABS(asum(ji,jj) - 1.0) .GT. epsi11)asum_error = .true.333 334 dardg1dt(ji,jj) = dardg1dt(ji,jj) * dti335 dardg2dt(ji,jj) = dardg2dt(ji,jj) * dti336 dvirdgdt(ji,jj) = dvirdgdt(ji,jj) * dti337 opening (ji,jj) = opening (ji,jj) * dti331 IF( ABS( asum(ji,jj) - 1.0 ) > epsi11 ) asum_error = .true. 332 333 dardg1dt(ji,jj) = dardg1dt(ji,jj) * r1_rdtice 334 dardg2dt(ji,jj) = dardg2dt(ji,jj) * r1_rdtice 335 dvirdgdt(ji,jj) = dvirdgdt(ji,jj) * r1_rdtice 336 opening (ji,jj) = opening (ji,jj) * r1_rdtice 338 337 339 338 !-----------------------------------------------------------------------------! 340 339 ! 5) Heat, salt and freshwater fluxes 341 340 !-----------------------------------------------------------------------------! 342 fmmec(ji,jj) = fmmec(ji,jj) + msnow_mlt(ji,jj) * dti! fresh water source for ocean343 fhmec(ji,jj) = fhmec(ji,jj) + esnow_mlt(ji,jj) * dti! heat sink for ocean341 fmmec(ji,jj) = fmmec(ji,jj) + msnow_mlt(ji,jj) * r1_rdtice ! fresh water source for ocean 342 fhmec(ji,jj) = fhmec(ji,jj) + esnow_mlt(ji,jj) * r1_rdtice ! heat sink for ocean 344 343 345 344 END DO … … 349 348 DO jj = 1, jpj 350 349 DO ji = 1, jpi 351 IF (ABS(asum(ji,jj) - 1.0) .GT. epsi11) THEN! there is a bug350 IF( ABS( asum(ji,jj) - 1._wp ) > epsi11 ) THEN ! there is a bug 352 351 WRITE(numout,*) ' ' 353 352 WRITE(numout,*) ' ALERTE : Ridging error: total area = ', asum(ji,jj) … … 391 390 d_oa_i_trp (:,:,:) = oa_i (:,:,:) - old_oa_i (:,:,:) 392 391 d_smv_i_trp(:,:,:) = 0._wp 393 IF( num_sal == 2 .OR. num_sal == 4) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:)392 IF( num_sal == 2 ) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:) 394 393 395 394 IF(ln_ctl) THEN ! Control print … … 430 429 431 430 ! update of fields will be made later in lim update 432 u_ice(:,:) 433 v_ice(:,:) 434 a_i(:,:,:) 435 v_s(:,:,:) 436 v_i(:,:,:) 437 e_s(:,:,:,:) 438 e_i(:,:,:,:) 439 oa_i(:,:,:) 440 IF( num_sal == 2 .OR. num_sal == 4 ) smv_i(:,:,:)= old_smv_i(:,:,:)431 u_ice(:,:) = old_u_ice(:,:) 432 v_ice(:,:) = old_v_ice(:,:) 433 a_i(:,:,:) = old_a_i(:,:,:) 434 v_s(:,:,:) = old_v_s(:,:,:) 435 v_i(:,:,:) = old_v_i(:,:,:) 436 e_s(:,:,:,:) = old_e_s(:,:,:,:) 437 e_i(:,:,:,:) = old_e_i(:,:,:,:) 438 oa_i(:,:,:) = old_oa_i(:,:,:) 439 IF( num_sal == 2 ) smv_i(:,:,:) = old_smv_i(:,:,:) 441 440 442 441 !----------------------------------------------------! … … 465 464 DO jj = 1, jpj 466 465 DO ji = 1, jpi 467 IF ( ( old_v_i(ji,jj,jl) < epsi06 ).AND. &468 ( d_v_i_trp(ji,jj,jl) > epsi06 )) THEN469 old_v_i (ji,jj,jl)= d_v_i_trp(ji,jj,jl)470 d_v_i_trp (ji,jj,jl) = 0._wp471 old_a_i (ji,jj,jl)= d_a_i_trp(ji,jj,jl)472 d_a_i_trp (ji,jj,jl) = 0._wp473 old_v_s (ji,jj,jl)= d_v_s_trp(ji,jj,jl)474 d_v_s_trp (ji,jj,jl) = 0._wp475 old_e_s (ji,jj,1,jl)= d_e_s_trp(ji,jj,1,jl)476 d_e_s_trp (ji,jj,1,jl) = 0._wp477 old_oa_i (ji,jj,jl)= d_oa_i_trp(ji,jj,jl)478 d_oa_i_trp(ji,jj,jl) = 0._wp479 IF( num_sal == 2 .OR. num_sal == 4 ) old_smv_i(ji,jj,jl)= d_smv_i_trp(ji,jj,jl)480 d_smv_i_trp(ji,jj,jl) = 0._wp466 IF( old_v_i (ji,jj,jl) < epsi06 .AND. & 467 d_v_i_trp(ji,jj,jl) > epsi06 ) THEN 468 old_v_i (ji,jj,jl) = d_v_i_trp(ji,jj,jl) 469 d_v_i_trp (ji,jj,jl) = 0._wp 470 old_a_i (ji,jj,jl) = d_a_i_trp(ji,jj,jl) 471 d_a_i_trp (ji,jj,jl) = 0._wp 472 old_v_s (ji,jj,jl) = d_v_s_trp(ji,jj,jl) 473 d_v_s_trp (ji,jj,jl) = 0._wp 474 old_e_s (ji,jj,1,jl) = d_e_s_trp(ji,jj,1,jl) 475 d_e_s_trp (ji,jj,1,jl) = 0._wp 476 old_oa_i (ji,jj,jl) = d_oa_i_trp(ji,jj,jl) 477 d_oa_i_trp(ji,jj,jl) = 0._wp 478 IF( num_sal == 2 ) old_smv_i(ji,jj,jl) = d_smv_i_trp(ji,jj,jl) 479 d_smv_i_trp(ji,jj,jl) = 0._wp 481 480 ENDIF 482 481 END DO 483 482 END DO 484 483 END DO 485 484 ! 486 485 CALL wrk_dealloc( jpi, jpj, closing_net, divu_adv, opning, closing_gross, msnow_mlt, esnow_mlt, vt_i_init, vt_i_final ) 487 486 ! … … 612 611 ! present 613 612 zworka(ji,jj) = 4.0 * strength(ji,jj) & 614 + strength(ji-1,jj) * tms(ji-1,jj) &615 + strength(ji+1,jj) * tms(ji+1,jj) &616 + strength(ji,jj-1) * tms(ji,jj-1) &617 + strength(ji,jj+1) * tms(ji,jj+1)613 & + strength(ji-1,jj) * tms(ji-1,jj) & 614 & + strength(ji+1,jj) * tms(ji+1,jj) & 615 & + strength(ji,jj-1) * tms(ji,jj-1) & 616 & + strength(ji,jj+1) * tms(ji,jj+1) 618 617 619 618 zw1 = 4.0 + tms(ji-1,jj) + tms(ji+1,jj) + tms(ji,jj-1) + tms(ji,jj+1) 620 619 zworka(ji,jj) = zworka(ji,jj) / zw1 621 620 ELSE 622 zworka(ji,jj) = 0. 0621 zworka(ji,jj) = 0._wp 623 622 ENDIF 624 623 END DO … … 1048 1047 DO jj = 1, jpj 1049 1048 DO ji = 1, jpi 1050 IF (aicen_init(ji,jj,jl1) .GT. epsi11 .AND. athorn(ji,jj,jl1) .GT. 0.0&1051 .AND. closing_gross(ji,jj) > 0. 0) THEN1049 IF( aicen_init(ji,jj,jl1) > epsi11 .AND. athorn(ji,jj,jl1) > 0._wp & 1050 .AND. closing_gross(ji,jj) > 0._wp ) THEN 1052 1051 icells = icells + 1 1053 1052 indxi(icells) = ji … … 1130 1129 ! Salinity 1131 1130 !------------- 1132 smsw(ji,jj) = sss_m(ji,jj) * vsw(ji,jj) * rhoic / rau0 ! salt content of water frozen in voids1131 smsw(ji,jj) = sss_m(ji,jj) * vsw(ji,jj) * rhoic / rau0 ! salt content of seawater frozen in voids 1133 1132 1134 1133 zsrdg2 = srdg1(ji,jj) + smsw(ji,jj) ! salt content of new ridge … … 1137 1136 1138 1137 ! ! excess of salt is flushed into the ocean 1139 fsalt_rpo(ji,jj) = fsalt_rpo(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic / rdt_ice 1140 1138 sfx_mec(ji,jj) = sfx_mec(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic * r1_rdtice 1139 1140 rdm_ice(ji,jj) = rdm_ice(ji,jj) + vsw(ji,jj) * rhoic / rau0 ! increase in ice volume du to seawater frozen in voids 1141 1141 1142 !------------------------------------ 1142 1143 ! 3.6 Increment ridging diagnostics … … 1148 1149 dardg1dt (ji,jj) = dardg1dt(ji,jj) + ardg1(ji,jj) + arft1(ji,jj) 1149 1150 dardg2dt (ji,jj) = dardg2dt(ji,jj) + ardg2(ji,jj) + arft2(ji,jj) 1150 diag_dyn_gr(ji,jj) = diag_dyn_gr(ji,jj) + ( vrdg2(ji,jj) + virft(ji,jj) ) / rdt_ice1151 opening (ji,jj) = opening (ji,jj) + opning(ji,jj) *rdt_ice1151 diag_dyn_gr(ji,jj) = diag_dyn_gr(ji,jj) + ( vrdg2(ji,jj) + virft(ji,jj) ) * r1_rdtice 1152 opening (ji,jj) = opening (ji,jj) + opning(ji,jj) * rdt_ice 1152 1153 1153 1154 IF( con_i ) vice_init(ji,jj) = vice_init(ji,jj) + vrdg2(ji,jj) - vrdg1(ji,jj) … … 1156 1157 ! 3.7 Put the snow somewhere in the ocean 1157 1158 !------------------------------------------ 1158 1159 1159 ! Place part of the snow lost by ridging into the ocean. 1160 1160 ! Note that esnow_mlt < 0; the ocean must cool to melt snow. … … 1179 1179 ! ij looping 1-icells 1180 1180 1181 dhr (ji,jj)= hrmax(ji,jj,jl1) - hrmin(ji,jj,jl1)1181 dhr (ji,jj) = hrmax(ji,jj,jl1) - hrmin(ji,jj,jl1) 1182 1182 dhr2(ji,jj) = hrmax(ji,jj,jl1) * hrmax(ji,jj,jl1) - hrmin(ji,jj,jl1) * hrmin(ji,jj,jl1) 1183 1184 1183 1185 1184 END DO ! ij … … 1211 1210 1212 1211 ! heat flux 1213 fheat_ rpo(ji,jj) = fheat_rpo(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) / rdt_ice1212 fheat_mec(ji,jj) = fheat_mec(ji,jj) + ( ersw(ji,jj,jk) - zdummy0 ) * r1_rdtice 1214 1213 1215 1214 ! Correct dimensions to avoid big values … … 1275 1274 ! Transfer area, volume, and energy accordingly. 1276 1275 1277 IF (hrmin(ji,jj,jl1) .GE. hi_max(jl2).OR. &1278 hrmax(ji,jj,jl1) .LE. hi_max(jl2-1)) THEN1279 hL = 0. 01280 hR = 0. 01276 IF( hrmin(ji,jj,jl1) >= hi_max(jl2) .OR. & 1277 hrmax(ji,jj,jl1) <= hi_max(jl2-1) ) THEN 1278 hL = 0._wp 1279 hR = 0._wp 1281 1280 ELSE 1282 hL = MAX (hrmin(ji,jj,jl1), hi_max(jl2-1))1283 hR = MIN (hrmax(ji,jj,jl1), hi_max(jl2))1281 hL = MAX( hrmin(ji,jj,jl1), hi_max(jl2-1) ) 1282 hR = MIN( hrmax(ji,jj,jl1), hi_max(jl2) ) 1284 1283 ENDIF 1285 1284 1286 1285 ! fraction of ridged ice area and volume going to n2 1287 farea = ( hR-hL) / dhr(ji,jj)1288 fvol(ji,jj) = ( hR*hR - hL*hL) / dhr2(ji,jj)1289 1290 a_i (ji,jj ,jl2) = a_i (ji,jj,jl2)+ ardg2 (ji,jj) * farea1291 v_i (ji,jj ,jl2) = v_i (ji,jj,jl2)+ vrdg2 (ji,jj) * fvol(ji,jj)1292 v_s (ji,jj ,jl2) = v_s (ji,jj,jl2)+ vsrdg (ji,jj) * fvol(ji,jj) * fsnowrdg1286 farea = ( hR - hL ) / dhr(ji,jj) 1287 fvol(ji,jj) = ( hR*hR - hL*hL ) / dhr2(ji,jj) 1288 1289 a_i (ji,jj ,jl2) = a_i (ji,jj ,jl2) + ardg2 (ji,jj) * farea 1290 v_i (ji,jj ,jl2) = v_i (ji,jj ,jl2) + vrdg2 (ji,jj) * fvol(ji,jj) 1291 v_s (ji,jj ,jl2) = v_s (ji,jj ,jl2) + vsrdg (ji,jj) * fvol(ji,jj) * fsnowrdg 1293 1292 e_s (ji,jj,1,jl2) = e_s (ji,jj,1,jl2) + esrdg (ji,jj) * fvol(ji,jj) * fsnowrdg 1294 smv_i(ji,jj ,jl2) = smv_i(ji,jj,jl2)+ srdg2 (ji,jj) * fvol(ji,jj)1295 oa_i (ji,jj ,jl2) = oa_i (ji,jj,jl2)+ oirdg2(ji,jj) * farea1293 smv_i(ji,jj ,jl2) = smv_i(ji,jj ,jl2) + srdg2 (ji,jj) * fvol(ji,jj) 1294 oa_i (ji,jj ,jl2) = oa_i (ji,jj ,jl2) + oirdg2(ji,jj) * farea 1296 1295 1297 1296 END DO ! ij … … 1317 1316 ! Compute the fraction of rafted ice area and volume going to 1318 1317 ! thickness category jl2, transfer area, volume, and energy accordingly. 1319 1320 IF (hraft(ji,jj,jl1) .LE. hi_max(jl2).AND. &1321 hraft(ji,jj,jl1) .GT. hi_max(jl2-1)) THEN1322 a_i (ji,jj,jl2) = a_i(ji,jj,jl2) + arft2(ji,jj)1323 v_i (ji,jj,jl2) = v_i(ji,jj,jl2) + virft(ji,jj)1324 v_s (ji,jj,jl2) = v_s(ji,jj,jl2) + vsrft(ji,jj)*fsnowrft1325 e_s (ji,jj,1,jl2) = e_s(ji,jj,1,jl2) + esrft(ji,jj)*fsnowrft1326 smv_i(ji,jj ,jl2) = smv_i(ji,jj,jl2) + smrft(ji,jj)1327 oa_i (ji,jj,jl2) = oa_i(ji,jj,jl2)+ oirft2(ji,jj)1318 ! 1319 IF( hraft(ji,jj,jl1) <= hi_max(jl2) .AND. & 1320 hraft(ji,jj,jl1) > hi_max(jl2-1) ) THEN 1321 a_i (ji,jj ,jl2) = a_i (ji,jj ,jl2) + arft2 (ji,jj) 1322 v_i (ji,jj ,jl2) = v_i (ji,jj ,jl2) + virft (ji,jj) 1323 v_s (ji,jj ,jl2) = v_s (ji,jj ,jl2) + vsrft (ji,jj) * fsnowrft 1324 e_s (ji,jj,1,jl2) = e_s (ji,jj,1,jl2) + esrft (ji,jj) * fsnowrft 1325 smv_i(ji,jj ,jl2) = smv_i(ji,jj ,jl2) + smrft (ji,jj) 1326 oa_i (ji,jj ,jl2) = oa_i (ji,jj ,jl2) + oirft2(ji,jj) 1328 1327 ENDIF ! hraft 1329 1328 ! 1330 1329 END DO ! ij 1331 1330 … … 1336 1335 ji = indxi(ij) 1337 1336 jj = indxj(ij) 1338 IF (hraft(ji,jj,jl1) .LE. hi_max(jl2).AND. &1339 hraft(ji,jj,jl1) .GT. hi_max(jl2-1)) THEN1337 IF( hraft(ji,jj,jl1) <= hi_max(jl2) .AND. & 1338 hraft(ji,jj,jl1) > hi_max(jl2-1) ) THEN 1340 1339 e_i(ji,jj,jk,jl2) = e_i(ji,jj,jk,jl2) + eirft(ji,jj,jk) 1341 1340 ENDIF … … 1504 1503 DO jj = 1 , jpj 1505 1504 DO ji = 1 , jpi 1506 !!gm xtmp = e_i(ji,jj,jk,jl) / area(ji,jj) / rdt_ice1505 !!gm xtmp = e_i(ji,jj,jk,jl) / area(ji,jj) * r1_rdtice 1507 1506 !!gm xtmp = xtmp * unit_fac 1508 1507 ! fheat_res(ji,jj) = fheat_res(ji,jj) - xtmp … … 1524 1523 ! fluxes are positive to the ocean 1525 1524 ! here the flux has to be negative for the ocean 1526 !!gm xtmp = ( rhosn*cpic*( rtt-t_s(ji,jj,1,jl) ) + rhosn*lfus ) / rdt_ice1525 !!gm xtmp = ( rhosn*cpic*( rtt-t_s(ji,jj,1,jl) ) + rhosn*lfus ) * r1_rdtice 1527 1526 ! fheat_res(ji,jj) = fheat_res(ji,jj) - xtmp 1528 1527 1529 !!gm xtmp = ( rhosn*cpic*( rtt-t_s(ji,jj,1,jl) ) + rhosn*lfus ) / rdt_ice !RB ???????1528 !!gm xtmp = ( rhosn*cpic*( rtt-t_s(ji,jj,1,jl) ) + rhosn*lfus ) * r1_rdtice !RB ??????? 1530 1529 1531 1530 t_s(ji,jj,1,jl) = rtt * zmask(ji,jj) + t_s(ji,jj,1,jl) * ( 1 - zmask(ji,jj) ) … … 1536 1535 1537 1536 ! xtmp = (rhoi*vicen(i,j,n) + rhos*vsnon(i,j,n)) / dt 1538 ! fresh(i,j) = fresh(i,j) + xtmp 1539 ! fresh_hist(i,j) = fresh_hist(i,j) + xtmp 1540 1541 ! fsalt_res(ji,jj) = fsalt_res(ji,jj) + ( sss_m(ji,jj) ) * & 1542 ! rhosn * v_s(ji,jj,jl) / rdt_ice 1543 1544 ! fsalt_res(ji,jj) = fsalt_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) ) * & 1545 ! rhoic * v_i(ji,jj,jl) / rdt_ice 1546 1547 ! emps(i,j) = emps(i,j) + xtmp 1548 ! fsalt_hist(i,j) = fsalt_hist(i,j) + xtmp 1537 ! sfx_res(ji,jj) = sfx_res(ji,jj) + ( sss_m(ji,jj) ) & 1538 ! * rhosn * v_s(ji,jj,jl) * r1_rdtice 1539 ! sfx_res(ji,jj) = sfx_res(ji,jj) + ( sss_m(ji,jj) - sm_i(ji,jj,jl) ) & 1540 ! * rhoic * v_i(ji,jj,jl) * r1_rdtice 1541 ! sfx (i,j) = sfx (i,j) + xtmp 1549 1542 1550 1543 ato_i(ji,jj) = a_i (ji,jj,jl) * zmask(ji,jj) + ato_i(ji,jj)
Note: See TracChangeset
for help on using the changeset viewer.