Changeset 8085
- Timestamp:
- 2017-05-29T16:58:42+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r8061 r8085 87 87 INTEGER :: ji, jj, jk, jl ! dummy loop indices 88 88 REAL(wp) :: ztmelts, zdh 89 INTEGER :: i_hemis, i_fill, jl0 90 REAL(wp) :: zarg, zV, zconv, zdv 89 INTEGER :: i_hemis, i_fill, jl0 90 REAL(wp) :: zarg, zV, zconv, zdv, z1_jpl 91 91 REAL(wp), POINTER, DIMENSION(:,:) :: zswitch ! ice indicator 92 92 REAL(wp), POINTER, DIMENSION(:,:) :: zht_i_ini, zat_i_ini, zvt_i_ini !data from namelist or nc file … … 378 378 tn_ice (:,:,:) = t_su (:,:,:) 379 379 380 ! MV MP 2016 381 ! Melt pond volume and fraction 382 383 z1_jpl = 1. / REAL(jpl) 384 385 SELECT CASE ( nn_pnd_scheme ) 386 387 CASE ( 0 ) !--- Prescribed melt ponds 388 389 DO jl = 1, jpl 390 391 a_ip(:,:,jl) = rn_apnd * z1_jpl * zswitch(:,:) 392 v_ip(:,:,jl) = 0.1 * zswitch(:,:) * a_ip(:,:,jl) 393 394 END DO 395 396 CASE ( 1, 2 ) !--- Prognostic melt ponds 397 398 DO jl = 1, jpl 399 400 a_ip(:,:,jl) = 0.1 * zswitch(:,:) 401 v_ip(:,:,jl) = 0.1 * zswitch(:,:) * a_ip(:,:,jl) 402 403 END DO 404 405 END SELECT 406 407 ! END MV MP 2016 408 380 409 ELSE ! if ln_limini=false 381 410 a_i (:,:,:) = 0._wp … … 401 430 END DO 402 431 432 ! MV MP 2016 433 a_ip(:,:,:) = 0._wp 434 v_ip(:,:,:) = 0._wp 435 h_ip(:,:,:) = 0._wp 436 a_ip_frac(:,:,:) = 0._wp 437 ! END MV MP 2016 438 403 439 ENDIF ! ln_limini 404 440 … … 408 444 END DO 409 445 410 ! MV MP 2016411 412 ! For now, we just assume that melt ponds are absent initially413 ! We probably have to revise this and code it as for all other sea ice variables later on414 !415 !--------------------------------------------------------------------416 ! X) Melt pond variables417 !--------------------------------------------------------------------418 !419 !IF ( ln_pnd ) THEN420 SELECT CASE ( nn_pnd_scheme )421 422 z1_jpl = 1 / REAL(jpl)423 424 CASE ( 0 ) !--- Prescribed melt ponds425 426 DO jl = 1, jpl427 428 a_ip(:,:,jl) = rn_apnd * z1_jpl * zswitch(:,:)429 h_ip(:,:,jl) = 0.1 * zswitch(:,:)430 431 END DO432 433 CASE ( 1, 2 ) !--- Prognostic melt ponds434 435 DO jl = 1, jpl436 437 a_ip(:,:,jl) = 0.1 * zswitch(:,:)438 h_ip(:,:,jl) = 0.1 * zswitch(:,:)439 440 END DO441 442 END SELECT443 444 v_ip(:,:,:) = a_ip(:,:,:) * h_i_p(:,:,:)445 a_ip_frac(:,:,:) = a_ip(:,:,:) / a_i(:,:,:)446 447 ! END MV MP 2016448 449 446 !-------------------------------------------------------------------- 450 447 ! 4) Global ice variables for output diagnostics | … … 491 488 492 489 ! MV MP 2016 493 IF ( nn_pnd_scheme > 1 ) THEN490 IF ( nn_pnd_scheme >= 1 ) THEN 494 491 sxap (:,:,:) = 0._wp ; sxvp (:,:,:) = 0._wp 495 492 syap (:,:,:) = 0._wp ; syvp (:,:,:) = 0._wp -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r8063 r8085 608 608 esrdg (ij) = e_s (ji,jj,1,jl1) * afrac(ij) 609 609 !MV MP 2016 610 IF ( nn_pnd_scheme > 1) THEN610 IF ( nn_pnd_scheme > 0 ) THEN 611 611 vprdg(ij) = v_ip(ji,jj, jl1) * afrac(ij) 612 612 ENDIF … … 620 620 vsrft (ij) = v_s (ji,jj, jl1) * afrft(ij) 621 621 !MV MP 2016 622 IF ( nn_pnd_scheme > 1) THEN622 IF ( nn_pnd_scheme > 0 ) THEN 623 623 vprft(ij) = v_ip(ji,jj,jl1) * afrft(ij) 624 624 ENDIF … … 665 665 !------------------------------------------ 666 666 ! Place part of the melt pond volume into the ocean. 667 IF ( ( nn_pnd_scheme > 0 ) .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) ) 667 IF ( ( nn_pnd_scheme > 0 ) .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) ) THEN 668 668 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + ( rhofw * vprdg(ij) * ( 1._wp - rn_fpondrdg ) & 669 669 & + rhofw * vprft(ij) * ( 1._wp - rn_fpondrft ) ) * r1_rdtice ! fresh water source for ocean -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90
r8063 r8085 101 101 WRITE(numout,*)' Activate melt ponds ln_pnd = ', ln_pnd 102 102 WRITE(numout,*)' Type of melt pond scheme =0 presc, =1 empirical = 2 topo nn_pnd_scheme = ', nn_pnd_scheme 103 WRITE(numout,*)' Type of melt pond coupling =0 pass., =1 full, =2 rad, 3=fw nn_pnd_cpl = ', nn_pnd_cp 103 WRITE(numout,*)' Type of melt pond coupling =0 pass., =1 full, =2 rad, 3=fw nn_pnd_cpl = ', nn_pnd_cpl 104 104 WRITE(numout,*)' Prescribed pond fraction rn_apnd = ', rn_apnd 105 ENDIF 106 107 IF ( ln_pnd == .FALSE. ) THEN 108 WRITE(numout) ' Melt ponds are not activated ' 109 WRITE(numout) ' nn_pnd_scheme, nn_pnd_cpl and rn_apnd are set to zero ' 110 nn_pnd_scheme = 0 111 nn_pnd_cpl = 0 112 rn_apnd = 0._wp 105 113 ENDIF 106 114 ! … … 134 142 SELECT CASE ( nn_pnd_scheme ) 135 143 136 137 138 139 140 141 142 143 144 144 CASE (1) 145 146 CALL lim_mp_cesm ! empirical melt ponds 147 148 CASE (2) 149 150 CALL lim_mp_topo (at_i, a_i, & 151 & vt_i, v_i, v_s, t_i, s_i, a_ip_frac, & 152 & h_ip, t_su) 145 153 146 154 END SELECT … … 193 201 REAL(wp) :: z1_rhofw ! inverse freshwater density 194 202 REAL(wp) :: z1_zpnd_aspect ! inverse pond aspect ratio 195 REAL(wp) :: zv old! dummy pond volume203 REAL(wp) :: zvpold ! dummy pond volume 196 204 197 205 INTEGER :: ji, jj, jl, ij ! loop indices … … 261 269 ELSE !--- Update pond characteristics 262 270 263 !--- Add retained melt water 271 !--- Add retained melt water to melt ponds 264 272 v_ip(ji,jj,jl) = v_ip(ji,jj,jl) + zrfrac(ji,jj,jl) * z1_rhofw * zwfx_mlw(ji,jj) * a_i(ji,jj,jl) * rdt_ice 265 273 -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
r8063 r8085 526 526 !!------------------------------------------------------------------- 527 527 INTEGER :: ji, jj, jl, jk ! dummy loop indices 528 REAL(wp) :: zsal, zvi, zvs, zei, zes 528 REAL(wp) :: zsal, zvi, zvs, zei, zes, zvp 529 529 !!------------------------------------------------------------------- 530 530 at_i (:,:) = 0._wp … … 566 566 zvs = v_s (ji,jj, jl) 567 567 zes = e_s (ji,jj,1,jl) 568 zvp = v_ip (ji,jj ,jl) 568 569 !----------------------------------------------------------------- 569 570 ! Zap snow energy … … 582 583 oa_i (ji,jj,jl) = oa_i (ji,jj,jl) * rswitch 583 584 smv_i(ji,jj,jl) = smv_i(ji,jj,jl) * rswitch 585 586 ! MV MP 2016 587 a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * rswitch 588 v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * rswitch 589 wfx_res(ji,jj) = wfx_res(ji,jj) - ( v_ip(ji,jj,jl) - zvp ) * rhofw * r1_rdtice 590 ! END MV MP 2016 584 591 585 592 ! update exchanges with ocean -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r8063 r8085 171 171 CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt 172 172 173 IF ( nn_pnd_scheme >= 0) &173 IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & 174 174 CALL iom_put( "vfxpnd" , wfx_pnd * ztmp ) ! melt pond water flux 175 175 … … 211 211 212 212 ! MV MP 2016 213 IF ( nn_pnd_scheme >= 0 ) THEN ! change once we are sure213 IF ( ln_pnd ) THEN 214 214 CALL iom_put( "iceamp" , at_ip * zswi ) ! melt pond total fraction 215 215 CALL iom_put( "icevmp" , vt_ip * zswi ) ! melt pond total volume per unit area … … 235 235 236 236 ! MV MP 2016 237 IF ( nn_pnd_scheme >= 0 ) THEN ! change once we are sure that case = 0 works237 IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 238 238 IF ( iom_use( "iceamp_cat" ) ) CALL iom_put( "iceamp_cat" , a_ip * zswi2 ) ! melt pond frac for categories 239 239 IF ( iom_use( "icevmp_cat" ) ) CALL iom_put( "icevmp_cat" , v_ip * zswi2 ) ! melt pond frac for categories … … 304 304 305 305 ! MV MP 2016 306 IF ( nn_pnd_scheme >= 0) THEN306 IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 307 307 CALL histdef( kid, "si_amp", "Melt pond fraction" , "%" , & 308 308 & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) … … 357 357 358 358 ! MV MP 2016 359 IF ( nn_pnd_scheme >= 0) THEN359 IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN 360 360 CALL histwrite( kid, "si_amp", kt, at_ip , jpi*jpj, (/1/) ) 361 361 CALL histwrite( kid, "si_vmp", kt, vt_ip , jpi*jpj, (/1/) ) … … 370 370 CALL histwrite( kid, "vfxbom", kt, wfx_bom , jpi*jpj, (/1/) ) 371 371 CALL histwrite( kid, "vfxsum", kt, wfx_sum , jpi*jpj, (/1/) ) 372 IF ( nn_pnd_scheme >= 0) &372 IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & 373 373 CALL histwrite( kid, "vfxpnd", kt, wfx_pnd , jpi*jpj, (/1/) ) 374 374 -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r7325 r8085 263 263 264 264 ! MV MP 2016 265 IF ( ln_ limMP)CALL lim_mp( kt ) ! -- Melt ponds265 IF ( ln_pnd ) CALL lim_mp( kt ) ! -- Melt ponds 266 266 ! END MV MP 2016 267 267
Note: See TracChangeset
for help on using the changeset viewer.