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

source: branches/UKMO/dev_r5518_GO6_under_ice_relax_dr_hook/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 @ 11738

Last change on this file since 11738 was 11738, checked in by marc, 5 years ago

The Dr Hook changes from my perl code.

File size: 5.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   USE yomhook, ONLY: lhook, dr_hook
21   USE parkind1, ONLY: jprb, jpim
22
23   IMPLICIT NONE
24   PUBLIC
25
26   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !:
27   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !:
28   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !:
29   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !:
30
31   LOGICAL , PUBLIC ::   ln_tide_pot     !:
32   LOGICAL , PUBLIC ::   ln_tide_ramp    !:
33   INTEGER , PUBLIC ::   nb_harmo                 !:
34   INTEGER , PUBLIC ::   kt_tide                  !:
35   REAL(wp), PUBLIC ::   rdttideramp              !:
36   
37   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !:
38
39   !!----------------------------------------------------------------------
40   !! NEMO/OPA 3.5 , NEMO Consortium (2013)
41   !! $Id$
42   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
43   !!----------------------------------------------------------------------
44CONTAINS
45   
46  SUBROUTINE tide_init ( kt )
47    !!----------------------------------------------------------------------
48    !!                 ***  ROUTINE tide_init  ***
49    !!----------------------------------------------------------------------     
50    !! * Local declarations
51    INTEGER  :: ji, jk
52    INTEGER, INTENT( in ) ::   kt     ! ocean time-step
53    CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname
54    INTEGER  ::   ios                 ! Local integer output status for namelist read
55    !
56    NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname
57    INTEGER(KIND=jpim), PARAMETER :: zhook_in = 0
58    INTEGER(KIND=jpim), PARAMETER :: zhook_out = 1
59    REAL(KIND=jprb)               :: zhook_handle
60
61    CHARACTER(LEN=*), PARAMETER :: RoutineName='TIDE_INIT'
62
63    IF (lhook) CALL dr_hook(RoutineName,zhook_in,zhook_handle)
64
65    !!----------------------------------------------------------------------
66
67    IF ( kt == nit000 ) THEN
68       !
69       IF(lwp) THEN
70          WRITE(numout,*)
71          WRITE(numout,*) 'tide_init : Initialization of the tidal components'
72          WRITE(numout,*) '~~~~~~~~~ '
73       ENDIF
74       !
75       CALL tide_init_Wave
76       !
77       ! Read Namelist nam_tide
78       REWIND( numnam_ref )              ! Namelist nam_tide in reference namelist : Tides
79       READ  ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901)
80901    IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp )
81
82       REWIND( numnam_cfg )              ! Namelist nam_tide in configuration namelist : Tides
83       READ  ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 )
84902    IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp )
85       IF(lwm) WRITE ( numond, nam_tide )
86       !
87       nb_harmo=0
88       DO jk = 1, jpmax_harmo
89          DO ji = 1,jpmax_harmo
90             IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1
91          END DO
92       END DO
93       !       
94       ! Ensure that tidal components have been set in namelist_cfg
95       IF( nb_harmo .EQ. 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' )
96       !
97       IF(lwp) THEN
98          WRITE(numout,*) '   Namelist nam_tide'
99          WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  =', ln_tide_pot
100          WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo
101          WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp 
102          WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp
103       ENDIF
104       IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   &
105          &   CALL ctl_stop('rdttideramp must be lower than run duration')
106       IF( ln_tide_ramp.AND.(rdttideramp<0.) ) &
107          &   CALL ctl_stop('rdttideramp must be positive')
108       !
109       IF( .NOT. lk_dynspg_ts )   CALL ctl_warn( 'sbc_tide : use of time splitting is recommended' )
110       !
111       ALLOCATE( ntide(nb_harmo) )
112       DO jk = 1, nb_harmo
113          DO ji = 1, jpmax_harmo
114             IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN
115                ntide(jk) = ji
116                EXIT
117             END IF
118          END DO
119       END DO
120       !
121       ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   &
122          &      utide     (nb_harmo), ftide     (nb_harmo)  )
123       kt_tide = kt
124       !
125      ENDIF
126      !
127    IF (lhook) CALL dr_hook(RoutineName,zhook_out,zhook_handle)
128   END SUBROUTINE tide_init
129     
130   !!======================================================================
131END MODULE tideini
Note: See TracBrowser for help on using the repository browser.