New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5602 for branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2015-07-16T13:55:15+02:00 (9 years ago)
Author:
cbricaud
Message:

merge change from trunk rev 5003 to 5519 ( rev where branche 3.6_stable were created )

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r4770 r5602  
    2222   USE dom_oce         ! ocean space and time domain 
    2323   USE sbc_oce         ! surface boundary condition: ocean 
     24   USE sbcisf          ! ice shelf variable (fwfisf) 
    2425   USE dynspg_oce      ! surface pressure gradient variables 
    2526   USE phycst          ! physical constants 
     
    7879   !!---------------------------------------------------------------------- 
    7980   !! NEMO/OPA 3.5 , NEMO Consortium (2013) 
    80    !! $Id: dynspg_ts.F90 
     81   !! $Id$ 
    8182   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    8283   !!---------------------------------------------------------------------- 
     
    9798      ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT= ierr(2) ) 
    9899 
    99       IF( ln_dynvor_een ) ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
    100                              &      ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(3) ) 
     100      IF( ln_dynvor_een .or. ln_dynvor_een_old ) ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
     101                                                    &      ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(3) ) 
    101102 
    102103      dyn_spg_ts_alloc = MAXVAL(ierr(:)) 
     
    218219      ! 
    219220      IF ( kt == nit000 .OR. lk_vvl ) THEN 
    220          IF ( ln_dynvor_een ) THEN 
     221         IF ( ln_dynvor_een_old ) THEN 
     222            DO jj = 1, jpjm1 
     223               DO ji = 1, jpim1 
     224                  zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                    & 
     225                        &          ht(ji  ,jj  ) + ht(ji+1,jj  )   ) / 4._wp   
     226                  IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zwz(ji,jj) 
     227               END DO 
     228            END DO 
     229            CALL lbc_lnk( zwz, 'F', 1._wp ) 
     230            zwz(:,:) = ff(:,:) * zwz(:,:) 
     231 
     232            ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     233            DO jj = 2, jpj 
     234               DO ji = fs_2, jpi   ! vector opt. 
     235                  ftne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
     236                  ftnw(ji,jj) = zwz(ji-1,jj-1) + zwz(ji-1,jj  ) + zwz(ji  ,jj  ) 
     237                  ftse(ji,jj) = zwz(ji  ,jj  ) + zwz(ji  ,jj-1) + zwz(ji-1,jj-1) 
     238                  ftsw(ji,jj) = zwz(ji  ,jj-1) + zwz(ji-1,jj-1) + zwz(ji-1,jj  ) 
     239               END DO 
     240            END DO 
     241         ELSE IF ( ln_dynvor_een ) THEN 
    221242            DO jj = 1, jpjm1 
    222243               DO ji = 1, jpim1 
     
    339360         END DO 
    340361         ! 
    341       ELSEIF ( ln_dynvor_een ) THEN                    ! enstrophy and energy conserving scheme 
     362      ELSEIF ( ln_dynvor_een .or. ln_dynvor_een_old ) THEN  ! enstrophy and energy conserving scheme 
    342363         DO jj = 2, jpjm1 
    343364            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    433454      !                                         ! Surface net water flux and rivers 
    434455      IF (ln_bt_fw) THEN 
    435          zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) ) 
     456         zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) ) 
    436457      ELSE 
    437          zssh_frc(:,:) = zraur * z1_2 * (emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)) 
     458         zssh_frc(:,:) = zraur * z1_2 * (  emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)   & 
     459                &                        + rdivisf * ( fwfisf(:,:) + fwfisf_b(:,:) )       ) 
    438460      ENDIF 
    439461#if defined key_asminc 
    440462      !                                         ! Include the IAU weighted SSH increment 
    441463      IF( lk_asminc .AND. ln_sshinc .AND. ln_asmiau ) THEN 
    442          zssh_frc(:,:) = zssh_frc(:,:) + ssh_iau(:,:) 
     464         zssh_frc(:,:) = zssh_frc(:,:) - ssh_iau(:,:) 
    443465      ENDIF 
    444466#endif 
     
    535557               END DO 
    536558            END DO 
    537             CALL lbc_lnk( zwx, 'U', 1._wp )    ;   CALL lbc_lnk( zwy, 'V', 1._wp ) 
     559            CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp ) 
    538560            ! 
    539561            zhup2_e (:,:) = hu_0(:,:) + zwx(:,:)                ! Ocean depth at U- and V-points 
     
    613635               END DO 
    614636            END DO 
    615             CALL lbc_lnk( zsshu_a, 'U', 1._wp )   ;   CALL lbc_lnk( zsshv_a, 'V', 1._wp ) 
     637            CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) 
    616638         ENDIF    
    617639         !                                  
     
    687709            END DO 
    688710            ! 
    689          ELSEIF ( ln_dynvor_een ) THEN                    !==  energy and enstrophy conserving scheme  ==! 
     711         ELSEIF ( ln_dynvor_een .or. ln_dynvor_een_old ) THEN !==  energy and enstrophy conserving scheme  ==! 
    690712            DO jj = 2, jpjm1 
    691713               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    781803         !                                                 !  ----------------------- 
    782804         ! 
    783          CALL lbc_lnk( ua_e  , 'U', -1._wp )               ! local domain boundaries  
    784          CALL lbc_lnk( va_e  , 'V', -1._wp ) 
     805         CALL lbc_lnk_multi( ua_e, 'U', -1._wp, va_e , 'V', -1._wp ) 
    785806 
    786807#if defined key_bdy   
     
    837858            END DO 
    838859         END DO 
    839          CALL lbc_lnk( zsshu_a, 'U', 1._wp )   ;   CALL lbc_lnk( zsshv_a, 'V', 1._wp ) ! Boundary conditions 
     860         CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    840861      ENDIF 
    841862      ! 
Note: See TracChangeset for help on using the changeset viewer.