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.
tideini.F90 in branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/SBC – NEMO

source: branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 3957

Last change on this file since 3957 was 3957, checked in by acc, 11 years ago

Branch 2013/dev_r3858_NOC_ZTC, #863. Fixes to tidal potential forcing changes to ensure no numerical changes due to the re-styling

File size: 4.2 KB
Line 
1MODULE tideini
2   !!======================================================================
3   !!                       ***  MODULE  tideini  ***
4   !! Initialization of tidal forcing
5   !!======================================================================
6   !! History :  1.0  !  2007  (O. Le Galloudec)  Original code
7   !!----------------------------------------------------------------------
8   USE oce             ! ocean dynamics and tracers variables
9   USE dom_oce         ! ocean space and time domain
10   USE phycst
11   USE daymod
12   USE dynspg_oce
13   USE tide_mod
14   !
15   USE iom
16   USE in_out_manager  ! I/O units
17   USE ioipsl          ! NetCDF IPSL library
18   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
19
20   IMPLICIT NONE
21   PUBLIC
22
23   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !:
24   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !:
25   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !:
26   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !:
27
28   LOGICAL , PUBLIC ::   ln_tide_pot  = .FALSE.   !:
29   LOGICAL , PUBLIC ::   ln_tide_ramp = .FALSE.   !:
30   INTEGER , PUBLIC ::   nb_harmo                 !:
31   INTEGER , PUBLIC ::   kt_tide                  !:
32   REAL(wp), PUBLIC ::   rdttideramp              !:
33   
34   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !:
35
36   !!----------------------------------------------------------------------
37   !! NEMO/OPA 3.5 , NEMO Consortium (2013)
38   !! $Id: $
39   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
40   !!----------------------------------------------------------------------
41CONTAINS
42   
43   SUBROUTINE tide_init ( kt )
44      !!----------------------------------------------------------------------
45      !!                 ***  ROUTINE tide_init  ***
46      !!----------------------------------------------------------------------     
47      INTEGER  :: ji, jk
48      INTEGER, INTENT( in ) ::   kt     ! ocean time-step
49      CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
50      !
51      NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname
52      !!----------------------------------------------------------------------
53
54      IF( kt == nit000 ) THEN
55         !
56         IF(lwp) THEN
57            WRITE(numout,*)
58            WRITE(numout,*) 'tide_init : Initialization of the tidal components'
59            WRITE(numout,*) '~~~~~~~~~ '
60         ENDIF
61         !
62         CALL tide_init_Wave
63         !
64         clname(:)=''
65         !
66         REWIND( numnam )            ! Read Namelist nam_tide
67         READ  ( numnam, nam_tide )
68         !
69         nb_harmo=0
70         DO jk = 1, jpmax_harmo
71            DO ji = 1,jpmax_harmo
72               IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1
73            END DO
74         END DO
75         !
76         IF(lwp) THEN
77            WRITE(numout,*) '   Namelist nam_tide'
78            WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  =', ln_tide_pot
79            WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo
80            WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
81            WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp
82         ENDIF
83         IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   &
84            &   CALL ctl_stop('rdttideramp must be lower than run duration')
85         IF( ln_tide_ramp.AND.(rdttideramp<0.) ) &
86            &   CALL ctl_stop('rdttideramp must be positive')
87         !
88         IF( .NOT. lk_dynspg_ts )   CALL ctl_warn( 'sbc_tide : use of time splitting is recommended' )
89         !
90         ALLOCATE( ntide(nb_harmo) )
91         DO jk = 1, nb_harmo
92            DO ji = 1, jpmax_harmo
93               IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN
94                  ntide(jk) = ji
95                  EXIT
96               END IF
97            END DO
98         END DO
99         !
100         ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   &
101            &      utide     (nb_harmo), ftide     (nb_harmo)  )
102         kt_tide = kt
103         !
104      ENDIF
105      !
106   END SUBROUTINE tide_init
107     
108   !!======================================================================
109END MODULE tideini
Note: See TracBrowser for help on using the repository browser.