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 3900 for branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90 – NEMO

Ignore:
Timestamp:
2013-05-03T11:51:52+02:00 (11 years ago)
Author:
davestorkey
Message:

First sketch of Orlanski implementation (untested).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3891_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90

    r3294 r3900  
    7676      phur => hur 
    7777      phvr => hvr 
    78       CALL wrk_alloc(jpi,jpj,pu2d,pv2d)  
     78      CALL wrk_alloc(jpi,jpj,pua2d,pva2d)  
     79      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) CALL wrk_alloc(jpi,jpj,pub2d,pvb2d)  
    7980 
    8081      !------------------------------------------------------- 
     
    8283      !------------------------------------------------------- 
    8384 
    84       pu2d(:,:) = 0.e0 
    85       pv2d(:,:) = 0.e0 
     85      ! "After" velocities:  
     86 
     87      pua2d(:,:) = 0.e0 
     88      pva2d(:,:) = 0.e0 
    8689      DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
    87           pu2d(:,:) = pu2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
    88           pv2d(:,:) = pv2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     90          pua2d(:,:) = pua2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
     91          pva2d(:,:) = pva2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
    8992      END DO 
    90       pu2d(:,:) = pu2d(:,:) * phur(:,:) 
    91       pv2d(:,:) = pv2d(:,:) * phvr(:,:) 
     93      pua2d(:,:) = pua2d(:,:) * phur(:,:) 
     94      pva2d(:,:) = pva2d(:,:) * phvr(:,:) 
    9295      DO jk = 1 , jpkm1 
    93          ua(:,:,jk) = ua(:,:,jk) - pu2d(:,:) 
    94          va(:,:,jk) = va(:,:,jk) - pv2d(:,:) 
     96         ua(:,:,jk) = ua(:,:,jk) - pua2d(:,:) 
     97         va(:,:,jk) = va(:,:,jk) - pva2d(:,:) 
    9598      END DO 
     99 
     100      ! "Before" velocities (required for Orlanski condition):  
     101 
     102      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) THEN 
     103         pub2d(:,:) = 0.e0 
     104         pvb2d(:,:) = 0.e0 
     105         DO jk = 1, jpkm1   !! Vertically integrated momentum trends 
     106             pub2d(:,:) = pub2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ub(:,:,jk) 
     107             pvb2d(:,:) = pvb2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * vb(:,:,jk) 
     108         END DO 
     109         pub2d(:,:) = pub2d(:,:) * phur(:,:) 
     110         pvb2d(:,:) = pvb2d(:,:) * phvr(:,:) 
     111         DO jk = 1 , jpkm1 
     112            ub(:,:,jk) = ub(:,:,jk) - pub2d(:,:) 
     113            vb(:,:,jk) = vb(:,:,jk) - pvb2d(:,:) 
     114         END DO 
     115      END IF 
    96116 
    97117      !------------------------------------------------------- 
     
    109129 
    110130      DO jk = 1 , jpkm1 
    111          ua(:,:,jk) = ( ua(:,:,jk) + pu2d(:,:) ) * umask(:,:,jk) 
    112          va(:,:,jk) = ( va(:,:,jk) + pv2d(:,:) ) * vmask(:,:,jk) 
     131         ua(:,:,jk) = ( ua(:,:,jk) + pua2d(:,:) ) * umask(:,:,jk) 
     132         va(:,:,jk) = ( va(:,:,jk) + pva2d(:,:) ) * vmask(:,:,jk) 
    113133      END DO 
     134 
     135      IF ( nn_dyn2d == 3 .or. nn_dyn3d == 3 ) THEN 
     136         DO jk = 1 , jpkm1 
     137            ub(:,:,jk) = ( ub(:,:,jk) + pub2d(:,:) ) * umask(:,:,jk) 
     138            vb(:,:,jk) = ( vb(:,:,jk) + pvb2d(:,:) ) * vmask(:,:,jk) 
     139         END DO 
     140      END IF 
    114141 
    115142      CALL wrk_dealloc(jpi,jpj,pu2d,pv2d)  
Note: See TracChangeset for help on using the changeset viewer.