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 12377 for NEMO/trunk/src/OCE/C1D/step_c1d.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/C1D/step_c1d.F90

    r10068 r12377  
    66   !! History :   2.0  !  2004-04  (C. Ethe)  adapted from step.F90 for C1D 
    77   !!             3.0  !  2008-04  (G. Madec)  redo the adaptation to include SBC 
     8   !!             4.1  !  2019-08  (A. Coward, D. Storkey) rewrite in preparation for new timestepping scheme 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_c1d 
     
    1415   !!---------------------------------------------------------------------- 
    1516   USE step_oce        ! time stepping definition modules  
     17   USE step, ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 
    1618#if defined key_top 
    1719   USE trcstp          ! passive tracer time-stepping      (trc_stp routine) 
    1820#endif 
    1921   USE dyncor_c1d      ! Coriolis term (c1d case)         (dyn_cor_1d     ) 
    20    USE dynnxt          ! time-stepping                    (dyn_nxt routine) 
     22   USE dynatf          ! time filtering                   (dyn_atf routine) 
    2123   USE dyndmp          ! U & V momentum damping           (dyn_dmp routine) 
    2224   USE restart         ! restart  
     
    6567      ! Update data, open boundaries, surface boundary condition (including sea-ice) 
    6668      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    67                          CALL sbc    ( kstp )         ! Sea Boundary Condition (including sea-ice) 
     69                         CALL sbc    ( kstp, Nbb, Nnn )  ! Sea Boundary Condition (including sea-ice) 
    6870 
    6971      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    70       ! Ocean physics update                (ua, va, ta, sa used as workspace) 
     72      ! Ocean physics update         
    7173      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    72                          CALL eos_rab( tsb, rab_b )   ! before local thermal/haline expension ratio at T-points 
    73                          CALL eos_rab( tsn, rab_n )   ! now    local thermal/haline expension ratio at T-points 
    74                          CALL bn2( tsb, rab_b, rn2b ) ! before Brunt-Vaisala frequency 
    75                          CALL bn2( tsn, rab_n, rn2 ) ! now    Brunt-Vaisala frequency 
     74                         CALL eos_rab( ts(:,:,:,:,Nbb), rab_b, Nnn )  ! before local thermal/haline expension ratio at T-points 
     75                         CALL eos_rab( ts(:,:,:,:,Nnn), rab_n, Nnn )  ! now    local thermal/haline expension ratio at T-points 
     76                         CALL bn2( ts(:,:,:,:,Nbb), rab_b, rn2b, Nnn ) ! before Brunt-Vaisala frequency 
     77                         CALL bn2( ts(:,:,:,:,Nnn), rab_n, rn2 , Nnn ) ! now    Brunt-Vaisala frequency 
    7678       
    7779      !  VERTICAL PHYSICS 
    78                          CALL zdf_phy( kstp )         ! vertical physics update (bfr, avt, avs, avm + MLD) 
     80                         CALL zdf_phy( kstp, Nbb, Nnn, Nrhs  )    ! vertical physics update (bfr, avt, avs, avm + MLD) 
    7981 
    80       IF(.NOT.ln_linssh )   CALL ssh_nxt       ( kstp )  ! after ssh (includes call to div_hor) 
    81       IF(.NOT.ln_linssh )   CALL dom_vvl_sf_nxt( kstp )  ! after vertical scale factors  
     82      IF(.NOT.ln_linssh )   CALL ssh_nxt       ( kstp, Nbb, Nnn, ssh, Naa )  ! after ssh (includes call to div_hor) 
     83      IF(.NOT.ln_linssh )   CALL dom_vvl_sf_nxt( kstp, Nbb, Nnn,      Naa )  ! after vertical scale factors  
    8284 
    83       IF(.NOT.ln_linssh )   CALL wzv           ( kstp )  ! now cross-level velocity  
     85      IF(.NOT.ln_linssh )   CALL wzv           ( kstp, Nbb, Nnn, ww,  Naa )  ! now cross-level velocity  
    8486      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    85       ! diagnostics and outputs             (ua, va, ta, sa used as workspace) 
     87      ! diagnostics and outputs        
    8688      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    87                          CALL dia_wri( kstp )       ! ocean model: outputs 
    88       IF( lk_diahth  )   CALL dia_hth( kstp )       ! Thermocline depth (20°C) 
     89                         CALL dia_wri( kstp, Nnn )  ! ocean model: outputs 
     90      IF( lk_diahth  )   CALL dia_hth( kstp, Nnn )  ! Thermocline depth (20°C) 
    8991 
    9092 
     
    9395      ! Passive Tracer Model 
    9496      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    95                         CALL trc_stp( kstp )       ! time-stepping 
     97                        CALL trc_stp( kstp, Nbb, Nnn, Nrhs, Naa  )   ! time-stepping 
    9698#endif 
    9799 
    98100      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    99       ! Active tracers                              (ua, va used as workspace) 
     101      ! Active tracers                              (uu(:,:,:,Nrhs), vv(:,:,:,Nrhs) used as workspace) 
    100102      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    101                         tsa(:,:,:,:) = 0._wp       ! set tracer trends to zero 
     103                        ts(:,:,:,:,Nrhs) = 0._wp       ! set tracer trends to zero 
    102104 
    103                         CALL tra_sbc( kstp )       ! surface boundary condition 
    104       IF( ln_traqsr )   CALL tra_qsr( kstp )       ! penetrative solar radiation qsr 
    105       IF( ln_tradmp )   CALL tra_dmp( kstp )       ! internal damping trends- tracers 
    106       IF(.NOT.ln_linssh)CALL tra_adv( kstp )       ! horizontal & vertical advection 
    107       IF( ln_zdfosm  )  CALL tra_osm( kstp )       ! OSMOSIS non-local tracer fluxes 
    108                         CALL tra_zdf( kstp )       ! vertical mixing 
    109                         CALL eos( tsn, rhd, rhop, gdept_0(:,:,:) )   ! now potential density for zdfmxl 
    110       IF( ln_zdfnpc )   CALL tra_npc( kstp )       ! applied non penetrative convective adjustment on (t,s) 
    111                         CALL tra_nxt( kstp )       ! tracer fields at next time step 
     105                        CALL tra_sbc( kstp,      Nnn, ts, Nrhs  )  ! surface boundary condition 
     106      IF( ln_traqsr )   CALL tra_qsr( kstp,      Nnn, ts, Nrhs  )  ! penetrative solar radiation qsr 
     107      IF( ln_tradmp )   CALL tra_dmp( kstp, Nbb, Nnn, ts, Nrhs  )  ! internal damping trends- tracers 
     108      IF(.NOT.ln_linssh)CALL tra_adv( kstp, Nbb, Nnn, ts, Nrhs  )  ! horizontal & vertical advection 
     109      IF( ln_zdfosm  )  CALL tra_osm( kstp, Nnn     , ts, Nrhs  )  ! OSMOSIS non-local tracer fluxes 
     110                        CALL tra_zdf( kstp, Nbb, Nnn, Nrhs, ts, Naa   )         ! vertical mixing 
     111                        CALL eos( ts(:,:,:,:,Nnn), rhd, rhop, gdept_0(:,:,:) )  ! now potential density for zdfmxl 
     112      IF( ln_zdfnpc )   CALL tra_npc( kstp,      Nnn, Nrhs, ts, Naa   )         ! applied non penetrative convective adjustment on (t,s) 
     113                        CALL tra_atf( kstp, Nbb, Nnn, Nrhs,     Naa, ts   )     ! time filtering of "now" tracer fields 
    112114 
    113115 
     
    116118      ! Dynamics                                    (ta, sa used as workspace) 
    117119      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    118                         ua(:,:,:) = 0._wp          ! set dynamics trends to zero 
    119                         va(:,:,:) = 0._wp 
     120                        uu(:,:,:,Nrhs) = 0._wp          ! set dynamics trends to zero 
     121                        vv(:,:,:,Nrhs) = 0._wp 
    120122 
    121       IF( ln_dyndmp )   CALL dyn_dmp    ( kstp )   ! internal damping trends- momentum 
    122                         CALL dyn_cor_c1d( kstp )   ! vorticity term including Coriolis 
    123       IF( ln_zdfosm  )  CALL dyn_osm    ( kstp )   ! OSMOSIS non-local velocity fluxes 
    124                         CALL dyn_zdf    ( kstp )   ! vertical diffusion 
    125                         CALL dyn_nxt    ( kstp )   ! lateral velocity at next time step 
    126       IF(.NOT.ln_linssh)CALL ssh_swp    ( kstp )   ! swap of sea surface height 
    127  
    128       IF(.NOT.ln_linssh)CALL dom_vvl_sf_swp( kstp )! swap of vertical scale factors 
     123      IF( ln_dyndmp )   CALL dyn_dmp    ( kstp, Nbb, Nnn      , uu, vv, Nrhs )  ! internal damping trends- momentum 
     124                        CALL dyn_cor_c1d( kstp,      Nnn      , uu, vv, Nrhs )  ! vorticity term including Coriolis 
     125      IF( ln_zdfosm  )  CALL dyn_osm    ( kstp,      Nnn      , uu, vv, Nrhs )  ! OSMOSIS non-local velocity fluxes 
     126                        CALL dyn_zdf    ( kstp, Nbb, Nnn, Nrhs, uu, vv, Naa  )  ! vertical diffusion 
     127                        CALL dyn_atf    ( kstp, Nbb, Nnn, Naa , uu, vv, e3t, e3u, e3v )  ! time filtering of "now" fields 
     128      IF(.NOT.ln_linssh)CALL ssh_atf    ( kstp, Nbb, Nnn, Naa , ssh )                    ! time filtering of "now" sea surface height 
     129      ! 
     130      ! Swap time levels 
     131      Nrhs = Nbb 
     132      Nbb = Nnn 
     133      Nnn = Naa 
     134      Naa = Nrhs 
     135      ! 
     136      IF(.NOT.ln_linssh)CALL dom_vvl_sf_update( kstp, Nbb, Nnn, Naa )                    ! update of vertical scale factors 
    129137 
    130138      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    131139      ! Control and restarts 
    132140      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    133                              CALL stp_ctl( kstp, indic ) 
    134       IF( kstp == nit000 )   CALL iom_close( numror )      ! close input  ocean restart file 
    135       IF( lrst_oce       )   CALL rst_write( kstp )        ! write output ocean restart file 
     141                             CALL stp_ctl( kstp, Nnn, indic ) 
     142      IF( kstp == nit000 )   CALL iom_close( numror )          ! close input  ocean restart file 
     143      IF( lrst_oce       )   CALL rst_write( kstp, Nbb, Nnn )  ! write output ocean restart file 
    136144      ! 
    137145#if defined key_iomput 
Note: See TracChangeset for help on using the changeset viewer.