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 5917 for branches/2015/dev_r5847_MERCATOR9_solveur_simplification – NEMO

Ignore:
Timestamp:
2015-11-25T11:03:43+01:00 (8 years ago)
Author:
jchanut
Message:

Free surface simplification #1620. Step 4 (Final): add Gurvan's suggestions

Location:
branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/ARCH/arch-openmpi_NAVITI_MERCATOR.fcm

    r5656 r5917  
    2323%CPP               cpp 
    2424%FC                  mpif90 
    25 %FCFLAGS             -O2 -fp-model precise  -traceback -r8  -convert big_endian -assume byterecl 
     25%FCFLAGS             -O1 -fp-model precise  -traceback -r8  -convert big_endian -assume byterecl 
    2626%FFLAGS              %FCFLAGS 
    2727%LD                   mpif90 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r5902 r5917  
    7070   ppkth2      =  999999.              ! 
    7171   ppacr2      =  999999. 
    72 / 
    73 !----------------------------------------------------------------------- 
    74 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    75 !----------------------------------------------------------------------- 
    76    ln_bt_nn_auto =    .FALSE.          !  Set nn_baro automatically to be just below 
    77                                        !  a user defined maximum courant number (rn_bt_cmax) 
    78    nn_baro       =    30               !  Number of iterations of barotropic mode 
    7972/ 
    8073!----------------------------------------------------------------------- 
     
    346339&namdyn_spg    !   surface pressure gradient  
    347340!----------------------------------------------------------------------- 
     341   ln_dynspg_ts   = .true.    ! split-explicit free surface 
     342      ln_bt_auto    = .false.   ! Number of sub-step defined from: 
     343         nn_baro      = 30        ! =F : the number of sub-step in rn_rdt seconds 
    348344/ 
    349345!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r5902 r5917  
    6464/ 
    6565!----------------------------------------------------------------------- 
    66 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    67 !----------------------------------------------------------------------- 
    68 / 
    69 !----------------------------------------------------------------------- 
    7066&namcrs        !   Grid coarsening for dynamics output and/or 
    7167               !   passive tracer coarsened online simulations 
     
    263259&namdyn_spg    !   surface pressure gradient 
    264260!----------------------------------------------------------------------- 
    265    ln_dynspg_exp  = .false.   !  explicit free surface 
    266    ln_dynspg_ts   = .false.   !  split-explicit free surface 
    267261/ 
    268262!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg

    r5902 r5917  
    6464   ppkth2      =  999999.0               ! 
    6565   ppacr2      =  999999.0               ! 
    66 / 
    67 !----------------------------------------------------------------------- 
    68 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    69 !----------------------------------------------------------------------- 
    7066/ 
    7167!----------------------------------------------------------------------- 
     
    288284&namdyn_spg    !   surface pressure gradient  
    289285!----------------------------------------------------------------------- 
     286   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    290287/ 
    291288!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r5902 r5917  
    6767   ppkth2      =  999999.0               ! 
    6868   ppacr2      =  999999.0               ! 
    69 / 
    70 !----------------------------------------------------------------------- 
    71 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    72 !----------------------------------------------------------------------- 
    7369/ 
    7470!----------------------------------------------------------------------- 
     
    289285&namdyn_spg    !   surface pressure gradient 
    290286!----------------------------------------------------------------------- 
     287   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    291288/ 
    292289!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r5902 r5917  
    5757   ppkth2      =  999999.0               ! 
    5858   ppacr2      =  999999.0               ! 
    59 / 
    60 !----------------------------------------------------------------------- 
    61 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    62 !----------------------------------------------------------------------- 
    6359/ 
    6460!----------------------------------------------------------------------- 
     
    208204&namdyn_spg    !   surface pressure gradient 
    209205!----------------------------------------------------------------------- 
     206   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    210207/ 
    211208!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg

    r5868 r5917  
    4141   nn_bathy    =    0      !  compute (=0) or read (=1) the bathymetry file 
    4242   rn_rdt      = 7200.     !  time step for the dynamics (and tracer if nn_acc=0) 
    43 !   nn_baro     =   60      !  number of barotropic time step            ("key_dynspg_ts") 
    4443   rn_rdtmin   = 7200.           !  minimum time step on tracers (used if nn_acc=1) 
    4544   rn_rdtmax   = 7200.           !  maximum time step on tracers (used if nn_acc=1) 
     
    261260/ 
    262261!----------------------------------------------------------------------- 
    263 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    264 !----------------------------------------------------------------------- 
     262&namdyn_spg    !   surface pressure gradient 
     263!----------------------------------------------------------------------- 
     264   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     265/ 
    265266!----------------------------------------------------------------------- 
    266267&namdyn_ldf    !   lateral diffusion on momentum 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg

    r5902 r5917  
    5454   rn_rdtmin   = 14400.          !  minimum time step on tracers (used if nn_acc=1) 
    5555   rn_rdtmax   = 14400.          !  maximum time step on tracers (used if nn_acc=1) 
    56 / 
    57 !----------------------------------------------------------------------- 
    58 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    59 !----------------------------------------------------------------------- 
    6056/ 
    6157!----------------------------------------------------------------------- 
     
    198194   ln_dynvor_een = .true.  !  energy & enstrophy scheme 
    199195      nn_een_e3f = 1             !  e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 
    200    ln_dynvor_msk = .true.  !  vorticity multiplied by fmask (=T) or not (=F) (all vorticity schemes) 
    201196/ 
    202197!----------------------------------------------------------------------- 
     
    207202&namdyn_spg    !   surface pressure gradient 
    208203!----------------------------------------------------------------------- 
     204   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    209205/ 
    210206!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg

    r5902 r5917  
    4646   ppkth2      =  999999.              ! 
    4747   ppacr2      =  999999.              ! 
    48 / 
    49 !----------------------------------------------------------------------- 
    50 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    51 !----------------------------------------------------------------------- 
    5248/ 
    5349!----------------------------------------------------------------------- 
     
    190186&namdyn_spg    !   surface pressure gradient 
    191187!----------------------------------------------------------------------- 
     188   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    192189/ 
    193190!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg

    r5902 r5917  
    5353   rn_rdtmin   = 14400.          !  minimum time step on tracers (used if nn_acc=1) 
    5454   rn_rdtmax   = 14400.          !  maximum time step on tracers (used if nn_acc=1) 
    55 / 
    56 !----------------------------------------------------------------------- 
    57 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    58 !----------------------------------------------------------------------- 
    5955/ 
    6056!----------------------------------------------------------------------- 
     
    206202&namdyn_spg    !   surface pressure gradient 
    207203!----------------------------------------------------------------------- 
     204   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    208205/ 
    209206!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg

    r5902 r5917  
    4646   ppkth2      =  999999.              ! 
    4747   ppacr2      =  999999.              ! 
    48 / 
    49 !----------------------------------------------------------------------- 
    50 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    51 !----------------------------------------------------------------------- 
    5248/ 
    5349!----------------------------------------------------------------------- 
     
    186182!----------------------------------------------------------------------- 
    187183   ln_hpg_zco  = .false.   !  z-coordinate - full steps 
    188    ln_hpg_zps  = .false.    !  z-coordinate - partial steps (interpolation) 
    189    ln_hpg_sco  = .false.   !  s-coordinate (standard jacobian formulation) 
     184   ln_hpg_zps  = .false.   !  z-coordinate - partial steps (interpolation) 
     185   ln_hpg_sco  = .true.    !  s-coordinate (standard jacobian formulation) 
    190186   ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
    191    ln_hpg_prj  = .true.   !  s-coordinate (Pressure Jacobian scheme) 
    192    ln_dynhpg_imp = .false. !  time stepping: semi-implicit time scheme  (T) 
    193                                  !           centered      time scheme  (F) 
     187   ln_hpg_prj  = .false.   !  s-coordinate (Pressure Jacobian scheme) 
    194188/ 
    195189!----------------------------------------------------------------------- 
    196190&namdyn_spg    !   surface pressure gradient 
    197191!----------------------------------------------------------------------- 
     192   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    198193/ 
    199194!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg

    r5868 r5917  
    552552   ln_hpg_djc  = .false.   !  s-coordinate (Density Jacobian with Cubic polynomial) 
    553553   ln_hpg_prj  = .false.   !  s-coordinate (Pressure Jacobian scheme) 
    554    ln_dynhpg_imp = .false. !  time stepping: semi-implicit time scheme  (T) 
    555                                  !           centered      time scheme  (F) 
    556 / 
    557 !----------------------------------------------------------------------- 
    558 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    559 !----------------------------------------------------------------------- 
    560 !                          !  explicit free surface                     ("key_dynspg_exp") 
    561 !                          !  split-explicit free surface               ("key_dynspg_ts") 
    562  
     554/ 
     555!----------------------------------------------------------------------- 
     556&namdyn_spg    !   surface pressure gradient 
     557!----------------------------------------------------------------------- 
     558   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     559/ 
    563560!----------------------------------------------------------------------- 
    564561&namdyn_ldf    !   lateral diffusion on momentum 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg

    r5868 r5917  
    6565   ppkth2      =  999999.              ! 
    6666   ppacr2      =  999999.              ! 
    67 / 
    68 !----------------------------------------------------------------------- 
    69 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    70 !----------------------------------------------------------------------- 
    7167/ 
    7268!----------------------------------------------------------------------- 
     
    248244/ 
    249245!----------------------------------------------------------------------- 
    250 !namdyn_spg    !   surface pressure gradient   (CPP key only) 
    251 !----------------------------------------------------------------------- 
     246&namdyn_spg    !   surface pressure gradient 
     247!----------------------------------------------------------------------- 
     248   ln_dynspg_ts  = .true.  !  split-explicit free surface 
     249/ 
    252250!----------------------------------------------------------------------- 
    253251&namdyn_ldf    !   lateral diffusion on momentum 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg

    r5902 r5917  
    4646   ppkth2      =  999999.              ! 
    4747   ppacr2      =  999999.              ! 
    48 / 
    49 !----------------------------------------------------------------------- 
    50 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    51 !----------------------------------------------------------------------- 
    5248/ 
    5349!----------------------------------------------------------------------- 
     
    190186&namdyn_spg    !   surface pressure gradient 
    191187!----------------------------------------------------------------------- 
     188   ln_dynspg_ts  = .true.  !  split-explicit free surface 
    192189/ 
    193190!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg

    r5836 r5917  
    5353   ppkth2      =  999999.              ! 
    5454   ppacr2      =  999999.              ! 
    55 / 
    56 !----------------------------------------------------------------------- 
    57 &namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
    58 !----------------------------------------------------------------------- 
    5955/ 
    6056!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist_cfg

    r5902 r5917  
    5050/ 
    5151!----------------------------------------------------------------------- 
    52 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    53 !----------------------------------------------------------------------- 
    54 / 
    55 !----------------------------------------------------------------------- 
    5652&namcrs        !   Grid coarsening for dynamics output and/or 
    5753               !   passive tracer coarsened online simulations 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5902 r5917  
    161161   ppkth2      =       48.029893720000 ! 
    162162   ppacr2      =       13.000000000000 ! 
    163 / 
    164 !----------------------------------------------------------------------- 
    165 &namsplit      !   time splitting parameters                            ("ln_dynspg_ts=T") 
    166 !----------------------------------------------------------------------- 
    167    ln_bt_fw      =    .TRUE.           !  Forward integration of barotropic equations 
    168    ln_bt_av      =    .TRUE.           !  Time filtering of barotropic variables 
    169    ln_bt_nn_auto =    .TRUE.           !  Set nn_baro automatically to be just below 
    170                                        !  a user defined maximum courant number (rn_bt_cmax) 
    171    nn_baro       =    30               !  Number of iterations of barotropic mode 
    172                                        !  during rn_rdt seconds. Only used if ln_bt_nn_auto=F 
    173    rn_bt_cmax    =    0.8              !  Maximum courant number allowed if ln_bt_nn_auto=T 
    174    nn_bt_flt     =    1                !  Time filter choice 
    175                                        !  = 0 None 
    176                                        !  = 1 Boxcar over   nn_baro barotropic steps 
    177                                        !  = 2 Boxcar over 2*nn_baro     "        " 
    178163/ 
    179164!----------------------------------------------------------------------- 
     
    867852&namdyn_spg    !   surface pressure gradient 
    868853!----------------------------------------------------------------------- 
    869    ln_dynspg_exp  = .false.   !  explicit free surface 
    870    ln_dynspg_ts   = .true.    !  split-explicit free surface 
     854   ln_dynspg_exp  = .false.   ! explicit free surface 
     855   ln_dynspg_ts   = .false.   ! split-explicit free surface 
     856      ln_bt_fw      = .true.    ! Forward integration of barotropic Eqs. 
     857      ln_bt_av      = .true.    ! Time filtering of barotropic variables 
     858         nn_bt_flt    =  1        ! Time filter choice  = 0 None 
     859         !                        !                     = 1 Boxcar over   nn_baro sub-steps 
     860         !                        !                     = 2 Boxcar over 2*nn_baro  "    " 
     861      ln_bt_auto    = .true.    ! Number of sub-step defined from: 
     862         rn_bt_cmax   =  0.8      ! =T : the Maximum Courant Number allowed 
     863         nn_baro      = 30        ! =F : the number of sub-step in rn_rdt seconds 
    871864/ 
    872865!----------------------------------------------------------------------- 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r5902 r5917  
    387387      END DO  ! ib_bdy 
    388388 
    389       ! bg jchanut tschanges 
    390389#if defined key_tide 
    391       ! Add tides if not split-explicit free surface else this is done in ts loop 
    392       IF (.NOT.ln_dynspg_ts) CALL bdy_dta_tides( kt=kt, time_offset=time_offset ) 
    393 #endif 
    394       ! end jchanut tschanges 
     390      IF (ln_dynspg_ts) THEN      ! Fill temporary arrays with slow-varying bdy data                            
     391         DO ib_bdy = 1, nb_bdy    ! Tidal component added in ts loop 
     392            IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 
     393               nblen => idx_bdy(ib_bdy)%nblen 
     394               nblenrim => idx_bdy(ib_bdy)%nblenrim 
     395               IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN; ilen1(:)=nblen(:) ; ELSE ; ilen1(:)=nblenrim(:) ; ENDIF  
     396               IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen1(1)) = dta_bdy(ib_bdy)%ssh(1:ilen1(1)) 
     397               IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen1(2)) = dta_bdy(ib_bdy)%u2d(1:ilen1(2)) 
     398               IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen1(3)) = dta_bdy(ib_bdy)%v2d(1:ilen1(3)) 
     399            ENDIF 
     400         END DO 
     401      ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 
     402         ! 
     403         CALL bdy_dta_tides( kt=kt, time_offset=time_offset ) 
     404      ENDIF 
     405#endif 
    395406 
    396407      IF ( ln_apr_obc ) THEN 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r5902 r5917  
    5353   TYPE(TIDES_DATA), PUBLIC, DIMENSION(jp_bdy), TARGET :: tides  !: External tidal harmonics data 
    5454!$AGRIF_END_DO_NOT_TREAT 
    55    TYPE(OBC_DATA)  , PRIVATE, DIMENSION(jp_bdy) :: dta_bdy_s  !: bdy external data (slow component) 
     55   TYPE(OBC_DATA)  , PUBLIC, DIMENSION(jp_bdy) :: dta_bdy_s  !: bdy external data (slow component) 
    5656 
    5757   !!---------------------------------------------------------------------- 
     
    269269            ENDIF 
    270270            ! 
    271             IF ( ln_dynspg_ts ) THEN ! Allocate arrays to save slowly varying boundary data during 
    272                                      ! time splitting integration 
    273                ALLOCATE( dta_bdy_s(ib_bdy)%ssh ( ilen0(1) ) ) 
    274                ALLOCATE( dta_bdy_s(ib_bdy)%u2d ( ilen0(2) ) ) 
    275                ALLOCATE( dta_bdy_s(ib_bdy)%v2d ( ilen0(3) ) ) 
    276                dta_bdy_s(ib_bdy)%ssh(:) = 0.e0 
    277                dta_bdy_s(ib_bdy)%u2d(:) = 0.e0 
    278                dta_bdy_s(ib_bdy)%v2d(:) = 0.e0 
    279             ENDIF 
     271            ! Allocate slow varying data in the case of time splitting: 
     272            ! Do it anyway because at this stage knowledge of free surface scheme is unknown 
     273            ALLOCATE( dta_bdy_s(ib_bdy)%ssh ( ilen0(1) ) ) 
     274            ALLOCATE( dta_bdy_s(ib_bdy)%u2d ( ilen0(2) ) ) 
     275            ALLOCATE( dta_bdy_s(ib_bdy)%v2d ( ilen0(3) ) ) 
     276            dta_bdy_s(ib_bdy)%ssh(:) = 0.e0 
     277            dta_bdy_s(ib_bdy)%u2d(:) = 0.e0 
     278            dta_bdy_s(ib_bdy)%v2d(:) = 0.e0 
    280279            ! 
    281280         ENDIF ! nn_dyn2d_dta(ib_bdy) .ge. 2 
     
    396395      !! 
    397396      LOGICAL  :: lk_first_btstp  ! =.TRUE. if time splitting and first barotropic step 
    398       INTEGER,          DIMENSION(jpbgrd) :: ilen0  
     397      INTEGER, DIMENSION(jpbgrd) :: ilen0  
    399398      INTEGER, DIMENSION(1:jpbgrd) :: nblen, nblenrim  ! short cuts 
    400399      INTEGER  :: itide, ib_bdy, ib, igrd                     ! loop indices 
     
    415414      ! Absolute time from model initialization:    
    416415      IF( PRESENT(kit) ) THEN   
    417          z_arg = ( kt + (kit+0.5_wp*(time_add-1)) / REAL(nn_baro,wp) ) * rdt 
     416         z_arg = ( kt + (kit+time_add-1) / REAL(nn_baro,wp) ) * rdt 
    418417      ELSE                               
    419418         z_arg = ( kt + time_add ) * rdt 
     
    455454            zoff = -kt_tide * rdt ! time offset relative to nodal factor computation time 
    456455            ! 
    457             ! If time splitting, save data at first barotropic iteration 
    458             IF ( PRESENT(kit) ) THEN 
    459                IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 
    460                   IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
    461                   IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
    462                   IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
    463  
    464                ELSE ! Initialize arrays from slow varying open boundary data:             
    465                   IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
    466                   IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
    467                   IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    468                ENDIF 
     456            ! If time splitting, initialize arrays from slow varying open boundary data: 
     457            IF ( PRESENT(kit) ) THEN            
     458               IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
     459               IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
     460               IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    469461            ENDIF 
    470462            ! 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r5902 r5917  
    4747   !! Free surface parameters 
    4848   !! ======================= 
    49    LOGICAL, PUBLIC :: ln_dynspg_exp !: Explicit free surface flag 
    50    LOGICAL, PUBLIC :: ln_dynspg_ts  !: Split-Explicit free surface flag 
     49   LOGICAL, PUBLIC :: ln_dynspg_exp      !: Explicit free surface flag 
     50   LOGICAL, PUBLIC :: ln_dynspg_ts       !: Split-Explicit free surface flag 
    5151 
    5252   !! Time splitting parameters 
     
    5454   LOGICAL,  PUBLIC :: ln_bt_fw          !: Forward integration of barotropic sub-stepping 
    5555   LOGICAL,  PUBLIC :: ln_bt_av          !: Time averaging of barotropic variables 
    56    LOGICAL,  PUBLIC :: ln_bt_nn_auto     !: Set number of barotropic iterations automatically 
     56   LOGICAL,  PUBLIC :: ln_bt_auto        !: Set number of barotropic iterations automatically 
    5757   INTEGER,  PUBLIC :: nn_bt_flt         !: Filter choice 
    5858   INTEGER,  PUBLIC :: nn_baro           !: Number of barotropic iterations during one baroclinic step (rdt) 
    59    REAL(wp), PUBLIC :: rn_bt_cmax        !: Maximum allowed courant number (used if ln_bt_nn_auto=T) 
     59   REAL(wp), PUBLIC :: rn_bt_cmax        !: Maximum allowed courant number (used if ln_bt_auto=T) 
    6060 
    6161   !! Horizontal grid parameters for domhgr 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r5869 r5917  
    3636   USE trd_oce         ! trends: ocean variables 
    3737   USE trddyn          ! trend manager: dynamics 
     38   USE zpshde          ! partial step: hor. derivative     (zps_hde routine) 
    3839   ! 
    3940   USE in_out_manager  ! I/O manager 
     
    291292      ENDIF 
    292293 
     294      ! Partial steps: bottom before horizontal gradient of t, s, rd at the last ocean level 
     295      CALL zps_hde    ( kt, jpts, tsn, gtsu, gtsv, rhd, gru , grv ) 
    293296 
    294297      ! Local constant initialization 
     
    489492      ! iniitialised to 0. zhpi zhpi  
    490493      zhpi(:,:,:)=0._wp ; zhpj(:,:,:)=0._wp 
     494 
     495      ! Partial steps: top & bottom before horizontal gradient 
     496      CALL zps_hde_isf( kt, jpts, tsn, gtsu, gtsv, gtui, gtvi,   &  
     497               &       rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
     498               &      grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi  ) 
    491499 
    492500!==================================================================================      
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r5902 r5917  
    193193      INTEGER ::   ioptio, ios 
    194194      ! 
    195       NAMELIST/namdyn_spg/ ln_dynspg_exp, ln_dynspg_ts 
     195      NAMELIST/namdyn_spg/ ln_dynspg_exp, ln_dynspg_ts, & 
     196      &                    ln_bt_fw, ln_bt_av, ln_bt_auto, & 
     197      &                    nn_baro, rn_bt_cmax, nn_bt_flt 
    196198      !!---------------------------------------------------------------------- 
    197199      ! 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5902 r5917  
    2626   USE dynvor          ! vorticity term 
    2727   USE bdy_par         ! for lk_bdy 
     28   USE bdytides        ! open boundary condition data 
    2829   USE bdydyn2d        ! open boundary conditions on barotropic variables 
    2930   USE sbctide         ! tides 
     
    4041   USE sbcapr          ! surface boundary condition: atmospheric pressure 
    4142   USE dynadv, ONLY: ln_dynadv_vec 
    42    USE bdytides 
    4343#if defined key_agrif 
    4444   USE agrif_opa_interp ! agrif 
     
    8686 
    8787      ALLOCATE( ssha_e(jpi,jpj),  sshn_e(jpi,jpj), sshb_e(jpi,jpj), sshbb_e(jpi,jpj), & 
    88          &        ua_e(jpi,jpj),    ub_e(jpi,jpj),   ubb_e(jpi,jpj), & 
    89          &        va_e(jpi,jpj),    vb_e(jpi,jpj),   vbb_e(jpi,jpj), & 
     88         &        ua_e(jpi,jpj),    un_e(jpi,jpj),   ub_e(jpi,jpj),   ubb_e(jpi,jpj), & 
     89         &        va_e(jpi,jpj),    vn_e(jpi,jpj),   vb_e(jpi,jpj),   vbb_e(jpi,jpj), & 
    9090         &        hu_e(jpi,jpj),   hur_e(jpi,jpj),   hv_e(jpi,jpj),   hvr_e(jpi,jpj), STAT= ierr(1) ) 
    9191 
     
    146146      INTEGER  ::   ikbu, ikbv, noffset      ! local integers 
    147147      REAL(wp) ::   zraur, z1_2dt_b, z2dt_bf    ! local scalars 
    148       REAL(wp) ::   zx1, zy1, zx2, zy2         !   -      - 
    149       REAL(wp) ::   z1_12, z1_8, z1_4, z1_2    !   -      - 
    150       REAL(wp) ::   zu_spg, zv_spg             !   -      - 
    151       REAL(wp) ::   zhura, zhvra               !   -      - 
    152       REAL(wp) ::   za0, za1, za2, za3           !   -      - 
    153       ! 
    154       REAL(wp), POINTER, DIMENSION(:,:) :: zun_e, zvn_e, zsshp2_e 
     148      REAL(wp) ::   zx1, zy1, zx2, zy2          !   -      - 
     149      REAL(wp) ::   z1_12, z1_8, z1_4, z1_2  !   -      - 
     150      REAL(wp) ::   zu_spg, zv_spg              !   -      - 
     151      REAL(wp) ::   zhura, zhvra          !   -      - 
     152      REAL(wp) ::   za0, za1, za2, za3    !   -      - 
     153      ! 
     154      REAL(wp), POINTER, DIMENSION(:,:) :: zsshp2_e 
    155155      REAL(wp), POINTER, DIMENSION(:,:) :: zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc 
    156       REAL(wp), POINTER, DIMENSION(:,:) :: zu_sum, zv_sum, zwx, zwy, zhdiv 
     156      REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zhdiv 
    157157      REAL(wp), POINTER, DIMENSION(:,:) :: zhup2_e, zhvp2_e, zhust_e, zhvst_e 
    158158      REAL(wp), POINTER, DIMENSION(:,:) :: zsshu_a, zsshv_a 
     
    164164      !                                         !* Allocate temporary arrays 
    165165      CALL wrk_alloc( jpi, jpj, zsshp2_e, zhdiv ) 
    166       CALL wrk_alloc( jpi, jpj, zu_trd, zv_trd, zun_e, zvn_e  ) 
    167       CALL wrk_alloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc) 
     166      CALL wrk_alloc( jpi, jpj, zu_trd, zv_trd) 
     167      CALL wrk_alloc( jpi, jpj, zwx, zwy, zssh_frc, zu_frc, zv_frc) 
    168168      CALL wrk_alloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e) 
    169169      CALL wrk_alloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
     
    188188      ! 
    189189                                                       ! time offset in steps for bdy data update 
    190       IF (.NOT.ln_bt_fw) THEN ; noffset=-2*nn_baro ; ELSE ;  noffset = 0 ; ENDIF 
     190      IF (.NOT.ln_bt_fw) THEN ; noffset=-nn_baro ; ELSE ;  noffset = 0 ; ENDIF 
    191191      ! 
    192192      IF( kt == nit000 ) THEN                !* initialisation 
     
    485485      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    486486         sshn_e(:,:) = sshn (:,:)             
    487          zun_e (:,:) = un_b (:,:)             
    488          zvn_e (:,:) = vn_b (:,:) 
     487         un_e (:,:) = un_b (:,:)             
     488         vn_e (:,:) = vn_b (:,:) 
    489489         ! 
    490490         hu_e  (:,:) = hu   (:,:)        
     
    494494      ELSE                                ! CENTRED integration: start from BEFORE fields 
    495495         sshn_e(:,:) = sshb (:,:) 
    496          zun_e (:,:) = ub_b (:,:)          
    497          zvn_e (:,:) = vb_b (:,:) 
     496         un_e (:,:) = ub_b (:,:)          
     497         vn_e (:,:) = vb_b (:,:) 
    498498         ! 
    499499         hu_e  (:,:) = hu_b (:,:)        
     
    509509      va_b  (:,:) = 0._wp 
    510510      ssha  (:,:) = 0._wp       ! Sum for after averaged sea level 
    511       zu_sum(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
    512       zv_sum(:,:) = 0._wp 
     511      un_adv(:,:) = 0._wp       ! Sum for now transport issued from ts loop 
     512      vn_adv(:,:) = 0._wp 
    513513      !                                             ! ==================== ! 
    514514      DO jn = 1, icycle                             !  sub-time-step loop  ! 
     
    518518         ! Update only tidal forcing at open boundaries 
    519519#if defined key_tide 
    520          IF ( lk_bdy .AND. lk_tide )      CALL bdy_dta_tides( kt, kit=jn, time_offset=(noffset+1) ) 
    521          IF ( ln_tide_pot .AND. lk_tide ) CALL upd_tide( kt, kit=jn, koffset=noffset ) 
     520         IF ( lk_bdy .AND. lk_tide ) CALL bdy_dta_tides( kt, kit=jn, time_offset=(noffset+1) ) 
     521         IF ( ln_tide_pot .AND. lk_tide ) CALL upd_tide( kt, kit=jn, time_offset=noffset ) 
    522522#endif 
    523523         ! 
     
    534534 
    535535         ! Extrapolate barotropic velocities at step jit+0.5: 
    536          ua_e(:,:) = za1 * zun_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 
    537          va_e(:,:) = za1 * zvn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
     536         ua_e(:,:) = za1 * un_e(:,:) + za2 * ub_e(:,:) + za3 * ubb_e(:,:) 
     537         va_e(:,:) = za1 * vn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
    538538 
    539539         IF( lk_vvl ) THEN                                !* Update ocean depth (variable volume case only) 
     
    597597         ! Sum over sub-time-steps to compute advective velocities 
    598598         za2 = wgtbtp2(jn) 
    599          zu_sum(:,:) = zu_sum(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
    600          zv_sum(:,:) = zv_sum(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
     599         un_adv(:,:) = un_adv(:,:) + za2 * zwx(:,:) * r1_e2u(:,:) 
     600         vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
    601601         ! 
    602602         ! Set next sea level: 
     
    733733         ! 
    734734         ! Add bottom stresses: 
    735          zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * zun_e(:,:) * hur_e(:,:) 
    736          zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * zvn_e(:,:) * hvr_e(:,:) 
     735         zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 
     736         zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) 
    737737         ! 
    738738         ! Surface pressure trend: 
     
    751751            DO jj = 2, jpjm1 
    752752               DO ji = fs_2, fs_jpim1   ! vector opt. 
    753                   ua_e(ji,jj) = (                                zun_e(ji,jj)   &  
     753                  ua_e(ji,jj) = (                                 un_e(ji,jj)   &  
    754754                            &     + rdtbt * (                      zwx(ji,jj)   & 
    755755                            &                                 + zu_trd(ji,jj)   & 
     
    757757                            &   ) * umask(ji,jj,1) 
    758758 
    759                   va_e(ji,jj) = (                                zvn_e(ji,jj)   & 
     759                  va_e(ji,jj) = (                                 vn_e(ji,jj)   & 
    760760                            &     + rdtbt * (                      zwy(ji,jj)   & 
    761761                            &                                 + zv_trd(ji,jj)   & 
     
    772772                  zhvra = vmask(ji,jj,1)/(hv_0(ji,jj) + zsshv_a(ji,jj) + 1._wp - vmask(ji,jj,1)) 
    773773 
    774                   ua_e(ji,jj) = (                hu_e(ji,jj)  *  zun_e(ji,jj)   &  
     774                  ua_e(ji,jj) = (                hu_e(ji,jj)  *   un_e(ji,jj)   &  
    775775                            &     + rdtbt * ( zhust_e(ji,jj)  *    zwx(ji,jj)   &  
    776776                            &               + zhup2_e(ji,jj)  * zu_trd(ji,jj)   & 
     
    778778                            &   ) * zhura 
    779779 
    780                   va_e(ji,jj) = (                hv_e(ji,jj)  *  zvn_e(ji,jj)   & 
     780                  va_e(ji,jj) = (                hv_e(ji,jj)  *   vn_e(ji,jj)   & 
    781781                            &     + rdtbt * ( zhvst_e(ji,jj)  *    zwy(ji,jj)   & 
    782782                            &               + zhvp2_e(ji,jj)  * zv_trd(ji,jj)   & 
     
    802802#if defined key_bdy   
    803803                                                           ! open boundaries 
    804          IF( lk_bdy ) CALL bdy_dyn2d( jn, ua_e, va_e, zun_e, zvn_e, hur_e, hvr_e, ssha_e ) 
     804         IF( lk_bdy ) CALL bdy_dyn2d( jn, ua_e, va_e, un_e, vn_e, hur_e, hvr_e, ssha_e ) 
    805805#endif 
    806806#if defined key_agrif                                                            
     
    810810         !                                             !  ---- 
    811811         ubb_e  (:,:) = ub_e  (:,:) 
    812          ub_e   (:,:) = zun_e (:,:) 
    813          zun_e  (:,:) = ua_e  (:,:) 
     812         ub_e   (:,:) = un_e (:,:) 
     813         un_e   (:,:) = ua_e  (:,:) 
    814814         ! 
    815815         vbb_e  (:,:) = vb_e  (:,:) 
    816          vb_e   (:,:) = zvn_e (:,:) 
    817          zvn_e  (:,:) = va_e  (:,:) 
     816         vb_e   (:,:) = vn_e (:,:) 
     817         vn_e   (:,:) = va_e  (:,:) 
    818818         ! 
    819819         sshbb_e(:,:) = sshb_e(:,:) 
     
    840840      ! ----------------------------------------------------------------------------- 
    841841      ! 
    842       ! At this stage ssha holds a time averaged value 
    843       !                                                ! Sea Surface Height at u-,v- and f-points 
    844       IF( lk_vvl ) THEN                                ! (required only in key_vvl case) 
     842      ! Set advection velocity correction: 
     843      zwx(:,:) = un_adv(:,:) 
     844      zwy(:,:) = vn_adv(:,:) 
     845      IF (((kt==nit000).AND.(neuler==0)).OR.(.NOT.ln_bt_fw)) THEN      
     846         un_adv(:,:) = zwx(:,:)*hur(:,:) 
     847         vn_adv(:,:) = zwy(:,:)*hvr(:,:) 
     848      ELSE 
     849         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:)) * hur(:,:) 
     850         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:)) * hvr(:,:) 
     851      END IF 
     852 
     853      IF (ln_bt_fw) THEN ! Save integrated transport for next computation 
     854         ub2_b(:,:) = zwx(:,:) 
     855         vb2_b(:,:) = zwy(:,:) 
     856      ENDIF 
     857      ! 
     858      ! Update barotropic trend: 
     859      IF (( ln_dynadv_vec ).OR. (.NOT. lk_vvl)) THEN 
     860         DO jk=1,jpkm1 
     861            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
     862            va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b 
     863         END DO 
     864      ELSE 
     865         ! At this stage, ssha has been corrected: compute new depths at velocity points 
    845866         DO jj = 1, jpjm1 
    846867            DO ji = 1, jpim1      ! NO Vector Opt. 
     
    854875         END DO 
    855876         CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 
    856       ENDIF 
    857       ! 
    858       ! Set advection velocity correction: 
    859       IF (((kt==nit000).AND.(neuler==0)).OR.(.NOT.ln_bt_fw)) THEN      
    860          un_adv(:,:) = zu_sum(:,:)*hur(:,:) 
    861          vn_adv(:,:) = zv_sum(:,:)*hvr(:,:) 
    862       ELSE 
    863          un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zu_sum(:,:)) * hur(:,:) 
    864          vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zv_sum(:,:)) * hvr(:,:) 
    865       END IF 
    866  
    867       IF (ln_bt_fw) THEN ! Save integrated transport for next computation 
    868          ub2_b(:,:) = zu_sum(:,:) 
    869          vb2_b(:,:) = zv_sum(:,:) 
    870       ENDIF 
    871       ! 
    872       ! Update barotropic trend: 
    873       IF (( ln_dynadv_vec ).OR. (.NOT. lk_vvl)) THEN 
    874          DO jk=1,jpkm1 
    875             ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
    876             va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b 
    877          END DO 
    878       ELSE 
     877         ! 
    879878         DO jk=1,jpkm1 
    880879            ua(:,:,jk) = ua(:,:,jk) + hur(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
     
    915914      ! 
    916915      CALL wrk_dealloc( jpi, jpj, zsshp2_e, zhdiv ) 
    917       CALL wrk_dealloc( jpi, jpj, zu_trd, zv_trd, zun_e, zvn_e ) 
    918       CALL wrk_dealloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc ) 
     916      CALL wrk_dealloc( jpi, jpj, zu_trd, zv_trd ) 
     917      CALL wrk_dealloc( jpi, jpj, zwx, zwy, zssh_frc, zu_frc, zv_frc ) 
    919918      CALL wrk_dealloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e ) 
    920919      CALL wrk_dealloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
     
    10641063      ! 
    10651064      INTEGER  :: ji ,jj 
    1066       INTEGER  ::   ios                 ! Local integer output status for namelist read 
    10671065      REAL(wp) :: zxr2, zyr2, zcmax 
    10681066      REAL(wp), POINTER, DIMENSION(:,:) :: zcu 
    10691067      !! 
    1070       NAMELIST/namsplit/ ln_bt_fw, ln_bt_av, ln_bt_nn_auto, & 
    1071       &                  nn_baro, rn_bt_cmax, nn_bt_flt 
    10721068      !!---------------------------------------------------------------------- 
    10731069      ! 
    1074       REWIND( numnam_ref )              ! Namelist namsplit in reference namelist : time splitting parameters 
    1075       READ  ( numnam_ref, namsplit, IOSTAT = ios, ERR = 901) 
    1076 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsplit in reference namelist', lwp ) 
    1077  
    1078       REWIND( numnam_cfg )              ! Namelist namsplit in configuration namelist : time splitting parameters 
    1079       READ  ( numnam_cfg, namsplit, IOSTAT = ios, ERR = 902 ) 
    1080 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsplit in configuration namelist', lwp ) 
    1081       IF(lwm) WRITE ( numond, namsplit ) 
    1082       ! 
    1083       !         ! Max courant number for ext. grav. waves 
     1070      ! Max courant number for ext. grav. waves 
    10841071      ! 
    10851072      CALL wrk_alloc( jpi, jpj, zcu ) 
    10861073      ! 
    1087       IF (lk_vvl) THEN  
    1088          DO jj = 1, jpj 
    1089             DO ji =1, jpi 
    1090                zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
    1091                zyr2 = r1_e2t(ji,jj) * r1_e2t(ji,jj) 
    1092                zcu(ji,jj) = SQRT( grav * ht_0(ji,jj) * (zxr2 + zyr2) ) 
    1093             END DO 
    1094          END DO 
    1095       ELSE 
    1096          DO jj = 1, jpj 
    1097             DO ji =1, jpi 
    1098                zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
    1099                zyr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
    1100                zcu(ji,jj) = SQRT( grav * ht(ji,jj) * (zxr2 + zyr2) ) 
    1101             END DO 
    1102          END DO 
    1103       ENDIF 
    1104  
     1074      DO jj = 1, jpj 
     1075         DO ji =1, jpi 
     1076            zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
     1077            zyr2 = r1_e2t(ji,jj) * r1_e2t(ji,jj) 
     1078            zcu(ji,jj) = SQRT( grav * ht_0(ji,jj) * (zxr2 + zyr2) ) 
     1079         END DO 
     1080      END DO 
     1081      ! 
    11051082      zcmax = MAXVAL( zcu(:,:) ) 
    11061083      IF( lk_mpp )   CALL mpp_max( zcmax ) 
    11071084 
    11081085      ! Estimate number of iterations to satisfy a max courant number= rn_bt_cmax 
    1109       IF (ln_bt_nn_auto) nn_baro = CEILING( rdt / rn_bt_cmax * zcmax) 
     1086      IF (ln_bt_auto) nn_baro = CEILING( rdt / rn_bt_cmax * zcmax) 
    11101087       
    11111088      rdtbt = rdt / REAL( nn_baro , wp ) 
     
    11151092      IF(lwp) WRITE(numout,*) 'dyn_spg_ts : split-explicit free surface' 
    11161093      IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    1117       IF( ln_bt_nn_auto ) THEN 
    1118          IF(lwp) WRITE(numout,*) '     ln_ts_nn_auto=.true. Automatically set nn_baro ' 
     1094      IF( ln_bt_auto ) THEN 
     1095         IF(lwp) WRITE(numout,*) '     ln_ts_auto=.true. Automatically set nn_baro ' 
    11191096         IF(lwp) WRITE(numout,*) '     Max. courant number allowed: ', rn_bt_cmax 
    11201097      ELSE 
    1121          IF(lwp) WRITE(numout,*) '     ln_ts_nn_auto=.false.: Use nn_baro in namelist ' 
     1098         IF(lwp) WRITE(numout,*) '     ln_ts_auto=.false.: Use nn_baro in namelist ' 
    11221099      ENDIF 
    11231100 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/SBC/updtide.F90

    r5902 r5917  
    3131CONTAINS 
    3232 
    33    SUBROUTINE upd_tide( kt, kit, kbaro, koffset ) 
     33   SUBROUTINE upd_tide( kt, kit, time_offset ) 
    3434      !!---------------------------------------------------------------------- 
    3535      !!                 ***  ROUTINE upd_tide  *** 
     
    4242      !!----------------------------------------------------------------------       
    4343      INTEGER, INTENT(in)           ::   kt      ! ocean time-step index 
    44       INTEGER, INTENT(in), OPTIONAL ::   kit     ! external mode sub-time-step index (time split only) 
    45       INTEGER, INTENT(in), OPTIONAL ::   kbaro   ! number of sub-time-step           (time split only) 
    46       INTEGER, INTENT(in), OPTIONAL ::   koffset ! time offset in number  
    47                                                  ! of sub-time-steps                 (time split only) 
     44      INTEGER, INTENT(in), OPTIONAL ::   kit     ! external mode sub-time-step index (lk_dynspg_ts=T) 
     45      INTEGER, INTENT(in), OPTIONAL ::   time_offset ! time offset in number  
     46                                                     ! of internal steps             (lk_dynspg_ts=F) 
     47                                                     ! of external steps             (lk_dynspg_ts=T) 
    4848      ! 
    4949      INTEGER  ::   joffset      ! local integer 
     
    5757      ! 
    5858      joffset = 0 
    59       IF( PRESENT( koffset ) )   joffset = koffset 
     59      IF( PRESENT( time_offset ) )   joffset = time_offset 
    6060      ! 
    61       IF( PRESENT( kit ) .AND. PRESENT( kbaro ) )   THEN 
    62          zt = zt + ( kit + 0.5_wp * ( joffset - 1 ) ) * rdt / REAL( kbaro, wp ) 
     61      IF( PRESENT( kit ) )   THEN 
     62         zt = zt + ( kit +  joffset - 1 ) * rdt / REAL( nn_baro, wp ) 
    6363      ELSE 
    6464         zt = zt + joffset * rdt 
     
    7474      IF( ln_tide_ramp ) THEN         ! linear increase if asked 
    7575         zt = ( kt - nit000 ) * rdt 
    76          IF( PRESENT( kit ) .AND. PRESENT( kbaro ) )   zt = zt + kit * rdt / REAL( kbaro, wp ) 
     76         IF( PRESENT( kit ) )   zt = zt + ( kit + joffset -1) * rdt / REAL( nn_baro, wp ) 
    7777         zramp = MIN(  MAX( zt / (rdttideramp*rday) , 0._wp ) , 1._wp  ) 
    7878         pot_astro(:,:) = zramp * pot_astro(:,:) 
     
    8686  !!---------------------------------------------------------------------- 
    8787CONTAINS 
    88   SUBROUTINE upd_tide( kt, kit, kbaro, koffset )          ! Empty routine 
     88  SUBROUTINE upd_tide( kt, kit, time_offset )  ! Empty routine 
    8989    INTEGER, INTENT(in)           ::   kt      !  integer  arg, dummy routine 
    9090    INTEGER, INTENT(in), OPTIONAL ::   kit     !  optional arg, dummy routine 
    91     INTEGER, INTENT(in), OPTIONAL ::   kbaro   !  optional arg, dummy routine 
    92     INTEGER, INTENT(in), OPTIONAL ::   koffset !  optional arg, dummy routine 
     91    INTEGER, INTENT(in), OPTIONAL ::   time_offset !  optional arg, dummy routine 
    9392    WRITE(*,*) 'upd_tide: You should not have seen this print! error?', kt 
    9493  END SUBROUTINE upd_tide 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/oce.F90

    r5902 r5917  
    4747#endif 
    4848 
    49    !! Arrays at barotropic time step: 
    50    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::  &  
    51                                                             sshbb_e, sshb_e, sshn_e, ssha_e, &  
    52                                                             ubb_e,     ub_e,           ua_e, & 
    53                                                             vbb_e,     vb_e,           va_e, & 
    54                                                             hu_e,  hur_e,   hv_e,  hvr_e 
     49   !! Arrays at barotropic time step:                   ! bef before !   before   !    now     !   after    ! 
     50   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ubb_e    ,    ub_e    ,    un_e    ,    ua_e  
     51   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vbb_e    ,    vb_e    ,    vn_e    ,    va_e  
     52   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sshbb_e  ,    sshb_e  ,    sshn_e  ,    ssha_e  
     53   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hu_e 
     54   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hv_e                                                 
     55   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hur_e 
     56   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::                              hvr_e  
    5557 
    5658   !! interpolated gradient (only used in zps case) 
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/step.F90

    r5906 r5917  
    182182      !  Ocean dynamics : hdiv, ssh, e3, u, v, w 
    183183      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    184                          ua(:,:,:) = 0._wp            ! set dynamics trends to zero 
    185                          va(:,:,:) = 0._wp 
    186184 
    187185                         CALL ssh_nxt       ( kstp )  ! after ssh (includes call to div_hor) 
     
    194192                         CALL eos    ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 
    195193                             
    196       IF( ln_zps .AND. .NOT. ln_isfcav)   &                              ! Partial steps: bottom before horizontal gradient 
    197                &         CALL zps_hde    ( kstp, jpts, tsn, gtsu, gtsv,  &  ! of t, s, rd at the last ocean level 
    198                &                                          rhd, gru , grv    ) 
    199       IF( ln_zps .AND.       ln_isfcav)   &                              ! Partial steps: top & bottom before horizontal gradient 
    200                &         CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv, gtui, gtvi,   &  
    201                &                                       rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
    202                &                                            grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi    ) 
    203  
     194                         ua(:,:,:) = 0._wp            ! set dynamics trends to zero 
     195                         va(:,:,:) = 0._wp 
    204196 
    205197      IF(  lk_asminc .AND. ln_asmiau .AND. ln_dyninc )   & 
     
    218210                                                      ! With split-explicit free surface, since now transports have been updated and ssha as well 
    219211      IF( ln_dynspg_ts ) THEN                         ! vertical scale factors and vertical velocity need to be updated 
    220                             CALL div_hor    ( kstp )  ! Horizontal divergence  (2nd call in time-split case) 
    221          IF( lk_vvl     )   CALL dom_vvl_sf_nxt( kstp, kcall=2 )  ! after vertical scale factors (update depth average component) 
    222                             CALL wzv        ( kstp )  ! now cross-level velocity  
     212                            CALL div_hor    ( kstp )              ! Horizontal divergence  (2nd call in time-split case) 
     213         IF( lk_vvl )       CALL dom_vvl_sf_nxt( kstp, kcall=2 )  ! after vertical scale factors (update depth average component) 
     214                            CALL wzv        ( kstp )              ! now cross-level velocity  
    223215      ENDIF 
    224216 
     
    249241      ! Active tracers                               
    250242      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    251                              tsa(:,:,:,:) = 0._wp           ! set tracer trends to zero 
     243                         tsa(:,:,:,:) = 0._wp         ! set tracer trends to zero 
    252244 
    253245      IF(  lk_asminc .AND. ln_asmiau .AND. & 
    254          & ln_trainc     )   CALL tra_asm_inc( kstp )       ! apply tracer assimilation increment 
    255                              CALL tra_sbc    ( kstp )       ! surface boundary condition 
    256       IF( ln_traqsr      )   CALL tra_qsr    ( kstp )       ! penetrative solar radiation qsr 
    257       IF( ln_trabbc      )   CALL tra_bbc    ( kstp )       ! bottom heat flux 
    258       IF( lk_trabbl      )   CALL tra_bbl    ( kstp )       ! advective (and/or diffusive) bottom boundary layer scheme 
    259       IF( ln_tradmp      )   CALL tra_dmp    ( kstp )       ! internal damping trends 
    260       IF( lk_bdy         )   CALL bdy_tra_dmp( kstp )       ! bdy damping trends 
    261 #if defined key_agrif 
    262       IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra          ! tracers sponge 
    263 #endif 
    264                              CALL tra_adv    ( kstp )       ! horizontal & vertical advection 
    265                              CALL tra_ldf    ( kstp )       ! lateral mixing 
     246         & ln_trainc )   CALL tra_asm_inc   ( kstp )  ! apply tracer assimilation increment 
     247                         CALL tra_sbc       ( kstp )  ! surface boundary condition 
     248      IF( ln_traqsr  )   CALL tra_qsr       ( kstp )  ! penetrative solar radiation qsr 
     249      IF( ln_trabbc  )   CALL tra_bbc       ( kstp )  ! bottom heat flux 
     250      IF( lk_trabbl  )   CALL tra_bbl       ( kstp )  ! advective (and/or diffusive) bottom boundary layer scheme 
     251      IF( ln_tradmp  )   CALL tra_dmp       ( kstp )  ! internal damping trends 
     252      IF( lk_bdy     )   CALL bdy_tra_dmp   ( kstp )  ! bdy damping trends 
     253#if defined key_agrif 
     254      IF(.NOT. Agrif_Root())  &  
     255               &         CALL Agrif_Sponge_tra        ! tracers sponge 
     256#endif 
     257                         CALL tra_adv       ( kstp )  ! horizontal & vertical advection 
     258                         CALL tra_ldf       ( kstp )  ! lateral mixing 
    266259 
    267260!!gm : why CALL to dia_ptr has been moved here??? (use trends info?) 
    268       IF( ln_diaptr      )   CALL dia_ptr                   ! Poleward adv/ldf TRansports diagnostics 
     261      IF( ln_diaptr  )   CALL dia_ptr                 ! Poleward adv/ldf TRansports diagnostics 
    269262!!gm 
    270                              CALL tra_zdf    ( kstp )       ! vertical mixing and after tracer fields 
    271       IF( ln_zdfnpc      )   CALL tra_npc    ( kstp )       ! update after fields by non-penetrative convection 
     263                         CALL tra_zdf       ( kstp )  ! vertical mixing and after tracer fields 
     264      IF( ln_zdfnpc  )   CALL tra_npc       ( kstp )  ! update after fields by non-penetrative convection 
    272265 
    273266      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    288281!!  
    289282!!jc2: dynnxt must be the latest call. fse3t_b are indeed updated in that routine 
    290                              CALL tra_nxt    ( kstp )       ! tracer fields at next time step 
    291                              CALL dyn_nxt    ( kstp )       ! lateral velocity at next time step 
    292                              CALL ssh_swp    ( kstp )       ! swap of sea surface height 
    293       IF( lk_vvl         )   CALL dom_vvl_sf_swp( kstp )    ! swap of vertical scale factors 
     283                         CALL tra_nxt       ( kstp )  ! finalize (bcs) tracer fields at next time step and swap 
     284                         CALL dyn_nxt       ( kstp )  ! finalize (bcs) velocities at next time step and swap 
     285                         CALL ssh_swp       ( kstp )  ! swap of sea surface height 
     286      IF( lk_vvl     )   CALL dom_vvl_sf_swp( kstp )  ! swap of vertical scale factors 
    294287      ! 
    295288 
     
    299292!!jc: That would be better, but see comment above 
    300293!! 
    301       IF( lrst_oce       )   CALL rst_write( kstp )       ! write output ocean restart file 
     294      IF( lrst_oce   )   CALL rst_write     ( kstp )  ! write output ocean restart file 
    302295 
    303296#if defined key_agrif 
     
    305298      ! AGRIF 
    306299      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<       
    307                                CALL Agrif_Integrate_ChildGrids( stp )   
    308  
    309       IF ( Agrif_NbStepint().EQ.0 ) THEN 
    310                                CALL Agrif_Update_Tra()      ! Update active tracers 
    311                                CALL Agrif_Update_Dyn()      ! Update momentum 
    312       ENDIF 
    313 #endif 
    314       IF( ln_diahsb        )   CALL dia_hsb( kstp )         ! - ML - global conservation diagnostics 
    315       IF( lk_diaobs  )         CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
     300                         CALL Agrif_Integrate_ChildGrids( stp )   
     301 
     302      IF ( Agrif_NbStepint().EQ.0 ) THEN              ! AGRIF Update  
     303!!jc in fact update i useless at last time step, but do it for global diagnostics 
     304                         CALL Agrif_Update_Tra()      ! Update active tracers 
     305                         CALL Agrif_Update_Dyn()      ! Update momentum 
     306      ENDIF 
     307#endif 
     308      IF( ln_diahsb  )   CALL dia_hsb       ( kstp )  ! - ML - global conservation diagnostics 
     309      IF( lk_diaobs  )   CALL dia_obs       ( kstp )  ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
    316310 
    317311      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    318312      ! Control 
    319313      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    320                                CALL stp_ctl( kstp, indic ) 
    321       IF( indic < 0        )   THEN 
    322                                CALL ctl_stop( 'step: indic < 0' ) 
    323                                CALL dia_wri_state( 'output.abort', kstp ) 
    324       ENDIF 
    325       IF( kstp == nit000   )   THEN 
     314                         CALL stp_ctl       ( kstp, indic ) 
     315      IF( indic < 0  )   THEN 
     316                         CALL ctl_stop( 'step: indic < 0' ) 
     317                         CALL dia_wri_state( 'output.abort', kstp ) 
     318      ENDIF 
     319      IF( kstp == nit000 )   THEN 
    326320                 CALL iom_close( numror )     ! close input  ocean restart file 
    327321         IF(lwm) CALL FLUSH    ( numond )     ! flush output namelist oce 
     
    334328      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    335329!!gm why lk_oasis and not lk_cpl ???? 
    336       IF( lk_oasis         )   CALL sbc_cpl_snd( kstp )     ! coupled mode : field exchanges 
     330      IF( lk_oasis   )   CALL sbc_cpl_snd( kstp )     ! coupled mode : field exchanges 
    337331      ! 
    338332#if defined key_iomput 
Note: See TracChangeset for help on using the changeset viewer.