Changeset 15734
- Timestamp:
- 2022-03-03T13:00:16+01:00 (2 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP/cfgs/SHARED/field_def_nemo-ice.xml
r15570 r15734 91 91 <field id="yield22" long_name="yield surface tensor component 22" standard_name="yield22" unit="N/m" /> 92 92 <field id="yield12" long_name="yield surface tensor component 12" standard_name="yield12" unit="N/m" /> 93 <field id="beta_evp" long_name="Relaxation parameter of ice rheology (beta)" standard_name="relaxation_parameter_of_ice_rheology" unit="" /> 94 93 <field id="beta_evp" long_name="Relaxation parameter of ice rheology (beta)" standard_name="relaxation_parameter_of_ice_rheology" unit="" /> 94 <field id="opning" long_name="Lead area opening rate" standard_name="opning" unit="1/s" /> 95 <field id="dairdg1dt" long_name="Ridging ice area loss rate" standard_name="dairdg1dt" unit="1/s" /> 96 <field id="dairft1dt" long_name="Rafting ice area loss rate" 97 standard_name="dairft1dt" unit="1/s" /> 98 <field id="dairdg2dt" long_name="New ridged ice area gain rate" standard_name="dairdg2dt" unit="1/s" /> 99 <field id="dairft2dt" long_name="New rafted ice area gain rate" standard_name="dairft2dt" unit="1/s" /> 100 95 101 <!-- surface heat fluxes --> 96 102 <field id="qt_ice" long_name="total heat flux at ice surface" standard_name="surface_downward_heat_flux_in_air" unit="W/m2" /> … … 409 415 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 410 416 <field field_ref="icedlt" name="sidelta" /> 417 <field field_ref="opning" name="opning" /> 418 <field field_ref="dairdg1dt" name="dairdg1dt" /> 419 <field field_ref="dairft1dt" name="dairft1dt" /> 420 <field field_ref="dairdg2dt" name="dairdg2dt" /> 421 <field field_ref="dairft2dt" name="dairft2dt" /> 422 411 423 412 424 <!-- heat fluxes --> -
NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP/src/ICE/icedyn_rdgrft.F90
r15647 r15734 56 56 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ze_i_2d 57 57 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ze_s_2d 58 ! 59 ! For ridging diagnostics 60 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: airdg1 ! Ridging ice area loss 61 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: airft1 ! Rafting ice area loss 62 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: airdg2 ! New ridged ice area gain 63 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: airft2 ! New rafted ice area gain 58 64 ! 59 65 REAL(wp), PARAMETER :: hrdg_hi_min = 1.1_wp ! min ridge thickness multiplier: min(hrdg/hi) … … 100 106 & zaksum(jpij) , hraft(jpij,jpl) , hrexp(jpij,jpl) , & 101 107 & hi_hrdg(jpij,jpl) , araft(jpij,jpl) , aridge(jpij,jpl) , zasum(jpij), & 102 & ze_i_2d(jpij,nlay_i,jpl), ze_s_2d(jpij,nlay_s,jpl), STAT=ice_dyn_rdgrft_alloc ) 108 & ze_i_2d(jpij,nlay_i,jpl), ze_s_2d(jpij,nlay_s,jpl), & 109 & airdg1(jpij), airft1(jpij), airdg2(jpij), airft2(jpij), STAT=ice_dyn_rdgrft_alloc ) 103 110 104 111 CALL mpp_sum ( 'icedyn_rdgrft', ice_dyn_rdgrft_alloc ) … … 150 157 REAL(wp), DIMENSION(jpij) :: zdivu, zdelt ! 1D divu_i & delta_i 151 158 REAL(wp), DIMENSION(jpij) :: zconv ! 1D rdg_conv (if EAP rheology) 159 160 REAL(wp), DIMENSION(jpi,jpj) :: opning_2d ! Lead opening diagnostic 161 REAL(wp), DIMENSION(jpi,jpj) :: airdg1_2d ! Ridging ice area loss diagnostic 162 REAL(wp), DIMENSION(jpi,jpj) :: airft1_2d ! Rafting ice area loss diagnostic 163 REAL(wp), DIMENSION(jpi,jpj) :: airdg2_2d ! New ridged ice area gain diagnostic 164 REAL(wp), DIMENSION(jpi,jpj) :: airft2_2d ! New rafted ice area gain diagnostic 165 REAL(wp), DIMENSION(jpi,jpj) :: dairdg1dt ! Ridging ice area loss rate diagnostic 166 REAL(wp), DIMENSION(jpi,jpj) :: dairft1dt ! Rafting ice area loss rate diagnostic 167 REAL(wp), DIMENSION(jpi,jpj) :: dairdg2dt ! New ridged ice area gain rate diagnostic 168 REAL(wp), DIMENSION(jpi,jpj) :: dairft2dt ! New rafted ice area gain rate diagnostic 169 REAL(wp), DIMENSION(jpi,jpj) :: zmsk00 ! Mask for ice presence 152 170 ! 153 171 INTEGER, PARAMETER :: jp_itermax = 20 … … 162 180 IF(lwp) WRITE(numout,*)'ice_dyn_rdgrft: ice ridging and rafting' 163 181 IF(lwp) WRITE(numout,*)'~~~~~~~~~~~~~~' 164 ENDIF 182 ENDIF 183 184 ! Initialise ridging diagnostics 185 opning_2d(:,:) = 0.0_wp 186 dairdg1dt(:,:) = 0.0_wp 187 dairft1dt(:,:) = 0.0_wp 188 dairdg2dt(:,:) = 0.0_wp 189 dairft2dt(:,:) = 0.0_wp 190 airdg1_2d(:,:) = 0.0_wp 191 airft1_2d(:,:) = 0.0_wp 192 airdg2_2d(:,:) = 0.0_wp 193 airft2_2d(:,:) = 0.0_wp 165 194 166 195 !-------------------------------- … … 173 202 DO jj = 1, jpj 174 203 DO ji = 1, jpi 204 zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice. epsi06 used here rather than epsi10 as below for consistency with ice masking elsewhere 175 205 IF ( at_i(ji,jj) > epsi10 ) THEN 176 206 npti = npti + 1 … … 278 308 CALL ice_dyn_1d2d( 2 ) ! --- Move to 2D arrays --- ! 279 309 310 ! --- Ridging diagnostics --- ! 311 312 IF( iom_use('opning') ) THEN 313 CALL tab_1d_2d( npti, nptidx(1:npti), opning(1:npti), opning_2d(:,:) ) 314 END IF 315 316 IF( iom_use('dairdg1dt') .OR. iom_use('dairft1dt') .OR. iom_use('dairdg2dt') .OR. iom_use('dairft2dt') ) THEN 317 ! 318 CALL tab_1d_2d( npti, nptidx(1:npti), airdg1(1:npti), airdg1_2d(:,:) ) 319 CALL tab_1d_2d( npti, nptidx(1:npti), airft1(1:npti), airft1_2d(:,:) ) 320 CALL tab_1d_2d( npti, nptidx(1:npti), airdg2(1:npti), airdg2_2d(:,:) ) 321 CALL tab_1d_2d( npti, nptidx(1:npti), airft2(1:npti), airft2_2d(:,:) ) 322 ! 323 DO jj = 1, jpj 324 DO ji = 1, jpi 325 ! 326 dairdg1dt(ji,jj) = airdg1_2d(ji,jj) * r1_rdtice 327 dairft1dt(ji,jj) = airft1_2d(ji,jj) * r1_rdtice 328 dairdg2dt(ji,jj) = airdg2_2d(ji,jj) * r1_rdtice 329 dairft2dt(ji,jj) = airft2_2d(ji,jj) * r1_rdtice 330 ! 331 END DO 332 END DO 333 ! 334 ENDIF 335 ! 336 ENDIF ! npti>0 337 338 339 IF( iom_use('opning') ) THEN 340 CALL lbc_lnk( 'icedyn_rdgrft', opning_2d(:,:), 'T', 1. ) 341 CALL iom_put( 'opning', opning_2d(:,:) * zmsk00(:,:) ) ! Lead area opening rate 280 342 ENDIF 281 343 344 IF( iom_use('dairdg1dt') ) THEN 345 CALL lbc_lnk( 'icedyn_rdgrft', dairdg1dt(:,:), 'T', 1. ) 346 CALL iom_put( 'dairdg1dt', dairdg1dt(:,:) * zmsk00(:,:) ) ! Ridging ice area loss rate 347 ENDIF 348 349 IF( iom_use('dairft1dt') ) THEN 350 CALL lbc_lnk( 'icedyn_rdgrft', dairft1dt(:,:), 'T', 1. ) 351 CALL iom_put( 'dairft1dt', dairft1dt(:,:) * zmsk00(:,:) ) ! Rafting ice area loss rate 352 ENDIF 353 354 IF( iom_use('dairdg2dt') ) THEN 355 CALL lbc_lnk( 'icedyn_rdgrft', dairdg2dt(:,:), 'T', 1. ) 356 CALL iom_put( 'dairdg2dt', dairdg2dt(:,:) * zmsk00(:,:) ) ! New ridged ice area gain rate 357 ENDIF 358 359 IF( iom_use('dairft2dt') ) THEN 360 CALL lbc_lnk( 'icedyn_rdgrft', dairft2dt(:,:), 'T', 1. ) 361 CALL iom_put( 'dairft2dt', dairft2dt(:,:) * zmsk00(:,:) ) ! New rafted ice area gain rate 362 ENDIF 363 364 ! ------- ! 365 282 366 CALL ice_var_agg( 1 ) 283 367 … … 533 617 REAL(wp) :: vsw ! vol of water trapped into ridges 534 618 REAL(wp) :: afrdg, afrft ! fraction of category area ridged/rafted 535 REAL(wp) :: airdg1,oirdg1, aprdg1, virdg1, sirdg1536 REAL(wp) :: airft1,oirft1, aprft1537 REAL(wp), DIMENSION(jpij) :: airdg2,oirdg2, aprdg2, virdg2, sirdg2, vsrdg, vprdg, vlrdg ! area etc of new ridges538 REAL(wp), DIMENSION(jpij) :: airft2,oirft2, aprft2, virft , sirft , vsrft, vprft, vlrft ! area etc of rafted ice619 REAL(wp) :: oirdg1, aprdg1, virdg1, sirdg1 620 REAL(wp) :: oirft1, aprft1 621 REAL(wp), DIMENSION(jpij) :: oirdg2, aprdg2, virdg2, sirdg2, vsrdg, vprdg, vlrdg ! area etc of new ridges 622 REAL(wp), DIMENSION(jpij) :: oirft2, aprft2, virft , sirft , vsrft, vprft, vlrft ! area etc of rafted ice 539 623 ! 540 624 REAL(wp), DIMENSION(jpij) :: ersw ! enth of water trapped into ridges … … 576 660 577 661 ! area of ridging / rafting ice (airdg1) and of new ridge (airdg2) 578 airdg1 = aridge(ji,jl1) * closing_gross(ji) * rdt_ice579 airft1 = araft (ji,jl1) * closing_gross(ji) * rdt_ice580 581 airdg2(ji) = airdg1 * hi_hrdg(ji,jl1)582 airft2(ji) = airft1 * hi_hrft662 airdg1(ji) = aridge(ji,jl1) * closing_gross(ji) * rdt_ice 663 airft1(ji) = araft (ji,jl1) * closing_gross(ji) * rdt_ice 664 665 airdg2(ji) = airdg1(ji) * hi_hrdg(ji,jl1) 666 airft2(ji) = airft1(ji) * hi_hrft 583 667 584 668 ! ridging /rafting fractions 585 afrdg = airdg1 * z1_ai(ji)586 afrft = airft1 * z1_ai(ji)669 afrdg = airdg1(ji) * z1_ai(ji) 670 afrft = airft1(ji) * z1_ai(ji) 587 671 588 672 ! volume and enthalpy (J/m2, >0) of seawater trapped into ridges … … 640 724 ! Remove area, volume of new ridge to each category jl1 641 725 !------------------------------------------------------ 642 a_i_2d (ji,jl1) = a_i_2d (ji,jl1) - airdg1 - airft1726 a_i_2d (ji,jl1) = a_i_2d (ji,jl1) - airdg1(ji)- airft1(ji) 643 727 v_i_2d (ji,jl1) = v_i_2d (ji,jl1) - virdg1 - virft(ji) 644 728 v_s_2d (ji,jl1) = v_s_2d (ji,jl1) - vsrdg(ji) - vsrft(ji) -
NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP/src/ICE/icedyn_rhg_evp.F90
r15577 r15734 137 137 ! 138 138 REAL(wp), DIMENSION(jpi,jpj) :: zdelta, zp_delt ! delta and P/delta at T points 139 REAL(wp), DIMENSION(jpi,jpj) :: zten_i ! tension139 REAL(wp), DIMENSION(jpi,jpj) :: zten_i, zshear ! tension, shear 140 140 REAL(wp), DIMENSION(jpi,jpj) :: zbeta ! beta coef from Kimmritz 2017 141 141 ! … … 773 773 & ) * 0.25_wp * r1_e1e2t(ji,jj) 774 774 775 ! shear at T points775 ! maximum shear rate at T points (includes tension, output only) 776 776 pshear_i(ji,jj) = SQRT( zdt2 + zds2 ) 777 778 ! shear at T-points 779 zshear(ji,jj) = SQRT( zds2 ) 777 780 778 781 ! divergence at T points … … 835 838 zsig1 = zfac * ( pdivu_i(ji,jj) - pdelta_i(ji,jj) ) 836 839 zsig2 = zfac * z1_ecc2 * zten_i(ji,jj) 837 zsig12 = zfac * z1_ecc2 * pshear_i(ji,jj)838 840 zsig12 = zfac * z1_ecc2 * zshear(ji,jj) * 0.5_wp 841 839 842 ! Stress invariants (sigma_I, sigma_II, Coon 1974, Feltham 2008) 840 843 zsig_I (ji,jj) = zsig1 * 0.5_wp ! 1st stress invariant, aka average normal stress, aka negative pressure 841 zsig_II(ji,jj) = SQRT ( MAX( 0._wp, zsig2 * zsig2 * 0.25_wp + zsig12 ) ) ! 2nd '' '', aka maximum shear stress844 zsig_II(ji,jj) = SQRT( zsig2 * zsig2 * 0.25_wp + zsig12 * zsig12 ) ! 2nd '' '' , aka maximum shear stress 842 845 843 846 END DO … … 866 869 ! and **deformations** at current iterates 867 870 ! following Lemieux & Dupont (2020) 868 zfac = zp_delt(ji,jj)869 zsig1 = zfac * ( pdivu_i(ji,jj) - ( zdelta(ji,jj) + rn_creepl) )871 zfac = strength(ji,jj) / ( pdelta_i(ji,jj) + rn_creepl ) 872 zsig1 = zfac * ( pdivu_i(ji,jj) - zdelta(ji,jj) ) 870 873 zsig2 = zfac * z1_ecc2 * zten_i(ji,jj) 871 zsig12 = zfac * z1_ecc2 * pshear_i(ji,jj)872 874 zsig12 = zfac * z1_ecc2 * zshear(ji,jj) * 0.5_wp 875 873 876 ! Stress invariants (sigma_I, sigma_II, Coon 1974, Feltham 2008), T-point 874 877 zsig_I(ji,jj) = zsig1 * 0.5_wp ! 1st stress invariant, aka average normal stress, aka negative pressure 875 zsig_II(ji,jj) = SQRT ( MAX( 0._wp, zsig2 * zsig2 * 0.25_wp + zsig12 ) ) ! 2nd '' '', aka maximum shear stress878 zsig_II(ji,jj) = SQRT( zsig2 * zsig2 * 0.25_wp + zsig12 * zsig12 ) ! 2nd '' '' , aka maximum shear stress 876 879 877 880 ! Normalized principal stresses (used to display the ellipse) … … 882 885 END DO 883 886 ! 884 CALL iom_put( 'sig1_pnorm' , zsig1_p )885 CALL iom_put( 'sig2_pnorm' , zsig2_p )887 CALL iom_put( 'sig1_pnorm' , zsig1_p(:,:) * zmsk00(:,:) ) 888 CALL iom_put( 'sig2_pnorm' , zsig2_p(:,:) * zmsk00(:,:) ) 886 889 887 890 DEALLOCATE( zsig1_p , zsig2_p , zsig_I, zsig_II ) -
NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP/src/ICE/icewri.F90
r15570 r15734 254 254 CALL iom_rstput( 0, 0, kid, 'sivolu', vt_i ) ! Ice volume 255 255 CALL iom_rstput( 0, 0, kid, 'sidive', divu_i*1.0e8 ) ! Ice divergence 256 CALL iom_rstput( 0, 0, kid, 'sishea', shear_i*1.0e8 ) 256 CALL iom_rstput( 0, 0, kid, 'sishea', shear_i*1.0e8 ) ! Ice shear 257 257 CALL iom_rstput( 0, 0, kid, 'si_amp', at_ip ) ! Melt pond fraction 258 258 CALL iom_rstput( 0, 0, kid, 'si_vmp', vt_ip ) ! Melt pond volume -
NEMO/branches/UKMO/NEMO_4.0.4_ice_strength_EAP/src/OCE/timing.F90
r14075 r15734 295 295 296 296 ll_averep = .TRUE. 297 zperc = 0._wp 297 298 298 299 ! total CPU and elapse
Note: See TracChangeset
for help on using the changeset viewer.