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 6140 for trunk/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90 – NEMO

Ignore:
Timestamp:
2015-12-21T12:35:23+01:00 (8 years ago)
Author:
timgraham
Message:

Merge of branches/2015/dev_merge_2015 back into trunk. Merge excludes NEMOGCM/TOOLS/OBSTOOLS/ for now due to issues with the change of file type. Will sort these manually with further commits.

Branch merged as follows:
In the working copy of branch ran:
svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk@HEAD
Small conflicts due to bug fixes applied to trunk since the dev_merge_2015 was copied. Bug fixes were applied to the branch as well so these were easy to resolve.
Branch committed at this stage

In working copy run:
svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
to switch working copy

Run:
svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2015/dev_merge_2015
to merge the branch into the trunk and then commit - no conflicts at this stage.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r5930 r6140  
    66   !! History :  1.0  !  2007  (O. Le Galloudec)  Original code 
    77   !!---------------------------------------------------------------------- 
    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 
     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       !  
    1313   ! 
    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) 
     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) 
    1818 
    1919   IMPLICIT NONE 
     
    2727   LOGICAL , PUBLIC ::   ln_tide_pot     !: 
    2828   LOGICAL , PUBLIC ::   ln_tide_ramp    !: 
    29    INTEGER , PUBLIC ::   nb_harmo                 !: 
    30    INTEGER , PUBLIC ::   kt_tide                  !: 
    31    REAL(wp), PUBLIC ::   rdttideramp              !: 
     29   INTEGER , PUBLIC ::   nb_harmo        !: 
     30   INTEGER , PUBLIC ::   kt_tide         !: 
     31   REAL(wp), PUBLIC ::   rdttideramp     !: 
    3232    
    3333   INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) ::   ntide   !: 
     
    4040CONTAINS 
    4141    
    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) 
    68 901    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 ) 
    72 902    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        ! 
     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,*) '~~~~~~~~~ ' 
    11257      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 
    113106      ! 
    114107   END SUBROUTINE tide_init 
Note: See TracChangeset for help on using the changeset viewer.