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 1708 for trunk/NEMO/OPA_SRC/TRD/trdmod.F90 – NEMO

Ignore:
Timestamp:
2009-11-04T14:24:34+01:00 (15 years ago)
Author:
rblod
Message:

Stability for explicit bottom friction, see ticket #588

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/TRD/trdmod.F90

    r1662 r1708  
    5757      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout ) ::   ptrdy ! Salinity    or V trend 
    5858      !! 
    59       INTEGER ::   ji, ikbu, ikbum1 
    60       INTEGER ::   jj, ikbv, ikbvm1 
     59      INTEGER ::   ji, jj 
    6160      CHARACTER(len=3) ::   ccpas                                  ! number of passage 
    62       REAL(wp) ::   zua, zva                                       ! scalars 
    6361      REAL(wp), DIMENSION(jpi,jpj) ::   ztswu, ztswv               ! 2D workspace 
    6462      REAL(wp), DIMENSION(jpi,jpj) ::   ztbfu, ztbfv               ! 2D workspace 
     
    131129                     ptrdx(ji,jj,1     ) = ptrdx(ji,jj,1     ) - ztswu(ji,jj) 
    132130                     ptrdy(ji,jj,1     ) = ptrdy(ji,jj,1     ) - ztswv(ji,jj) 
    133                      ptrdx(ji,jj,ikbum1) = ptrdx(ji,jj,ikbum1) - ztbfu(ji,jj) 
    134                      ptrdy(ji,jj,ikbvm1) = ptrdy(ji,jj,ikbvm1) - ztbfv(ji,jj) 
    135131                  END DO 
    136132               END DO 
     
    172168                  ztswu(ji,jj) = utau(ji,jj) / ( fse3u(ji,jj,1)*rau0 ) 
    173169                  ztswv(ji,jj) = vtau(ji,jj) / ( fse3v(ji,jj,1)*rau0 ) 
    174                   ! save bottom friction momentum fluxes 
    175                   ikbu   = MIN( mbathy(ji+1,jj  ), mbathy(ji,jj) ) 
    176                   ikbv   = MIN( mbathy(ji  ,jj+1), mbathy(ji,jj) ) 
    177                   ikbum1 = MAX( ikbu-1, 1 ) 
    178                   ikbvm1 = MAX( ikbv-1, 1 ) 
    179                   zua = ua(ji,jj,ikbum1) * r2dt + ub(ji,jj,ikbum1) 
    180                   zva = va(ji,jj,ikbvm1) * r2dt + vb(ji,jj,ikbvm1) 
    181                   ztbfu(ji,jj) = - avmu(ji,jj,ikbu) * zua / ( fse3u(ji,jj,ikbum1)*fse3uw(ji,jj,ikbu) ) 
    182                   ztbfv(ji,jj) = - avmv(ji,jj,ikbv) * zva / ( fse3v(ji,jj,ikbvm1)*fse3vw(ji,jj,ikbv) ) 
    183170                  ! 
    184171                  ptrdx(ji,jj,1     ) = ptrdx(ji,jj,1     ) - ztswu(ji,jj) 
    185                   ptrdx(ji,jj,ikbum1) = ptrdx(ji,jj,ikbum1) - ztbfu(ji,jj) 
    186172                  ptrdy(ji,jj,1     ) = ptrdy(ji,jj,1     ) - ztswv(ji,jj) 
    187                   ptrdy(ji,jj,ikbvm1) = ptrdy(ji,jj,ikbvm1) - ztbfv(ji,jj) 
    188173               END DO 
    189174            END DO 
     
    191176            CALL trd_vor_zint( ptrdx, ptrdy, jpvor_zdf )    
    192177            CALL trd_vor_zint( ztswu, ztswv, jpvor_swf )                               ! Wind stress forcing term 
    193             CALL trd_vor_zint( ztbfu, ztbfv, jpvor_bfr )                               ! Bottom friction term 
     178         CASE ( jpdyn_trd_bfr ) 
     179            CALL trd_vor_zint( ptrdx, ptrdy, jpvor_bfr )                               ! Bottom friction term 
    194180         END SELECT 
    195181         ! 
Note: See TracChangeset for help on using the changeset viewer.