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/2017/dev_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC – NEMO

source: branches/2017/dev_r8329_ENHANCE14_SAL/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 8363

Last change on this file since 8363 was 8363, checked in by cbricaud, 7 years ago

commit change for in 2017WP/ENHANCE-14_Jerome_SAL branch ; see ticket #1926

  • Property svn:keywords set to Id
File size: 5.3 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         ! physical constant
11   USE daymod         ! calandar
12   USE tide_mod       !
13   !
14   USE in_out_manager ! I/O units
15   USE iom            ! xIOs server
16   USE ioipsl         ! NetCDF IPSL library
17   USE lbclnk         ! ocean lateral boundary conditions (or mpp link)
18
19   IMPLICIT NONE
20   PUBLIC
21
22   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !:
23   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !:
24   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !:
25   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !:
26
27   LOGICAL , PUBLIC ::   ln_tide         !:
28   LOGICAL , PUBLIC ::   ln_tide_pot     !:
29   LOGICAL , PUBLIC ::   ln_tide_load    !:
30   LOGICAL , PUBLIC ::   ln_tide_ramp    !:
31   INTEGER , PUBLIC ::   nb_harmo        !:
32   INTEGER , PUBLIC ::   kt_tide         !:
33   REAL(wp), PUBLIC ::   rdttideramp     !:
34   CHARACTER(len=80), PUBLIC ::   filetide_load   !: filename for input load potential   
35
36   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !:
37
38   !!----------------------------------------------------------------------
39   !! NEMO/OPA 3.5 , NEMO Consortium (2013)
40   !! $Id$
41   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
42   !!----------------------------------------------------------------------
43CONTAINS
44   
45   SUBROUTINE tide_init
46      !!----------------------------------------------------------------------
47      !!                 ***  ROUTINE tide_init  ***
48      !!----------------------------------------------------------------------     
49      INTEGER  :: ji, jk
50      CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
51      INTEGER  ::   ios                 ! Local integer output status for namelist read
52      !
53      NAMELIST/nam_tide/ln_tide, ln_tide_load, filetide_load, ln_tide_pot, ln_tide_ramp, rdttideramp, clname
54      !!----------------------------------------------------------------------
55      !
56      ! Read Namelist nam_tide
57      REWIND( numnam_ref )              ! Namelist nam_tide in reference namelist : Tides
58      READ  ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901)
59901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp )
60      !
61      REWIND( numnam_cfg )              ! Namelist nam_tide in configuration namelist : Tides
62      READ  ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 )
63902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp )
64      IF(lwm) WRITE ( numond, nam_tide )
65      !
66      IF (ln_tide) THEN
67         IF (lwp) THEN
68            WRITE(numout,*)
69            WRITE(numout,*) 'tide_init : Initialization of the tidal components'
70            WRITE(numout,*) '~~~~~~~~~ '
71            WRITE(numout,*) '   Namelist nam_tide'
72            WRITE(numout,*) '              Use tidal components : ln_tide      = ', ln_tide
73            WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  = ', ln_tide_pot
74            WRITE(numout,*) '      Read load potential          : ln_tide_load = ', ln_tide_load
75            WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo
76            WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp
77            WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp
78         ENDIF
79      ELSE
80         IF(lwp) WRITE(numout,*)
81         IF(lwp) WRITE(numout,*) 'tide_init : tidal components not used (ln_tide = F)'
82         IF(lwp) WRITE(numout,*) '~~~~~~~~~ '
83         RETURN
84      ENDIF
85      !
86      CALL tide_init_Wave
87      !
88      nb_harmo=0
89      DO jk = 1, jpmax_harmo
90         DO ji = 1,jpmax_harmo
91            IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1
92         END DO
93      END DO
94      !       
95      ! Ensure that tidal components have been set in namelist_cfg
96      IF( nb_harmo == 0 )   CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' )
97      !
98      IF( ln_tide_load.AND.(.NOT.ln_tide_pot) ) &
99          &   CALL ctl_stop('with load potential, activate astronomical potential')
100      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   &
101         &   CALL ctl_stop('rdttideramp must be lower than run duration')
102      IF( ln_tide_ramp.AND.(rdttideramp<0.) ) &
103         &   CALL ctl_stop('rdttideramp must be positive')
104      !
105      ALLOCATE( ntide(nb_harmo) )
106      DO jk = 1, nb_harmo
107         DO ji = 1, jpmax_harmo
108            IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) THEN
109               ntide(jk) = ji
110               EXIT
111            ENDIF
112         END DO
113      END DO
114      !
115      ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   &
116         &      utide     (nb_harmo), ftide     (nb_harmo)  )
117      kt_tide = nit000
118      !
119   END SUBROUTINE tide_init
120     
121   !!======================================================================
122END MODULE tideini
Note: See TracBrowser for help on using the repository browser.