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/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/SBC – NEMO

source: branches/2014/dev_r4650_UKMO14.4_OBS_GENERAL_VINTERP/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 5951

Last change on this file since 5951 was 5951, checked in by timgraham, 8 years ago

Merged trunk r5936 into branch

  • Property svn:keywords set to Id
File size: 4.7 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 tide_mod
13   !
14   USE iom
15   USE in_out_manager  ! I/O units
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_pot     !:
28   LOGICAL , PUBLIC ::   ln_tide_ramp    !:
29   INTEGER , PUBLIC ::   nb_harmo                 !:
30   INTEGER , PUBLIC ::   kt_tide                  !:
31   REAL(wp), PUBLIC ::   rdttideramp              !:
32   
33   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !:
34
35   !!----------------------------------------------------------------------
36   !! NEMO/OPA 3.5 , NEMO Consortium (2013)
37   !! $Id$
38   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
39   !!----------------------------------------------------------------------
40CONTAINS
41   
42  SUBROUTINE tide_init ( kt )
43    !!----------------------------------------------------------------------
44    !!                 ***  ROUTINE tide_init  ***
45    !!----------------------------------------------------------------------     
46    !! * Local declarations
47    INTEGER  :: ji, jk
48    INTEGER, INTENT( in ) ::   kt     ! ocean time-step
49    CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
50    INTEGER  ::   ios                 ! Local integer output status for namelist read
51    !
52    NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname
53    !!----------------------------------------------------------------------
54
55    IF ( kt == nit000 ) THEN
56       !
57       IF(lwp) THEN
58          WRITE(numout,*)
59          WRITE(numout,*) 'tide_init : Initialization of the tidal components'
60          WRITE(numout,*) '~~~~~~~~~ '
61       ENDIF
62       !
63       CALL tide_init_Wave
64       !
65       ! Read Namelist nam_tide
66       REWIND( numnam_ref )              ! Namelist nam_tide in reference namelist : Tides
67       READ  ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901)
68901    IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp )
69
70       REWIND( numnam_cfg )              ! Namelist nam_tide in configuration namelist : Tides
71       READ  ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 )
72902    IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp )
73       IF(lwm) WRITE ( numond, nam_tide )
74       !
75       nb_harmo=0
76       DO jk = 1, jpmax_harmo
77          DO ji = 1,jpmax_harmo
78             IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1
79          END DO
80       END DO
81       !       
82       ! Ensure that tidal components have been set in namelist_cfg
83       IF( nb_harmo .EQ. 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' )
84       !
85       IF(lwp) THEN
86          WRITE(numout,*) '   Namelist nam_tide'
87          WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  =', ln_tide_pot
88          WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo
89          WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
90          WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp
91       ENDIF
92       IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   &
93          &   CALL ctl_stop('rdttideramp must be lower than run duration')
94       IF( ln_tide_ramp.AND.(rdttideramp<0.) ) &
95          &   CALL ctl_stop('rdttideramp must be positive')
96       !
97       !
98       ALLOCATE( ntide(nb_harmo) )
99       DO jk = 1, nb_harmo
100          DO ji = 1, jpmax_harmo
101             IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN
102                ntide(jk) = ji
103                EXIT
104             END IF
105          END DO
106       END DO
107       !
108       ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   &
109          &      utide     (nb_harmo), ftide     (nb_harmo)  )
110       kt_tide = kt
111       !
112      ENDIF
113      !
114   END SUBROUTINE tide_init
115     
116   !!======================================================================
117END MODULE tideini
Note: See TracBrowser for help on using the repository browser.