- Timestamp:
- 2016-12-15T20:41:18+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r6964 r7506 124 124 REAL(wp) :: zm1, zm2, zm3, zmassU, zmassV ! ice/snow mass 125 125 REAL(wp) :: zdelta, zp_delf, zds2, zdt, zdt2, zdiv, zdiv2 ! temporary scalars 126 REAL(wp) :: zTauO, zTauE , zCor! temporary scalars126 REAL(wp) :: zTauO, zTauE ! temporary scalars 127 127 128 128 REAL(wp) :: zsig1, zsig2 ! internal ice stress … … 148 148 ! ocean surface (ssh_m) if ice is not embedded 149 149 ! ice top surface if ice is embedded 150 REAL(wp), POINTER, DIMENSION(:,:) :: zCor ! Coriolis stress array (SIMIP) 150 151 REAL(wp), POINTER, DIMENSION(:,:) :: zswitchU, zswitchV ! dummy arrays 151 152 REAL(wp), POINTER, DIMENSION(:,:) :: zmaskU, zmaskV ! mask for ice presence … … 162 163 CALL wrk_alloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 163 164 CALL wrk_alloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 165 CALL wrk_alloc( jpi,jpj, zCor) 164 166 165 167 #if defined key_lim2 && ! defined key_lim2_vp … … 325 327 END DO 326 328 END DO 329 327 330 CALL lbc_lnk( zmf, 'T', 1. ) 328 331 ! … … 445 448 446 449 ! Coriolis at V-points (energy conserving formulation) 447 zCor = - 0.25_wp * r1_e2v(ji,jj) * &450 zCor(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 448 451 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 449 452 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 450 453 451 454 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 452 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) )455 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 453 456 454 457 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 460 463 END DO 461 464 CALL lbc_lnk( v_ice, 'V', -1. ) 465 466 ! SIMIP diag 467 IF ( jter .EQ. nn_nevp ) THEN 468 diag_corstry(:,:) = zCor(:,:) 469 ENDIF 462 470 463 471 #if defined key_agrif && defined key_lim2 … … 476 484 477 485 ! Coriolis at U-points (energy conserving formulation) 478 zCor = 0.25_wp * r1_e1u(ji,jj) * &486 zCor(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 479 487 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 480 488 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 481 489 482 490 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 483 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) )491 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 484 492 485 493 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 491 499 END DO 492 500 CALL lbc_lnk( u_ice, 'U', -1. ) 501 IF ( jter .EQ. nn_nevp ) THEN 502 diag_corstrx(:,:) = zCor(:,:) 503 ENDIF 493 504 494 505 #if defined key_agrif && defined key_lim2 … … 509 520 510 521 ! Coriolis at U-points (energy conserving formulation) 511 zCor = 0.25_wp * r1_e1u(ji,jj) * &522 zCor(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 512 523 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 513 524 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 514 525 515 526 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 516 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) )527 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 517 528 518 529 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 540 551 541 552 ! Coriolis at V-points (energy conserving formulation) 542 zCor = - 0.25_wp * r1_e2v(ji,jj) * &553 zCor(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 543 554 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 544 555 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 545 556 546 557 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 547 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) )558 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 548 559 549 560 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 564 575 565 576 ENDIF 566 577 567 578 IF(ln_ctl) THEN ! Convergence test 568 579 DO jj = k_j1+1, k_jpj-1 … … 627 638 stress2_i (:,:) = zs2 (:,:) 628 639 stress12_i(:,:) = zs12(:,:) 640 641 ! SIMIP diagnostic internal stress 642 diag_dssh_dx(:,:) = zspgU(:,:) 643 diag_dssh_dy(:,:) = zspgV(:,:) 644 CALL lbc_lnk( diag_dssh_dx, 'U', -1. ) 645 CALL lbc_lnk( diag_dssh_dy, 'V', -1. ) 646 647 diag_intstrx(:,:) = zfU(:,:) 648 diag_intstry(:,:) = zfV(:,:) 649 CALL lbc_lnk( diag_intstrx, 'U', -1. ) 650 CALL lbc_lnk( diag_intstry, 'V', -1. ) 629 651 630 652 ! … … 670 692 CALL wrk_dealloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 671 693 CALL wrk_dealloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 694 CALL wrk_dealloc( jpi,jpj, zCor ) 672 695 673 696 END SUBROUTINE lim_rhg
Note: See TracChangeset
for help on using the changeset viewer.