Changeset 5313 for branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
- Timestamp:
- 2015-05-29T11:46:03+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r5312 r5313 25 25 USE par_oce ! ocean parameters 26 26 USE phycst ! physical constants 27 USE par_ice ! ice parameters28 27 USE dom_oce ! ocean domain 29 USE dom_ice, ONLY : tms, area30 28 USE ice ! LIM sea-ice variables 31 29 USE sbc_ice ! Surface boundary condition: sea-ice fields … … 40 38 USE prtctl ! Print control 41 39 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 42 USE traqsr ! clem: add penetration of solar flux intothe calculation of heat budget40 USE traqsr ! add penetration of solar flux in the calculation of heat budget 43 41 USE iom 44 42 USE domvvl ! Variable volume 43 USE limctl 44 USE limcons 45 45 46 46 IMPLICIT NONE 47 47 PRIVATE 48 48 49 PUBLIC lim_sbc_init ! called by ice_init49 PUBLIC lim_sbc_init ! called by sbc_lim_init 50 50 PUBLIC lim_sbc_flx ! called by sbc_ice_lim 51 51 PUBLIC lim_sbc_tau ! called by sbc_ice_lim … … 99 99 !! Tartinville et al. 2001 Ocean Modelling, 3, 95-108. 100 100 !! These refs are now obsolete since everything has been revised 101 !! The ref should be Rousset et al., 2015 ?101 !! The ref should be Rousset et al., 2015 102 102 !!--------------------------------------------------------------------- 103 103 INTEGER, INTENT(in) :: kt ! number of iteration 104 !105 104 INTEGER :: ji, jj, jl, jk ! dummy loop indices 106 ! 107 REAL(wp) :: zemp ! local scalars 105 REAL(wp) :: zemp ! local scalars 108 106 REAL(wp) :: zf_mass ! Heat flux associated with mass exchange ice->ocean (W.m-2) 109 107 REAL(wp) :: zfcm1 ! New solar flux received by the ocean … … 149 147 hfx_out(ji,jj) = hfx_out(ji,jj) + zf_mass + zfcm1 150 148 149 ! Add the residual from heat diffusion equation (W.m-2) 150 !------------------------------------------------------- 151 hfx_out(ji,jj) = hfx_out(ji,jj) + hfx_err_dif(ji,jj) 152 151 153 ! New qsr and qns used to compute the oceanic heat flux at the next time step 152 154 !--------------------------------------------------- … … 167 169 ! computing freshwater exchanges at the ice/ocean interface 168 170 IF( lk_cpl ) THEN 169 zemp = - emp_tot(ji,jj) + emp_ice(ji,jj) * ( 1. - pfrld(ji,jj) ) & ! 170 & + wfx_snw(ji,jj) 171 zemp = emp_tot(ji,jj) & ! net mass flux over grid cell 172 & - emp_ice(ji,jj) * ( 1._wp - pfrld(ji,jj) ) & ! minus the mass flux intercepted by sea ice 173 & + sprecip(ji,jj) * ( pfrld(ji,jj) - pfrld(ji,jj)**rn_betas ) ! 171 174 ELSE 172 175 zemp = emp(ji,jj) * pfrld(ji,jj) & ! evaporation over oceanic fraction 173 176 & - tprecip(ji,jj) * ( 1._wp - pfrld(ji,jj) ) & ! all precipitation reach the ocean 174 & + sprecip(ji,jj) * ( 1._wp - pfrld(ji,jj)** betas ) ! except solid precip intercepted by sea-ice177 & + sprecip(ji,jj) * ( 1._wp - pfrld(ji,jj)**rn_betas ) ! except solid precip intercepted by sea-ice 175 178 ENDIF 176 179 … … 180 183 181 184 ! mass flux at the ocean/ice interface 182 fmmflx(ji,jj) = - wfx_ice(ji,jj) * r1_rdtice! F/M mass flux save at least for biogeochemical model183 emp(ji,jj) = zemp - wfx_ice(ji,jj) - wfx_snw(ji,jj) ! mass flux + F/M mass flux (always ice/ocean mass exchange)185 fmmflx(ji,jj) = - ( wfx_ice(ji,jj) + wfx_snw(ji,jj) ) * r1_rdtice ! F/M mass flux save at least for biogeochemical model 186 emp(ji,jj) = zemp - wfx_ice(ji,jj) - wfx_snw(ji,jj) ! mass flux + F/M mass flux (always ice/ocean mass exchange) 184 187 185 188 END DO … … 199 202 snwice_mass_b(:,:) = snwice_mass(:,:) 200 203 ! new mass per unit area 201 snwice_mass (:,:) = tm s(:,:) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) )204 snwice_mass (:,:) = tmask(:,:,1) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) ) 202 205 ! time evolution of snow+ice mass 203 206 snwice_fmass (:,:) = ( snwice_mass(:,:) - snwice_mass_b(:,:) ) * r1_rdtice … … 225 228 ENDIF 226 229 230 ! conservation test 231 IF( ln_limdiahsb ) CALL lim_cons_final( 'limsbc' ) 232 233 ! control prints 234 IF( ln_icectl ) CALL lim_prt( kt, iiceprt, jiceprt, 3, ' - Final state lim_sbc - ' ) 227 235 228 236 IF(ln_ctl) THEN … … 270 278 ! 271 279 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN !== Ice time-step only ==! (i.e. surface module time-step) 272 !CDIR NOVERRCHK273 280 DO jj = 2, jpjm1 !* update the modulus of stress at ocean surface (T-point) 274 !CDIR NOVERRCHK275 281 DO ji = fs_2, fs_jpim1 276 282 ! ! 2*(U_ice-U_oce) at T-point … … 322 328 !! ** input : Namelist namicedia 323 329 !!------------------------------------------------------------------- 324 REAL(wp) :: zsum, zarea325 !326 330 INTEGER :: ji, jj, jk ! dummy loop indices 327 331 REAL(wp) :: zcoefu, zcoefv, zcoeff ! local scalar … … 343 347 END WHERE 344 348 ENDIF 345 ! clem modif349 346 350 IF( .NOT. ln_rstart ) THEN 347 351 fraqsr_1lev(:,:) = 1._wp 348 352 ENDIF 349 353 ! 350 ! clem: snwice_mass in the restart file now351 354 IF( .NOT. ln_rstart ) THEN 352 355 ! ! embedded sea ice 353 356 IF( nn_ice_embd /= 0 ) THEN ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass 354 snwice_mass (:,:) = tm s(:,:) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) )357 snwice_mass (:,:) = tmask(:,:,1) * ( rhosn * vt_s(:,:) + rhoic * vt_i(:,:) ) 355 358 snwice_mass_b(:,:) = snwice_mass(:,:) 356 359 ELSE
Note: See TracChangeset
for help on using the changeset viewer.