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 5777 for branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90 – NEMO

Ignore:
Timestamp:
2015-10-06T13:40:42+02:00 (9 years ago)
Author:
gm
Message:

#1593: LDF-ADV, III. Phasing of the improvements/simplifications of ADV & LDF momentum trends (see wiki page)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5721_CNRS9_NOC3_LDF/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r5770 r5777  
    4040   PUBLIC   tra_ldf_init   ! called by nemogcm.F90  
    4141   ! 
    42    INTEGER ::   nldf = 0   ! type of lateral diffusion used defined from ln_traldf_... namlist logicals) 
     42   INTEGER ::   nldf = 0   ! type of lateral diffusion used defined from ln_traldf_... (namlist logicals) 
    4343    
    4444   !! * Substitutions 
     
    7575      CASE ( np_lap   )                                  ! laplacian: iso-level operator 
    7676         CALL tra_ldf_lap  ( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb,      tsa, jpts,  1   ) 
    77          ! 
    7877      CASE ( np_lap_i )                                  ! laplacian: standard iso-neutral operator (Madec) 
    7978         CALL tra_ldf_iso  ( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb, tsb, tsa, jpts,  1   ) 
    80          ! 
    8179      CASE ( np_lap_it )                                 ! laplacian: triad iso-neutral operator (griffies) 
    8280         CALL tra_ldf_triad( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb, tsb, tsa, jpts,  1   ) 
    83          ! 
    8481      CASE ( np_blp , np_blp_i , np_blp_it )             ! bilaplacian: iso-level & iso-neutral operators 
    8582         CALL tra_ldf_blp  ( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb      , tsa, jpts, nldf ) 
     
    121118         WRITE(numout,*) 
    122119      ENDIF 
    123       !                                ! control the input 
     120      !                                   ! use of lateral operator or not 
     121      nldf   = np_ERROR 
    124122      ioptio = 0 
    125123      IF( ln_traldf_lap )   ioptio = ioptio + 1 
     
    127125      IF( ioptio >  1   )   CALL ctl_stop( 'tra_ldf_init: use ONE or NONE of the 2 lap/bilap operator type on tracer' ) 
    128126      IF( ioptio == 0   )   nldf = np_no_ldf     ! No lateral diffusion 
    129       ioptio = 0 
    130       IF( ln_traldf_lev )   ioptio = ioptio + 1 
    131       IF( ln_traldf_hor )   ioptio = ioptio + 1 
    132       IF( ln_traldf_iso )   ioptio = ioptio + 1 
    133       IF( ioptio >  1 )   CALL ctl_stop( 'tra_ldf_init: use only ONE direction (level/hor/iso)' ) 
    134       ! 
    135       !                                ! defined the type of lateral diffusion from ln_traldf_... logicals 
    136       ierr = 0 
    137       IF( ln_traldf_lap ) THEN         ! laplacian operator 
    138          IF ( ln_zco ) THEN               ! z-coordinate 
    139             IF ( ln_traldf_lev   )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
    140             IF ( ln_traldf_hor   )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
    141             IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard  (   rotation) 
    142             IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad     (   rotation) 
     127      ! 
     128      IF( nldf /= np_no_ldf ) THEN        ! direction ==>> type of operator   
     129         ioptio = 0 
     130         IF( ln_traldf_lev )   ioptio = ioptio + 1 
     131         IF( ln_traldf_hor )   ioptio = ioptio + 1 
     132         IF( ln_traldf_iso )   ioptio = ioptio + 1 
     133         IF( ioptio >  1 )   CALL ctl_stop( 'tra_ldf_init: use only ONE direction (level/hor/iso)' ) 
     134         ! 
     135         !                                ! defined the type of lateral diffusion from ln_traldf_... logicals 
     136         ierr = 0 
     137         IF( ln_traldf_lap ) THEN         ! laplacian operator 
     138            IF ( ln_zco ) THEN               ! z-coordinate 
     139               IF ( ln_traldf_lev   )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
     140               IF ( ln_traldf_hor   )   nldf = np_lap     ! iso-level = horizontal (no rotation) 
     141               IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard  (   rotation) 
     142               IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad     (   rotation) 
     143            ENDIF 
     144            IF ( ln_zps ) THEN               ! z-coordinate with partial step 
     145               IF ( ln_traldf_lev   )   ierr = 1          ! iso-level not allowed  
     146               IF ( ln_traldf_hor   )   nldf = np_lap     ! horizontal             (no rotation) 
     147               IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard     (rotation) 
     148               IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad        (rotation) 
     149            ENDIF 
     150            IF ( ln_sco ) THEN               ! s-coordinate 
     151               IF ( ln_traldf_lev   )   nldf = np_lap     ! iso-level              (no rotation) 
     152               IF ( ln_traldf_hor   )   nldf = np_lap_i   ! horizontal             (   rotation) 
     153               IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard  (   rotation) 
     154               IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad     (   rotation) 
     155            ENDIF 
    143156         ENDIF 
    144          IF ( ln_zps ) THEN               ! z-coordinate with partial step 
    145             IF ( ln_traldf_lev   )   ierr = 1          ! iso-level not allowed  
    146             IF ( ln_traldf_hor   )   nldf = np_lap     ! horizontal             (no rotation) 
    147             IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard     (rotation) 
    148             IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad        (rotation) 
    149          ENDIF 
    150          IF ( ln_sco ) THEN               ! s-coordinate 
    151             IF ( ln_traldf_lev   )   nldf = np_lap     ! iso-level              (no rotation) 
    152             IF ( ln_traldf_hor   )   nldf = np_lap_i   ! horizontal             (   rotation) 
    153             IF ( ln_traldf_iso   )   nldf = np_lap_i   ! iso-neutral: standard  (   rotation) 
    154             IF ( ln_traldf_triad )   nldf = np_lap_it  ! iso-neutral: triad     (   rotation) 
    155          ENDIF 
    156       ENDIF 
    157       ! 
    158       IF( ln_traldf_blp ) THEN         ! bilaplacian operator 
    159          IF ( ln_zco ) THEN               ! z-coordinate 
    160             IF ( ln_traldf_lev   )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
    161             IF ( ln_traldf_hor   )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
    162             IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
    163             IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
    164          ENDIF 
    165          IF ( ln_zps ) THEN               ! z-coordinate with partial step 
    166             IF ( ln_traldf_lev   )   ierr = 1          ! iso-level not allowed  
    167             IF ( ln_traldf_hor   )   nldf = np_blp     ! horizontal             (no rotation) 
    168             IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
    169             IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
    170          ENDIF 
    171          IF ( ln_sco ) THEN               ! s-coordinate 
    172             IF ( ln_traldf_lev   )   nldf = np_blp     ! iso-level              (no rotation) 
    173             IF ( ln_traldf_hor   )   nldf = np_blp_it  ! horizontal             (   rotation) 
    174             IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
    175             IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
     157         ! 
     158         IF( ln_traldf_blp ) THEN         ! bilaplacian operator 
     159            IF ( ln_zco ) THEN               ! z-coordinate 
     160               IF ( ln_traldf_lev   )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
     161               IF ( ln_traldf_hor   )   nldf = np_blp     ! iso-level = horizontal (no rotation) 
     162               IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
     163               IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
     164            ENDIF 
     165            IF ( ln_zps ) THEN               ! z-coordinate with partial step 
     166               IF ( ln_traldf_lev   )   ierr = 1          ! iso-level not allowed  
     167               IF ( ln_traldf_hor   )   nldf = np_blp     ! horizontal             (no rotation) 
     168               IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
     169               IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
     170            ENDIF 
     171            IF ( ln_sco ) THEN               ! s-coordinate 
     172               IF ( ln_traldf_lev   )   nldf = np_blp     ! iso-level              (no rotation) 
     173               IF ( ln_traldf_hor   )   nldf = np_blp_it  ! horizontal             (   rotation) 
     174               IF ( ln_traldf_iso   )   nldf = np_blp_i   ! iso-neutral: standard  (   rotation) 
     175               IF ( ln_traldf_triad )   nldf = np_blp_it  ! iso-neutral: triad     (   rotation) 
     176            ENDIF 
    176177         ENDIF 
    177178      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.