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 3583 for branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90 – NEMO

Ignore:
Timestamp:
2012-11-16T17:18:17+01:00 (11 years ago)
Author:
cbricaud
Message:

add modification from dev_r3327_MERCATOR1_BDY branch in dev_MERCATOR_2012_rev3555 branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90

    r3294 r3583  
    1414  USE daymod 
    1515  USE dynspg_oce 
    16   USE tide_mod 
     16  USE tideini 
    1717  USE iom 
    1818 
     
    2121 
    2222  REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: pot_astro 
    23   LOGICAL, PUBLIC :: ln_tide_pot = .false. 
     23 
    2424#if defined key_tide 
    2525 
    2626  LOGICAL, PUBLIC, PARAMETER ::   lk_tide  = .TRUE. 
    27  
    28   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: omega_tide  
    29  
    30   REAL(wp), ALLOCATABLE, DIMENSION(:) ::  & 
    31        v0tide,      & 
    32        utide,       & 
    33        ftide 
    34  
    3527  REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: amp_pot,phi_pot 
    36  
    37   INTEGER, PUBLIC :: nb_harmo 
    38   INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide 
    39   INTEGER, PUBLIC :: nn_tide, kt_tide 
    40  
    4128  !!--------------------------------------------------------------------------------- 
    4229  !!   OPA 9.0 , LODYC-IPSL  (2003) 
     
    5138    !! * Arguments 
    5239    INTEGER, INTENT( in ) ::   kt     ! ocean time-step 
    53     !! * Local declarations 
    54     INTEGER  :: jk,ji 
    55     CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname 
    5640    !!---------------------------------------------------------------------- 
    5741 
    58     NAMELIST/nam_tide/ln_tide_pot,nb_harmo,clname,nn_tide 
     42    IF ( kt == nit000 .AND. .NOT. lk_dynspg_ts )  CALL ctl_stop( 'STOP', 'sbc_tide : tidal potential use only with time splitting' ) 
    5943 
    60     IF ( kt == nit000 ) THEN 
     44    IF ( nsec_day == NINT(0.5 * rdttra(1)) ) THEN 
     45      ! 
     46      kt_tide = kt 
    6147 
    62        IF( .NOT. lk_dynspg_ts  )  CALL ctl_stop( 'STOP', 'sbc_tide : tidal potential use only with time splitting' ) 
     48      IF(lwp) THEN 
     49         WRITE(numout,*) 
     50         WRITE(numout,*) 'sbc_tide : (re)Initialization of the tidal potential at kt=',kt 
     51         WRITE(numout,*) '~~~~~~~ ' 
     52      ENDIF 
    6353 
    64     ! Read Namelist nam_tide 
     54      IF(lwp) THEN 
     55         IF ( kt == nit000 ) WRITE(numout,*) 'Apply astronomical potential : ln_tide_pot =', ln_tide_pot 
     56         CALL flush(numout) 
     57      ENDIF 
    6558 
    66     nn_tide=INT(rday/rdt) 
     59      IF ( kt == nit000 ) ALLOCATE(amp_pot(jpi,jpj,nb_harmo)) 
     60      IF ( kt == nit000 ) ALLOCATE(phi_pot(jpi,jpj,nb_harmo)) 
     61      IF ( kt == nit000 ) ALLOCATE(pot_astro(jpi,jpj)) 
    6762 
    68     CALL tide_init_Wave 
     63      amp_pot(:,:,:) = 0.e0 
     64      phi_pot(:,:,:) = 0.e0 
     65      pot_astro(:,:) = 0.e0 
    6966 
    70     REWIND ( numnam ) 
    71     READ   ( numnam, nam_tide ) 
    72  
    73     IF(lwp) THEN 
    74        WRITE(numout,*) 
    75        WRITE(numout,*) 'sbc_tide : Initialization of the tidal components' 
    76        WRITE(numout,*) '~~~~~~~ ' 
     67      IF ( ln_tide_pot ) CALL tide_init_potential 
     68      ! 
    7769    ENDIF 
    78  
    79     IF(lwp) THEN 
    80        WRITE(numout,*) '        Namelist nam_tide' 
    81        WRITE(numout,*) '        Apply astronomical potential : ln_tide_pot =', ln_tide_pot 
    82        WRITE(numout,*) '        nb_harmo    = ', nb_harmo 
    83        CALL flush(numout) 
    84     ENDIF 
    85  
    86     ALLOCATE(ntide     (nb_harmo)) 
    87     DO jk=1,nb_harmo 
    88        DO ji=1,jpmax_harmo 
    89           IF (TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN 
    90              ntide(jk) = ji 
    91              EXIT 
    92           END IF 
    93        END DO 
    94     END DO 
    95     ALLOCATE(omega_tide(nb_harmo)) 
    96     ALLOCATE(v0tide    (nb_harmo)) 
    97     ALLOCATE(utide     (nb_harmo)) 
    98     ALLOCATE(ftide     (nb_harmo)) 
    99     ALLOCATE(amp_pot(jpi,jpj,nb_harmo)) 
    100     ALLOCATE(phi_pot(jpi,jpj,nb_harmo)) 
    101     ALLOCATE(pot_astro(jpi,jpj)) 
    102     ENDIF 
    103  
    104     IF ( MOD( kt - 1, nn_tide ) == 0 ) THEN 
    105       kt_tide = kt 
    106       CALL tide_harmo(omega_tide, v0tide, utide, ftide, ntide, nb_harmo) 
    107     ENDIF 
    108  
    109     amp_pot(:,:,:) = 0.e0 
    110     phi_pot(:,:,:) = 0.e0 
    111     pot_astro(:,:) = 0.e0 
    112  
    113     IF (ln_tide_pot          ) CALL tide_init_potential 
    11470 
    11571  END SUBROUTINE sbc_tide 
Note: See TracChangeset for help on using the changeset viewer.