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 5868 for branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2015-11-06T19:07:02+01:00 (9 years ago)
Author:
jchanut
Message:

Free surface simplification #1620. Step 1: suppress filtered free surface

Location:
branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r5643 r5868  
    7878      !!             (lk_vvl=T), the leap-frog is applied on thickness weighted 
    7979      !!             velocity. 
    80       !!             Note also that in filtered free surface (lk_dynspg_flt=T), 
    81       !!             the time stepping has already been done in dynspg module 
    8280      !! 
    8381      !!              * Apply lateral boundary conditions on after velocity  
     
    10199      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    102100      INTEGER  ::   iku, ikv     ! local integers 
    103 #if ! defined key_dynspg_flt 
    104101      REAL(wp) ::   z2dt         ! temporary scalar 
    105 #endif 
    106102      REAL(wp) ::   zue3a, zue3n, zue3b, zuf, zec      ! local scalars 
    107103      REAL(wp) ::   zve3a, zve3n, zve3b, zvf, z1_2dt   !   -      - 
     
    120116         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    121117      ENDIF 
    122  
    123 #if defined key_dynspg_flt 
    124       ! 
    125       ! Next velocity :   Leap-frog time stepping already done in dynspg_flt.F routine 
    126       ! ------------- 
    127  
    128       ! Update after velocity on domain lateral boundaries      (only local domain required) 
    129       ! -------------------------------------------------- 
    130       CALL lbc_lnk( ua, 'U', -1. )         ! local domain boundaries 
    131       CALL lbc_lnk( va, 'V', -1. )  
    132       ! 
    133 #else 
    134118 
    135119# if defined key_dynspg_exp 
     
    201185      CALL Agrif_dyn( kt )             !* AGRIF zoom boundaries 
    202186# endif 
    203 #endif 
    204187 
    205188      IF( l_trddyn ) THEN             ! prepare the atf trend computation + some diagnostics 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r5836 r5868  
    2121   USE dynspg_exp     ! surface pressure gradient     (dyn_spg_exp routine) 
    2222   USE dynspg_ts      ! surface pressure gradient     (dyn_spg_ts  routine) 
    23    USE dynspg_flt     ! surface pressure gradient     (dyn_spg_flt routine) 
    2423   USE dynadv         ! dynamics: vector invariant versus flux form 
    2524   USE dynhpg, ONLY: ln_dynhpg_imp 
     
    3231   USE in_out_manager ! I/O manager 
    3332   USE lib_mpp        ! MPP library 
    34    USE solver         ! solver initialization 
    3533   USE wrk_nemo       ! Memory Allocation 
    3634   USE timing         ! Timing 
     
    5553CONTAINS 
    5654 
    57    SUBROUTINE dyn_spg( kt, kindic ) 
     55   SUBROUTINE dyn_spg( kt ) 
    5856      !!---------------------------------------------------------------------- 
    5957      !!                  ***  ROUTINE dyn_spg  *** 
     
    8078      ! 
    8179      INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index 
    82       INTEGER, INTENT(  out) ::   kindic   ! solver flag 
    8380      ! 
    8481      INTEGER  ::   ji, jj, jk                             ! dummy loop indices 
     
    171168      CASE (  0 )   ;   CALL dyn_spg_exp( kt )              ! explicit 
    172169      CASE (  1 )   ;   CALL dyn_spg_ts ( kt )              ! time-splitting 
    173       CASE (  2 )   ;   CALL dyn_spg_flt( kt, kindic )      ! filtered 
    174170      !                                                     
    175171      END SELECT 
    176172      !                     
    177173      IF( l_trddyn )   THEN                      ! save the surface pressure gradient trends for further diagnostics 
    178          SELECT CASE ( nspg ) 
    179          CASE ( 0, 1 ) 
    180             ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    181             ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    182          CASE( 2 ) 
    183             z2dt = 2. * rdt 
    184             IF( neuler == 0 .AND. kt == nit000 )   z2dt = rdt 
    185             ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) / z2dt - ztrdu(:,:,:) 
    186             ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / z2dt - ztrdv(:,:,:) 
    187          END SELECT 
     174         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
     175         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    188176         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
    189177         ! 
     
    217205         WRITE(numout,*) '     Explicit free surface                  lk_dynspg_exp = ', lk_dynspg_exp 
    218206         WRITE(numout,*) '     Free surface with time splitting       lk_dynspg_ts  = ', lk_dynspg_ts 
    219          WRITE(numout,*) '     Filtered free surface cst volume       lk_dynspg_flt = ', lk_dynspg_flt 
    220207      ENDIF 
    221208 
     
    233220      IF(lk_dynspg_exp)   ioptio = ioptio + 1 
    234221      IF(lk_dynspg_ts )   ioptio = ioptio + 1 
    235       IF(lk_dynspg_flt)   ioptio = ioptio + 1 
    236222      ! 
    237223      IF(  ioptio > 1  .OR. ( ioptio == 0 .AND. .NOT. lk_c1d ) )   & 
     
    242228      IF( lk_dynspg_exp)   nspg =  0 
    243229      IF( lk_dynspg_ts )   nspg =  1 
    244       IF( lk_dynspg_flt)   nspg =  2 
     230 
    245231      ! 
    246232      IF(lwp) THEN 
     
    248234         IF( nspg ==  0 )   WRITE(numout,*) '     explicit free surface' 
    249235         IF( nspg ==  1 )   WRITE(numout,*) '     free surface with time splitting scheme' 
    250          IF( nspg ==  2 )   WRITE(numout,*) '     filtered free surface' 
    251       ENDIF 
    252  
    253 #if defined key_dynspg_flt 
    254       CALL solver_init( nit000 )   ! Elliptic solver initialisation 
    255 #endif 
     236      ENDIF 
    256237      !               ! Control of hydrostatic pressure choice 
    257238      IF( lk_dynspg_ts .AND. ln_dynhpg_imp )   CALL ctl_stop( 'Semi-implicit hpg not compatible with time splitting' ) 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90

    r5836 r5868  
    2626#else 
    2727   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_ts  = .FALSE.  !: Free surface with time splitting flag 
    28 #endif 
    29 #if   defined key_dynspg_flt 
    30    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_flt = .TRUE.   !: Filtered free surface cst volume flag 
    31 #else 
    32    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_flt = .FALSE.  !: Filtered free surface cst volume flag 
    3328#endif 
    3429  !                                                                         !!! Time splitting scheme (key_dynspg_ts)  
Note: See TracChangeset for help on using the changeset viewer.