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 5260 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2015-05-12T12:37:15+02:00 (9 years ago)
Author:
deazer
Message:

Merged branch with Trunk at revision 5253.
Checked with SETTE, passes modified iodef.xml for AMM12 experiment

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r4756 r5260  
    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 
     
    4041   USE timing          ! Timing     
    4142   USE sbcapr          ! surface boundary condition: atmospheric pressure 
     43   USE diatmb          ! Top,middle,bottom output 
    4244   USE dynadv, ONLY: ln_dynadv_vec 
    4345#if defined key_agrif 
    4446   USE agrif_opa_interp ! agrif 
    4547#endif 
    46    USE diatmb          ! Top,middle,bottom output 
     48#if defined key_asminc    
     49   USE asminc          ! Assimilation increment 
     50#endif 
    4751 
    4852 
     
    7781   !!---------------------------------------------------------------------- 
    7882   !! NEMO/OPA 3.5 , NEMO Consortium (2013) 
    79    !! $Id: dynspg_ts.F90 
     83   !! $Id$ 
    8084   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    8185   !!---------------------------------------------------------------------- 
     
    96100      ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT= ierr(2) ) 
    97101 
    98       IF( ln_dynvor_een ) ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
    99                              &      ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(3) ) 
     102      IF( ln_dynvor_een .or. ln_dynvor_een_old ) ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
     103                                                    &      ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(3) ) 
    100104 
    101105      dyn_spg_ts_alloc = MAXVAL(ierr(:)) 
     
    219223      ! 
    220224      IF ( kt == nit000 .OR. lk_vvl ) THEN 
    221          IF ( ln_dynvor_een ) THEN 
     225         IF ( ln_dynvor_een_old ) THEN 
     226            DO jj = 1, jpjm1 
     227               DO ji = 1, jpim1 
     228                  zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                    & 
     229                        &          ht(ji  ,jj  ) + ht(ji+1,jj  )   ) / 4._wp   
     230                  IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zwz(ji,jj) 
     231               END DO 
     232            END DO 
     233            CALL lbc_lnk( zwz, 'F', 1._wp ) 
     234            zwz(:,:) = ff(:,:) * zwz(:,:) 
     235 
     236            ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp 
     237            DO jj = 2, jpj 
     238               DO ji = fs_2, jpi   ! vector opt. 
     239                  ftne(ji,jj) = zwz(ji-1,jj  ) + zwz(ji  ,jj  ) + zwz(ji  ,jj-1) 
     240                  ftnw(ji,jj) = zwz(ji-1,jj-1) + zwz(ji-1,jj  ) + zwz(ji  ,jj  ) 
     241                  ftse(ji,jj) = zwz(ji  ,jj  ) + zwz(ji  ,jj-1) + zwz(ji-1,jj-1) 
     242                  ftsw(ji,jj) = zwz(ji  ,jj-1) + zwz(ji-1,jj-1) + zwz(ji-1,jj  ) 
     243               END DO 
     244            END DO 
     245         ELSE IF ( ln_dynvor_een ) THEN 
    222246            DO jj = 1, jpjm1 
    223247               DO ji = 1, jpim1 
     
    293317      ! 
    294318      DO jk = 1, jpkm1 
    295 #if defined key_vectopt_loop 
    296          DO jj = 1, 1         !Vector opt. => forced unrolling 
    297             DO ji = 1, jpij 
    298 #else  
    299          DO jj = 1, jpj 
    300             DO ji = 1, jpi 
    301 #endif                                                                    
    302                zu_frc(ji,jj) = zu_frc(ji,jj) + fse3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
    303                zv_frc(ji,jj) = zv_frc(ji,jj) + fse3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk)          
    304             END DO 
    305          END DO 
     319         zu_frc(:,:) = zu_frc(:,:) + fse3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
     320         zv_frc(:,:) = zv_frc(:,:) + fse3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)          
    306321      END DO 
    307322      ! 
     
    349364         END DO 
    350365         ! 
    351       ELSEIF ( ln_dynvor_een ) THEN                    ! enstrophy and energy conserving scheme 
     366      ELSEIF ( ln_dynvor_een .or. ln_dynvor_een_old ) THEN  ! enstrophy and energy conserving scheme 
    352367         DO jj = 2, jpjm1 
    353368            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    443458      !                                         ! Surface net water flux and rivers 
    444459      IF (ln_bt_fw) THEN 
    445          zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) ) 
     460         zssh_frc(:,:) = zraur * ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) ) 
    446461      ELSE 
    447          zssh_frc(:,:) = zraur * z1_2 * (emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)) 
     462         zssh_frc(:,:) = zraur * z1_2 * (  emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:)   & 
     463                &                        + rdivisf * ( fwfisf(:,:) + fwfisf_b(:,:) )       ) 
    448464      ENDIF 
    449465#if defined key_asminc 
     
    467483      !                                             ! ==================== !   
    468484      ! Initialize barotropic variables:       
     485      IF( ll_init )THEN 
     486         sshbb_e(:,:) = 0._wp 
     487         ubb_e  (:,:) = 0._wp 
     488         vbb_e  (:,:) = 0._wp 
     489         sshb_e (:,:) = 0._wp 
     490         ub_e   (:,:) = 0._wp 
     491         vb_e   (:,:) = 0._wp 
     492      ENDIF 
     493      ! 
    469494      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    470495         sshn_e(:,:) = sshn (:,:)             
     
    688713            END DO 
    689714            ! 
    690          ELSEIF ( ln_dynvor_een ) THEN                    !==  energy and enstrophy conserving scheme  ==! 
     715         ELSEIF ( ln_dynvor_een .or. ln_dynvor_een_old ) THEN !==  energy and enstrophy conserving scheme  ==! 
    691716            DO jj = 2, jpjm1 
    692717               DO ji = fs_2, fs_jpim1   ! vector opt. 
Note: See TracChangeset for help on using the changeset viewer.