- Timestamp:
- 2013-11-20T17:28:04+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90
r4147 r4292 1 1 MODULE tideini 2 !!================================================================================= 3 !! *** MODULE tideini *** 4 !! Initialization of tidal forcing 5 !! History : 9.0 ! 07 (O. Le Galloudec) Original code 6 !!================================================================================= 7 !! * Modules used 8 USE oce ! ocean dynamics and tracers variables 9 USE dom_oce ! ocean space and time domain 10 USE in_out_manager ! I/O units 11 USE ioipsl ! NetCDF IPSL library 12 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 13 USE phycst 14 USE daymod 15 USE dynspg_oce 16 USE tide_mod 17 USE iom 2 !!====================================================================== 3 !! *** MODULE tideini *** 4 !! Initialization of tidal forcing 5 !!====================================================================== 6 !! History : 1.0 ! 2007 (O. Le Galloudec) Original code 7 !!---------------------------------------------------------------------- 8 USE oce ! ocean dynamics and tracers variables 9 USE dom_oce ! ocean space and time domain 10 USE phycst 11 USE daymod 12 USE dynspg_oce 13 USE tide_mod 14 ! 15 USE iom 16 USE in_out_manager ! I/O units 17 USE ioipsl ! NetCDF IPSL library 18 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 19 19 IMPLICIT NONE20 PUBLIC20 IMPLICIT NONE 21 PUBLIC 21 22 22 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: & 23 omega_tide, & 24 v0tide, & 25 utide, & 26 ftide 23 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: omega_tide !: 24 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: v0tide !: 25 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: utide !: 26 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: ftide !: 27 27 28 LOGICAL, PUBLIC :: ln_tide_pot , ln_tide_ramp 29 REAL(wp), PUBLIC :: rdttideramp 30 INTEGER, PUBLIC :: nb_harmo 31 INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide 32 INTEGER, PUBLIC :: kt_tide 28 LOGICAL , PUBLIC :: ln_tide_pot !: 29 LOGICAL , PUBLIC :: ln_tide_ramp !: 30 INTEGER , PUBLIC :: nb_harmo !: 31 INTEGER , PUBLIC :: kt_tide !: 32 REAL(wp), PUBLIC :: rdttideramp !: 33 34 INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide !: 33 35 34 !!--------------------------------------------------------------------------------- 35 !! OPA 9.0 , LODYC-IPSL (2003) 36 !!--------------------------------------------------------------------------------- 37 36 !!---------------------------------------------------------------------- 37 !! NEMO/OPA 3.5 , NEMO Consortium (2013) 38 !! $Id: $ 39 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 40 !!---------------------------------------------------------------------- 38 41 CONTAINS 39 42 … … 72 75 ! 73 76 nb_harmo=0 74 DO jk=1,jpmax_harmo 75 DO ji=1,jpmax_harmo 76 IF(TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN 77 nb_harmo=nb_harmo+1 78 ENDIF 77 DO jk = 1, jpmax_harmo 78 DO ji = 1,jpmax_harmo 79 IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) nb_harmo = nb_harmo + 1 79 80 END DO 80 END DO81 END DO 81 82 ! 82 83 IF(lwp) THEN 83 WRITE(numout,*) ' Namelist nam_tide' 84 WRITE(numout,*) ' nb_harmo = ', nb_harmo 85 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 86 WRITE(numout,*) ' rdttideramp = ', rdttideramp 87 IF (ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp)) & 88 & CALL ctl_stop('rdttideramp must be lower than run duration') 89 IF (ln_tide_ramp.AND.(rdttideramp<0.)) & 90 & CALL ctl_stop('rdttideramp must be positive') 91 CALL flush(numout) 84 WRITE(numout,*) ' Namelist nam_tide' 85 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot =', ln_tide_pot 86 WRITE(numout,*) ' nb_harmo = ', nb_harmo 87 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 88 WRITE(numout,*) ' rdttideramp = ', rdttideramp 92 89 ENDIF 90 IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) ) & 91 & CALL ctl_stop('rdttideramp must be lower than run duration') 92 IF( ln_tide_ramp.AND.(rdttideramp<0.) ) & 93 & CALL ctl_stop('rdttideramp must be positive') 93 94 ! 94 ALLOCATE(ntide(nb_harmo)) 95 DO jk=1,nb_harmo 96 DO ji=1,jpmax_harmo 97 IF (TRIM(clname(jk)) .eq. Wave(ji)%cname_tide) THEN 95 IF( .NOT. lk_dynspg_ts ) CALL ctl_warn( 'sbc_tide : use of time splitting is recommended' ) 96 ! 97 ALLOCATE( ntide(nb_harmo) ) 98 DO jk = 1, nb_harmo 99 DO ji = 1, jpmax_harmo 100 IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN 98 101 ntide(jk) = ji 99 102 EXIT … … 102 105 END DO 103 106 ! 104 ALLOCATE(omega_tide(nb_harmo)) 105 ALLOCATE(v0tide (nb_harmo)) 106 ALLOCATE(utide (nb_harmo)) 107 ALLOCATE(ftide (nb_harmo)) 107 ALLOCATE( omega_tide(nb_harmo), v0tide (nb_harmo), & 108 & utide (nb_harmo), ftide (nb_harmo) ) 108 109 kt_tide = kt 109 110 ! 110 ENDIF 111 112 IF ( nsec_day == NINT(0.5 * rdttra(1)) ) THEN 113 ! 114 IF(lwp) THEN 115 WRITE(numout,*) 116 WRITE(numout,*) 'tide_ini : Update of the tidal components at kt=',kt 117 WRITE(numout,*) '~~~~~~~~ ' 118 ENDIF 119 CALL tide_harmo(omega_tide, v0tide, utide, ftide, ntide, nb_harmo) 120 DO jk =1,nb_harmo 121 IF(lwp) WRITE(numout,*) Wave(ntide(jk))%cname_tide,utide(jk),ftide(jk),v0tide(jk),omega_tide(jk) 122 call flush(numout) 123 END DO 124 ! 125 kt_tide = kt 126 ! 127 ENDIF 128 129 END SUBROUTINE tide_init 130 111 ENDIF 112 ! 113 END SUBROUTINE tide_init 114 115 !!====================================================================== 131 116 END MODULE tideini
Note: See TracChangeset
for help on using the changeset viewer.