- Timestamp:
- 2015-12-16T10:25:22+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90
r5930 r6060 6 6 !! History : 1.0 ! 2007 (O. Le Galloudec) Original code 7 7 !!---------------------------------------------------------------------- 8 USE oce 9 USE dom_oce 10 USE phycst 11 USE daymod 12 USE tide_mod 8 USE oce ! ocean dynamics and tracers variables 9 USE dom_oce ! ocean space and time domain 10 USE phycst ! physical constant 11 USE daymod ! calandar 12 USE tide_mod ! 13 13 ! 14 USE i om15 USE i n_out_manager ! I/O units16 USE ioipsl 17 USE lbclnk 14 USE in_out_manager ! I/O units 15 USE iom ! xIOs server 16 USE ioipsl ! NetCDF IPSL library 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 18 19 19 IMPLICIT NONE … … 27 27 LOGICAL , PUBLIC :: ln_tide_pot !: 28 28 LOGICAL , PUBLIC :: ln_tide_ramp !: 29 INTEGER , PUBLIC :: nb_harmo 30 INTEGER , PUBLIC :: kt_tide 31 REAL(wp), PUBLIC :: rdttideramp 29 INTEGER , PUBLIC :: nb_harmo !: 30 INTEGER , PUBLIC :: kt_tide !: 31 REAL(wp), PUBLIC :: rdttideramp !: 32 32 33 33 INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide !: … … 40 40 CONTAINS 41 41 42 SUBROUTINE tide_init ( kt ) 43 !!---------------------------------------------------------------------- 44 !! *** ROUTINE tide_init *** 45 !!---------------------------------------------------------------------- 46 !! * Local declarations 47 INTEGER :: ji, jk 48 INTEGER, INTENT( in ) :: kt ! ocean time-step 49 CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname 50 INTEGER :: ios ! Local integer output status for namelist read 51 ! 52 NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname 53 !!---------------------------------------------------------------------- 54 55 IF ( kt == nit000 ) THEN 56 ! 57 IF(lwp) THEN 58 WRITE(numout,*) 59 WRITE(numout,*) 'tide_init : Initialization of the tidal components' 60 WRITE(numout,*) '~~~~~~~~~ ' 61 ENDIF 62 ! 63 CALL tide_init_Wave 64 ! 65 ! Read Namelist nam_tide 66 REWIND( numnam_ref ) ! Namelist nam_tide in reference namelist : Tides 67 READ ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901) 68 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp ) 69 70 REWIND( numnam_cfg ) ! Namelist nam_tide in configuration namelist : Tides 71 READ ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 ) 72 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp ) 73 IF(lwm) WRITE ( numond, nam_tide ) 74 ! 75 nb_harmo=0 76 DO jk = 1, jpmax_harmo 77 DO ji = 1,jpmax_harmo 78 IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) nb_harmo = nb_harmo + 1 79 END DO 80 END DO 81 ! 82 ! Ensure that tidal components have been set in namelist_cfg 83 IF( nb_harmo .EQ. 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 84 ! 85 IF(lwp) THEN 86 WRITE(numout,*) ' Namelist nam_tide' 87 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot =', ln_tide_pot 88 WRITE(numout,*) ' nb_harmo = ', nb_harmo 89 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 90 WRITE(numout,*) ' rdttideramp = ', rdttideramp 91 ENDIF 92 IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) ) & 93 & CALL ctl_stop('rdttideramp must be lower than run duration') 94 IF( ln_tide_ramp.AND.(rdttideramp<0.) ) & 95 & CALL ctl_stop('rdttideramp must be positive') 96 ! 97 ! 98 ALLOCATE( ntide(nb_harmo) ) 99 DO jk = 1, nb_harmo 100 DO ji = 1, jpmax_harmo 101 IF( TRIM(clname(jk)) .eq. Wave(ji)%cname_tide ) THEN 102 ntide(jk) = ji 103 EXIT 104 END IF 105 END DO 106 END DO 107 ! 108 ALLOCATE( omega_tide(nb_harmo), v0tide (nb_harmo), & 109 & utide (nb_harmo), ftide (nb_harmo) ) 110 kt_tide = kt 111 ! 42 SUBROUTINE tide_init 43 !!---------------------------------------------------------------------- 44 !! *** ROUTINE tide_init *** 45 !!---------------------------------------------------------------------- 46 INTEGER :: ji, jk 47 CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname 48 INTEGER :: ios ! Local integer output status for namelist read 49 ! 50 NAMELIST/nam_tide/ln_tide_pot, ln_tide_ramp, rdttideramp, clname 51 !!---------------------------------------------------------------------- 52 ! 53 IF(lwp) THEN 54 WRITE(numout,*) 55 WRITE(numout,*) 'tide_init : Initialization of the tidal components' 56 WRITE(numout,*) '~~~~~~~~~ ' 112 57 ENDIF 58 ! 59 CALL tide_init_Wave 60 ! 61 ! Read Namelist nam_tide 62 REWIND( numnam_ref ) ! Namelist nam_tide in reference namelist : Tides 63 READ ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901) 64 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in reference namelist', lwp ) 65 ! 66 REWIND( numnam_cfg ) ! Namelist nam_tide in configuration namelist : Tides 67 READ ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 ) 68 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp ) 69 IF(lwm) WRITE ( numond, nam_tide ) 70 ! 71 nb_harmo=0 72 DO jk = 1, jpmax_harmo 73 DO ji = 1,jpmax_harmo 74 IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) nb_harmo = nb_harmo + 1 75 END DO 76 END DO 77 ! 78 ! Ensure that tidal components have been set in namelist_cfg 79 IF( nb_harmo == 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 80 ! 81 IF(lwp) THEN 82 WRITE(numout,*) ' Namelist nam_tide' 83 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot =', ln_tide_pot 84 WRITE(numout,*) ' nb_harmo = ', nb_harmo 85 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 86 WRITE(numout,*) ' rdttideramp = ', rdttideramp 87 ENDIF 88 IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) ) & 89 & CALL ctl_stop('rdttideramp must be lower than run duration') 90 IF( ln_tide_ramp.AND.(rdttideramp<0.) ) & 91 & CALL ctl_stop('rdttideramp must be positive') 92 ! 93 ALLOCATE( ntide(nb_harmo) ) 94 DO jk = 1, nb_harmo 95 DO ji = 1, jpmax_harmo 96 IF( TRIM(clname(jk)) == Wave(ji)%cname_tide ) THEN 97 ntide(jk) = ji 98 EXIT 99 ENDIF 100 END DO 101 END DO 102 ! 103 ALLOCATE( omega_tide(nb_harmo), v0tide (nb_harmo), & 104 & utide (nb_harmo), ftide (nb_harmo) ) 105 kt_tide = nit000 113 106 ! 114 107 END SUBROUTINE tide_init
Note: See TracChangeset
for help on using the changeset viewer.