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 6060 for branches/2015/dev_merge_2015/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90 – NEMO

Ignore:
Timestamp:
2015-12-16T10:25:22+01:00 (8 years ago)
Author:
timgraham
Message:

Merged dev_r5836_noc2_VVL_BY_DEFAULT into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r5930 r6060  
    2525   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2626   !!---------------------------------------------------------------------- 
    27  
    2827CONTAINS 
    2928 
     
    6665      ! 
    6766   END SUBROUTINE Agrif_Update_Tra 
     67 
    6868 
    6969   RECURSIVE SUBROUTINE Agrif_Update_Dyn( ) 
     
    150150 
    151151# if defined key_zdftke 
     152 
    152153   SUBROUTINE Agrif_Update_Tke( kt ) 
    153154      !!--------------------------------------------- 
     
    172173       
    173174   END SUBROUTINE Agrif_Update_Tke 
     175    
    174176# endif /* key_zdftke */ 
    175177 
     
    178180      !!           *** ROUTINE updateT *** 
    179181      !!--------------------------------------------- 
    180 #  include "domzgr_substitute.h90" 
    181182      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 
    182183      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 
     
    228229   END SUBROUTINE updateTS 
    229230 
     231 
    230232   SUBROUTINE updateu( tabres, i1, i2, j1, j2, k1, k2, before ) 
    231233      !!--------------------------------------------- 
    232234      !!           *** ROUTINE updateu *** 
    233235      !!--------------------------------------------- 
    234 #  include "domzgr_substitute.h90" 
    235       !! 
    236       INTEGER, INTENT(in) :: i1, i2, j1, j2, k1, k2 
     236      INTEGER                               , INTENT(in   ) :: i1, i2, j1, j2, k1, k2 
    237237      REAL(wp), DIMENSION(i1:i2,j1:j2,k1:k2), INTENT(inout) :: tabres 
    238       LOGICAL, INTENT(in) :: before 
    239       !!  
    240       INTEGER :: ji, jj, jk 
    241       REAL(wp) :: zrhoy 
    242       !!--------------------------------------------- 
    243       !  
    244       IF (before) THEN 
     238      LOGICAL                               , INTENT(in   ) :: before 
     239      ! 
     240      INTEGER  ::  ji, jj, jk 
     241      REAL(wp) ::   zrhoy 
     242      !!--------------------------------------------- 
     243      !  
     244      IF( before ) THEN 
    245245         zrhoy = Agrif_Rhoy() 
     246         DO jk = k1, k2 
     247            tabres(i1:i2,j1:j2,jk) = zrhoy * e2u(i1:i2,j1:j2) * e3u_n(i1:i2,j1:j2,jk) * un(i1:i2,j1:j2,jk) 
     248         END DO 
     249      ELSE 
    246250         DO jk=k1,k2 
    247251            DO jj=j1,j2 
    248252               DO ji=i1,i2 
    249                   tabres(ji,jj,jk) = e2u(ji,jj) * un(ji,jj,jk) 
    250                   tabres(ji,jj,jk) = tabres(ji,jj,jk) * fse3u_n(ji,jj,jk) 
    251                END DO 
    252             END DO 
    253          END DO 
    254          tabres = zrhoy * tabres 
    255       ELSE 
    256          DO jk=k1,k2 
    257             DO jj=j1,j2 
    258                DO ji=i1,i2 
    259                   tabres(ji,jj,jk) = tabres(ji,jj,jk) / e2u(ji,jj) / fse3u_n(ji,jj,jk) 
     253                  tabres(ji,jj,jk) = tabres(ji,jj,jk) * r1_e2u(ji,jj) / e3u_n(ji,jj,jk) 
    260254                  ! 
    261255                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     
    272266   END SUBROUTINE updateu 
    273267 
     268 
    274269   SUBROUTINE updatev( tabres, i1, i2, j1, j2, k1, k2, before ) 
    275270      !!--------------------------------------------- 
    276271      !!           *** ROUTINE updatev *** 
    277272      !!--------------------------------------------- 
    278 #  include "domzgr_substitute.h90" 
    279       !! 
    280273      INTEGER :: i1,i2,j1,j2,k1,k2 
    281274      INTEGER :: ji,jj,jk 
     
    291284            DO jj=j1,j2 
    292285               DO ji=i1,i2 
    293                   tabres(ji,jj,jk) = e1v(ji,jj) * vn(ji,jj,jk) 
    294                   tabres(ji,jj,jk) = tabres(ji,jj,jk) * fse3v_n(ji,jj,jk) 
    295                END DO 
    296             END DO 
    297          END DO 
    298          tabres = zrhox * tabres 
     286                  tabres(ji,jj,jk) = zrhox * e1v(ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk) 
     287               END DO 
     288            END DO 
     289         END DO 
    299290      ELSE 
    300291         DO jk=k1,k2 
    301292            DO jj=j1,j2 
    302293               DO ji=i1,i2 
    303                   tabres(ji,jj,jk) = tabres(ji,jj,jk) / e1v(ji,jj) / fse3v_n(ji,jj,jk) 
     294                  tabres(ji,jj,jk) = tabres(ji,jj,jk) * r1_e1v(ji,jj) / e3v_n(ji,jj,jk) 
    304295                  ! 
    305296                  IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN ! Add asselin part 
     
    316307   END SUBROUTINE updatev 
    317308 
     309 
    318310   SUBROUTINE updateu2d( tabres, i1, i2, j1, j2, before ) 
    319311      !!--------------------------------------------- 
    320312      !!          *** ROUTINE updateu2d *** 
    321313      !!--------------------------------------------- 
    322 #  include "domzgr_substitute.h90" 
    323       !! 
    324314      INTEGER, INTENT(in) :: i1, i2, j1, j2 
    325315      REAL(wp), DIMENSION(i1:i2,j1:j2), INTENT(inout) :: tabres 
     
    335325         DO jj=j1,j2 
    336326            DO ji=i1,i2 
    337                tabres(ji,jj) = un_b(ji,jj) * hu(ji,jj) * e2u(ji,jj) 
    338             END DO 
    339          END DO 
    340          tabres = zrhoy * tabres 
    341       ELSE 
    342          DO jj=j1,j2 
    343             DO ji=i1,i2 
    344                tabres(ji,jj) =  tabres(ji,jj) * hur(ji,jj) / e2u(ji,jj)   
     327               tabres(ji,jj) = zrhoy * un_b(ji,jj) * hu_n(ji,jj) * e2u(ji,jj) 
     328            END DO 
     329         END DO 
     330      ELSE 
     331         DO jj=j1,j2 
     332            DO ji=i1,i2 
     333               tabres(ji,jj) =  tabres(ji,jj) * r1_hu_n(ji,jj) * r1_e2u(ji,jj)   
    345334               !     
    346335               ! Update "now" 3d velocities: 
    347                spgu(ji,jj) = 0.e0 
     336               spgu(ji,jj) = 0._wp 
    348337               DO jk=1,jpkm1 
    349                   spgu(ji,jj) = spgu(ji,jj) + fse3u_n(ji,jj,jk) * un(ji,jj,jk) 
    350                END DO 
    351                spgu(ji,jj) = spgu(ji,jj) * hur(ji,jj) 
     338                  spgu(ji,jj) = spgu(ji,jj) + e3u_n(ji,jj,jk) * un(ji,jj,jk) 
     339               END DO 
     340               spgu(ji,jj) = spgu(ji,jj) * r1_hu_n(ji,jj) 
    352341               ! 
    353342               zcorr = tabres(ji,jj) - spgu(ji,jj) 
     
    368357               spgu(ji,jj) = 0.e0 
    369358               DO jk=1,jpkm1 
    370                   spgu(ji,jj) = spgu(ji,jj) + fse3u_b(ji,jj,jk) * ub(ji,jj,jk) 
    371                END DO 
    372                spgu(ji,jj) = spgu(ji,jj) * hur_b(ji,jj) 
     359                  spgu(ji,jj) = spgu(ji,jj) + e3u_b(ji,jj,jk) * ub(ji,jj,jk) 
     360               END DO 
     361               spgu(ji,jj) = spgu(ji,jj) * r1_hu_b(ji,jj) 
    373362               ! 
    374363               zcorr = ub_b(ji,jj) - spgu(ji,jj) 
     
    382371      ! 
    383372   END SUBROUTINE updateu2d 
     373 
    384374 
    385375   SUBROUTINE updatev2d( tabres, i1, i2, j1, j2, before ) 
     
    400390         DO jj=j1,j2 
    401391            DO ji=i1,i2 
    402                tabres(ji,jj) = vn_b(ji,jj) * hv(ji,jj) * e1v(ji,jj)  
    403             END DO 
    404          END DO 
    405          tabres = zrhox * tabres 
    406       ELSE 
    407          DO jj=j1,j2 
    408             DO ji=i1,i2 
    409                tabres(ji,jj) =  tabres(ji,jj) * hvr(ji,jj) / e1v(ji,jj)   
     392               tabres(ji,jj) = zrhox * vn_b(ji,jj) * hv_n(ji,jj) * e1v(ji,jj)  
     393            END DO 
     394         END DO 
     395      ELSE 
     396         DO jj=j1,j2 
     397            DO ji=i1,i2 
     398               tabres(ji,jj) =  tabres(ji,jj) * r1_hv_n(ji,jj) * r1_e1v(ji,jj)   
    410399               !     
    411400               ! Update "now" 3d velocities: 
    412401               spgv(ji,jj) = 0.e0 
    413402               DO jk=1,jpkm1 
    414                   spgv(ji,jj) = spgv(ji,jj) + fse3v_n(ji,jj,jk) * vn(ji,jj,jk) 
    415                END DO 
    416                spgv(ji,jj) = spgv(ji,jj) * hvr(ji,jj) 
     403                  spgv(ji,jj) = spgv(ji,jj) + e3v_n(ji,jj,jk) * vn(ji,jj,jk) 
     404               END DO 
     405               spgv(ji,jj) = spgv(ji,jj) * r1_hv_n(ji,jj) 
    417406               ! 
    418407               zcorr = tabres(ji,jj) - spgv(ji,jj) 
     
    433422               spgv(ji,jj) = 0.e0 
    434423               DO jk=1,jpkm1 
    435                   spgv(ji,jj) = spgv(ji,jj) + fse3v_b(ji,jj,jk) * vb(ji,jj,jk) 
    436                END DO 
    437                spgv(ji,jj) = spgv(ji,jj) * hvr_b(ji,jj) 
     424                  spgv(ji,jj) = spgv(ji,jj) + e3v_b(ji,jj,jk) * vb(ji,jj,jk) 
     425               END DO 
     426               spgv(ji,jj) = spgv(ji,jj) * r1_hv_b(ji,jj) 
    438427               ! 
    439428               zcorr = vb_b(ji,jj) - spgv(ji,jj) 
     
    467456         END DO 
    468457      ELSE 
    469          IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 
     458         IF( .NOT.ln_dynspg_ts .OR. ( ln_dynspg_ts .AND. .NOT.ln_bt_fw ) ) THEN 
    470459            IF (.NOT.(lk_agrif_fstep.AND.(neuler==0))) THEN 
    471460               DO jj=j1,j2 
     
    477466            ENDIF 
    478467         ENDIF 
    479  
     468         ! 
    480469         DO jj=j1,j2 
    481470            DO ji=i1,i2 
     
    486475      ! 
    487476   END SUBROUTINE updateSSH 
     477 
    488478 
    489479   SUBROUTINE updateub2b( tabres, i1, i2, j1, j2, before ) 
     
    517507   END SUBROUTINE updateub2b 
    518508 
     509 
    519510   SUBROUTINE updatevb2b( tabres, i1, i2, j1, j2, before ) 
    520511      !!--------------------------------------------- 
     
    553544      !!           *** ROUTINE updateT *** 
    554545      !!--------------------------------------------- 
    555 #  include "domzgr_substitute.h90" 
    556  
    557546      INTEGER, INTENT(in) :: i1,i2,j1,j2,k1,k2,n1,n2 
    558547      REAL(wp),DIMENSION(i1:i2,j1:j2,k1:k2,n1:n2), INTENT(inout) :: tabres 
    559548      LOGICAL, iNTENT(in) :: before 
    560  
     549      ! 
    561550      INTEGER :: ji,jj,jk 
    562551      REAL(wp) :: ztemp 
     552      !!--------------------------------------------- 
    563553 
    564554      IF (before) THEN 
     
    598588 
    599589# if defined key_zdftke 
     590 
    600591   SUBROUTINE updateEN( ptab, i1, i2, j1, j2, k1, k2, before ) 
    601592      !!--------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.