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 2207 for branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/DYN/dynldf.F90 – NEMO

Ignore:
Timestamp:
2010-10-11T18:51:54+02:00 (14 years ago)
Author:
acc
Message:

#733 DEV_r2191_3partymerge2010. Merged in changes from devukmo2010 branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/DYN/dynldf.F90

    r1152 r2207  
    3232   PUBLIC   dyn_ldf   ! called by step module  
    3333 
    34    INTEGER ::   nldf = 0   ! type of lateral diffusion used defined from ln_dynldf_... namlist logicals) 
     34   INTEGER ::   nldf = -2   ! type of lateral diffusion used defined from ln_dynldf_... namlist logicals) 
    3535 
    3636   !! * Substitutions 
     
    6969      CASE ( 2 )    ;   CALL dyn_ldf_bilap  ( kt )      ! iso-level bilaplacian 
    7070      CASE ( 3 )    ;   CALL dyn_ldf_bilapg ( kt )      ! s-coord. horizontal bilaplacian 
     71      CASE ( 4 )                                        ! iso-level laplacian + bilaplacian 
     72         CALL dyn_ldf_lap    ( kt ) 
     73         CALL dyn_ldf_bilap  ( kt ) 
     74      CASE ( 5 )                                        ! rotated laplacian + bilaplacian (s-coord) 
     75         CALL dyn_ldf_iso    ( kt ) 
     76         CALL dyn_ldf_bilapg ( kt ) 
    7177      ! 
    7278      CASE ( -1 )                                       ! esopa: test all possibility with control print 
     
    8389                        CALL prt_ctl( tab3d_1=ua, clinfo1=' ldf3 - Ua: ', mask1=umask,   & 
    8490            &                         tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     91      ! 
     92      CASE ( -2 )                                       ! neither laplacian nor bilaplacian schemes used 
     93         IF( kt == nit000 ) THEN 
     94            IF(lwp) WRITE(numout,*) 
     95            IF(lwp) WRITE(numout,*) 'dyn_ldf : no lateral diffusion on momentum setup' 
     96            IF(lwp) WRITE(numout,*) '~~~~~~~ ' 
     97         ENDIF 
    8598      END SELECT 
    8699 
     
    124137      IF( ln_dynldf_lap   )   ioptio = ioptio + 1 
    125138      IF( ln_dynldf_bilap )   ioptio = ioptio + 1 
    126       IF( ioptio /= 1 ) CALL ctl_stop( '          use ONE of the 2 lap/bilap operator type on dynamics' ) 
     139      IF( ioptio <  1 ) CALL ctl_warn( '          neither laplacian nor bilaplacian operator set for dynamics' ) 
    127140      ioptio = 0 
    128141      IF( ln_dynldf_level )   ioptio = ioptio + 1 
     
    144157            IF ( ln_dynldf_iso   )   nldf = 1      ! isoneutral (   rotation) 
    145158         ENDIF 
    146          IF ( ln_sco ) THEN             ! z-coordinate 
     159         IF ( ln_sco ) THEN             ! s-coordinate 
    147160            IF ( ln_dynldf_level )   nldf = 0      ! iso-level  (no rotation) 
    148161            IF ( ln_dynldf_hor   )   nldf = 1      ! horizontal (   rotation) 
     
    162175            IF ( ln_dynldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
    163176         ENDIF 
    164          IF ( ln_sco ) THEN             ! z-coordinate 
     177         IF ( ln_sco ) THEN             ! s-coordinate 
    165178            IF ( ln_dynldf_level )   nldf = 2      ! iso-level  (no rotation) 
    166179            IF ( ln_dynldf_hor   )   nldf = 3      ! horizontal (   rotation) 
     
    169182      ENDIF 
    170183       
     184      IF( ln_dynldf_lap .AND. ln_dynldf_bilap ) THEN  ! mixed laplacian and bilaplacian operators 
     185         IF ( ln_zco ) THEN                ! z-coordinate 
     186            IF ( ln_dynldf_level )   nldf = 4      ! iso-level  (no rotation) 
     187            IF ( ln_dynldf_hor   )   nldf = 4      ! horizontal (no rotation) 
     188            IF ( ln_dynldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
     189         ENDIF 
     190         IF ( ln_zps ) THEN             ! z-coordinate 
     191            IF ( ln_dynldf_level )   ierr = 1      ! iso-level not allowed  
     192            IF ( ln_dynldf_hor   )   nldf = 4      ! horizontal (no rotation) 
     193            IF ( ln_dynldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
     194         ENDIF 
     195         IF ( ln_sco ) THEN             ! s-coordinate 
     196            IF ( ln_dynldf_level )   nldf = 4      ! iso-level  (no rotation) 
     197            IF ( ln_dynldf_hor   )   nldf = 5      ! horizontal (   rotation) 
     198            IF ( ln_dynldf_iso   )   ierr = 2      ! isoneutral (   rotation) 
     199         ENDIF 
     200      ENDIF 
     201 
    171202      IF( lk_esopa )                 nldf = -1     ! esopa test 
    172203 
     
    179210      IF(lwp) THEN 
    180211         WRITE(numout,*) 
     212         IF( nldf == -2 )   WRITE(numout,*) '              neither laplacian nor bilaplacian schemes used' 
    181213         IF( nldf == -1 )   WRITE(numout,*) '              ESOPA test All scheme used' 
    182214         IF( nldf ==  0 )   WRITE(numout,*) '              laplacian operator' 
    183          IF( nldf ==  1 )   WRITE(numout,*) '              Rotated laplacian operator' 
     215         IF( nldf ==  1 )   WRITE(numout,*) '              rotated laplacian operator' 
    184216         IF( nldf ==  2 )   WRITE(numout,*) '              bilaplacian operator' 
    185          IF( nldf ==  3 )   WRITE(numout,*) '              Rotated bilaplacian' 
     217         IF( nldf ==  3 )   WRITE(numout,*) '              rotated bilaplacian' 
     218         IF( nldf ==  4 )   WRITE(numout,*) '              laplacian and bilaplacian operators' 
     219         IF( nldf ==  5 )   WRITE(numout,*) '              rotated laplacian and bilaplacian operators' 
    186220      ENDIF 
    187221      ! 
Note: See TracChangeset for help on using the changeset viewer.