MODULE sbctide !!====================================================================== !! *** MODULE sbctide *** !! Initialization of tidal forcing !!====================================================================== !! History : 9.0 ! 2007 (O. Le Galloudec) Original code !!---------------------------------------------------------------------- USE oce ! ocean dynamics and tracers variables USE dom_oce ! ocean space and time domain USE phycst ! physical constant USE daymod ! calandar USE tide_mod ! ! USE in_out_manager ! I/O units USE iom ! xIOs server USE ioipsl ! NetCDF IPSL library USE lbclnk ! ocean lateral boundary conditions (or mpp link) IMPLICIT NONE PRIVATE PUBLIC sbc_tide !!---------------------------------------------------------------------- !! NEMO/OCE 4.0 , NEMO Consortium (2018) !! $Id$ !! Software governed by the CeCILL license (see ./LICENSE) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE sbc_tide( kt ) !!---------------------------------------------------------------------- !! *** ROUTINE sbc_tide *** !!---------------------------------------------------------------------- INTEGER, INTENT( in ) :: kt ! ocean time-step INTEGER :: jk ! dummy loop index INTEGER :: nsec_day_orig ! Temporary variable !!---------------------------------------------------------------------- IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN ! start a new day ! ! IF( ln_read_load )THEN IF ( kt == nit000 ) CALL tide_init_load amp_pot(:,:,:) = amp_load(:,:,:) phi_pot(:,:,:) = phi_load(:,:,:) ELSE amp_pot(:,:,:) = 0._wp phi_pot(:,:,:) = 0._wp ENDIF pot_astro(:,:) = 0._wp ! ! If the run does not start from midnight then need to initialise tides ! at the start of the current day (only occurs when kt==nit000) ! Temporarily set nsec_day to beginning of day. nsec_day_orig = nsec_day IF ( nsec_day /= NINT(0.5_wp * rdt) ) THEN kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt nsec_day = NINT(0.5_wp * rdt) ELSE kt_tide = kt ENDIF CALL tide_harmo( omega_tide, v0tide, utide, ftide, ntide, nb_harmo ) ! ! IF(lwp) THEN WRITE(numout,*) WRITE(numout,*) 'sbc_tide : Update of the components and (re)Init. the potential at kt=', kt WRITE(numout,*) '~~~~~~~~ ' DO jk = 1, nb_harmo WRITE(numout,*) Wave(ntide(jk))%cname_tide, utide(jk), ftide(jk), v0tide(jk), omega_tide(jk) END DO ENDIF ! IF( ln_tide_pot ) CALL tide_init_potential ! ! Reset nsec_day nsec_day = nsec_day_orig ENDIF ! END SUBROUTINE sbc_tide !!====================================================================== END MODULE sbctide