Changeset 8169
- Timestamp:
- 2017-06-14T10:04:06+02:00 (7 years ago)
- Location:
- branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r8158 r8169 85 85 INTEGER :: nbpb ! nb of icy pts for vertical thermo calculations 86 86 INTEGER :: ii, ij ! temporary dummy loop index 87 REAL(wp) :: zfric_u, zqld, zqfr 87 REAL(wp) :: zfric_u, zqld, zqfr, zqfr_neg 88 88 REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b 89 89 REAL(wp), PARAMETER :: zfric_umin = 0._wp ! lower bound for the friction velocity (cice value=5.e-04) … … 147 147 148 148 ! --- Energy needed to bring ocean surface layer until its freezing (<0, J.m-2) --- ! 149 ! includes supercooling potential energy (>0) or "above-freezing" energy (<0) 149 150 zqfr = tmask(ji,jj,1) * rau0 * rcp * fse3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) 150 151 151 ! --- Energy from the turbulent oceanic heat flux (W/m2) --- ! 152 ! --- Above-freezing sensible heat content (J/m2 grid) 153 !-> target zqfr_neg = tmask(ji,jj,1) * rau0 * rcp * fse3t_m(ji,jj) * MIN( ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0._wp ) 154 155 ! --- Sensible ocean-to-ice heat flux (W/m2) 152 156 zfric_u = MAX( SQRT( ust2s(ji,jj) ), zfric_umin ) 153 157 fhtur(ji,jj) = MAX( 0._wp, rswitch * rau0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ) ! W.m-2 154 155 !-> MV 156 !-> the following line makes hfxtur often crazily negative 157 !-> if sst is warmer than freezing, evt is fine 158 !-> but if sst is super-cooled, fhtur = 0 and zqfr > 0 159 !-> so fhtur becomes - zqfr * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) 160 !-> if at_i is small, fhtur can be big 161 !-> an we will impose the ice to give energy to the ocean to absorb all super cooling! 162 !-> makes very high values for small ice concentrations, and grows ice vertically very rapidly 163 !-> eg 5th category in hudson bay 164 !-> should check after 10 years, but within a year fhtur is too negative 165 !-> that may help to build up towers 166 ! could we test to put this energy in zqld 167 ! zqfr_pos kept in fhtur 168 ! zqfr_neg added to zqld 169 ! zqfr_pos = MAX( tmask(ji,jj,1) * rau0 * rcp * fse3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0. ) 170 ! zqfr_neg = MIN( tmask(ji,jj,1) * rau0 * rcp * fse3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ), 0. ) 171 ! fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr_pos * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 172 ! how do we deal with qlead ? 173 158 !-> target fhtur(ji,jj) = rswitch * rau0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 174 159 175 160 fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 161 !-> target fhtur(ji,jj) = rswitch * MIN( fhtur(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) 176 162 ! upper bound for fhtur: the heat retrieved from the ocean must be smaller than the heat necessary to reach 177 163 ! the freezing point, so that we do not have SST < T_freeze 178 164 ! This implies: - ( fhtur(ji,jj) * at_i(ji,jj) * rtdice ) - zqfr >= 0 179 165 180 !-- Energy Budget of the leads (J.m-2) . Must be < 0 to form ice166 !-- Energy Budget of the leads (J.m-2), source of lateral accretion. Must be < 0 to form ice 181 167 qlead(ji,jj) = MIN( 0._wp , zqld - ( fhtur(ji,jj) * at_i(ji,jj) * rdt_ice ) - zqfr ) 182 168 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate1.F90
r6311 r8169 82 82 IF( at_i(ji,jj) > rn_amax_2d(ji,jj) .AND. a_i(ji,jj,jl) > 0._wp ) THEN 83 83 a_i (ji,jj,jl) = a_i (ji,jj,jl) * ( 1._wp - ( 1._wp - rn_amax_2d(ji,jj) / at_i(ji,jj) ) ) 84 oa_i(ji,jj,jl) = oa_i(ji,jj,jl) * ( 1._wp - ( 1._wp - rn_amax_2d(ji,jj) / at_i(ji,jj) ) )85 84 ENDIF 86 85 END DO -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90
r8156 r8169 78 78 IF( v_i(ji,jj,1) > 0._wp .AND. ht_i(ji,jj,1) < rn_himin ) THEN 79 79 a_i (ji,jj,1) = a_i (ji,jj,1) * ht_i(ji,jj,1) / rn_himin 80 oa_i(ji,jj,1) = oa_i(ji,jj,1) * ht_i(ji,jj,1) / rn_himin81 80 ENDIF 82 81 END DO … … 96 95 IF( at_i(ji,jj) > rn_amax_2d(ji,jj) .AND. a_i(ji,jj,jl) > 0._wp ) THEN 97 96 a_i (ji,jj,jl) = a_i (ji,jj,jl) * ( 1._wp - ( 1._wp - rn_amax_2d(ji,jj) / at_i(ji,jj) ) ) 98 oa_i(ji,jj,jl) = oa_i(ji,jj,jl) * ( 1._wp - ( 1._wp - rn_amax_2d(ji,jj) / at_i(ji,jj) ) )99 97 ENDIF 100 98 END DO … … 180 178 ! necessary calls (at least for coupling) 181 179 CALL lim_var_glo2eqv 182 183 ! MV SIMIP 2016 small patch to clean ice age outputs184 WHERE( ( a_i < 5.0e-3 ) .AND. ( ht_i < 1.5 * rn_himin ) ); oa_i(:,:,:) = a_i(:,:,:); END WHERE185 180 186 181 CALL lim_var_agg(2)
Note: See TracChangeset
for help on using the changeset viewer.