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

source: branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 6225

Last change on this file since 6225 was 6225, checked in by jamesharle, 8 years ago

Update MPP_BDY_UPDATE branch to be consistent with head of trunk

  • Property svn:keywords set to Id
File size: 4.6 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_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
43      !!----------------------------------------------------------------------
44      !!                 ***  ROUTINE tide_init  ***
45      !!----------------------------------------------------------------------     
46      INTEGER  :: ji, jk
47      CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
48      INTEGER  ::   ios                 ! Local integer output status for namelist read
49      !
50      NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname
51      !!----------------------------------------------------------------------
52      !
53      IF(lwp) THEN
54         WRITE(numout,*)
55         WRITE(numout,*) 'tide_init : Initialization of the tidal components'
56         WRITE(numout,*) '~~~~~~~~~ '
57      ENDIF
58      !
59      CALL tide_init_Wave
60      !
61      ! Read Namelist nam_tide
62      REWIND( numnam_ref )              ! Namelist nam_tide in reference namelist : Tides
63      READ  ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901)
64901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp )
65      !
66      REWIND( numnam_cfg )              ! Namelist nam_tide in configuration namelist : Tides
67      READ  ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 )
68902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp )
69      IF(lwm) WRITE ( numond, nam_tide )
70      !
71      nb_harmo=0
72      DO jk = 1, jpmax_harmo
73         DO ji = 1,jpmax_harmo
74            IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1
75         END DO
76      END DO
77      !       
78      ! Ensure that tidal components have been set in namelist_cfg
79      IF( nb_harmo == 0 )   CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' )
80      !
81      IF(lwp) THEN
82         WRITE(numout,*) '   Namelist nam_tide'
83         WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  =', ln_tide_pot
84         WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo
85         WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
86         WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp
87      ENDIF
88      IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   &
89         &   CALL ctl_stop('rdttideramp must be lower than run duration')
90      IF( ln_tide_ramp.AND.(rdttideramp<0.) ) &
91         &   CALL ctl_stop('rdttideramp must be positive')
92      !
93      ALLOCATE( ntide(nb_harmo) )
94      DO jk = 1, nb_harmo
95         DO ji = 1, jpmax_harmo
96            IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) THEN
97               ntide(jk) = ji
98               EXIT
99            ENDIF
100         END DO
101      END DO
102      !
103      ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   &
104         &      utide     (nb_harmo), ftide     (nb_harmo)  )
105      kt_tide = nit000
106      !
107   END SUBROUTINE tide_init
108     
109   !!======================================================================
110END MODULE tideini
Note: See TracBrowser for help on using the repository browser.