Changeset 15570
- Timestamp:
- 2021-12-03T12:01:27+01:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/cfgs/SHARED/field_def_nemo-ice.xml
r13648 r15570 81 81 <field id="sig1_pnorm" long_name="P-normalized 1st principal stress component" unit="" /> 82 82 <field id="sig2_pnorm" long_name="P-normalized 2nd principal stress component" unit="" /> 83 <field id="icedlt" long_name="delta" standard_name="delta" unit="" /> 83 84 <field id="normstr" long_name="Average normal stress in sea ice" standard_name="average_normal_stress" unit="N/m" /> 84 85 <field id="sheastr" long_name="Maximum shear stress in sea ice" standard_name="maximum_shear_stress" unit="N/m" /> … … 86 87 <field id="icediv" long_name="Divergence of the sea-ice velocity field" standard_name="divergence_of_sea_ice_velocity" unit="s-1" /> 87 88 <field id="iceshe" long_name="Maximum shear of sea-ice velocity field" standard_name="maximum_shear_of_sea_ice_velocity" unit="s-1" /> 89 <field id="aniso" long_name="anisotropy of sea ice floe orientation (0.5 - 1)" standard_name="anisotropy" unit="" /> 90 <field id="yield11" long_name="yield surface tensor component 11" standard_name="yield11" unit="N/m" /> 91 <field id="yield22" long_name="yield surface tensor component 22" standard_name="yield22" unit="N/m" /> 92 <field id="yield12" long_name="yield surface tensor component 12" standard_name="yield12" unit="N/m" /> 88 93 <field id="beta_evp" long_name="Relaxation parameter of ice rheology (beta)" standard_name="relaxation_parameter_of_ice_rheology" unit="" /> 89 94 … … 401 406 <field field_ref="normstr" name="normstr" /> 402 407 <field field_ref="sheastr" name="sheastr" /> 408 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 409 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 410 <field field_ref="icedlt" name="sidelta" /> 403 411 404 412 <!-- heat fluxes --> -
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/src/ICE/ice.F90
r14075 r15570 150 150 ! 151 151 ! !!** ice-rheology namelist (namdyn_rhg) ** 152 LOGICAL , PUBLIC :: ln_rhg_EVP ! EVP rheology switch, used for rdgrft and rheology 153 LOGICAL , PUBLIC :: ln_rhg_EAP ! EAP rheology switch, used for rdgrft and rheology 152 154 LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) 153 155 REAL(wp), PUBLIC :: rn_creepl !: creep limit : has to be under 1.0e-9 … … 246 248 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: divu_i !: Divergence of the velocity field [s-1] 247 249 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: shear_i !: Shear of the velocity field [s-1] 250 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: aniso_11, aniso_12 !: structure tensor elements 251 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rdg_conv 248 252 ! 249 253 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_bo !: Sea-Ice bottom temperature [Kelvin] … … 436 440 ALLOCATE( u_oce (jpi,jpj) , v_oce (jpi,jpj) , ht_i_new (jpi,jpj) , strength(jpi,jpj) , & 437 441 & stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) , & 438 & delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , STAT=ierr(ii) ) 442 & delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , & 443 & aniso_11 (jpi,jpj) , aniso_12 (jpi,jpj) , rdg_conv (jpi,jpj) , STAT=ierr(ii) ) 439 444 440 445 ii = ii + 1 -
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/src/ICE/icedyn_rdgrft.F90
r14075 r15570 138 138 INTEGER , DIMENSION(jpij) :: iptidx ! compute ridge/raft or not 139 139 REAL(wp), DIMENSION(jpij) :: zdivu, zdelt ! 1D divu_i & delta_i 140 REAL(wp), DIMENSION(jpij) :: zconv ! 1D rdg_conv (if EAP rheology) 140 141 ! 141 142 INTEGER, PARAMETER :: jp_itermax = 20 … … 174 175 175 176 ! just needed here 176 CALL tab_2d_1d( npti, nptidx(1:npti), zdelt (1:npti) , delta_i ) 177 CALL tab_2d_1d( npti, nptidx(1:npti), zdelt (1:npti) , delta_i ) 178 CALL tab_2d_1d( npti, nptidx(1:npti), zconv (1:npti) , rdg_conv ) 177 179 ! needed here and in the iteration loop 178 180 CALL tab_2d_1d( npti, nptidx(1:npti), zdivu (1:npti) , divu_i) ! zdivu is used as a work array here (no change in divu_i) … … 184 186 ! closing_net = rate at which open water area is removed + ice area removed by ridging 185 187 ! - ice area added in new ridges 186 closing_net(ji) = rn_csrdg * 0.5_wp * ( zdelt(ji) - ABS( zdivu(ji) ) ) - MIN( zdivu(ji), 0._wp ) 188 IF( ln_rhg_EVP ) closing_net(ji) = rn_csrdg * 0.5_wp * ( zdelt(ji) - ABS( zdivu(ji) ) ) - MIN( zdivu(ji), 0._wp ) 189 IF( ln_rhg_EAP ) closing_net(ji) = zconv(ji) 187 190 ! 188 191 IF( zdivu(ji) < 0._wp ) closing_net(ji) = MAX( closing_net(ji), -zdivu(ji) ) ! make sure the closing rate is large enough -
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/src/ICE/icedyn_rhg.F90
r14075 r15570 17 17 USE ice ! sea-ice: variables 18 18 USE icedyn_rhg_evp ! sea-ice: EVP rheology 19 USE icedyn_rhg_eap ! sea-ice: EAP rheology 19 20 USE icectl ! sea-ice: control prints 20 21 ! … … 33 34 ! ! associated indices: 34 35 INTEGER, PARAMETER :: np_rhgEVP = 1 ! EVP rheology 35 !!INTEGER, PARAMETER :: np_rhgEAP = 2 ! EAP rheology36 INTEGER, PARAMETER :: np_rhgEAP = 2 ! EAP rheology 36 37 37 38 ! ** namelist (namrhg) ** 38 LOGICAL :: ln_rhg_EVP ! EVP rheology39 39 ! 40 40 !! * Substitutions … … 81 81 CALL ice_dyn_rhg_evp( kt, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i ) 82 82 ! 83 ! !----------------------------! 84 CASE( np_rhgEAP ) ! Elasto-Anisotropic-Plastic ! 85 ! !----------------------------! 86 CALL ice_dyn_rhg_eap( kt, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i, aniso_11, aniso_12, rdg_conv ) 83 87 END SELECT 84 88 ! 85 IF( lrst_ice ) THEN !* write EVP fields in the restart file 86 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'WRITE', kt ) 89 IF( lrst_ice ) THEN 90 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'WRITE', kt ) !* write EVP fields in the restart file 91 IF( ln_rhg_EAP ) CALL rhg_eap_rst( 'WRITE', kt ) !* write EAP fields in the restart file 87 92 ENDIF 88 93 ! … … 110 115 INTEGER :: ios, ioptio ! Local integer output status for namelist read 111 116 !! 112 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg117 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, ln_rhg_EAP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg 113 118 !!------------------------------------------------------------------- 114 119 ! … … 137 142 ELSEIF( nn_rhg_chkcvg == 2 ) THEN ; WRITE(numout,*) ' check cvg at both main and rheology time steps' 138 143 ENDIF 144 WRITE(numout,*) ' rheology EAP (icedyn_rhg_eap) ln_rhg_EAP = ', ln_rhg_EAP 139 145 ENDIF 140 146 ! … … 142 148 ioptio = 0 143 149 IF( ln_rhg_EVP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEVP ; ENDIF 144 !!IF( ln_rhg_EAP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEAP ; ENDIF150 IF( ln_rhg_EAP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEAP ; ENDIF 145 151 IF( ioptio /= 1 ) CALL ctl_stop( 'ice_dyn_rhg_init: choose one and only one ice rheology' ) 146 152 ! 147 153 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'READ' ) !* read or initialize all required files 154 IF( ln_rhg_EAP ) CALL rhg_eap_rst( 'READ' ) !* read or initialize all required files 148 155 ! 149 156 END SUBROUTINE ice_dyn_rhg_init -
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/src/ICE/icedyn_rhg_evp.F90
r14075 r15570 736 736 737 737 ! convergence test 738 IF( nn_rhg_chkcvg == 2 ) CALL rhg_cvg ( kt, jter, nn_nevp, u_ice, v_ice, zu_ice, zv_ice )738 IF( nn_rhg_chkcvg == 2 ) CALL rhg_cvg_evp( kt, jter, nn_nevp, u_ice, v_ice, zu_ice, zv_ice ) 739 739 ! 740 740 ! ! ==================== ! … … 962 962 963 963 964 SUBROUTINE rhg_cvg ( kt, kiter, kitermax, pu, pv, pub, pvb )964 SUBROUTINE rhg_cvg_evp( kt, kiter, kitermax, pu, pv, pub, pvb ) 965 965 !!---------------------------------------------------------------------- 966 !! *** ROUTINE rhg_cvg ***966 !! *** ROUTINE rhg_cvg_evp *** 967 967 !! 968 968 !! ** Purpose : check convergence of oce rheology … … 990 990 IF( lwp ) THEN 991 991 WRITE(numout,*) 992 WRITE(numout,*) 'rhg_cvg : ice rheology convergence control'992 WRITE(numout,*) 'rhg_cvg_evp : ice rheology convergence control' 993 993 WRITE(numout,*) '~~~~~~~' 994 994 ENDIF … … 1029 1029 ENDIF 1030 1030 1031 END SUBROUTINE rhg_cvg 1031 END SUBROUTINE rhg_cvg_evp 1032 1032 1033 1033 -
NEMO/branches/UKMO/NEMO_4.0.4_EAP_rheology_fix/src/ICE/icewri.F90
r14075 r15570 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 ) ! Ice shear 256 257 CALL iom_rstput( 0, 0, kid, 'si_amp', at_ip ) ! Melt pond fraction 257 258 CALL iom_rstput( 0, 0, kid, 'si_vmp', vt_ip ) ! Melt pond volume
Note: See TracChangeset
for help on using the changeset viewer.