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 911 for trunk/NEMO/OPA_SRC/DYN/dynnxt.F90 – NEMO

Ignore:
Timestamp:
2008-04-28T11:31:32+02:00 (16 years ago)
Author:
ctlod
Message:

Implementation of the BDY package, see ticket: #126

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynnxt.F90

    r782 r911  
    1616   USE obcdyn_bt       ! 2D open boundary condition for momentum (obc_dyn_bt routine) 
    1717   USE obcvol          ! ocean open boundary condition (obc_vol routines) 
     18   USE bdy_oce         ! unstructured open boundary conditions 
     19   USE bdydta          ! unstructured open boundary conditions 
     20   USE bdydyn          ! unstructured open boundary conditions 
    1821   USE dynspg_oce      ! type of surface pressure gradient 
    1922   USE lbclnk          ! lateral boundary condition (or mpp link) 
     
    6669      !!        !  02-10  (C. Talandier, A-M. Treguier) Open boundary cond. 
    6770      !!   9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
     71      !!    "   !  07-07  (D. Storkey) Calls to BDY routines.  
    6872      !!---------------------------------------------------------------------- 
    6973      !! * Arguments 
     
    186190            END DO 
    187191         END DO 
     192 
     193         IF( lk_vvl ) THEN 
     194            ! Unweight velocities prior to updating open boundaries. 
     195 
     196            DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop 
     197               DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
     198                  ua(ji,jj,jk) = ua(ji,jj,jk) / fse3u(ji,jj,jk) 
     199                  va(ji,jj,jk) = va(ji,jj,jk) / fse3v(ji,jj,jk) 
     200 
     201                  un(ji,jj,jk) = un(ji,jj,jk) / fse3u(ji,jj,jk) 
     202                  vn(ji,jj,jk) = vn(ji,jj,jk) / fse3v(ji,jj,jk) 
     203 
     204                  ub(ji,jj,jk) = ub(ji,jj,jk) / zfse3ub(ji,jj,jk) 
     205                  vb(ji,jj,jk) = vb(ji,jj,jk) / zfse3vb(ji,jj,jk) 
     206               END DO 
     207            END DO 
     208 
     209         ENDIF 
     210 
    188211# if defined key_obc 
    189212         !                                             ! =============== 
     
    209232 
    210233         IF ( ln_vol_cst ) CALL obc_vol( kt ) 
     234 
     235      ENDIF 
     236 
     237      !                                                ! =============== 
     238      DO jk = 1, jpkm1                                 ! Horizontal slab 
     239         !                                             ! =============== 
     240# elif defined key_bdy || key_bdy_tides 
     241         !                                             ! =============== 
     242      END DO                                           !   End of slab 
     243      !                                                ! =============== 
     244      ! Update (ua,va) along open boundaries (for exp or ts options). 
     245      IF ( lk_dynspg_exp .or. lk_dynspg_ts ) THEN 
     246   
     247         CALL bdy_dyn_frs( kt ) 
     248 
     249         IF ( ln_bdy_fla ) THEN 
     250 
     251            ua_e(:,:)=0.0 
     252            va_e(:,:)=0.0 
     253 
     254            ! Set these variables for use in bdy_dyn_fla 
     255            hu_e(:,:) = hu(:,:) 
     256            hv_e(:,:) = hv(:,:) 
     257 
     258            DO jk = 1, jpkm1 
     259               !! Vertically integrated momentum trends 
     260               ua_e(:,:) = ua_e(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 
     261               va_e(:,:) = va_e(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 
     262            END DO 
     263 
     264            DO jk = 1 , jpkm1 
     265               ua(:,:,jk) = ua(:,:,jk) - ua_e(:,:) * hur(:,:) 
     266               va(:,:,jk) = va(:,:,jk) - va_e(:,:) * hvr(:,:) 
     267            END DO 
     268 
     269            CALL bdy_dta_bt( kt+1, 0) 
     270            CALL bdy_dyn_fla 
     271 
     272         ENDIF 
     273 
     274         DO jk = 1 , jpkm1 
     275            ua(:,:,jk) = ua(:,:,jk) + ua_e(:,:) * hur(:,:) 
     276            va(:,:,jk) = va(:,:,jk) + va_e(:,:) * hvr(:,:) 
     277         END DO 
    211278 
    212279      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.