Changeset 8125
- Timestamp:
- 2017-06-02T08:53:53+02:00 (7 years ago)
- Location:
- branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8099 r8125 283 283 LOGICAL , PUBLIC :: ln_pnd !: activate ponds or not 284 284 LOGICAL , PUBLIC :: ln_pnd_rad !: ponds radiatively active or not 285 LOGICAL , PUBLIC :: ln_pnd_fw !: ponds active wrt meltwater or not 285 286 INTEGER , PUBLIC :: nn_pnd_scheme !: type of melt pond scheme: =0 prescribed, =1 empirical, =2 topographic 286 INTEGER , PUBLIC :: nn_pnd_cpl !: type of melt pond coupling: =0 passive, =1 full, =2 radiation only, =3 freshwater only287 287 REAL(wp), PUBLIC :: rn_apnd !: prescribed pond fraction (0<rn_apnd<1), only if nn_pnd_scheme = 0 288 288 REAL(wp), PUBLIC :: rn_hpnd !: prescribed pond depth (0<rn_hpnd<1), only if nn_pnd_scheme = 0 -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r8085 r8125 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 ) )) THEN667 IF ( ( nn_pnd_scheme > 0 ) .AND. ln_pnd_fw ) 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
r8106 r8125 83 83 !!------------------------------------------------------------------- 84 84 INTEGER :: ios ! Local integer output status for namelist read 85 NAMELIST/namicemp/ ln_pnd, nn_pnd_scheme, nn_pnd_cpl, rn_apnd, rn_hpnd85 NAMELIST/namicemp/ ln_pnd, ln_pnd_rad, ln_pnd_fw, nn_pnd_scheme, rn_apnd, rn_hpnd 86 86 !!------------------------------------------------------------------- 87 87 … … 95 95 IF(lwm) WRITE ( numoni, namicemp ) 96 96 97 ! Shortcut for radiatively active melt ponds98 ln_pnd_rad = ln_pnd .AND. ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 2 ) )99 100 97 IF(lwp) THEN ! control print 101 98 WRITE(numout,*) 102 99 WRITE(numout,*) 'lim_mp_init : ice parameters for melt ponds' 103 100 WRITE(numout,*) '~~~~~~~~~~~~' 104 WRITE(numout,*) ' Activate melt pondsln_pnd = ', ln_pnd105 WRITE(numout,*) ' Type of melt pond scheme =0 presc, =1 empirical = 2 topo nn_pnd_scheme = ', nn_pnd_scheme106 WRITE(numout,*) ' Type of melt pond coupling =0 pass., =1 full, =2 rad, 3=fw nn_pnd_cpl = ', nn_pnd_cpl107 WRITE(numout,*) ' Prescribed pond fraction rn_apnd = ', rn_apnd108 WRITE(numout,*) ' Prescribed pond depth rn_hpnd = ', rn_hpnd109 WRITE(numout,*) ' Melt ponds radiatively active ln_pnd_rad = ', ln_pnd_rad101 WRITE(numout,*) ' Active melt ponds ln_pnd = ', ln_pnd 102 WRITE(numout,*) ' Active melt ponds radiative coupling ln_pnd_rad = ', ln_pnd_rad 103 WRITE(numout,*) ' Active melt ponds freshwater coupling ln_pnd_fw = ', ln_pnd_fw 104 WRITE(numout,*) ' Type of melt pond scheme =0 presc, =1 empirical = 2 topo nn_pnd_scheme = ', nn_pnd_scheme 105 WRITE(numout,*) ' Prescribed pond fraction rn_apnd = ', rn_apnd 106 WRITE(numout,*) ' Prescribed pond depth rn_hpnd = ', rn_hpnd 110 107 ENDIF 111 108 … … 113 110 WRITE(numout,*) 114 111 WRITE(numout,*) ' Melt ponds are not activated ' 115 WRITE(numout,*) ' nn_pnd_scheme, nn_pnd_cpl, rn_apnd and rn_hpnd are set to zero ' 112 WRITE(numout,*) ' ln_pnd_rad and ln_pnd_fw set to .FALSE. ' 113 WRITE(numout,*) ' nn_pnd_scheme, rn_apnd, rn_hpnd set to zero ' 114 ln_pnd_rad = .FALSE. 115 ln_pnd_fw = .FALSE. 116 116 nn_pnd_scheme = 0 117 nn_pnd_cpl = 0118 117 rn_apnd = 0._wp 119 118 rn_hpnd = 0._wp 119 120 IF(lwp) THEN ! control print 121 WRITE(numout,*) ' Active melt ponds radiative coupling ln_pnd_rad = ', ln_pnd_rad 122 WRITE(numout,*) ' Active melt ponds freshwater coupling ln_pnd_fw = ', ln_pnd_fw 123 WRITE(numout,*) ' Type of melt pond scheme =0 presc, =1 empirical = 2 topo nn_pnd_scheme = ', nn_pnd_scheme 124 WRITE(numout,*) ' Prescribed pond fraction rn_apnd = ', rn_apnd 125 WRITE(numout,*) ' Prescribed pond depth rn_hpnd = ', rn_hpnd 126 ENDIF 127 ENDIF 128 129 IF ( ln_pnd .AND. ( nn_pnd_scheme == 2 ) .AND. ( jpl == 1 ) ) THEN 130 WRITE(numout,*) ' Topographic melt ponds are incompatible with jpl = 1 ' 131 WRITE(numout,*) ' Run aborted ' 132 CALL ctl_stop( 'STOP', 'lim_mp_init: uncompatible options, reset namelist_ice_ref ' ) 120 133 ENDIF 121 134 … … 314 327 h_ip(ji,jj,jl) = 0._wp 315 328 316 IF ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 )) & !--- Give freshwater to the ocean329 IF ( ln_pnd_fw ) & !--- Give freshwater to the ocean 317 330 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + v_ip(ji,jj,jl) 318 331 … … 332 345 !--- Dump meltwater due to refreezing ( of course this is wrong 333 346 !--- but this parameterization is too simple ) 334 IF ( ( nn_pnd_cpl == 1 ) .OR. ( nn_pnd_cpl == 3 ) ) THEN 335 347 IF ( ln_pnd_fw ) & 336 348 wfx_pnd(ji,jj) = wfx_pnd(ji,jj) + rhofw * ( v_ip(ji,jj,jl) - zvpold ) * r1_rdtice 337 338 ENDIF339 349 340 350 a_ip_frac(ji,jj,jl) = MIN( 1._wp , SQRT( v_ip(ji,jj,jl) * z1_zpnd_aspect / a_i(ji,jj,jl) ) ) … … 359 369 !--- Remove retained meltwater from surface fluxes 360 370 361 IF ( ( nn_pnd_cpl .EQ. 1 ) .OR. ( nn_pnd_cpl .EQ. 3 )) THEN371 IF ( ln_pnd_fw ) THEN 362 372 363 373 wfx_snw(:,:) = wfx_snw(:,:) * ( 1. - zrmin - ( zrmax - zrmin ) * at_i(:,:) ) -
branches/2016/dev_r6859_LIM3_meltponds/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
r8106 r8125 106 106 REAL(wp), POINTER, DIMENSION(:,:,:) :: zafrac_snw ! relative snow fraction 107 107 REAL(wp), POINTER, DIMENSION(:,:,:) :: zafrac_ice ! relative ice fraction 108 REAL(wp), POINTER, DIMENSION(:,:,:) :: zafrac_pnd ! relative ice fraction (effective) 108 109 !! 109 110 !!--------------------------------------------------------------------- … … 117 118 CALL wrk_alloc( jpi,jpj,ijpl, zalb, zalb_it ) 118 119 CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zalb_ice, zalb_snw ) 119 CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice )120 CALL wrk_alloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice, zafrac_pnd ) 120 121 121 122 IF( albd_init == 0 ) CALL albedo_init ! initialization … … 281 282 282 283 ! MV: I propose this formulation that is more elegant, and more easy to expand towards 283 ! varying pond and snow fraction 284 284 ! varying pond and snow fraction. 285 ! Formulation 1 has issues to handle ponds and snow together that 286 ! can't easily be fixed. This one handles it better, I believe. 287 285 288 !----------------------------------------- 286 289 ! Snow, bare ice and ponded ice fractions 287 290 !----------------------------------------- 288 291 ! Specific fractions (zafrac) refer to relative area covered by snow within each ice category 289 292 293 !--- Effective pond fraction (for now, we prevent melt ponds and snow at the same time) 294 zafrac_pnd = 0._wp 295 IF ( ld_pnd ) THEN 296 WHERE( ph_snw == 0._wp ) ; zafrac_pnd = pafrac_pnd ; END WHERE ! Snow fully "shades" melt ponds 297 ENDIF 298 290 299 !--- Specific snow fraction (for now, prescribed) 291 300 WHERE ( ph_snw > 0._wp ) ; zafrac_snw = 1. … … 294 303 295 304 !--- Specific ice fraction 296 zafrac_ice = 1. - zafrac_snw - pafrac_pnd 297 ! WHERE ( ph_ice > 1.0e-6_wp ) ; zafrac_ice = 1. - zafrac_snw - pafrac_pnd 298 ! ELSE WHERE ; zafrac_ice = 0. 299 ! ENDWHERE 305 zafrac_ice = 1. - zafrac_snw - zafrac_pnd 300 306 301 307 !-------------------------------------------------- … … 324 330 325 331 ! Surface albedo is weighted mean of snow, ponds and bare ice contributions 326 pa_ice_os = zafrac_snw * zalb_snw + pafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice332 pa_ice_os = zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice 327 333 328 334 pa_ice_cs = pa_ice_os - ( - 0.1010 * pa_ice_os * pa_ice_os + 0.1933 * pa_ice_os - 0.0148 ) … … 332 338 CALL wrk_dealloc( jpi,jpj,ijpl, zalb, zalb_it ) 333 339 CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zalb_ice, zalb_snw ) 334 CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice )340 CALL wrk_dealloc( jpi,jpj,ijpl, zalb_pnd, zafrac_snw, zafrac_ice, zafrac_pnd ) 335 341 ! 336 342 END SUBROUTINE albedo_ice
Note: See TracChangeset
for help on using the changeset viewer.