Changeset 14003 for NEMO/branches/2020
- Timestamp:
- 2020-12-02T15:12:08+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/SI3_vp_rheology
- Files:
-
- 8 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/SI3_vp_rheology/cfgs/SHARED/field_def_nemo-ice.xml
r13610 r14003 77 77 <field id="sig1_pnorm" long_name="P-normalized 1st principal stress component" unit="" /> 78 78 <field id="sig2_pnorm" long_name="P-normalized 2nd principal stress component" unit="" /> 79 <field id="icedlt" long_name="delta" standard_name="delta" unit="" /> 79 80 <field id="normstr" long_name="Average normal stress in sea ice" standard_name="average_normal_stress" unit="N/m" /> 80 81 <field id="sheastr" long_name="Maximum shear stress in sea ice" standard_name="maximum_shear_stress" unit="N/m" /> … … 82 83 <field id="icediv" long_name="Divergence of the sea-ice velocity field" standard_name="divergence_of_sea_ice_velocity" unit="s-1" /> 83 84 <field id="iceshe" long_name="Maximum shear of sea-ice velocity field" standard_name="maximum_shear_of_sea_ice_velocity" unit="s-1" /> 85 <field id="aniso" long_name="anisotropy of sea ice floe orientation (0.5 - 1)" standard_name="anisotropy" unit="" /> 86 <field id="yield11" long_name="yield surface tensor component 11" standard_name="yield11" unit="N/m" /> 87 <field id="yield22" long_name="yield surface tensor component 22" standard_name="yield22" unit="N/m" /> 88 <field id="yield12" long_name="yield surface tensor component 12" standard_name="yield12" unit="N/m" /> 84 89 <field id="beta_evp" long_name="Relaxation parameter of ice rheology (beta)" standard_name="relaxation_parameter_of_ice_rheology" unit="" /> 85 90 … … 405 410 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 406 411 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 412 <field field_ref="icedlt" name="sidelta" /> 407 413 408 414 <!-- heat fluxes --> -
NEMO/branches/2020/SI3_vp_rheology/cfgs/SHARED/namelist_ice_ref
r13969 r14003 92 92 !------------------------------------------------------------------------------ 93 93 ln_rhg_EVP = .true. ! EVP rheology 94 ln_rhg_EAP = .false. ! EAP rheology 94 95 ln_aEVP = .true. ! adaptive rheology (Kimmritz et al. 2016 & 2017) 95 96 rn_creepl = 2.0e-9 ! creep limit [1/s] -
NEMO/branches/2020/SI3_vp_rheology/doc/namelists/namdyn_rhg
r13472 r14003 3 3 !------------------------------------------------------------------------------ 4 4 ln_rhg_EVP = .true. ! EVP rheology 5 ln_rhg_EAP = .false. ! EAP rheology 5 6 ln_aEVP = .false. ! adaptive rheology (Kimmritz et al. 2016 & 2017) 6 7 rn_creepl = 2.0e-9 ! creep limit [1/s] -
NEMO/branches/2020/SI3_vp_rheology/src/ICE/ice.F90
r13969 r14003 151 151 ! !!** ice-rheology namelist (namdyn_rhg) ** 152 152 ! -- evp 153 LOGICAL , PUBLIC :: ln_rhg_EVP ! EVP rheology switch, used for rdgrft and rheology 154 LOGICAL , PUBLIC :: ln_rhg_EAP ! EAP rheology switch, used for rdgrft and rheology 153 155 LOGICAL , PUBLIC :: ln_aEVP !: using adaptive EVP (T or F) 154 156 REAL(wp), PUBLIC :: rn_creepl !: creep limit (has to be low enough, circa 10-9 m/s, depending on rheology) … … 158 160 INTEGER , PUBLIC :: nn_rhg_chkcvg !: check ice rheology convergence 159 161 ! -- vp 162 LOGICAL , PUBLIC :: ln_rhg_VP !: VP rheology 160 163 INTEGER , PUBLIC :: nn_vp_nout !: Number of outer iterations 161 164 INTEGER , PUBLIC :: nn_vp_ninn !: Number of inner iterations (linear system solver) … … 251 254 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: divu_i !: Divergence of the velocity field [s-1] 252 255 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: shear_i !: Shear of the velocity field [s-1] 256 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: aniso_11, aniso_12 !: structure tensor elements 257 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rdg_conv 253 258 ! 254 259 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: t_bo !: Sea-Ice bottom temperature [Kelvin] … … 441 446 ALLOCATE( u_oce (jpi,jpj) , v_oce (jpi,jpj) , ht_i_new (jpi,jpj) , strength(jpi,jpj) , & 442 447 & stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) , & 443 & delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , STAT=ierr(ii) ) 448 & delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , & 449 & aniso_11 (jpi,jpj) , aniso_12 (jpi,jpj) , rdg_conv (jpi,jpj) , STAT=ierr(ii) ) 444 450 445 451 ii = ii + 1 -
NEMO/branches/2020/SI3_vp_rheology/src/ICE/icedyn_rdgrft.F90
r13618 r14003 140 140 INTEGER , DIMENSION(jpij) :: iptidx ! compute ridge/raft or not 141 141 REAL(wp), DIMENSION(jpij) :: zdivu, zdelt ! 1D divu_i & delta_i 142 REAL(wp), DIMENSION(jpij) :: zconv ! 1D rdg_conv (if EAP rheology) 142 143 ! 143 144 INTEGER, PARAMETER :: jp_itermax = 20 … … 175 176 ! just needed here 176 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 … … 776 779 ! !--------------------------------------------------! 777 780 strength(:,:) = rn_pstar * SUM( v_i(:,:,:), dim=3 ) * EXP( -rn_crhg * ( 1._wp - SUM( a_i(:,:,:), dim=3 ) ) ) 778 ismooth = 1 781 ismooth = 1 ! original code 782 ! ismooth = 0 ! try for EAP stability 779 783 ! !--------------------------------------------------! 780 784 ELSE ! Zero strength ! -
NEMO/branches/2020/SI3_vp_rheology/src/ICE/icedyn_rhg.F90
r13969 r14003 17 17 USE ice ! sea-ice: variables 18 18 USE icedyn_rhg_evp ! sea-ice: EVP rheology 19 USE icedyn_rhg_vp ! sea-ice: VP rheology 19 USE icedyn_rhg_eap ! sea-ice: EAP rheology 20 USE icedyn_rhg_vp ! sea-ice: VP rheology 20 21 USE icectl ! sea-ice: control prints 21 22 ! … … 34 35 ! ! associated indices: 35 36 INTEGER, PARAMETER :: np_rhgEVP = 1 ! EVP rheology 36 !!INTEGER, PARAMETER :: np_rhgEAP = 2 ! EAP rheology37 INTEGER, PARAMETER :: np_rhgEAP = 2 ! EAP rheology 37 38 INTEGER, PARAMETER :: np_rhgVP = 3 ! VP rheology 38 39 39 ! ** namelist (namrhg) **40 LOGICAL :: ln_rhg_EVP ! EVP rheology41 LOGICAL :: ln_rhg_VP ! EVP rheology42 40 ! 43 41 !!---------------------------------------------------------------------- … … 86 84 CALL ice_dyn_rhg_vp ( kt, shear_i, divu_i, delta_i ) 87 85 ! 86 ! !----------------------------! 87 CASE( np_rhgEAP ) ! Elasto-Anisotropic-Plastic ! 88 ! !----------------------------! 89 CALL ice_dyn_rhg_eap( kt, Kmm, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i, aniso_11, aniso_12, rdg_conv ) 88 90 END SELECT 89 91 ! 90 IF( lrst_ice ) THEN !* write EVP fields in the restart file 91 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'WRITE', kt ) 92 IF( lrst_ice ) THEN 93 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'WRITE', kt ) !* write EVP fields in the restart file 94 IF( ln_rhg_EAP ) CALL rhg_eap_rst( 'WRITE', kt ) !* write EAP fields in the restart file 92 95 ! MV note: no restart needed for VP as there is no time equation for stress tensor 93 96 ENDIF … … 117 120 INTEGER :: ios, ioptio ! Local integer output status for namelist read 118 121 !! 119 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg, &!-- evp120 & ln_rhg_VP, nn_vp_nout, nn_vp_ninn, nn_vp_chkcvg!-- vp122 NAMELIST/namdyn_rhg/ ln_rhg_EVP, ln_aEVP, ln_rhg_EAP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg, & !-- evp 123 & ln_rhg_VP, nn_vp_nout, nn_vp_ninn, nn_vp_chkcvg !-- vp 121 124 !!------------------------------------------------------------------- 122 125 ! … … 149 152 ENDIF 150 153 ENDIF 154 WRITE(numout,*) ' rheology EAP (icedyn_rhg_eap) ln_rhg_EAP = ', ln_rhg_EAP 151 155 ENDIF 152 156 ! … … 154 158 ioptio = 0 155 159 IF( ln_rhg_EVP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEVP ; ENDIF 156 !!IF( ln_rhg_EAP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEAP ; ENDIF160 IF( ln_rhg_EAP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgEAP ; ENDIF 157 161 IF( ln_rhg_VP ) THEN ; ioptio = ioptio + 1 ; nice_rhg = np_rhgVP ; ENDIF 158 162 IF( ioptio /= 1 ) CALL ctl_stop( 'ice_dyn_rhg_init: choose one and only one ice rheology' ) 159 163 ! 160 164 IF( ln_rhg_EVP ) CALL rhg_evp_rst( 'READ' ) !* read or initialize all required files 165 IF( ln_rhg_EAP ) CALL rhg_eap_rst( 'READ' ) !* read or initialize all required files 161 166 ! no restart for VP as there is no explicit time dependency in the equation 162 167 ! -
NEMO/branches/2020/SI3_vp_rheology/tests/ICE_ADV2D/MY_SRC/usrdef_sbc.F90
r13472 r14003 18 18 USE sbc_ice ! Surface boundary condition: ice fields 19 19 USE phycst ! physical constants 20 USE ice, ONLY : at_i_b, a_i_b20 USE ice, ONLY : jpl, at_i_b, a_i_b 21 21 USE icethd_dh ! for CALL ice_thd_snwblow 22 22 ! -
NEMO/branches/2020/SI3_vp_rheology/tests/demo_cfgs.txt
r13207 r14003 12 12 STATION_ASF OCE 13 13 CPL_OASIS OCE TOP ICE NST 14 ICE_RHEO OCE SAS ICE
Note: See TracChangeset
for help on using the changeset viewer.