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.
Changeset 4292 for branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 – NEMO

Ignore:
Timestamp:
2013-11-20T17:28:04+01:00 (10 years ago)
Author:
cetlod
Message:

dev_MERGE_2013 : 1st step of the merge, see ticket #1185

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r4147 r4292  
    11MODULE 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 
     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) 
    1819 
    19   IMPLICIT NONE 
    20   PUBLIC 
     20   IMPLICIT NONE 
     21   PUBLIC 
    2122 
    22   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::  & 
    23        omega_tide,  & 
    24        v0tide,      & 
    25        utide,       & 
    26        ftide 
     23   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   omega_tide   !: 
     24   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   v0tide       !: 
     25   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   utide        !: 
     26   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ftide        !: 
    2727 
    28   LOGICAL, PUBLIC :: ln_tide_pot , ln_tide_ramp  
    29   REAL(wp), PUBLIC :: rdttideramp  
    30   INTEGER, PUBLIC :: nb_harmo 
    31   INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide 
    32   INTEGER, PUBLIC :: kt_tide 
     28   LOGICAL , PUBLIC ::   ln_tide_pot     !: 
     29   LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
     30   INTEGER , PUBLIC ::   nb_harmo                 !: 
     31   INTEGER , PUBLIC ::   kt_tide                  !: 
     32   REAL(wp), PUBLIC ::   rdttideramp              !: 
     33    
     34   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
    3335 
    34   !!--------------------------------------------------------------------------------- 
    35   !!   OPA 9.0 , LODYC-IPSL  (2003) 
    36   !!--------------------------------------------------------------------------------- 
    37  
     36   !!---------------------------------------------------------------------- 
     37   !! NEMO/OPA 3.5 , NEMO Consortium (2013) 
     38   !! $Id: $ 
     39   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     40   !!---------------------------------------------------------------------- 
    3841CONTAINS 
    3942    
     
    7275       ! 
    7376       nb_harmo=0 
    74        DO jk=1,jpmax_harmo 
    75           DO ji=1,jpmax_harmo 
    76              IF(TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN 
    77                 nb_harmo=nb_harmo+1 
    78              ENDIF 
     77       DO jk = 1, jpmax_harmo 
     78          DO ji = 1,jpmax_harmo 
     79             IF( TRIM(clname(jk)) == Wave(ji)%cname_tide )   nb_harmo = nb_harmo + 1 
    7980          END DO 
    80        ENDDO 
     81       END DO 
    8182       ! 
    8283       IF(lwp) THEN 
    83           WRITE(numout,*) '        Namelist nam_tide' 
    84           WRITE(numout,*) '        nb_harmo    = ', nb_harmo 
    85           WRITE(numout,*) '        ln_tide_ramp = ', ln_tide_ramp  
    86           WRITE(numout,*) '        rdttideramp = ', rdttideramp 
    87           IF (ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp)) & 
    88           & CALL ctl_stop('rdttideramp must be lower than run duration') 
    89           IF (ln_tide_ramp.AND.(rdttideramp<0.)) & 
    90           & CALL ctl_stop('rdttideramp must be positive') 
    91           CALL flush(numout) 
     84          WRITE(numout,*) '   Namelist nam_tide' 
     85          WRITE(numout,*) '      Apply astronomical potential : ln_tide_pot  =', ln_tide_pot 
     86          WRITE(numout,*) '                                     nb_harmo     = ', nb_harmo 
     87          WRITE(numout,*) '                                     ln_tide_ramp = ', ln_tide_ramp  
     88          WRITE(numout,*) '                                     rdttideramp  = ', rdttideramp 
    9289       ENDIF 
     90       IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) )   & 
     91          &   CALL ctl_stop('rdttideramp must be lower than run duration') 
     92       IF( ln_tide_ramp.AND.(rdttideramp<0.) ) & 
     93          &   CALL ctl_stop('rdttideramp must be positive') 
    9394       ! 
    94        ALLOCATE(ntide(nb_harmo)) 
    95        DO jk=1,nb_harmo 
    96           DO ji=1,jpmax_harmo 
    97              IF (TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN 
     95       IF( .NOT. lk_dynspg_ts )   CALL ctl_warn( 'sbc_tide : use of time splitting is recommended' ) 
     96       ! 
     97       ALLOCATE( ntide(nb_harmo) ) 
     98       DO jk = 1, nb_harmo 
     99          DO ji = 1, jpmax_harmo 
     100             IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN 
    98101                ntide(jk) = ji 
    99102                EXIT 
     
    102105       END DO 
    103106       ! 
    104        ALLOCATE(omega_tide(nb_harmo)) 
    105        ALLOCATE(v0tide    (nb_harmo)) 
    106        ALLOCATE(utide     (nb_harmo)) 
    107        ALLOCATE(ftide     (nb_harmo)) 
     107       ALLOCATE( omega_tide(nb_harmo), v0tide    (nb_harmo),   & 
     108          &      utide     (nb_harmo), ftide     (nb_harmo)  ) 
    108109       kt_tide = kt 
    109110       ! 
    110     ENDIF 
    111  
    112     IF ( nsec_day == NINT(0.5 * rdttra(1)) ) THEN 
    113        ! 
    114        IF(lwp) THEN 
    115           WRITE(numout,*) 
    116           WRITE(numout,*) 'tide_ini : Update of the tidal components at kt=',kt 
    117           WRITE(numout,*) '~~~~~~~~ ' 
    118        ENDIF 
    119        CALL tide_harmo(omega_tide, v0tide, utide, ftide, ntide, nb_harmo) 
    120        DO jk =1,nb_harmo 
    121          IF(lwp) WRITE(numout,*) Wave(ntide(jk))%cname_tide,utide(jk),ftide(jk),v0tide(jk),omega_tide(jk) 
    122          call flush(numout) 
    123        END DO 
    124        ! 
    125        kt_tide = kt 
    126        ! 
    127     ENDIF 
    128  
    129   END SUBROUTINE tide_init 
    130     
     111      ENDIF 
     112      ! 
     113   END SUBROUTINE tide_init 
     114      
     115   !!====================================================================== 
    131116END MODULE tideini 
Note: See TracChangeset for help on using the changeset viewer.