- Timestamp:
- 2013-07-11T15:59:14+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3867_MERCATOR1_DYN/NEMOGCM/NEMO/OPA_SRC/SBC/updtide.F90
r3651 r3970 4 4 !! Initialization of tidal forcing 5 5 !! History : 9.0 ! 07 (O. Le Galloudec) Original code 6 !! 3.5 ! 2013-07 (J. Chanut) Compliant with time splitting changes 6 7 !!================================================================================= 7 8 #if defined key_tide … … 26 27 CONTAINS 27 28 28 SUBROUTINE upd_tide (kt, kit)29 SUBROUTINE upd_tide (kt, kit, time_offset) 29 30 !!---------------------------------------------------------------------- 30 31 !! *** ROUTINE upd_tide *** … … 32 33 !! * Local declarations 33 34 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 38 41 !............................................................................... 39 42 40 43 pot_astro(:,:)=0.e0 41 44 zramp = 1.e0 45 time_add = 0 42 46 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 53 55 ENDIF 54 56 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 62 67 63 68 END SUBROUTINE upd_tide … … 68 73 !!---------------------------------------------------------------------- 69 74 CONTAINS 70 SUBROUTINE upd_tide( kt ,kit) ! Empty routine71 INTEGER,INTENT (IN) :: kt , kit75 SUBROUTINE upd_tide( kt) ! Empty routine 76 INTEGER,INTENT (IN) :: kt 72 77 WRITE(*,*) 'upd_tide: You should not have seen this print! error?', kt 73 78 END SUBROUTINE upd_tide … … 78 83 79 84 END MODULE updtide 85
Note: See TracChangeset
for help on using the changeset viewer.