Changeset 8142
- Timestamp:
- 2017-06-06T09:39:43+02:00 (7 years ago)
- Location:
- branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref
r8065 r8142 46 46 !------------------------------------------------------------------------------ 47 47 ! -- limistate -- ! 48 ln_limini = . false.! activate ice initialization (T) or not (F)48 ln_limini = .true. ! activate ice initialization (T) or not (F) 49 49 ln_limini_file = .false. ! netcdf file provided for initialization (T) or not (F) 50 50 rn_thres_sst = 0.5 ! maximum water temperature with initial ice (degC) … … 169 169 !------------------------------------------------------------------------------ 170 170 ! -- limmp -- ! 171 ln_pnd = .true. ! activate melt ponds 172 nn_pnd_scheme = 1 ! type of melt pond scheme: =0 prescribed ( Tsu>0 ), =1 empirical, =2 topographic 173 nn_pnd_cpl = 3 ! type of melt pond coupling: =0 passive, =1 full, =2 radiation only, =3 freshwater only 174 rn_apnd = 0.0 ! prescribed pond fraction (0<rn_apnd<1), only if nn_pnd_scheme = 0 171 ln_pnd = .false. ! active melt ponds 172 ln_pnd_rad = .false. ! active melt ponds radiative coupling 173 ln_pnd_fw = .false. ! active melt ponds freshwater coupling 174 nn_pnd_scheme = 0 ! type of melt pond scheme : =0 prescribed ( Tsu=0 ), =1 empirical, =2 topographic 175 rn_apnd = 0.2 ! prescribed pond fraction, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 176 rn_hpnd = 0.05 ! prescribed pond depth, at Tsu=0 : (0<rn_apnd<1, nn_pnd_scheme = 0) 175 177 / 176 178 !------------------------------------------------------------------------------ … … 188 190 rn_por_rdg = 0.3 ! (ln_ridging = T) porosity of newly ridged ice (Lepparanta et al., 1995) 189 191 rn_fsnowrdg = 0.5 ! (ln_ridging = T) snow volume fraction that survives in ridging 192 rn_fpondrdg = 1.0 ! (ln_ridging = T) pond fraction that survives in ridging (small a priori) 190 193 ln_rafting = .true. ! rafting activated (T) or not (F) => DO NOT TOUCH UNLESS U KNOW WHAT U DO 191 194 rn_hraft = 0.75 ! (ln_rafting = T) threshold thickness for rafting (m) 192 195 rn_craft = 5.0 ! (ln_rafting = T) squeezing coefficient used in the rafting function 193 196 rn_fsnowrft = 0.5 ! (ln_rafting = T) snow volume fraction that survives in rafting 197 rn_fpondrft = 1.0 ! (ln_rafting = T) pond fraction that survives in rafting (0.5 a priori) 194 198 / -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/CONFIG/SHARED/namelist_ref
r7159 r8142 25 25 !----------------------------------------------------------------------- 26 26 nn_no = 0 ! job number (no more used...) 27 cn_exp = "ORCA2" ! experience name27 cn_exp = "ORCA2" ! experience name 28 28 nn_it000 = 1 ! first time step 29 29 nn_itend = 5475 ! last time step (std 5475) … … 506 506 &namsbc_alb ! albedo parameters 507 507 !----------------------------------------------------------------------- 508 nn_ice_alb = 0 ! parameterization of ice/snow albedo 509 ! 0: Shine & Henderson-Sellers (JGR 1985) 510 ! 1: "home made" based on Brandt et al. (J. Climate 2005) 511 ! and Grenfell & Perovich (JGR 2004) 512 rn_albice = 0.53 ! albedo of bare puddled ice (values from 0.49 to 0.58) 513 ! 0.53 (default) => if nn_ice_alb=0 514 ! 0.50 (default) => if nn_ice_alb=1 508 nn_ice_alb = 0 ! parameterization of ice/snow albedo 509 ! 0: Shine & Henderson-Sellers (JGR 1985), giving clear-sky albedo 510 ! 1: "home made" based on Brandt et al. (JClim 2005) and Grenfell & Perovich (JGR 2004), 511 ! giving cloud-sky albedo 512 ! 2: "homme made", "1" rewritten, more naturally based on specific areas of ponds, snow & bare ice 513 rn_alb_sdry = 0.85 ! dry snow albedo : 0.80 (nn_ice_alb = 0); 0.85 (nn_ice_alb = 1/2); obs 0.85-0.87 (cloud-sky) 514 rn_alb_smlt = 0.75 ! melting snow albedo : 0.65 ( '' ) ; 0.75 ( '' ) ; obs 0.72-0.82 ( '' ) 515 rn_alb_idry = 0.60 ! dry ice albedo : 0.72 ( '' ) ; 0.60 ( '' ) ; obs 0.54-0.65 ( '' ) 516 rn_alb_imlt = 0.50 ! bare puddled ice albedo : 0.53 ( '' ) ; 0.50 ( '' ) ; obs 0.49-0.58 ( '' ) -> used only if no ponds 517 rn_alb_dpnd = 0.27 ! bare puddled ice albedo : 0.25 ( '' ) ; 0.27 ( '' ) ; obs 0.10-0.30 ( '' ) 515 518 / 516 519 !----------------------------------------------------------------------- -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r8125 r8142 509 509 ! MV MP 2016 510 510 REAL(wp), POINTER, DIMENSION(:) :: vprdg ! pond volume of ridging ice 511 REAL(wp), POINTER, DIMENSION(:) :: aprdg1 ! pond area of ridging ice 512 REAL(wp), POINTER, DIMENSION(:) :: aprdg2 ! pond area of ridging ice 511 513 ! END MV MP 2016 512 514 REAL(wp), POINTER, DIMENSION(:) :: dhr , dhr2 ! hrmax - hrmin & hrmax^2 - hrmin^2 … … 525 527 ! MV MP 2016 526 528 REAL(wp), POINTER, DIMENSION(:) :: vprft ! pond volume of rafting ice 529 REAL(wp), POINTER, DIMENSION(:) :: aprft1 ! pond area of rafted ice 530 REAL(wp), POINTER, DIMENSION(:) :: aprft2 ! pond area of new rafted ice 527 531 ! END MV MP 2016 528 532 REAL(wp), POINTER, DIMENSION(:) :: esrft , smrft ! snow energy & salinity of rafting ice … … 539 543 ! MV MP 2016 540 544 !CALL wrk_alloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 ) 541 CALL wrk_alloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, vprdg, dhr, dhr2 )545 CALL wrk_alloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, vprdg, aprdg1, aprdg2, dhr, dhr2 ) 542 546 ! END MV MP 2016 543 547 CALL wrk_alloc( jpij, vrdg1, vrdg2, vsw , srdg1, srdg2, smsw, oirdg1, oirdg2 ) 544 548 ! MV MP 2016 545 549 !CALL wrk_alloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 546 CALL wrk_alloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, vprft, smrft, oirft1, oirft2 ) 550 CALL wrk_alloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, aprft1, aprft2) 551 CALL wrk_alloc ( jpij, vprft, smrft, oirft1, oirft2 ) 547 552 ! END MV MP 2016 548 553 CALL wrk_alloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw ) … … 598 603 599 604 !-------------------------------------------------------------------------- 600 ! 3.4) Sub tract area, volume, and energy from ridging605 ! 3.4) Substract area, volume, and energy from ridging 601 606 ! / rafting category n1. 602 607 !-------------------------------------------------------------------------- … … 609 614 !MV MP 2016 610 615 IF ( nn_pnd_scheme > 0 ) THEN 611 vprdg(ij) = v_ip(ji,jj, jl1) * afrac(ij) 616 aprdg1(ij) = a_ip(ji,jj, jl1) * afrac(ij) 617 aprdg2(ij) = a_ip(ji,jj, jl1) * afrac(ij) * krdg(ji,jj,jl1) 618 vprdg(ij) = v_ip(ji,jj, jl1) * afrac(ij) 612 619 ENDIF 613 620 ! END MV MP 2016 … … 621 628 !MV MP 2016 622 629 IF ( nn_pnd_scheme > 0 ) THEN 623 vprft(ij) = v_ip(ji,jj,jl1) * afrft(ij) 630 aprft1(ij) = a_ip (ji,jj, jl1) * afrft(ij) 631 aprft2(ij) = a_ip (ji,jj, jl1) * afrft(ij) * kraft 632 vprft(ij) = v_ip(ji,jj,jl1) * afrft(ij) 624 633 ENDIF 625 634 ! END MV MP 2016 … … 690 699 IF ( nn_pnd_scheme > 0 ) THEN 691 700 v_ip (ji,jj,jl1) = v_ip (ji,jj,jl1) - vprdg (ij) - vprft (ij) 701 a_ip (ji,jj,jl1) = a_ip (ji,jj,jl1) - aprdg1(ij) - aprft1(ij) 692 702 ENDIF 693 703 ! END MV MP 2016 … … 758 768 ! MV MP 2016 759 769 IF ( nn_pnd_scheme > 0 ) THEN 760 v_ip (ji,jj,jl2) = v_ip (ji,jj,jl2) + ( vprdg (ij) * rn_fpondrdg * fvol(ij) + & 761 & vprft (ij) * rn_fpondrft * zswitch(ij) ) 770 v_ip (ji,jj,jl2) = v_ip (ji,jj,jl2) + ( vprdg (ij) * rn_fpondrdg * fvol(ij) + & 771 & vprft (ij) * rn_fpondrft * zswitch(ij) ) 772 a_ip (ji,jj,jl2) = a_ip(ji,jj,jl2) + ( aprdg2(ij) * rn_fpondrdg * farea + & 773 & aprft2(ij) * rn_fpondrft * zswitch(ji) ) 762 774 ENDIF 763 775 ! END MV MP 2016 … … 782 794 ! MV MP 2016 783 795 !CALL wrk_dealloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 ) 784 CALL wrk_dealloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, vprdg, dhr, dhr2 )796 CALL wrk_dealloc( jpij, afrac, ardg1, ardg2, vsrdg, esrdg, vprdg, aprdg1, aprdg2, dhr, dhr2 ) 785 797 ! END MV MP 2016 786 798 CALL wrk_dealloc( jpij, vrdg1, vrdg2, vsw , srdg1, srdg2, smsw, oirdg1, oirdg2 ) 787 799 ! MV MP 2016 788 800 !CALL wrk_dealloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 789 CALL wrk_dealloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, vprft, smrft, oirft1, oirft2 ) 801 CALL wrk_dealloc( jpij, afrft, arft1, arft2, virft, vsrft, esrft, aprft1, aprft2, vprft ) 802 CALL wrk_dealloc( jpij, smrft, oirft1, oirft2 ) 790 803 CALL wrk_dealloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw ) 791 804 ! -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limmp.F90
r8125 r8142 6 6 !! history : ! Original code by Daniela Flocco and Adrian Turner 7 7 !! 1.0 ! 2012 (O. Lecomte) Adaptation for scientific tests (NEMO3.1) 8 !! 2.0 ! 2016 (O. Lecomte, C. Rousset, M. Vancoppenolle) Implementation in NEMO3.6 8 !! 2.0 ! 2017 (M. Vancoppenolle, O. Lecomte, C. Rousset) Implementation in NEMO3.6 9 !! ! NB: Only lim_mp_cstt and lim_mp_cesm work in this 10 !! version 9 11 !!---------------------------------------------------------------------- 10 12 #if defined key_lim3 … … 137 139 138 140 139 140 141 SUBROUTINE lim_mp( kt ) 141 142 !!------------------------------------------------------------------- … … 153 154 INTEGER :: ji, jj, jl ! dummy loop indices 154 155 155 ! REAL(wp), POINTER, DIMENSION(:,:) :: zfsurf ! surface heat flux(obsolete, should be droped)156 !157 156 !!------------------------------------------------------------------- 158 159 IF( nn_timing == 1 ) CALL timing_start('limthd')160 157 161 158 IF( nn_timing == 1 ) CALL timing_start('lim_mp') … … 180 177 END SELECT 181 178 182 ! we should probably not aggregate here since we do it in lim_var_agg 183 ! before output, unless we need the total volume and faction else where 184 185 ! we should also make sure a_ip and v_ip are properly updated at the end 186 ! of the routine 179 IF( nn_timing == 1 ) CALL timing_stop('lim_mp') 187 180 188 181 END SUBROUTINE lim_mp … … 237 230 !! surface is freezing. 238 231 !! 239 !! ** Tunable parameters : (no expertise yet)232 !! ** Tunable parameters : (no real expertise yet, ideas?) 240 233 !! 241 234 !! ** Note : Stolen from CICE for quick test of the melt pond … … 272 265 !!------------------------------------------------------------------- 273 266 274 CALL wrk_alloc( jpi*jpj, indxi, indxj) 275 CALL wrk_alloc( jpi,jpj, zwfx_mlw ) 276 CALL wrk_alloc( jpi,jpj,jpl, zrfrac ) 277 278 z1_rhofw = 1. / rhofw 279 z1_zpnd_aspect = 1. / zpnd_aspect 280 zTp = -2. 281 282 !------------------------------------------------------------------ 283 ! Available melt water for melt ponding and corresponding fraction 284 !------------------------------------------------------------------ 285 286 zwfx_mlw(:,:) = wfx_sum(:,:) + wfx_snw(:,:) ! available meltwater for melt ponding 287 288 zrfrac(:,:,:) = zrmin + ( zrmax - zrmin ) * a_i(:,:,:) 289 290 DO jl = 1, jpl 291 292 ! v_ip(:,:,jl) ! Initialize things 293 ! a_ip(:,:,jl) 294 ! volpn(:,:) = hpnd(:,:) * apnd(:,:) * aicen(:,:) 295 296 !------------------------------------------------------------------------------ 297 ! Identify grid cells where ponds should be updated (can probably be improved) 298 !------------------------------------------------------------------------------ 299 300 indxi(:) = 0 301 indxj(:) = 0 302 icells = 0 303 304 DO jj = 1, jpj 305 DO ji = 1, jpi 306 IF ( a_i(ji,jj,jl) > epsi10 ) THEN 307 icells = icells + 1 308 indxi(icells) = ji 309 indxj(icells) = jj 310 ENDIF 311 END DO ! ji 312 END DO ! jj 313 314 DO ij = 1, icells 315 316 ji = indxi(ij) 317 jj = indxj(ij) 318 319 zhi = v_i(ji,jj,jl) / a_i(ji,jj,jl) 320 zhs = v_s(ji,jj,jl) / a_i(ji,jj,jl) 321 322 IF ( zhi < rn_himin) THEN !--- Remove ponds on thin ice if ice is too thin 323 324 a_ip(ji,jj,jl) = 0._wp !--- Dump ponds 325 v_ip(ji,jj,jl) = 0._wp 326 a_ip_frac(ji,jj,jl) = 0._wp 327 h_ip(ji,jj,jl) = 0._wp 328 329 IF ( ln_pnd_fw ) & !--- Give freshwater to the ocean 330 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + v_ip(ji,jj,jl) 331 332 333 ELSE !--- Update pond characteristics 334 335 !--- Add retained melt water to melt ponds 336 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 337 338 !--- Shrink pond due to refreezing 339 zdTs = MAX ( zTp - t_su(ji,jj,jl) + rt0 , 0. ) 340 341 zvpold = v_ip(ji,jj,jl) 342 343 v_ip(ji,jj,jl) = v_ip(ji,jj,jl) * EXP( zrexp * zdTs / zTp ) 344 345 !--- Dump meltwater due to refreezing ( of course this is wrong 346 !--- but this parameterization is too simple ) 347 IF ( ln_pnd_fw ) & 348 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + rhofw * ( v_ip(ji,jj,jl) - zvpold ) * r1_rdtice 349 350 a_ip_frac(ji,jj,jl) = MIN( 1._wp , SQRT( v_ip(ji,jj,jl) * z1_zpnd_aspect / a_i(ji,jj,jl) ) ) 351 352 h_ip(ji,jj,jl) = zpnd_aspect * a_ip_frac(ji,jj,jl) 353 354 a_ip(ji,jj,jl) = a_ip_frac(ji,jj,jl) * a_i(ji,jj,jl) 355 356 !----------------------------------------------------------- 357 ! Limit pond depth 358 !----------------------------------------------------------- 359 ! hpondn = min(hpondn, dpthhi*hi) 360 361 !--- Give freshwater to the ocean ? 362 363 ENDIF 364 365 END DO 366 367 END DO ! jpl 368 369 !--- Remove retained meltwater from surface fluxes 370 371 IF ( ln_pnd_fw ) THEN 372 373 wfx_snw(:,:) = wfx_snw(:,:) * ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) ) 374 375 wfx_sum(:,:) = wfx_sum(:,:) * ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) ) 376 377 ENDIF 267 CALL wrk_alloc( jpi*jpj, indxi, indxj) 268 CALL wrk_alloc( jpi,jpj, zwfx_mlw ) 269 CALL wrk_alloc( jpi,jpj,jpl, zrfrac ) 270 271 z1_rhofw = 1. / rhofw 272 z1_zpnd_aspect = 1. / zpnd_aspect 273 zTp = -2. 274 275 a_ip_frac(:,:,:) = 0._wp 276 h_ip (:,:,:) = 0._wp 277 278 !------------------------------------------------------------------ 279 ! Available melt water for melt ponding and corresponding fraction 280 !------------------------------------------------------------------ 281 282 zwfx_mlw(:,:) = MAX( wfx_sum(:,:) + wfx_snw(:,:), 0._wp ) ! available meltwater for melt ponding 283 284 ! NB: zwfx_mlw can be slightly negative for very small values (why?) 285 ! This can in some occasions give negative 286 ! v_ip in the first category, which then gives crazy pond 287 ! fractions and crashes the code as soon as the melt-pond 288 ! radiative coupling is activated 289 ! if we understand and remove why wfx_sum or wfx_snw could be 290 ! negative, then, we can remove the MAX 291 292 zrfrac(:,:,:) = zrmin + ( zrmax - zrmin ) * a_i(:,:,:) 293 294 DO jl = 1, jpl 295 296 !------------------------------------------------------------------------------ 297 ! Identify grid cells where ponds should be updated (can probably be improved) 298 !------------------------------------------------------------------------------ 299 300 indxi(:) = 0 301 indxj(:) = 0 302 icells = 0 303 304 DO jj = 1, jpj 305 DO ji = 1, jpi 306 IF ( a_i(ji,jj,jl) > epsi10 ) THEN 307 icells = icells + 1 308 indxi(icells) = ji 309 indxj(icells) = jj 310 ENDIF 311 END DO ! ji 312 END DO ! jj 313 314 DO ij = 1, icells 315 316 ji = indxi(ij) 317 jj = indxj(ij) 318 319 zhi = v_i(ji,jj,jl) / a_i(ji,jj,jl) 320 zhs = v_s(ji,jj,jl) / a_i(ji,jj,jl) 321 322 IF ( zhi < rn_himin) THEN !--- Remove ponds on thin ice if ice is too thin 323 324 a_ip(ji,jj,jl) = 0._wp !--- Dump ponds 325 v_ip(ji,jj,jl) = 0._wp 326 a_ip_frac(ji,jj,jl) = 0._wp 327 h_ip(ji,jj,jl) = 0._wp 328 329 IF ( ln_pnd_fw ) & !--- Give freshwater to the ocean 330 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + v_ip(ji,jj,jl) 331 332 333 ELSE !--- Update pond characteristics 334 335 !--- Add retained melt water to melt ponds 336 ! v_ip should never be positive, otherwise code crashes 337 ! MV: as far as I saw, UM5 can create very small negative v_ip values 338 ! hence I added the max, which was not required with Prather (1 yr run) 339 v_ip(ji,jj,jl) = MAX( v_ip(ji,jj,jl), 0._wp ) + zrfrac(ji,jj,jl) * z1_rhofw * zwfx_mlw(ji,jj) * a_i(ji,jj,jl) * rdt_ice 340 341 !--- Shrink pond due to refreezing 342 zdTs = MAX ( zTp - t_su(ji,jj,jl) + rt0 , 0. ) 343 344 zvpold = v_ip(ji,jj,jl) 345 346 v_ip(ji,jj,jl) = v_ip(ji,jj,jl) * EXP( zrexp * zdTs / zTp ) 347 348 !--- Dump meltwater due to refreezing ( of course this is wrong 349 !--- but this parameterization is too simple ) 350 IF ( ln_pnd_fw ) & 351 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + rhofw * ( v_ip(ji,jj,jl) - zvpold ) * r1_rdtice 352 353 a_ip_frac(ji,jj,jl) = MIN( 1._wp , SQRT( v_ip(ji,jj,jl) * z1_zpnd_aspect / a_i(ji,jj,jl) ) ) 354 355 h_ip(ji,jj,jl) = zpnd_aspect * a_ip_frac(ji,jj,jl) 356 357 a_ip(ji,jj,jl) = a_ip_frac(ji,jj,jl) * a_i(ji,jj,jl) 358 359 !----------------------------------------------------------- 360 ! Limit pond depth 361 !----------------------------------------------------------- 362 ! The original version has pond depth limitation, which I did not 363 ! keep here. Maybe we need it later on 364 ! 365 366 ENDIF 367 368 END DO 369 370 END DO ! jpl 371 372 !--- Remove retained meltwater from surface fluxes 373 374 IF ( ln_pnd_fw ) THEN 375 376 wfx_snw(:,:) = wfx_snw(:,:) * ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) ) 377 378 wfx_sum(:,:) = wfx_sum(:,:) * ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) ) 379 380 ENDIF 381 382 CALL wrk_dealloc( jpi*jpj, indxi, indxj) 383 CALL wrk_dealloc( jpi,jpj, zwfx_mlw ) 384 CALL wrk_dealloc( jpi,jpj,jpl, zrfrac ) 378 385 379 386 END SUBROUTINE lim_mp_cesm -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r8106 r8142 124 124 ELSEWHERE ; zalb(:,:) = SUM( alb_ice * a_i_b, dim=3 ) / at_i_b 125 125 END WHERE 126 IF( iom_use('alb_ice' ) ) CALL iom_put( "alb_ice" , zalb(:,:) ) ! ice albedo output126 IF( iom_use('alb_ice' ) ) CALL iom_put( "alb_ice" , zalb(:,:) ) ! ice albedo output 127 127 128 128 zalb(:,:) = SUM( alb_ice * a_i_b, dim=3 ) + 0.066_wp * ( 1._wp - at_i_b ) 129 IF( iom_use('albedo' ) ) CALL iom_put( "albedo" , zalb(:,:) ) ! ice albedo output129 IF( iom_use('albedo' ) ) CALL iom_put( "albedo" , zalb(:,:) ) ! surface albedo output 130 130 131 131 CALL wrk_dealloc( jpi,jpj, zalb ) … … 174 174 wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj) & 175 175 + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) + wfx_lam(ji,jj) 176 177 IF ( ln_pnd_fw ) & 178 wfx_ice(ji,jj) = wfx_ice(ji,jj) + wfx_pnd(ji,jj) 176 179 177 180 ! mass flux at the ocean/ice interface -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
r8098 r8142 566 566 zvs = v_s (ji,jj, jl) 567 567 zes = e_s (ji,jj,1,jl) 568 IF ( ln_pnd )zvp = v_ip (ji,jj ,jl)568 IF ( ( nn_pnd_scheme > 0 ) .AND. ln_pnd_fw ) zvp = v_ip (ji,jj ,jl) 569 569 !----------------------------------------------------------------- 570 570 ! Zap snow energy … … 588 588 a_ip (ji,jj,jl) = a_ip (ji,jj,jl) * rswitch 589 589 v_ip (ji,jj,jl) = v_ip (ji,jj,jl) * rswitch 590 wfx_res(ji,jj) = wfx_res(ji,jj) - ( v_ip(ji,jj,jl) - zvp ) * rhofw * r1_rdtice590 IF ( ln_pnd_fw ) wfx_res(ji,jj) = wfx_res(ji,jj) - ( v_ip(ji,jj,jl) - zvp ) * rhofw * r1_rdtice 591 591 ENDIF 592 592 ! END MV MP 2016 -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r8098 r8142 236 236 ! MV MP 2016 237 237 IF ( ln_pnd ) THEN 238 IF ( iom_use( "iceamp_cat" ) ) CALL iom_put( "iceamp_cat" , a_ip * zswi2 ) ! melt pond frac for categories 239 IF ( iom_use( "icevmp_cat" ) ) CALL iom_put( "icevmp_cat" , v_ip * zswi2 ) ! melt pond frac for categories 238 IF ( iom_use( "iceamp_cat" ) ) CALL iom_put( "iceamp_cat" , a_ip * zswi2 ) ! melt pond frac for categories 239 IF ( iom_use( "icevmp_cat" ) ) CALL iom_put( "icevmp_cat" , v_ip * zswi2 ) ! melt pond frac for categories 240 IF ( iom_use( "icehmp_cat" ) ) CALL iom_put( "icehmp_cat" , h_ip * zswi2 ) ! melt pond frac for categories 241 IF ( iom_use( "iceafp_cat" ) ) CALL iom_put( "iceafp_cat" , a_ip_frac * zswi2 ) ! melt pond frac for categories 240 242 ENDIF 241 243 ! END MV MP 2016 -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
r8125 r8142 110 110 !!--------------------------------------------------------------------- 111 111 112 WRITE(numout,*) ' albedo_ice '113 WRITE(numout,*) ' ld_pnd : ', ld_pnd114 WRITE(numout,*) ' nn_ice_alb : ', nn_ice_alb115 116 112 ijpl = SIZE( pt_ice, 3 ) ! number of ice categories 117 113 … … 326 322 327 323 ! Depth-dependent ponded ice albedo 328 zhref_pnd = 0.05 ! Characteristic length scale for thickness dependence of ponded ice albedo, Lecomte et al (2015) 329 zalb_pnd = ralb_dp - ( ralb_dp - zalb_ice ) * EXP( - ph_pnd / zhref_pnd ) 324 IF ( ld_pnd ) THEN 325 zhref_pnd = 0.05 ! Characteristic length scale for thickness dependence of ponded ice albedo, Lecomte et al (2015) 326 zalb_pnd = ralb_dp - ( ralb_dp - zalb_ice ) * EXP( - ph_pnd / zhref_pnd ) 327 ELSE 328 zalb_pnd = ralb_dp 329 ENDIF 330 330 331 331 ! Surface albedo is weighted mean of snow, ponds and bare ice contributions
Note: See TracChangeset
for help on using the changeset viewer.