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

source: branches/2012/dev_r3327_MERCATOR1_BDY/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 3367

Last change on this file since 3367 was 3367, checked in by greffray, 12 years ago

Merge tidal packages
Merge OBC-BDY packages
Add atmospheric pressure at the open boundaries
Modification of the namelist for AMM12 configuration

File size: 3.5 KB
Line 
1MODULE tideini
2  !!=================================================================================
3  !!                       ***  MODULE  tideini  ***
4  !! Initialization of tidal forcing
5  !! History :  9.0  !  07  (O. Le Galloudec)  Original code
6  !!=================================================================================
7  !! * Modules used
8  USE oce             ! ocean dynamics and tracers variables
9  USE dom_oce         ! ocean space and time domain
10  USE in_out_manager  ! I/O units
11  USE ioipsl          ! NetCDF IPSL library
12  USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
13  USE phycst
14  USE daymod
15  USE dynspg_oce
16  USE tide_mod
17  USE iom
18
19  IMPLICIT NONE
20  PUBLIC
21
22  REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::  &
23       omega_tide,  &
24       v0tide,      &
25       utide,       &
26       ftide
27
28  LOGICAL, PUBLIC :: ln_tide_pot = .false.
29  INTEGER, PUBLIC :: nb_harmo
30  INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide
31  INTEGER, PUBLIC :: kt_tide
32
33  !!---------------------------------------------------------------------------------
34  !!   OPA 9.0 , LODYC-IPSL  (2003)
35  !!---------------------------------------------------------------------------------
36
37CONTAINS
38   
39  SUBROUTINE tide_init ( kt )
40    !!----------------------------------------------------------------------
41    !!                 ***  ROUTINE tide_init  ***
42    !!----------------------------------------------------------------------     
43    !! * Local declarations
44    INTEGER  :: ji, jk
45    INTEGER, INTENT( in ) ::   kt     ! ocean time-step
46    CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
47    !
48    NAMELIST/nam_tide/ln_tide_pot,clname
49    !!----------------------------------------------------------------------
50
51    IF ( kt == nit000 ) THEN
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       clname(:)=''
62       !
63       ! Read Namelist nam_tide
64       REWIND ( numnam )
65       READ   ( numnam, nam_tide )
66       !
67       nb_harmo=0
68       DO jk=1,jpmax_harmo
69          DO ji=1,jpmax_harmo
70             IF(TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN
71                nb_harmo=nb_harmo+1
72             ENDIF
73          END DO
74       ENDDO
75       !
76       IF(lwp) THEN
77          WRITE(numout,*) '        Namelist nam_tide'
78          WRITE(numout,*) '        nb_harmo    = ', nb_harmo
79          CALL flush(numout)
80       ENDIF
81       !
82       ALLOCATE(ntide(nb_harmo))
83       DO jk=1,nb_harmo
84          DO ji=1,jpmax_harmo
85             IF (TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN
86                ntide(jk) = ji
87                EXIT
88             END IF
89          END DO
90       END DO
91       !
92       ALLOCATE(omega_tide(nb_harmo))
93       ALLOCATE(v0tide    (nb_harmo))
94       ALLOCATE(utide     (nb_harmo))
95       ALLOCATE(ftide     (nb_harmo))
96       kt_tide = kt
97       !
98    ENDIF
99
100    IF ( nsec_day == NINT(0.5 * rdttra(1)) ) THEN
101       !
102       IF(lwp) THEN
103          WRITE(numout,*)
104          WRITE(numout,*) 'tide_ini : Update of the tidal components at kt=',kt
105          WRITE(numout,*) '~~~~~~~~ '
106       ENDIF
107       CALL tide_harmo(omega_tide, v0tide, utide, ftide, ntide, nb_harmo)
108       DO jk =1,nb_harmo
109         IF(lwp) WRITE(numout,*) Wave(ntide(jk))%cname_tide,utide(jk),ftide(jk),v0tide(jk),omega_tide(jk)
110         call flush(numout)
111       END DO
112       !
113       kt_tide = kt
114       !
115    ENDIF
116
117  END SUBROUTINE tide_init
118   
119END MODULE tideini
Note: See TracBrowser for help on using the repository browser.