- Timestamp:
- 2012-11-16T17:18:17+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_MERCATOR_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90
r3294 r3583 14 14 USE daymod 15 15 USE dynspg_oce 16 USE tide _mod16 USE tideini 17 17 USE iom 18 18 … … 21 21 22 22 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: pot_astro 23 LOGICAL, PUBLIC :: ln_tide_pot = .false. 23 24 24 #if defined key_tide 25 25 26 26 LOGICAL, PUBLIC, PARAMETER :: lk_tide = .TRUE. 27 28 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: omega_tide29 30 REAL(wp), ALLOCATABLE, DIMENSION(:) :: &31 v0tide, &32 utide, &33 ftide34 35 27 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: amp_pot,phi_pot 36 37 INTEGER, PUBLIC :: nb_harmo38 INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide39 INTEGER, PUBLIC :: nn_tide, kt_tide40 41 28 !!--------------------------------------------------------------------------------- 42 29 !! OPA 9.0 , LODYC-IPSL (2003) … … 51 38 !! * Arguments 52 39 INTEGER, INTENT( in ) :: kt ! ocean time-step 53 !! * Local declarations54 INTEGER :: jk,ji55 CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname56 40 !!---------------------------------------------------------------------- 57 41 58 NAMELIST/nam_tide/ln_tide_pot,nb_harmo,clname,nn_tide42 IF ( kt == nit000 .AND. .NOT. lk_dynspg_ts ) CALL ctl_stop( 'STOP', 'sbc_tide : tidal potential use only with time splitting' ) 59 43 60 IF ( kt == nit000 ) THEN 44 IF ( nsec_day == NINT(0.5 * rdttra(1)) ) THEN 45 ! 46 kt_tide = kt 61 47 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 63 53 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 65 58 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)) 67 62 68 CALL tide_init_Wave 63 amp_pot(:,:,:) = 0.e0 64 phi_pot(:,:,:) = 0.e0 65 pot_astro(:,:) = 0.e0 69 66 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 ! 77 69 ENDIF 78 79 IF(lwp) THEN80 WRITE(numout,*) ' Namelist nam_tide'81 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot =', ln_tide_pot82 WRITE(numout,*) ' nb_harmo = ', nb_harmo83 CALL flush(numout)84 ENDIF85 86 ALLOCATE(ntide (nb_harmo))87 DO jk=1,nb_harmo88 DO ji=1,jpmax_harmo89 IF (TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN90 ntide(jk) = ji91 EXIT92 END IF93 END DO94 END DO95 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 ENDIF103 104 IF ( MOD( kt - 1, nn_tide ) == 0 ) THEN105 kt_tide = kt106 CALL tide_harmo(omega_tide, v0tide, utide, ftide, ntide, nb_harmo)107 ENDIF108 109 amp_pot(:,:,:) = 0.e0110 phi_pot(:,:,:) = 0.e0111 pot_astro(:,:) = 0.e0112 113 IF (ln_tide_pot ) CALL tide_init_potential114 70 115 71 END SUBROUTINE sbc_tide
Note: See TracChangeset
for help on using the changeset viewer.