Changeset 13899 for NEMO/branches/2020/tickets_icb_1900/src/ICE/icecor.F90
- Timestamp:
- 2020-11-27T17:26:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/ICE/icecor.F90
r13226 r13899 55 55 INTEGER :: ji, jj, jk, jl ! dummy loop indices 56 56 REAL(wp) :: zsal, zzc 57 REAL(wp), DIMENSION(jpi,jpj) :: zafx ! concentration trends diag58 57 !!---------------------------------------------------------------------- 59 58 ! controls … … 81 80 DO jl = 1, jpl 82 81 WHERE( at_i(:,:) > rn_amax_2d(:,:) ) a_i(:,:,jl) = a_i(:,:,jl) * rn_amax_2d(:,:) / at_i(:,:) 83 END DO 84 82 END DO 83 ! !----------------------------------------------------- 84 ! ! Rebin categories with thickness out of bounds ! 85 ! !----------------------------------------------------- 86 IF ( jpl > 1 ) CALL ice_itd_reb( kt ) 87 ! 85 88 ! !----------------------------------------------------- 86 89 IF ( nn_icesal == 2 ) THEN ! salinity must stay in bounds [Simin,Simax] ! … … 88 91 zzc = rhoi * r1_Dt_ice 89 92 DO jl = 1, jpl 90 DO_2D _11_1193 DO_2D( 1, 1, 1, 1 ) 91 94 zsal = sv_i(ji,jj,jl) 92 95 sv_i(ji,jj,jl) = MIN( MAX( rn_simin*v_i(ji,jj,jl) , sv_i(ji,jj,jl) ) , rn_simax*v_i(ji,jj,jl) ) 93 sfx_res(ji,jj) = sfx_res(ji,jj) - ( sv_i(ji,jj,jl) - zsal ) * zzc ! associated salt flux 96 IF( kn /= 0 ) & ! no ice-ocean exchanges if kn=0 (for bdy for instance) otherwise conservation diags will fail 97 & sfx_res(ji,jj) = sfx_res(ji,jj) - ( sv_i(ji,jj,jl) - zsal ) * zzc ! associated salt flux 94 98 END_2D 95 99 END DO 96 100 ENDIF 97 ! !-----------------------------------------------------98 ! ! Rebin categories with thickness out of bounds !99 ! !-----------------------------------------------------100 IF ( jpl > 1 ) CALL ice_itd_reb( kt )101 101 102 ! !----------------------------------------------------- 103 CALL ice_var_zapsmall ! Zap small values ! 104 ! !----------------------------------------------------- 105 102 IF( kn /= 0 ) THEN ! no zapsmall if kn=0 (for bdy for instance) because we do not want ice-ocean exchanges (wfx,sfx,hfx) 103 ! otherwise conservation diags will fail 104 ! !----------------------------------------------------- 105 CALL ice_var_zapsmall ! Zap small values ! 106 ! !----------------------------------------------------- 107 ENDIF 106 108 ! !----------------------------------------------------- 107 109 IF( kn == 2 ) THEN ! Ice drift case: Corrections to avoid wrong values ! 108 DO_2D _00_00110 DO_2D( 0, 0, 0, 0 ) !----------------------------------------------------- 109 111 IF ( at_i(ji,jj) == 0._wp ) THEN ! what to do if there is no ice 110 112 IF ( at_i(ji+1,jj) == 0._wp ) u_ice(ji ,jj) = 0._wp ! right side … … 116 118 CALL lbc_lnk_multi( 'icecor', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp ) 117 119 ENDIF 118 119 ! !-----------------------------------------------------120 SELECT CASE( kn ) ! Diagnostics !121 ! !-----------------------------------------------------122 CASE( 1 ) !--- dyn trend diagnostics123 !124 IF( ln_icediachk .OR. iom_use('hfxdhc') ) THEN125 diag_heat(:,:) = - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice & ! W.m-2126 & - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice127 diag_sice(:,:) = SUM( sv_i(:,:,:) - sv_i_b(:,:,:) , dim=3 ) * r1_Dt_ice * rhoi128 diag_vice(:,:) = SUM( v_i (:,:,:) - v_i_b (:,:,:) , dim=3 ) * r1_Dt_ice * rhoi129 diag_vsnw(:,:) = SUM( v_s (:,:,:) - v_s_b (:,:,:) , dim=3 ) * r1_Dt_ice * rhos130 ENDIF131 ! ! concentration tendency (dynamics)132 IF( iom_use('afxdyn') .OR. iom_use('afxthd') .OR. iom_use('afxtot') ) THEN133 zafx(:,:) = SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice134 CALL iom_put( 'afxdyn' , zafx )135 ENDIF136 !137 CASE( 2 ) !--- thermo trend diagnostics & ice aging138 !139 oa_i(:,:,:) = oa_i(:,:,:) + a_i(:,:,:) * rDt_ice ! ice natural aging incrementation140 !141 IF( ln_icediachk .OR. iom_use('hfxdhc') ) THEN142 diag_heat(:,:) = diag_heat(:,:) &143 & - SUM(SUM( e_i (:,:,1:nlay_i,:) - e_i_b (:,:,1:nlay_i,:), dim=4 ), dim=3 ) * r1_Dt_ice &144 & - SUM(SUM( e_s (:,:,1:nlay_s,:) - e_s_b (:,:,1:nlay_s,:), dim=4 ), dim=3 ) * r1_Dt_ice145 diag_sice(:,:) = diag_sice(:,:) &146 & + SUM( sv_i(:,:,:) - sv_i_b(:,:,:) , dim=3 ) * r1_Dt_ice * rhoi147 diag_vice(:,:) = diag_vice(:,:) &148 & + SUM( v_i (:,:,:) - v_i_b (:,:,:) , dim=3 ) * r1_Dt_ice * rhoi149 diag_vsnw(:,:) = diag_vsnw(:,:) &150 & + SUM( v_s (:,:,:) - v_s_b (:,:,:) , dim=3 ) * r1_Dt_ice * rhos151 CALL iom_put ( 'hfxdhc' , diag_heat )152 ENDIF153 ! ! concentration tendency (total + thermo)154 IF( iom_use('afxdyn') .OR. iom_use('afxthd') .OR. iom_use('afxtot') ) THEN155 zafx(:,:) = zafx(:,:) + SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice156 CALL iom_put( 'afxthd' , SUM( a_i(:,:,:) - a_i_b(:,:,:), dim=3 ) * r1_Dt_ice )157 CALL iom_put( 'afxtot' , zafx )158 ENDIF159 !160 END SELECT161 120 ! 162 121 ! controls
Note: See TracChangeset
for help on using the changeset viewer.