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 12117 – NEMO

Changeset 12117


Ignore:
Timestamp:
2019-12-09T10:46:17+01:00 (4 years ago)
Author:
smueller
Message:

Merging of the developments in /NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides@12096 with respect to /NEMO/trunk@12072 into /NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis (tickets #2175 and #2194)

Location:
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis
Files:
4 deleted
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/AMM12/EXPREF/namelist_cfg

    r11983 r12117  
    154154&nam_tide      !   tide parameters                                      (default: OFF) 
    155155!----------------------------------------------------------------------- 
    156    ln_tide     = .true.    ! Activate tides 
    157       ln_tide_pot   = .true.  !  use tidal potential forcing 
    158  
    159    clname(1)     =   'Q1'   !  name of constituent 
    160    clname(2)     =   'O1' 
    161    clname(3)     =   'P1' 
    162    clname(4)     =   'S1' 
    163    clname(5)     =   'K1' 
    164    clname(6)     =   '2N2' 
    165    clname(7)     =   'MU2' 
    166    clname(8)     =   'N2' 
    167    clname(9)     =   'NU2' 
    168    clname(10)    =   'M2' 
    169    clname(11)    =   'L2' 
    170    clname(12)    =   'T2' 
    171    clname(13)    =   'S2' 
    172    clname(14)    =   'K2' 
    173    clname(15)    =   'M4' 
     156   ln_tide     = .true.        ! Activate tides 
     157      ln_tide_pot     = .true. !  use tidal potential forcing 
     158   sn_tide_cnames(1)  = 'Q1'   !  name of constituent 
     159   sn_tide_cnames(2)  = 'O1' 
     160   sn_tide_cnames(3)  = 'P1' 
     161   sn_tide_cnames(4)  = 'S1' 
     162   sn_tide_cnames(5)  = 'K1' 
     163   sn_tide_cnames(6)  = '2N2' 
     164   sn_tide_cnames(7)  = 'MU2' 
     165   sn_tide_cnames(8)  = 'N2' 
     166   sn_tide_cnames(9)  = 'NU2' 
     167   sn_tide_cnames(10) = 'M2' 
     168   sn_tide_cnames(11) = 'L2' 
     169   sn_tide_cnames(12) = 'T2' 
     170   sn_tide_cnames(13) = 'S2' 
     171   sn_tide_cnames(14) = 'K2' 
     172   sn_tide_cnames(15) = 'M4' 
    174173/ 
    175174!----------------------------------------------------------------------- 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SHARED/field_def_nemo-oce.xml

    r12022 r12117  
    206206 
    207207      </field_group> <!-- grid_T --> 
     208 
     209      <!-- Tides --> 
     210 
     211      <field_group id="Tides_T" grid_ref="grid_T_2D" operation="once" > 
     212        <!-- Tidal potential --> 
     213        <field id="tide_pot"      long_name="Total tidal potential" unit="m" /> 
     214        <field id="tide_pot_M2"   long_name="M2 tidal potential"    unit="m" /> 
     215        <field id="tide_pot_N2"   long_name="N2 tidal potential"    unit="m" /> 
     216        <field id="tide_pot_2N2"  long_name="2N2 tidal potential"   unit="m" /> 
     217        <field id="tide_pot_S2"   long_name="S2 tidal potential"    unit="m" /> 
     218        <field id="tide_pot_K2"   long_name="K2 tidal potential"    unit="m" /> 
     219        <field id="tide_pot_K1"   long_name="K1 tidal potential"    unit="m" /> 
     220        <field id="tide_pot_O1"   long_name="O1 tidal potential"    unit="m" /> 
     221        <field id="tide_pot_Q1"   long_name="Q1 tidal potential"    unit="m" /> 
     222        <field id="tide_pot_P1"   long_name="P1 tidal potential"    unit="m" /> 
     223        <field id="tide_pot_M4"   long_name="M4 tidal potential"    unit="m" /> 
     224        <field id="tide_pot_Mf"   long_name="Mf tidal potential"    unit="m" /> 
     225        <field id="tide_pot_Mm"   long_name="Mm tidal potential"    unit="m" /> 
     226        <field id="tide_pot_Msqm" long_name="Msqm tidal potential"  unit="m" /> 
     227        <field id="tide_pot_Mtm"  long_name="Mtm tidal potential"   unit="m" /> 
     228        <field id="tide_pot_S1"   long_name="S1 tidal potential"    unit="m" /> 
     229        <field id="tide_pot_MU2"  long_name="MU2 tidal potential"   unit="m" /> 
     230        <field id="tide_pot_NU2"  long_name="NU2 tidal potential"   unit="m" /> 
     231        <field id="tide_pot_L2"   long_name="L2 tidal potential"    unit="m" /> 
     232        <field id="tide_pot_T2"   long_name="T2 tidal potential"    unit="m" /> 
     233      </field_group> 
    208234 
    209235      <!-- OSMOSIS variables (available with ln_zdfosm=.true.) --> 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SHARED/namelist_ref

    r11983 r12117  
    568568!----------------------------------------------------------------------- 
    569569   ln_tide     = .false.      ! Activate tides 
     570      nn_tide_var   = 1          !  Variant of tidal parameter set and tide-potential computation 
     571      !                          !     (1: default; 0: compatibility with previous versions) 
     572      ln_tide_dia   = .false.    !  Enable tidal diagnostic output 
    570573      ln_tide_pot   = .true.                !  use tidal potential forcing 
     574         rn_tide_gamma = 0.7                   ! Tidal tilt factor 
    571575         ln_scal_load  = .false.               ! Use scalar approximation for 
    572576            rn_scal_load = 0.094               !     load potential 
     
    575579            !       
    576580      ln_tide_ramp  = .false.               !  Use linear ramp for tides at startup 
    577          rdttideramp   =    0.                 !  ramp duration in days 
    578       clname(1)    = 'DUMMY'               !  name of constituent - all tidal components must be set in namelist_cfg 
     581         rn_tide_ramp_dt = 0.               !  ramp duration in days 
     582      sn_tide_cnames(1) = 'DUMMY'               !  name of constituent - all tidal components must be set in namelist_cfg 
    579583/ 
    580584!----------------------------------------------------------------------- 
     
    652656   filtide          = 'bdydta/amm12_bdytide_'   !  file name root of tidal forcing files 
    653657   ln_bdytide_2ddta = .false.                   ! 
    654    ln_bdytide_conj  = .false.                   !  
    655658/ 
    656659 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SPITZ12/EXPREF/namelist_cfg

    r11983 r12117  
    139139&nam_tide      !   tide parameters                                      (default: OFF) 
    140140!----------------------------------------------------------------------- 
    141    ln_tide     = .true.      ! Activate tides 
    142       ln_tide_pot   = .false.                !  use tidal potential forcing 
    143       clname(1)     =   'M2'    !  name of constituent 
    144       clname(2)    =   'S2' 
    145       clname(3)    =   'N2' 
    146       clname(4)    =   'K2' 
    147       clname(5)    =   'K1' 
    148       clname(6)    =   'O1' 
    149       clname(7)    =   'P1' 
    150       clname(8)    =   'Q1' 
     141   ln_tide     = .true.           ! Activate tides 
     142      ln_tide_pot       = .false. !  use tidal potential forcing 
     143      sn_tide_cnames(1) =   'M2'  !  name of constituent 
     144      sn_tide_cnames(2) =   'S2' 
     145      sn_tide_cnames(3) =   'N2' 
     146      sn_tide_cnames(4) =   'K2' 
     147      sn_tide_cnames(5) =   'K1' 
     148      sn_tide_cnames(6) =   'O1' 
     149      sn_tide_cnames(7) =   'P1' 
     150      sn_tide_cnames(8) =   'Q1' 
    151151/ 
    152152!----------------------------------------------------------------------- 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdydta.F90

    r12075 r12117  
    2323   USE phycst         ! physical constants 
    2424   USE sbcapr         ! atmospheric pressure forcing 
    25    USE sbctide        ! Tidal forcing or not 
     25   USE tide_mod, ONLY: ln_tide ! tidal forcing 
    2626   USE bdy_oce        ! ocean open boundary conditions   
    2727   USE bdytides       ! tidal forcing at boundaries 
     
    7575CONTAINS 
    7676 
    77    SUBROUTINE bdy_dta( kt, kit, kt_offset ) 
     77   SUBROUTINE bdy_dta( kt, kt_offset ) 
    7878      !!---------------------------------------------------------------------- 
    7979      !!                   ***  SUBROUTINE bdy_dta  *** 
     
    8585      !!---------------------------------------------------------------------- 
    8686      INTEGER, INTENT(in)           ::   kt           ! ocean time-step index  
    87       INTEGER, INTENT(in), OPTIONAL ::   kit          ! subcycle time-step index (for timesplitting option) 
    88       INTEGER, INTENT(in), OPTIONAL ::   kt_offset    ! time offset in units of timesteps. NB. if kit 
    89       !                                               ! is present then units = subcycle timesteps. 
     87      INTEGER, INTENT(in), OPTIONAL ::   kt_offset    ! time offset in units of timesteps 
    9088      !                                               ! kt_offset = 0 => get data at "now" time level 
    9189      !                                               ! kt_offset = -1 => get data at "before" time level 
     
    105103      ! Initialise data arrays once for all from initial conditions where required 
    106104      !--------------------------------------------------------------------------- 
    107       IF( kt == nit000 .AND. .NOT.PRESENT(kit) ) THEN 
     105      IF( kt == nit000 ) THEN 
    108106 
    109107         ! Calculate depth-mean currents 
     
    216214         ! read/update all bdy data 
    217215         ! ------------------------ 
    218          CALL fld_read( kt, 1, bf_alias, kit = kit, kt_offset = kt_offset ) 
     216         CALL fld_read( kt, 1, bf_alias, kt_offset = kt_offset ) 
    219217 
    220218         ! apply some corrections in some specific cases... 
     
    275273            END DO 
    276274         ENDIF   ! ltotvel 
    277  
    278          ! update tidal harmonic forcing 
    279          IF( PRESENT(kit) .AND. nn_dyn2d_dta(jbdy) .GE. 2 ) THEN 
    280             CALL bdytide_update( kt = kt, idx = idx_bdy(jbdy), dta = dta_alias, td = tides(jbdy),   &  
    281                &                 kit = kit, kt_offset = kt_offset ) 
    282          ENDIF 
    283275 
    284276         !  atm surface pressure : add inverted barometer effect to ssh if it was read 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdyini.F90

    r11536 r12117  
    2222   USE bdydta         ! open boundary cond. setting   (bdy_dta_init routine) 
    2323   USE bdytides       ! open boundary cond. setting   (bdytide_init routine) 
    24    USE sbctide        ! Tidal forcing or not 
     24   USE tide_mod, ONLY: ln_tide ! tidal forcing 
    2525   USE phycst   , ONLY: rday 
    2626   ! 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdytides.F90

    r11536 r12117  
    1818   USE phycst         ! physical constants 
    1919   USE bdy_oce        ! ocean open boundary conditions 
    20    USE tideini        !  
     20   USE tide_mod       !  
    2121   USE daymod         ! calendar 
    2222   ! 
     
    3030 
    3131   PUBLIC   bdytide_init     ! routine called in bdy_init 
    32    PUBLIC   bdytide_update   ! routine called in bdy_dta 
    3332   PUBLIC   bdy_dta_tides    ! routine called in dyn_spg_ts 
    3433 
     
    4544   TYPE(OBC_DATA)  , PUBLIC, DIMENSION(jp_bdy) :: dta_bdy_s  !: bdy external data (slow component) 
    4645 
     46   INTEGER ::   kt_tide 
     47 
    4748   !!---------------------------------------------------------------------- 
    4849   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    6465      CHARACTER(len=80)                         ::   filtide             !: Filename root for tidal input files 
    6566      LOGICAL                                   ::   ln_bdytide_2ddta    !: If true, read 2d harmonic data 
    66       LOGICAL                                   ::   ln_bdytide_conj     !: If true, assume complex conjugate tidal data 
    6767      !! 
    6868      INTEGER                                   ::   ib_bdy, itide, ib   !: dummy loop indices 
     
    7777      TYPE(TIDES_DATA),  POINTER                ::   td                  !: local short cut    
    7878      !! 
    79       NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta, ln_bdytide_conj 
     79      NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta 
    8080      !!---------------------------------------------------------------------- 
    8181      ! 
     
    105105            IF(lwp) WRITE(numout,*) '          Namelist nambdy_tide : tidal harmonic forcing at open boundaries' 
    106106            IF(lwp) WRITE(numout,*) '             read tidal data in 2d files: ', ln_bdytide_2ddta 
    107             IF(lwp) WRITE(numout,*) '             assume complex conjugate   : ', ln_bdytide_conj 
    108107            IF(lwp) WRITE(numout,*) '             Number of tidal components to read: ', nb_harmo 
    109108            IF(lwp) THEN  
    110109                    WRITE(numout,*) '             Tidal components: '  
    111110               DO itide = 1, nb_harmo 
    112                   WRITE(numout,*)  '                 ', Wave(ntide(itide))%cname_tide  
     111                  WRITE(numout,*)  '                 ', tide_harmonics(itide)%cname_tide  
    113112               END DO 
    114113            ENDIF  
     
    151150               igrd = 1                       ! Everything is at T-points here 
    152151               DO itide = 1, nb_harmo 
    153                   CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 
    154                   CALL iom_get( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) )  
     152                  CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z1', ztr(:,:) ) 
     153                  CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z2', zti(:,:) )  
    155154                  DO ib = 1, ilen0(igrd) 
    156155                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    168167               igrd = 2                       ! Everything is at U-points here 
    169168               DO itide = 1, nb_harmo 
    170                   CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) ) 
    171                   CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) ) 
     169                  CALL iom_get  ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u1', ztr(:,:) ) 
     170                  CALL iom_get  ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u2', zti(:,:) ) 
    172171                  DO ib = 1, ilen0(igrd) 
    173172                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    185184               igrd = 3                       ! Everything is at V-points here 
    186185               DO itide = 1, nb_harmo 
    187                   CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) ) 
    188                   CALL iom_get  ( inum, jpdom_autoglo, TRIM(Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) ) 
     186                  CALL iom_get  ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v1', ztr(:,:) ) 
     187                  CALL iom_get  ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v2', zti(:,:) ) 
    189188                  DO ib = 1, ilen0(igrd) 
    190189                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     
    210209               DO itide = 1, nb_harmo 
    211210                  !                                                              ! SSH fields 
    212                   clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_T.nc' 
     211                  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_T.nc' 
    213212                  CALL iom_open( clfile, inum ) 
    214213                  CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) 
     
    218217                  CALL iom_close( inum ) 
    219218                  !                                                              ! U fields 
    220                   clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_U.nc' 
     219                  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_U.nc' 
    221220                  CALL iom_open( clfile, inum ) 
    222221                  CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) 
     
    226225                  CALL iom_close( inum ) 
    227226                  !                                                              ! V fields 
    228                   clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_V.nc' 
     227                  clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_V.nc' 
    229228                  CALL iom_open( clfile, inum ) 
    230229                  CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) 
     
    240239            ENDIF ! ln_bdytide_2ddta=.true. 
    241240            ! 
    242             IF( ln_bdytide_conj ) THEN    ! assume complex conjugate in data files 
    243                td%ssh0(:,:,2) = - td%ssh0(:,:,2) 
    244                td%u0  (:,:,2) = - td%u0  (:,:,2) 
    245                td%v0  (:,:,2) = - td%v0  (:,:,2) 
    246             ENDIF 
    247             ! 
    248241            ! Allocate slow varying data in the case of time splitting: 
    249242            ! Do it anyway because at this stage knowledge of free surface scheme is unknown 
     
    260253      ! 
    261254   END SUBROUTINE bdytide_init 
    262  
    263  
    264    SUBROUTINE bdytide_update( kt, idx, dta, td, kit, kt_offset ) 
    265       !!---------------------------------------------------------------------- 
    266       !!                 ***  SUBROUTINE bdytide_update  *** 
    267       !!                 
    268       !! ** Purpose : - Add tidal forcing to ssh, u2d and v2d OBC data arrays.  
    269       !!                 
    270       !!---------------------------------------------------------------------- 
    271       INTEGER          , INTENT(in   ) ::   kt          ! Main timestep counter 
    272       TYPE(OBC_INDEX)  , INTENT(in   ) ::   idx         ! OBC indices 
    273       TYPE(OBC_DATA)   , INTENT(inout) ::   dta         ! OBC external data 
    274       TYPE(TIDES_DATA) , INTENT(inout) ::   td          ! tidal harmonics data 
    275       INTEGER, OPTIONAL, INTENT(in   ) ::   kit         ! Barotropic timestep counter (for timesplitting option) 
    276       INTEGER, OPTIONAL, INTENT(in   ) ::   kt_offset   ! time offset in units of timesteps. NB. if kit 
    277       !                                                 ! is present then units = subcycle timesteps. 
    278       !                                                 ! kt_offset = 0  => get data at "now"    time level 
    279       !                                                 ! kt_offset = -1 => get data at "before" time level 
    280       !                                                 ! kt_offset = +1 => get data at "after"  time level 
    281       !                                                 ! etc. 
    282       ! 
    283       INTEGER  ::   itide, igrd, ib       ! dummy loop indices 
    284       INTEGER  ::   time_add              ! time offset in units of timesteps 
    285       INTEGER, DIMENSION(3) ::   ilen0    ! length of boundary data (from OBC arrays) 
    286       REAL(wp) ::   z_arg, z_sarg, zflag, zramp   ! local scalars     
    287       REAL(wp), DIMENSION(jpmax_harmo) :: z_sist, z_cost 
    288       !!---------------------------------------------------------------------- 
    289       ! 
    290       ilen0(1) =  SIZE(td%ssh(:,1,1)) 
    291       ilen0(2) =  SIZE(td%u(:,1,1)) 
    292       ilen0(3) =  SIZE(td%v(:,1,1)) 
    293  
    294       zflag=1 
    295       IF ( PRESENT(kit) ) THEN 
    296         IF ( kit /= 1 ) zflag=0 
    297       ENDIF 
    298  
    299       IF ( (nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000) .AND. zflag==1 ) THEN 
    300         ! 
    301         kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt 
    302         ! 
    303         IF(lwp) THEN 
    304            WRITE(numout,*) 
    305            WRITE(numout,*) 'bdytide_update : (re)Initialization of the tidal bdy forcing at kt=',kt 
    306            WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
    307         ENDIF 
    308         ! 
    309         CALL tide_init_elevation ( idx, td ) 
    310         CALL tide_init_velocities( idx, td ) 
    311         ! 
    312       ENDIF  
    313  
    314       time_add = 0 
    315       IF( PRESENT(kt_offset) ) THEN 
    316          time_add = kt_offset 
    317       ENDIF 
    318           
    319       IF( PRESENT(kit) ) THEN   
    320          z_arg = ((kt-kt_tide) * rdt + (kit+0.5_wp*(time_add-1)) * rdt / REAL(nn_baro,wp) ) 
    321       ELSE                               
    322          z_arg = ((kt-kt_tide)+time_add) * rdt 
    323       ENDIF 
    324  
    325       ! Linear ramp on tidal component at open boundaries  
    326       zramp = 1._wp 
    327       IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rdt)/(rdttideramp*rday),0._wp),1._wp) 
    328  
    329       DO itide = 1, nb_harmo 
    330          z_sarg = z_arg * omega_tide(itide) 
    331          z_cost(itide) = COS( z_sarg ) 
    332          z_sist(itide) = SIN( z_sarg ) 
    333       END DO 
    334  
    335       DO itide = 1, nb_harmo 
    336          igrd=1                              ! SSH on tracer grid 
    337          DO ib = 1, ilen0(igrd) 
    338             dta%ssh(ib) = dta%ssh(ib) + zramp*(td%ssh(ib,itide,1)*z_cost(itide) + td%ssh(ib,itide,2)*z_sist(itide)) 
    339          END DO 
    340          igrd=2                              ! U grid 
    341          DO ib = 1, ilen0(igrd) 
    342             dta%u2d(ib) = dta%u2d(ib) + zramp*(td%u  (ib,itide,1)*z_cost(itide) + td%u  (ib,itide,2)*z_sist(itide)) 
    343          END DO 
    344          igrd=3                              ! V grid 
    345          DO ib = 1, ilen0(igrd)  
    346             dta%v2d(ib) = dta%v2d(ib) + zramp*(td%v  (ib,itide,1)*z_cost(itide) + td%v  (ib,itide,2)*z_sist(itide)) 
    347          END DO 
    348       END DO 
    349       ! 
    350    END SUBROUTINE bdytide_update 
    351255 
    352256 
     
    392296      ! Linear ramp on tidal component at open boundaries  
    393297      zramp = 1. 
    394       IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(rdttideramp*rday),0.),1.) 
     298      IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(rn_tide_ramp_dt*rday),0.),1.) 
    395299 
    396300      DO ib_bdy = 1,nb_bdy 
     
    433337            DO itide = 1, nb_harmo 
    434338               ! 
    435                z_sarg = (z_arg + zoff) * omega_tide(itide) 
     339               z_sarg = (z_arg + zoff) * tide_harmonics(itide)%omega 
    436340               z_cost = zramp * COS( z_sarg ) 
    437341               z_sist = zramp * SIN( z_sarg ) 
     
    491395         END DO 
    492396         DO ib = 1 , ilen0(igrd) 
    493             mod_tide(ib)=mod_tide(ib)*ftide(itide) 
    494             phi_tide(ib)=phi_tide(ib)+v0tide(itide)+utide(itide) 
     397            mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 
     398            phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0+tide_harmonics(itide)%u 
    495399         ENDDO 
    496400         DO ib = 1 , ilen0(igrd) 
     
    530434         END DO 
    531435         DO ib = 1, ilen0(igrd) 
    532             mod_tide(ib)=mod_tide(ib)*ftide(itide) 
    533             phi_tide(ib)=phi_tide(ib)+v0tide(itide)+utide(itide) 
     436            mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 
     437            phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 
    534438         ENDDO 
    535439         DO ib = 1, ilen0(igrd) 
     
    551455         END DO 
    552456         DO ib = 1, ilen0(igrd) 
    553             mod_tide(ib)=mod_tide(ib)*ftide(itide) 
    554             phi_tide(ib)=phi_tide(ib)+v0tide(itide)+utide(itide) 
     457            mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 
     458            phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 
    555459         ENDDO 
    556460         DO ib = 1, ilen0(igrd) 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/DYN/dynspg.F90

    r11536 r12117  
    2121   USE dynspg_exp     ! surface pressure gradient     (dyn_spg_exp routine) 
    2222   USE dynspg_ts      ! surface pressure gradient     (dyn_spg_ts  routine) 
    23    USE sbctide        !  
    24    USE updtide        !  
     23   USE tide_mod       ! 
    2524   USE trd_oce        ! trends: ocean variables 
    2625   USE trddyn         ! trend manager: dynamics 
     
    4342   INTEGER, PARAMETER ::   np_EXP = 0   !       explicit time stepping 
    4443   INTEGER, PARAMETER ::   np_NO  =-1   ! no surface pressure gradient, no scheme 
     44   ! 
     45   REAL(wp) ::   zt0step !   Time of day at the beginning of the time step 
    4546 
    4647   !! * Substitutions 
     
    113114         IF( .NOT.ln_dynspg_ts .AND. ( ln_tide_pot .AND. ln_tide )  ) THEN   ! N.B. added directly at sub-time-step in ts-case 
    114115            ! 
    115             CALL upd_tide( kt )                      ! update tide potential 
     116            ! Update tide potential at the beginning of current time step 
     117            zt0step = REAL(nsec_day, wp)-0.5_wp*rdt 
     118            CALL upd_tide(zt0step) 
    116119            ! 
    117120            DO jj = 2, jpjm1                         ! add tide potential forcing 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/DYN/dynspg_ts.F90

    r12075 r12117  
    4444   USE bdytides        ! open boundary condition data 
    4545   USE bdydyn2d        ! open boundary conditions on barotropic variables 
    46    USE sbctide         ! tides 
    47    USE updtide         ! tide potential 
     46   USE tide_mod        ! 
    4847   USE sbcwave         ! surface wave 
    4948   USE diatmb          ! Top,middle,bottom output 
     
    170169      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztwdmask, zuwdmask, zvwdmask ! ROMS wetting and drying masks at t,u,v points 
    171170      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zuwdav2, zvwdav2    ! averages over the sub-steps of zuwdmask and zvwdmask 
     171      REAL(wp) ::   zt0substep !   Time of day at the beginning of the time substep 
    172172      !!---------------------------------------------------------------------- 
    173173      ! 
     
    424424         ! 
    425425         IF( ln_bdy      .AND. ln_tide )   CALL bdy_dta_tides( kt, kit=jn, kt_offset= noffset+1 ) 
    426          IF( ln_tide_pot .AND. ln_tide )   CALL upd_tide     ( kt, kit=jn, kt_offset= noffset   ) 
     426         ! Update tide potential at the beginning of current time substep 
     427         IF( ln_tide_pot .AND. ln_tide ) THEN 
     428            zt0substep = REAL(nsec_day, wp) - 0.5_wp*rdt + (jn + noffset - 1) * rdt / REAL(nn_baro, wp) 
     429            CALL upd_tide(zt0substep) 
     430         END IF 
    427431         ! 
    428432         !                    !==  extrapolation at mid-step  ==!   (jn+1/2) 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/nemogcm.F90

    r12022 r12117  
    4646   USE closea         ! treatment of closed seas (for ln_closea) 
    4747   USE usrdef_nam     ! user defined configuration 
    48    USE tideini        ! tidal components initialization   (tide_ini routine) 
     48   USE tide_mod, ONLY : tide_init ! tidal components initialization   (tide_init routine) 
    4949   USE bdy_oce,  ONLY : ln_bdy 
    5050   USE bdyini         ! open boundary cond. setting       (bdy_init routine) 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/step.F90

    r12022 r12117  
    112112      ! Update external forcing (tides, open boundaries, and surface boundary condition (including sea-ice) 
    113113      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    114       IF( ln_tide    )   CALL sbc_tide( kstp )                   ! update tide potential 
     114      IF( ln_tide    )   CALL tide_update( kstp )                ! update tide potential 
    115115      IF( ln_apr_dyn )   CALL sbc_apr ( kstp )                   ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib)  
    116116      IF( ln_bdy     )   CALL bdy_dta ( kstp, kt_offset = +1 )   ! update dynamic & tracer data at open boundaries 
  • NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/step_oce.F90

    r12022 r12117  
    1919   USE sbccpl          ! surface boundary condition: coupled formulation (call send at end of step) 
    2020   USE sbcapr          ! surface boundary condition: atmospheric pressure 
    21    USE sbctide         ! Tide initialisation 
     21   USE tide_mod, ONLY : ln_tide, tide_update 
    2222   USE sbcwave         ! Wave intialisation 
    2323 
Note: See TracChangeset for help on using the changeset viewer.