- Timestamp:
- 2013-07-03T13:41:32+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/SBC/updtide.F90
r3651 r3953 1 1 MODULE updtide 2 !!================================================================================= 3 !! *** MODULE updtide *** 4 !! Initialization of tidal forcing 5 !! History : 9.0 ! 07 (O. Le Galloudec) Original code 6 !!================================================================================= 2 !!====================================================================== 3 !! *** MODULE updtide *** 4 !! Initialization of tidal forcing 5 !!====================================================================== 6 !! History : 9.0 ! 07 (O. Le Galloudec) Original code 7 !!---------------------------------------------------------------------- 7 8 #if defined key_tide 8 !! * Modules used 9 USE oce ! ocean dynamics and tracers variables 10 USE dom_oce ! ocean space and time domain 11 USE in_out_manager ! I/O units 12 USE phycst 13 USE sbctide 14 USE dynspg_oce 15 USE tideini, ONLY: ln_tide_ramp, rdttideramp 9 !!---------------------------------------------------------------------- 10 !! 'key_tide' : tidal potential 11 !!---------------------------------------------------------------------- 12 !! upd_tide : update tidal potential 13 !!---------------------------------------------------------------------- 14 USE oce ! ocean dynamics and tracers variables 15 USE dom_oce ! ocean space and time domain 16 USE in_out_manager ! I/O units 17 USE phycst ! physical constant 18 USE sbctide ! tide potential variable 19 USE tideini, ONLY: ln_tide_ramp, rdttideramp 16 20 17 IMPLICIT NONE18 PUBLIC21 IMPLICIT NONE 22 PUBLIC 19 23 20 !! * Routine accessibility 21 PUBLIC upd_tide 22 !!--------------------------------------------------------------------------------- 23 !! OPA 9.0 , LODYC-IPSL (2003) 24 !!--------------------------------------------------------------------------------- 25 24 PUBLIC upd_tide ! called in dynspg_... modules 25 26 !!---------------------------------------------------------------------- 27 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 28 !! $Id: sbcfwb.F90 3625 2012-11-21 13:19:18Z acc $ 29 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 30 !!---------------------------------------------------------------------- 26 31 CONTAINS 27 32 28 SUBROUTINE upd_tide (kt,kit) 29 !!---------------------------------------------------------------------- 30 !! *** ROUTINE upd_tide *** 31 !!---------------------------------------------------------------------- 32 !! * Local declarations 33 SUBROUTINE upd_tide( kt, kit, kbaro ) 34 !!---------------------------------------------------------------------- 35 !! *** ROUTINE upd_tide *** 36 !! 37 !! ** Purpose : provide at each time step the astronomical potential 38 !! 39 !! ** Method : computed from pulsation and amplitude of all tide components 40 !! 41 !! ** Action : pot_astro actronomical potential 42 !!---------------------------------------------------------------------- 43 INTEGER, INTENT(in) :: kt ! ocean time-step index 44 INTEGER, INTENT(in), OPTIONAL :: kit ! external mode sub-time-step index (lk_dynspg_ts=T only) 45 INTEGER, INTENT(in), OPTIONAL :: kbaro ! number of sub-time-step (lk_dynspg_ts=T only) 46 ! 47 INTEGER :: ji, jj, jk ! dummy loop indices 48 REAL(wp) :: zt, zramp ! local scalar 49 REAL(wp), DIMENSION(nb_harmo) :: zwt 50 !!---------------------------------------------------------------------- 51 ! 52 ! ! tide pulsation at model time step (or sub-time-step) 53 zt = ( kt - kt_tide ) * rdt 54 IF( PRESENT( kit ) .AND. PRESENT( kbaro ) ) zt = zt + kit * rdt / REAL( kbaro, wp ) 55 zwt(:) = omega_tide(:) * zt 33 56 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 38 !............................................................................... 39 40 pot_astro(:,:)=0.e0 41 zramp = 1.e0 42 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 53 ENDIF 54 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 62 63 END SUBROUTINE upd_tide 57 pot_astro(:,:) = 0._wp ! update tidal potential (sum of all harmonics) 58 DO jk = 1, nb_harmo 59 pot_astro(:,:) = pot_astro(:,:) + amp_pot(:,:,jk) * COS( zwt(jk) + phi_pot(:,:,jk) ) 60 END DO 61 ! 62 IF( ln_tide_ramp ) THEN ! linear increase if asked 63 zt = ( kt - nit000 ) * rdt 64 IF( PRESENT( kit ) .AND. PRESENT( kbaro ) ) zt = zt + kit * rdt / REAL( kbaro, wp ) 65 zramp = MIN( MAX( zt / (rdttideramp*rday) , 0._wp ) , 1._wp ) 66 pot_astro(:,:) = zramp * pot_astro(:,:) 67 ENDIF 68 ! 69 END SUBROUTINE upd_tide 64 70 65 71 #else
Note: See TracChangeset
for help on using the changeset viewer.