Changeset 8575
- Timestamp:
- 2017-09-29T12:44:18+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_rhg_evp.F90
r8534 r8575 53 53 CONTAINS 54 54 55 SUBROUTINE ice_dyn_rhg_evp( kt, pstress1_i, pstress2_i, pstress12_i, pu_ice, pv_ice, pshear_i, pdivu_i, pdelta_i )55 SUBROUTINE ice_dyn_rhg_evp( kt, pstress1_i, pstress2_i, pstress12_i, u_ice, v_ice, pshear_i, pdivu_i, pdelta_i ) 56 56 !!------------------------------------------------------------------- 57 57 !! *** SUBROUTINE ice_dyn_rhg_evp *** … … 105 105 INTEGER, INTENT(in) :: kt ! time step 106 106 REAL(wp), DIMENSION(:,:), INTENT(inout) :: pstress1_i, pstress2_i, pstress12_i 107 REAL(wp), DIMENSION(:,:), INTENT( out) :: pu_ice, pv_ice, pshear_i, pdivu_i, pdelta_i 107 REAL(wp), DIMENSION(:,:), INTENT(inout) :: u_ice, v_ice 108 REAL(wp), DIMENSION(:,:), INTENT( out) :: pshear_i, pdivu_i, pdelta_i 108 109 !! 109 110 INTEGER :: ji, jj ! dummy loop indices … … 336 337 IF(ln_ctl) THEN ! Convergence test 337 338 DO jj = 1, jpjm1 338 zu_ice(:,jj) = pu_ice(:,jj) ! velocity at previous time step339 zv_ice(:,jj) = pv_ice(:,jj)339 zu_ice(:,jj) = u_ice(:,jj) ! velocity at previous time step 340 zv_ice(:,jj) = v_ice(:,jj) 340 341 END DO 341 342 ENDIF … … 346 347 347 348 ! shear at F points 348 zds(ji,jj) = ( ( pu_ice(ji,jj+1) * r1_e1u(ji,jj+1) - pu_ice(ji,jj) * r1_e1u(ji,jj) ) * e1f(ji,jj) * e1f(ji,jj) &349 & + ( pv_ice(ji+1,jj) * r1_e2v(ji+1,jj) - pv_ice(ji,jj) * r1_e2v(ji,jj) ) * e2f(ji,jj) * e2f(ji,jj) &349 zds(ji,jj) = ( ( u_ice(ji,jj+1) * r1_e1u(ji,jj+1) - u_ice(ji,jj) * r1_e1u(ji,jj) ) * e1f(ji,jj) * e1f(ji,jj) & 350 & + ( v_ice(ji+1,jj) * r1_e2v(ji+1,jj) - v_ice(ji,jj) * r1_e2v(ji,jj) ) * e2f(ji,jj) * e2f(ji,jj) & 350 351 & ) * r1_e1e2f(ji,jj) * zfmask(ji,jj) 351 352 … … 363 364 364 365 ! divergence at T points 365 zdiv = ( e2u(ji,jj) * pu_ice(ji,jj) - e2u(ji-1,jj) * pu_ice(ji-1,jj) &366 & + e1v(ji,jj) * pv_ice(ji,jj) - e1v(ji,jj-1) * pv_ice(ji,jj-1) &366 zdiv = ( e2u(ji,jj) * u_ice(ji,jj) - e2u(ji-1,jj) * u_ice(ji-1,jj) & 367 & + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) & 367 368 & ) * r1_e1e2t(ji,jj) 368 369 zdiv2 = zdiv * zdiv 369 370 370 371 ! tension at T points 371 zdt = ( ( pu_ice(ji,jj) * r1_e2u(ji,jj) - pu_ice(ji-1,jj) * r1_e2u(ji-1,jj) ) * e2t(ji,jj) * e2t(ji,jj) &372 & - ( pv_ice(ji,jj) * r1_e1v(ji,jj) - pv_ice(ji,jj-1) * r1_e1v(ji,jj-1) ) * e1t(ji,jj) * e1t(ji,jj) &372 zdt = ( ( u_ice(ji,jj) * r1_e2u(ji,jj) - u_ice(ji-1,jj) * r1_e2u(ji-1,jj) ) * e2t(ji,jj) * e2t(ji,jj) & 373 & - ( v_ice(ji,jj) * r1_e1v(ji,jj) - v_ice(ji,jj-1) * r1_e1v(ji,jj-1) ) * e1t(ji,jj) * e1t(ji,jj) & 373 374 & ) * r1_e1e2t(ji,jj) 374 375 zdt2 = zdt * zdt … … 422 423 ! 423 424 ! !--- u_ice at V point 424 u_iceV(ji,jj) = 0.5_wp * ( ( pu_ice(ji,jj ) + pu_ice(ji-1,jj ) ) * e2t(ji,jj+1) &425 & + ( pu_ice(ji,jj+1) + pu_ice(ji-1,jj+1) ) * e2t(ji,jj ) ) * z1_e2t0(ji,jj) * vmask(ji,jj,1)425 u_iceV(ji,jj) = 0.5_wp * ( ( u_ice(ji,jj ) + u_ice(ji-1,jj ) ) * e2t(ji,jj+1) & 426 & + ( u_ice(ji,jj+1) + u_ice(ji-1,jj+1) ) * e2t(ji,jj ) ) * z1_e2t0(ji,jj) * vmask(ji,jj,1) 426 427 ! 427 428 ! !--- v_ice at U point 428 v_iceU(ji,jj) = 0.5_wp * ( ( pv_ice(ji ,jj) + pv_ice(ji ,jj-1) ) * e1t(ji+1,jj) &429 & + ( pv_ice(ji+1,jj) + pv_ice(ji+1,jj-1) ) * e1t(ji ,jj) ) * z1_e1t0(ji,jj) * umask(ji,jj,1)429 v_iceU(ji,jj) = 0.5_wp * ( ( v_ice(ji ,jj) + v_ice(ji ,jj-1) ) * e1t(ji+1,jj) & 430 & + ( v_ice(ji+1,jj) + v_ice(ji+1,jj-1) ) * e1t(ji ,jj) ) * z1_e1t0(ji,jj) * umask(ji,jj,1) 430 431 ! 431 432 END DO … … 440 441 DO ji = fs_2, fs_jpim1 441 442 ! !--- tau_io/(v_oce - v_ice) 442 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( pv_ice(ji,jj) - v_oce (ji,jj) ) * ( pv_ice(ji,jj) - v_oce (ji,jj) ) &443 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) ) & 443 444 & + ( u_iceV(ji,jj) - u_oceV(ji,jj) ) * ( u_iceV(ji,jj) - u_oceV(ji,jj) ) ) 444 445 ! !--- Ocean-to-Ice stress 445 ztauy_oi(ji,jj) = zTauO * ( v_oce(ji,jj) - pv_ice(ji,jj) )446 ztauy_oi(ji,jj) = zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 446 447 ! 447 448 ! !--- tau_bottom/v_ice 448 zvel = MAX( zepsi, SQRT( pv_ice(ji,jj) * pv_ice(ji,jj) + u_iceV(ji,jj) * u_iceV(ji,jj) ) )449 zvel = MAX( zepsi, SQRT( v_ice(ji,jj) * v_ice(ji,jj) + u_iceV(ji,jj) * u_iceV(ji,jj) ) ) 449 450 zTauB = - tau_icebfr(ji,jj) / zvel 450 451 ! 451 452 ! !--- Coriolis at V-points (energy conserving formulation) 452 453 zCory(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 453 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * pu_ice(ji,jj ) + e2u(ji-1,jj ) * pu_ice(ji-1,jj ) ) &454 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * pu_ice(ji,jj+1) + e2u(ji-1,jj+1) * pu_ice(ji-1,jj+1) ) )454 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 455 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 455 456 ! 456 457 ! !--- Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io … … 461 462 ! 462 463 ! !--- ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 463 pv_ice(ji,jj) = ( ( rswitch * ( zmV_t(ji,jj) * pv_ice(ji,jj)& ! previous velocity464 & + zTauE + zTauO * pv_ice(ji,jj)& ! F + tau_ia + Coriolis + spg + tau_io(only ocean part)465 & 466 & + ( 1._wp - rswitch ) * pv_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0467 & ) * zswitchV(ji,jj) + v_oce(ji,jj) * ( 1._wp - zswitchV(ji,jj) ) 464 v_ice(ji,jj) = ( ( rswitch * ( zmV_t(ji,jj) * v_ice(ji,jj) & ! previous velocity 465 & + zTauE + zTauO * v_ice(ji,jj) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 466 & ) / MAX( zepsi, zmV_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 467 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0 468 & ) * zswitchV(ji,jj) + v_oce(ji,jj) * ( 1._wp - zswitchV(ji,jj) ) & ! v_ice = v_oce if mass < zmmin 468 469 & ) * zmaskV(ji,jj) 469 470 ! 470 471 ! Bouillon 2013 471 !! pv_ice(ji,jj) = ( zmV_t(ji,jj) * ( zbeta * pv_ice(ji,jj) + pv_ice_b(ji,jj) ) &472 !!v_ice(ji,jj) = ( zmV_t(ji,jj) * ( zbeta * v_ice(ji,jj) + v_ice_b(ji,jj) ) & 472 473 !! & + zfV(ji,jj) + zCory(ji,jj) + zTauV_ia(ji,jj) + zTauO * v_oce(ji,jj) + zspgV(ji,jj) & 473 474 !! & ) / MAX( zmV_t(ji,jj) * ( zbeta + 1._wp ) + zTauO - zTauB, zepsi ) * zswitchV(ji,jj) … … 475 476 END DO 476 477 END DO 477 CALL lbc_lnk( pv_ice, 'V', -1. )478 CALL lbc_lnk( v_ice, 'V', -1. ) 478 479 ! 479 480 #if defined key_agrif … … 487 488 488 489 ! tau_io/(u_oce - u_ice) 489 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( pu_ice(ji,jj) - u_oce (ji,jj) ) * ( pu_ice(ji,jj) - u_oce (ji,jj) ) &490 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) ) & 490 491 & + ( v_iceU(ji,jj) - v_oceU(ji,jj) ) * ( v_iceU(ji,jj) - v_oceU(ji,jj) ) ) 491 492 492 493 ! Ocean-to-Ice stress 493 ztaux_oi(ji,jj) = zTauO * ( u_oce(ji,jj) - pu_ice(ji,jj) )494 ztaux_oi(ji,jj) = zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 494 495 495 496 ! tau_bottom/u_ice 496 zvel = MAX( zepsi, SQRT( v_iceU(ji,jj) * v_iceU(ji,jj) + pu_ice(ji,jj) * pu_ice(ji,jj) ) )497 zvel = MAX( zepsi, SQRT( v_iceU(ji,jj) * v_iceU(ji,jj) + u_ice(ji,jj) * u_ice(ji,jj) ) ) 497 498 zTauB = - tau_icebfr(ji,jj) / zvel 498 499 499 500 ! Coriolis at U-points (energy conserving formulation) 500 501 zCorx(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 501 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * pv_ice(ji ,jj) + e1v(ji ,jj-1) * pv_ice(ji ,jj-1) ) &502 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * pv_ice(ji+1,jj) + e1v(ji+1,jj-1) * pv_ice(ji+1,jj-1) ) )502 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 503 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 503 504 504 505 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io … … 509 510 510 511 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 511 pu_ice(ji,jj) = ( ( rswitch * ( zmU_t(ji,jj) * pu_ice(ji,jj)& ! previous velocity512 & + zTauE + zTauO * pu_ice(ji,jj)& ! F + tau_ia + Coriolis + spg + tau_io(only ocean part)513 & 514 & + ( 1._wp - rswitch ) * pu_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0515 & ) * zswitchU(ji,jj) + u_oce(ji,jj) * ( 1._wp - zswitchU(ji,jj) ) 512 u_ice(ji,jj) = ( ( rswitch * ( zmU_t(ji,jj) * u_ice(ji,jj) & ! previous velocity 513 & + zTauE + zTauO * u_ice(ji,jj) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 514 & ) / MAX( zepsi, zmU_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 515 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0 516 & ) * zswitchU(ji,jj) + u_oce(ji,jj) * ( 1._wp - zswitchU(ji,jj) ) & ! v_ice = v_oce if mass < zmmin 516 517 & ) * zmaskU(ji,jj) 517 518 ! Bouillon 2013 518 !! pu_ice(ji,jj) = ( zmU_t(ji,jj) * ( zbeta * pu_ice(ji,jj) + pu_ice_b(ji,jj) ) &519 !!u_ice(ji,jj) = ( zmU_t(ji,jj) * ( zbeta * u_ice(ji,jj) + u_ice_b(ji,jj) ) & 519 520 !! & + zfU(ji,jj) + zCorx(ji,jj) + zTauU_ia(ji,jj) + zTauO * u_oce(ji,jj) + zspgU(ji,jj) & 520 521 !! & ) / MAX( zmU_t(ji,jj) * ( zbeta + 1._wp ) + zTauO - zTauB, zepsi ) * zswitchU(ji,jj) 521 522 END DO 522 523 END DO 523 CALL lbc_lnk( pu_ice, 'U', -1. )524 CALL lbc_lnk( u_ice, 'U', -1. ) 524 525 ! 525 526 #if defined key_agrif … … 535 536 536 537 ! tau_io/(u_oce - u_ice) 537 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( pu_ice(ji,jj) - u_oce (ji,jj) ) * ( pu_ice(ji,jj) - u_oce (ji,jj) ) &538 zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) ) & 538 539 & + ( v_iceU(ji,jj) - v_oceU(ji,jj) ) * ( v_iceU(ji,jj) - v_oceU(ji,jj) ) ) 539 540 540 541 ! Ocean-to-Ice stress 541 ztaux_oi(ji,jj) = zTauO * ( u_oce(ji,jj) - pu_ice(ji,jj) )542 ztaux_oi(ji,jj) = zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 542 543 543 544 ! tau_bottom/u_ice 544 zvel = MAX( zepsi, SQRT( v_iceU(ji,jj) * v_iceU(ji,jj) + pu_ice(ji,jj) * pu_ice(ji,jj) ) )545 zvel = MAX( zepsi, SQRT( v_iceU(ji,jj) * v_iceU(ji,jj) + u_ice(ji,jj) * u_ice(ji,jj) ) ) 545 546 zTauB = - tau_icebfr(ji,jj) / zvel 546 547 547 548 ! Coriolis at U-points (energy conserving formulation) 548 549 zCorx(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 549 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * pv_ice(ji ,jj) + e1v(ji ,jj-1) * pv_ice(ji ,jj-1) ) &550 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * pv_ice(ji+1,jj) + e1v(ji+1,jj-1) * pv_ice(ji+1,jj-1) ) )550 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 551 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 551 552 552 553 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io … … 557 558 558 559 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 559 pu_ice(ji,jj) = ( ( rswitch * ( zmU_t(ji,jj) * pu_ice(ji,jj)& ! previous velocity560 & + zTauE + zTauO * pu_ice(ji,jj)& ! F + tau_ia + Coriolis + spg + tau_io(only ocean part)561 & 562 & + ( 1._wp - rswitch ) * pu_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0563 & ) * zswitchU(ji,jj) + u_oce(ji,jj) * ( 1._wp - zswitchU(ji,jj) ) 560 u_ice(ji,jj) = ( ( rswitch * ( zmU_t(ji,jj) * u_ice(ji,jj) & ! previous velocity 561 & + zTauE + zTauO * u_ice(ji,jj) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 562 & ) / MAX( zepsi, zmU_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 563 & + ( 1._wp - rswitch ) * u_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0 564 & ) * zswitchU(ji,jj) + u_oce(ji,jj) * ( 1._wp - zswitchU(ji,jj) ) & ! v_ice = v_oce if mass < zmmin 564 565 & ) * zmaskU(ji,jj) 565 566 ! Bouillon 2013 566 !! pu_ice(ji,jj) = ( zmU_t(ji,jj) * ( zbeta * pu_ice(ji,jj) + pu_ice_b(ji,jj) ) &567 !!u_ice(ji,jj) = ( zmU_t(ji,jj) * ( zbeta * u_ice(ji,jj) + u_ice_b(ji,jj) ) & 567 568 !! & + zfU(ji,jj) + zCorx(ji,jj) + zTauU_ia(ji,jj) + zTauO * u_oce(ji,jj) + zspgU(ji,jj) & 568 569 !! & ) / MAX( zmU_t(ji,jj) * ( zbeta + 1._wp ) + zTauO - zTauB, zepsi ) * zswitchU(ji,jj) 569 570 END DO 570 571 END DO 571 CALL lbc_lnk( pu_ice, 'U', -1. )572 CALL lbc_lnk( u_ice, 'U', -1. ) 572 573 ! 573 574 #if defined key_agrif … … 581 582 582 583 ! tau_io/(v_oce - v_ice) 583 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( pv_ice(ji,jj) - v_oce (ji,jj) ) * ( pv_ice(ji,jj) - v_oce (ji,jj) ) &584 zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) ) & 584 585 & + ( u_iceV(ji,jj) - u_oceV(ji,jj) ) * ( u_iceV(ji,jj) - u_oceV(ji,jj) ) ) 585 586 586 587 ! Ocean-to-Ice stress 587 ztauy_oi(ji,jj) = zTauO * ( v_oce(ji,jj) - pv_ice(ji,jj) )588 ztauy_oi(ji,jj) = zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 588 589 589 590 ! tau_bottom/v_ice 590 zvel = MAX( zepsi, SQRT( pv_ice(ji,jj) * pv_ice(ji,jj) + u_iceV(ji,jj) * u_iceV(ji,jj) ) )591 zvel = MAX( zepsi, SQRT( v_ice(ji,jj) * v_ice(ji,jj) + u_iceV(ji,jj) * u_iceV(ji,jj) ) ) 591 592 ztauB = - tau_icebfr(ji,jj) / zvel 592 593 593 594 ! Coriolis at V-points (energy conserving formulation) 594 595 zCory(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 595 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * pu_ice(ji,jj ) + e2u(ji-1,jj ) * pu_ice(ji-1,jj ) ) &596 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * pu_ice(ji,jj+1) + e2u(ji-1,jj+1) * pu_ice(ji-1,jj+1) ) )596 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 597 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 597 598 598 599 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io … … 603 604 604 605 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) 605 pv_ice(ji,jj) = ( ( rswitch * ( zmV_t(ji,jj) * pv_ice(ji,jj)& ! previous velocity606 & + zTauE + zTauO * pv_ice(ji,jj)& ! F + tau_ia + Coriolis + spg + tau_io(only ocean part)607 & 608 & + ( 1._wp - rswitch ) * pv_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0609 & ) * zswitchV(ji,jj) + v_oce(ji,jj) * ( 1._wp - zswitchV(ji,jj) ) 606 v_ice(ji,jj) = ( ( rswitch * ( zmV_t(ji,jj) * v_ice(ji,jj) & ! previous velocity 607 & + zTauE + zTauO * v_ice(ji,jj) & ! F + tau_ia + Coriolis + spg + tau_io(only ocean part) 608 & ) / MAX( zepsi, zmV_t(ji,jj) + zTauO - zTauB ) & ! m/dt + tau_io(only ice part) + landfast 609 & + ( 1._wp - rswitch ) * v_ice(ji,jj) * MAX( 0._wp, 1._wp - zdtevp * rn_lfrelax ) & ! static friction => slow decrease to v=0 610 & ) * zswitchV(ji,jj) + v_oce(ji,jj) * ( 1._wp - zswitchV(ji,jj) ) & ! v_ice = v_oce if mass < zmmin 610 611 & ) * zmaskV(ji,jj) 611 612 ! Bouillon 2013 612 !! pv_ice(ji,jj) = ( zmV_t(ji,jj) * ( zbeta * pv_ice(ji,jj) + pv_ice_b(ji,jj) ) &613 !!v_ice(ji,jj) = ( zmV_t(ji,jj) * ( zbeta * v_ice(ji,jj) + v_ice_b(ji,jj) ) & 613 614 !! & + zfV(ji,jj) + zCory(ji,jj) + zTauV_ia(ji,jj) + zTauO * v_oce(ji,jj) + zspgV(ji,jj) & 614 615 !! & ) / MAX( zmV_t(ji,jj) * ( zbeta + 1._wp ) + zTauO - zTauB, zepsi ) * zswitchV(ji,jj) 615 616 END DO 616 617 END DO 617 CALL lbc_lnk( pv_ice, 'V', -1. )618 CALL lbc_lnk( v_ice, 'V', -1. ) 618 619 ! 619 620 #if defined key_agrif … … 627 628 IF(ln_ctl) THEN ! Convergence test 628 629 DO jj = 2 , jpjm1 629 zresr(:,jj) = MAX( ABS( pu_ice(:,jj) - zu_ice(:,jj) ), ABS( pv_ice(:,jj) - zv_ice(:,jj) ) )630 zresr(:,jj) = MAX( ABS( u_ice(:,jj) - zu_ice(:,jj) ), ABS( v_ice(:,jj) - zv_ice(:,jj) ) ) 630 631 END DO 631 632 zresm = MAXVAL( zresr( 1:jpi, 2:jpjm1 ) ) … … 644 645 645 646 ! shear at F points 646 zds(ji,jj) = ( ( pu_ice(ji,jj+1) * r1_e1u(ji,jj+1) - pu_ice(ji,jj) * r1_e1u(ji,jj) ) * e1f(ji,jj) * e1f(ji,jj) &647 & + ( pv_ice(ji+1,jj) * r1_e2v(ji+1,jj) - pv_ice(ji,jj) * r1_e2v(ji,jj) ) * e2f(ji,jj) * e2f(ji,jj) &647 zds(ji,jj) = ( ( u_ice(ji,jj+1) * r1_e1u(ji,jj+1) - u_ice(ji,jj) * r1_e1u(ji,jj) ) * e1f(ji,jj) * e1f(ji,jj) & 648 & + ( v_ice(ji+1,jj) * r1_e2v(ji+1,jj) - v_ice(ji,jj) * r1_e2v(ji,jj) ) * e2f(ji,jj) * e2f(ji,jj) & 648 649 & ) * r1_e1e2f(ji,jj) * zfmask(ji,jj) 649 650 … … 656 657 657 658 ! tension**2 at T points 658 zdt = ( ( pu_ice(ji,jj) * r1_e2u(ji,jj) - pu_ice(ji-1,jj) * r1_e2u(ji-1,jj) ) * e2t(ji,jj) * e2t(ji,jj) &659 & - ( pv_ice(ji,jj) * r1_e1v(ji,jj) - pv_ice(ji,jj-1) * r1_e1v(ji,jj-1) ) * e1t(ji,jj) * e1t(ji,jj) &659 zdt = ( ( u_ice(ji,jj) * r1_e2u(ji,jj) - u_ice(ji-1,jj) * r1_e2u(ji-1,jj) ) * e2t(ji,jj) * e2t(ji,jj) & 660 & - ( v_ice(ji,jj) * r1_e1v(ji,jj) - v_ice(ji,jj-1) * r1_e1v(ji,jj-1) ) * e1t(ji,jj) * e1t(ji,jj) & 660 661 & ) * r1_e1e2t(ji,jj) 661 662 zdt2 = zdt * zdt … … 670 671 671 672 ! divergence at T points 672 pdivu_i(ji,jj) = ( e2u(ji,jj) * pu_ice(ji,jj) - e2u(ji-1,jj) * pu_ice(ji-1,jj) &673 & + e1v(ji,jj) * pv_ice(ji,jj) - e1v(ji,jj-1) * pv_ice(ji,jj-1) &673 pdivu_i(ji,jj) = ( e2u(ji,jj) * u_ice(ji,jj) - e2u(ji-1,jj) * u_ice(ji-1,jj) & 674 & + e1v(ji,jj) * v_ice(ji,jj) - e1v(ji,jj-1) * v_ice(ji,jj-1) & 674 675 & ) * r1_e1e2t(ji,jj) 675 676 … … 769 770 770 771 ! 2D ice mass, snow mass, area transport arrays (X, Y) 771 zfac_x = 0.5 * pu_ice(ji,jj) * e2u(ji,jj) * rswitch772 zfac_y = 0.5 * pv_ice(ji,jj) * e1v(ji,jj) * rswitch772 zfac_x = 0.5 * u_ice(ji,jj) * e2u(ji,jj) * rswitch 773 zfac_y = 0.5 * v_ice(ji,jj) * e1v(ji,jj) * rswitch 773 774 774 775 zdiag_xmtrp_ice(ji,jj) = rhoic * zfac_x * ( vt_i(ji+1,jj) + vt_i(ji,jj) ) ! ice mass transport, X-component
Note: See TracChangeset
for help on using the changeset viewer.