- Timestamp:
- 2020-09-15T12:49:18+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/temporary_r4_trunk/src/ICE/iceupdate.F90
r13466 r13469 114 114 ENDIF 115 115 116 DO jj = 1, jpj 117 DO ji = 1, jpi 118 119 ! Solar heat flux reaching the ocean = zqsr (W.m-2) 120 !--------------------------------------------------- 121 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 122 123 ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 124 !--------------------------------------------------- 125 zqmass = hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) ! heat flux from snow is 0 (T=0 degC) 126 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + zqmass + zqsr 127 128 ! Add the residual from heat diffusion equation and sublimation (W.m-2) 129 !---------------------------------------------------------------------- 130 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + hfx_err_dif(ji,jj) + & 131 & ( hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) ) 132 133 ! New qsr and qns used to compute the oceanic heat flux at the next time step 134 !---------------------------------------------------------------------------- 135 qsr(ji,jj) = zqsr 136 qns(ji,jj) = qt_oce_ai(ji,jj) - zqsr 137 138 ! Mass flux at the atm. surface 139 !----------------------------------- 140 wfx_sub(ji,jj) = wfx_snw_sub(ji,jj) + wfx_ice_sub(ji,jj) 141 142 ! Mass flux at the ocean surface 143 !------------------------------------ 144 ! case of realistic freshwater flux (Tartinville et al., 2001) (presently ACTIVATED) 145 ! ------------------------------------------------------------------------------------- 146 ! The idea of this approach is that the system that we consider is the ICE-OCEAN system 147 ! Thus FW flux = External ( E-P+snow melt) 148 ! Salt flux = Exchanges in the ice-ocean system then converted into FW 149 ! Associated to Ice formation AND Ice melting 150 ! Even if i see Ice melting as a FW and SALT flux 151 ! 152 ! mass flux from ice/ocean 153 wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj) & 154 & + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) + wfx_lam(ji,jj) + wfx_pnd(ji,jj) 155 156 ! add the snow melt water to snow mass flux to the ocean 157 wfx_snw(ji,jj) = wfx_snw_sni(ji,jj) + wfx_snw_dyn(ji,jj) + wfx_snw_sum(ji,jj) 158 159 ! mass flux at the ocean/ice interface 160 fmmflx(ji,jj) = - ( wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_err_sub(ji,jj) ) ! F/M mass flux save at least for biogeochemical model 161 emp(ji,jj) = emp_oce(ji,jj) - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_err_sub(ji,jj) ! mass flux + F/M mass flux (always ice/ocean mass exchange) 162 163 164 ! Salt flux at the ocean surface 165 !------------------------------------------ 166 sfx(ji,jj) = sfx_bog(ji,jj) + sfx_bom(ji,jj) + sfx_sum(ji,jj) + sfx_sni(ji,jj) + sfx_opw(ji,jj) & 167 & + sfx_res(ji,jj) + sfx_dyn(ji,jj) + sfx_bri(ji,jj) + sfx_sub(ji,jj) + sfx_lam(ji,jj) 168 169 ! Mass of snow and ice per unit area 170 !---------------------------------------- 171 snwice_mass_b(ji,jj) = snwice_mass(ji,jj) ! save mass from the previous ice time step 172 ! ! new mass per unit area 173 snwice_mass (ji,jj) = tmask(ji,jj,1) * ( rhos * vt_s(ji,jj) + rhoi * vt_i(ji,jj) ) 174 ! ! time evolution of snow+ice mass 175 snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_rdtice 176 177 END DO 178 END DO 116 DO_2D_11_11 117 118 ! Solar heat flux reaching the ocean = zqsr (W.m-2) 119 !--------------------------------------------------- 120 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 121 122 ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 123 !--------------------------------------------------- 124 zqmass = hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) ! heat flux from snow is 0 (T=0 degC) 125 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + zqmass + zqsr 126 127 ! Add the residual from heat diffusion equation and sublimation (W.m-2) 128 !---------------------------------------------------------------------- 129 qt_oce_ai(ji,jj) = qt_oce_ai(ji,jj) + hfx_err_dif(ji,jj) + & 130 & ( hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) ) 131 132 ! New qsr and qns used to compute the oceanic heat flux at the next time step 133 !---------------------------------------------------------------------------- 134 qsr(ji,jj) = zqsr 135 qns(ji,jj) = qt_oce_ai(ji,jj) - zqsr 136 137 ! Mass flux at the atm. surface 138 !----------------------------------- 139 wfx_sub(ji,jj) = wfx_snw_sub(ji,jj) + wfx_ice_sub(ji,jj) 140 141 ! Mass flux at the ocean surface 142 !------------------------------------ 143 ! case of realistic freshwater flux (Tartinville et al., 2001) (presently ACTIVATED) 144 ! ------------------------------------------------------------------------------------- 145 ! The idea of this approach is that the system that we consider is the ICE-OCEAN system 146 ! Thus FW flux = External ( E-P+snow melt) 147 ! Salt flux = Exchanges in the ice-ocean system then converted into FW 148 ! Associated to Ice formation AND Ice melting 149 ! Even if i see Ice melting as a FW and SALT flux 150 ! 151 ! mass flux from ice/ocean 152 wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj) & 153 & + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) + wfx_lam(ji,jj) + wfx_pnd(ji,jj) 154 155 ! add the snow melt water to snow mass flux to the ocean 156 wfx_snw(ji,jj) = wfx_snw_sni(ji,jj) + wfx_snw_dyn(ji,jj) + wfx_snw_sum(ji,jj) 157 158 ! mass flux at the ocean/ice interface 159 fmmflx(ji,jj) = - ( wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_err_sub(ji,jj) ) ! F/M mass flux save at least for biogeochemical model 160 emp(ji,jj) = emp_oce(ji,jj) - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_err_sub(ji,jj) ! mass flux + F/M mass flux (always ice/ocean mass exchange) 161 162 163 ! Salt flux at the ocean surface 164 !------------------------------------------ 165 sfx(ji,jj) = sfx_bog(ji,jj) + sfx_bom(ji,jj) + sfx_sum(ji,jj) + sfx_sni(ji,jj) + sfx_opw(ji,jj) & 166 & + sfx_res(ji,jj) + sfx_dyn(ji,jj) + sfx_bri(ji,jj) + sfx_sub(ji,jj) + sfx_lam(ji,jj) 167 168 ! Mass of snow and ice per unit area 169 !---------------------------------------- 170 snwice_mass_b(ji,jj) = snwice_mass(ji,jj) ! save mass from the previous ice time step 171 ! ! new mass per unit area 172 snwice_mass (ji,jj) = tmask(ji,jj,1) * ( rhos * vt_s(ji,jj) + rhoi * vt_i(ji,jj) ) 173 ! ! time evolution of snow+ice mass 174 snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) * r1_rdtice 175 176 END_2D 179 177 180 178 ! Storing the transmitted variables … … 335 333 ! 336 334 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN !== Ice time-step only ==! (i.e. surface module time-step) 337 DO jj = 2, jpjm1 !* update the modulus of stress at ocean surface (T-point) 338 DO ji = fs_2, fs_jpim1 339 ! ! 2*(U_ice-U_oce) at T-point 340 zu_t = u_ice(ji,jj) + u_ice(ji-1,jj) - u_oce(ji,jj) - u_oce(ji-1,jj) 341 zv_t = v_ice(ji,jj) + v_ice(ji,jj-1) - v_oce(ji,jj) - v_oce(ji,jj-1) 342 ! ! |U_ice-U_oce|^2 343 zmodt = 0.25_wp * ( zu_t * zu_t + zv_t * zv_t ) 344 ! ! update the ocean stress modulus 345 taum(ji,jj) = ( 1._wp - at_i(ji,jj) ) * taum(ji,jj) + at_i(ji,jj) * zrhoco * zmodt 346 tmod_io(ji,jj) = zrhoco * SQRT( zmodt ) ! rhoco * |U_ice-U_oce| at T-point 347 END DO 348 END DO 335 DO_2D_00_00 336 ! ! 2*(U_ice-U_oce) at T-point 337 zu_t = u_ice(ji,jj) + u_ice(ji-1,jj) - u_oce(ji,jj) - u_oce(ji-1,jj) 338 zv_t = v_ice(ji,jj) + v_ice(ji,jj-1) - v_oce(ji,jj) - v_oce(ji,jj-1) 339 ! ! |U_ice-U_oce|^2 340 zmodt = 0.25_wp * ( zu_t * zu_t + zv_t * zv_t ) 341 ! ! update the ocean stress modulus 342 taum(ji,jj) = ( 1._wp - at_i(ji,jj) ) * taum(ji,jj) + at_i(ji,jj) * zrhoco * zmodt 343 tmod_io(ji,jj) = zrhoco * SQRT( zmodt ) ! rhoco * |U_ice-U_oce| at T-point 344 END_2D 349 345 CALL lbc_lnk_multi( 'iceupdate', taum, 'T', 1., tmod_io, 'T', 1. ) 350 346 ! … … 363 359 ENDIF 364 360 ! 365 DO jj = 2, jpjm1 !* update the stress WITHOUT an ice-ocean rotation angle 366 DO ji = fs_2, fs_jpim1 ! Vect. Opt. 367 ! ice area at u and v-points 368 zat_u = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji+1,jj ) * tmask(ji+1,jj ,1) ) & 369 & / MAX( 1.0_wp , tmask(ji,jj,1) + tmask(ji+1,jj ,1) ) 370 zat_v = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji ,jj+1 ) * tmask(ji ,jj+1,1) ) & 371 & / MAX( 1.0_wp , tmask(ji,jj,1) + tmask(ji ,jj+1,1) ) 372 ! ! linearized quadratic drag formulation 373 zutau_ice = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji+1,jj) ) * ( u_ice(ji,jj) - zflagi * pu_oce(ji,jj) ) 374 zvtau_ice = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji,jj+1) ) * ( v_ice(ji,jj) - zflagi * pv_oce(ji,jj) ) 375 ! ! stresses at the ocean surface 376 utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 377 vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 378 END DO 379 END DO 361 DO_2D_00_00 362 ! ice area at u and v-points 363 zat_u = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji+1,jj ) * tmask(ji+1,jj ,1) ) & 364 & / MAX( 1.0_wp , tmask(ji,jj,1) + tmask(ji+1,jj ,1) ) 365 zat_v = ( at_i(ji,jj) * tmask(ji,jj,1) + at_i (ji ,jj+1 ) * tmask(ji ,jj+1,1) ) & 366 & / MAX( 1.0_wp , tmask(ji,jj,1) + tmask(ji ,jj+1,1) ) 367 ! ! linearized quadratic drag formulation 368 zutau_ice = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji+1,jj) ) * ( u_ice(ji,jj) - zflagi * pu_oce(ji,jj) ) 369 zvtau_ice = 0.5_wp * ( tmod_io(ji,jj) + tmod_io(ji,jj+1) ) * ( v_ice(ji,jj) - zflagi * pv_oce(ji,jj) ) 370 ! ! stresses at the ocean surface 371 utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 372 vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 373 END_2D 380 374 CALL lbc_lnk_multi( 'iceupdate', utau, 'U', -1., vtau, 'V', -1. ) ! lateral boundary condition 381 375 !
Note: See TracChangeset
for help on using the changeset viewer.