Changeset 913 for trunk/NEMO/LIM_SRC_3/limsbc.F90
 Timestamp:
 20080429T14:40:00+02:00 (13 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/NEMO/LIM_SRC_3/limsbc.F90
r888 r913 77 77 INTEGER :: ifvt, i1mfr, idfr ! some switches 78 78 INTEGER :: iflt, ial, iadv, ifral, ifrdv 79 REAL(wp) :: zqsr , zqns ! solar & non solar heat flux80 79 REAL(wp) :: zinda ! switch for testing the values of ice concentration 81 80 REAL(wp) :: zfons ! salt exchanges at the ice/ocean interface 82 81 REAL(wp) :: zpme ! freshwater exchanges at the ice/ocean interface 83 82 REAL(wp) :: zfrldu, zfrldv ! lead fraction at U & Vpoints 84 REAL(wp) :: zutau , zvtau ! lead fraction at U & Vpoints85 83 REAL(wp) :: zu_io , zv_io ! 2 components of the iceocean velocity 86 REAL(wp) :: ztairx, ztairy87 REAL(wp) :: zsfrldmx2, zsfrldmy288 REAL(wp) :: zu_ice, zv_ice89 REAL(wp) :: ztglx , ztgly90 REAL(wp) :: ztaux , ztauy91 84 92 85 #if defined key_coupled … … 94 87 REAL(wp), DIMENSION(jpi,jpj,jpl) :: zalbp ! albedo of ice under clear sky 95 88 #endif 96 REAL(wp) :: zsang, zmod , zfm89 REAL(wp) :: zsang, zmod 97 90 REAL(wp), DIMENSION(jpi,jpj) :: ztio_u, ztio_v ! ocean stress below seaice 98 91 REAL(wp), DIMENSION(jpi,jpj) :: zfcm1 , zfcm2 ! solar/non solar heat fluxes … … 277 270 278 271 ! ... ice stress over ocean with a iceocean rotation angle 279 DO jj = 2, jpjm1 280 zsang = SIGN(1.e0, gphif(1,jj1) ) * sangvg 281 282 DO ji = fs_2, fs_jpim1 283 ! computation of wind stress over ocean in X and Y direction 284 ztairx = ( 2.0  at_i(ji,jj)  at_i(ji+1,jj) ) * utau(ji,jj) 285 ztairy = ( 2.0  at_i(ji,jj)  at_i(ji,jj+1) ) * vtau(ji,jj) 286 287 zsfrldmx2 = at_i(ji,jj) + at_i(ji+1,jj) 288 zsfrldmy2 = at_i(ji,jj) + at_i(ji,jj+1) 289 290 zu_ice = u_ice(ji,jj)  u_oce(ji,jj) 291 zv_ice = v_ice(ji,jj)  v_oce(ji,jj) 292 zmod = SQRT( zu_ice * zu_ice + zv_ice * zv_ice ) 293 272 DO jj = 1, jpj 273 ! ... change the sinus angle sign in the south hemisphere 274 zsang = SIGN(1.e0, gphif(1,jj) ) * sangvg 275 DO ji = 1, jpi 276 ! ... ice velocity relative to the ocean 277 zu_io = u_ice(ji,jj)  u_oce(ji,jj) 278 zv_io = v_ice(ji,jj)  v_oce(ji,jj) 279 zmod = SQRT( zu_io * zu_io + zv_io * zv_io ) 294 280 ! quadratic drag formulation 295 ztglx = zsfrldmx2 * rhoco * zmod * ( cangvg * zu_ice  zsang * zv_ice ) 296 ztgly = zsfrldmy2 * rhoco * zmod * ( cangvg * zv_ice + zsang * zu_ice ) 297 ! 298 ! ! IMPORTANT 299 ! ! these lines are bound to prevent numerical oscillations 300 ! ! in the iceocean stress 301 ! ! They are physically illbased. There is a cleaner solution 302 ! ! to try (remember discussion in Paris Gurvan) 303 ! 304 ztglx = ztglx * exp(  zmod / 0.5 ) 305 ztgly = ztglx * exp(  zmod / 0.5 ) 306 307 tio_u(ji,jj) = ( ztairx + 1.0 * ztglx ) / 2. 308 tio_v(ji,jj) = ( ztairy + 1.0 * ztgly ) / 2. 281 ztio_u(ji,jj) = rhoco * zmod * ( cangvg * zu_io  zsang * zv_io ) 282 ztio_v(ji,jj) = rhoco * zmod * ( cangvg * zv_io + zsang * zu_io ) 283 ! 309 284 END DO 310 285 END DO 311 286 312 DO jj = 1, jpjm1 313 DO ji = 1, fs_jpim1 ! vertor opt. 314 zfrldu = MAX( freezn(ji,jj), freezn(ji,jj+1) ) ! ice/ocean indicator at U and Vpoints 315 zfrldv = MAX( freezn(ji,jj), freezn(ji+1,jj) ) 316 ztaux = tio_u(ji,jj) 317 ztauy = tio_v(ji,jj) 318 utau(ji,jj) = (1.zfrldu) * utau(ji,jj) + zfrldu * ztaux ! stress at the ocean surface 319 vtau(ji,jj) = (1.zfrldv) * vtau(ji,jj) + zfrldv * ztauy 287 DO jj = 2, jpjm1 288 DO ji = fs_2, fs_jpim1 ! vertor opt. 289 ! ... openocean (lead) fraction at U & Vpoints (from Tpoint values) 290 zfrldu = 0.5 * ( ato_i(ji,jj) + ato_i(ji+1,jj ) ) 291 zfrldv = 0.5 * ( ato_i(ji,jj) + ato_i(ji ,jj+1) ) 292 ! update surface ocean stress 293 utau(ji,jj) = zfrldu * utau(ji,jj) + ( 1.  zfrldu ) * ztio_u(ji,jj) 294 vtau(ji,jj) = zfrldv * vtau(ji,jj) + ( 1.  zfrldv ) * ztio_v(ji,jj) 295 ! 320 296 END DO 321 297 END DO 322 323 !new fashion DO jj = 2, jpjm1324 !new fashion DO ji = fs_2, fs_jpim1 ! vertor opt.325 !new fashion ! ... icecover wheighted iceocean stress at U and Vpoints (from Ipoint values)326 !new fashion zutau = 0.5 * ( ztio_u(ji+1,jj) + ztio_u(ji+1,jj+1) )327 !new fashion zvtau = 0.5 * ( ztio_v(ji,jj+1) + ztio_v(ji+1,jj+1) )328 !new fashion ! ... openocean (lead) fraction at U & Vpoints (from Tpoint values)329 !new fashion zfrldu = 0.5 * ( frld (ji,jj) + frld (ji+1,jj ) )330 !new fashion zfrldv = 0.5 * ( frld (ji,jj) + frld (ji ,jj+1) )331 !new fashion ! update surface ocean stress332 !new fashion utau(ji,jj) = zfrldu * utau(ji,jj) + ( 1.  zfrldu ) * zutau333 !new fashion vtau(ji,jj) = zfrldv * vtau(ji,jj) + ( 1.  zfrldv ) * zvtau334 !new fashion !335 !new fashion END DO336 !new fashion END DO337 298 338 299 ! boundary condition on the stress (utau,vtau)
Note: See TracChangeset
for help on using the changeset viewer.