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 3970 for branches/2013/dev_r3867_MERCATOR1_DYN/NEMOGCM/NEMO/OPA_SRC/SBC/updtide.F90 – NEMO

Ignore:
Timestamp:
2013-07-11T15:59:14+02:00 (11 years ago)
Author:
cbricaud
Message:

Time splitting update, see ticket #1079

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3867_MERCATOR1_DYN/NEMOGCM/NEMO/OPA_SRC/SBC/updtide.F90

    r3651 r3970  
    44  !! Initialization of tidal forcing 
    55  !! History :  9.0  !  07  (O. Le Galloudec)  Original code 
     6  !!            3.5  !  2013-07   (J. Chanut) Compliant with time splitting changes 
    67  !!================================================================================= 
    78#if defined key_tide 
     
    2627CONTAINS 
    2728 
    28   SUBROUTINE upd_tide (kt,kit) 
     29  SUBROUTINE upd_tide (kt, kit, time_offset) 
    2930    !!---------------------------------------------------------------------- 
    3031    !!                 ***  ROUTINE upd_tide  *** 
     
    3233    !! * Local declarations 
    3334 
    34     INTEGER, INTENT( in ) ::   kt,kit      ! ocean time-step index 
    35     INTEGER  :: ji,jj,jk 
    36     REAL (wp) :: zramp 
    37     REAL (wp), DIMENSION(nb_harmo) :: zwt  
     35    INTEGER, INTENT( in ) ::   kt            ! ocean time-step index 
     36    INTEGER, INTENT( in ), OPTIONAL  :: kit  ! Barotropic timestep counter (ts option) 
     37    INTEGER, INTENT( in ), OPTIONAL  :: time_offset ! time offset in units of timesteps 
     38    INTEGER                          :: time_add    ! time offset in units of timesteps 
     39    INTEGER  :: ji, jj, jk                    
     40    REAL (wp) :: zramp, z_arg, z_t 
    3841    !............................................................................... 
    3942 
    4043    pot_astro(:,:)=0.e0 
    4144    zramp = 1.e0 
     45    time_add = 0 
    4246 
    43     IF (lk_dynspg_ts) THEN 
    44        zwt(:) = omega_tide(:)* ((kt-kt_tide)*rdt + kit*(rdt/REAL(nn_baro,wp))) 
    45        IF (ln_tide_ramp) THEN 
    46           zramp = MIN(MAX( ((kt-nit000)*rdt + kit*(rdt/REAL(nn_baro,wp)))/(rdttideramp*rday),0.),1.) 
    47        ENDIF 
    48     ELSE 
    49        zwt(:) = omega_tide(:)*(kt-kt_tide)*rdt 
    50        IF (ln_tide_ramp) THEN 
    51           zramp = MIN(MAX( ((kt-nit000)*rdt)/(rdttideramp*rday),0.),1.)  
    52        ENDIF   
     47    IF( PRESENT(time_offset) ) THEN 
     48       time_add = time_offset 
     49    ENDIF 
     50          
     51    IF( PRESENT(kit) ) THEN   
     52       z_arg = ((kt-kt_tide) * rdt + (kit+0.5*(time_add-1)) * rdt / REAL(nn_baro,wp) ) 
     53    ELSE                               
     54       z_arg = ((kt-kt_tide)+time_add) * rdt 
    5355    ENDIF 
    5456 
    55     do jk=1,nb_harmo 
    56        do ji=1,jpi 
    57           do jj=1,jpj 
    58              pot_astro(ji,jj)=pot_astro(ji,jj) + zramp*(amp_pot(ji,jj,jk)*COS(zwt(jk)+phi_pot(ji,jj,jk)))       
    59           enddo 
    60        enddo 
    61     enddo 
     57    IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rdt)/(rdttideramp*rday),0.),1.) 
     58 
     59    DO jk=1,nb_harmo 
     60       z_t = z_arg * omega_tide(jk) 
     61       DO ji=1,jpi 
     62          DO jj=1,jpj 
     63             pot_astro(ji,jj)=pot_astro(ji,jj) + zramp * amp_pot(ji,jj,jk)*COS(z_t + phi_pot(ji,jj,jk))       
     64          END DO 
     65       END DO 
     66    END DO 
    6267 
    6368  END SUBROUTINE upd_tide 
     
    6873  !!---------------------------------------------------------------------- 
    6974CONTAINS 
    70   SUBROUTINE upd_tide( kt,kit )          ! Empty routine 
    71     INTEGER,INTENT (IN) :: kt, kit 
     75  SUBROUTINE upd_tide( kt)          ! Empty routine 
     76    INTEGER,INTENT (IN) :: kt 
    7277    WRITE(*,*) 'upd_tide: You should not have seen this print! error?', kt 
    7378  END SUBROUTINE upd_tide 
     
    7883 
    7984END MODULE updtide 
     85 
Note: See TracChangeset for help on using the changeset viewer.