Changeset 12117
- Timestamp:
- 2019-12-09T10:46:17+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis
- Files:
-
- 4 deleted
- 12 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/AMM12/EXPREF/namelist_cfg
r11983 r12117 154 154 &nam_tide ! tide parameters (default: OFF) 155 155 !----------------------------------------------------------------------- 156 ln_tide = .true. ! Activate tides 157 ln_tide_pot = .true. ! use tidal potential forcing 158 159 clname(1) = 'Q1' ! name of constituent 160 clname(2) = 'O1' 161 clname(3) = 'P1' 162 clname(4) = 'S1' 163 clname(5) = 'K1' 164 clname(6) = '2N2' 165 clname(7) = 'MU2' 166 clname(8) = 'N2' 167 clname(9) = 'NU2' 168 clname(10) = 'M2' 169 clname(11) = 'L2' 170 clname(12) = 'T2' 171 clname(13) = 'S2' 172 clname(14) = 'K2' 173 clname(15) = 'M4' 156 ln_tide = .true. ! Activate tides 157 ln_tide_pot = .true. ! use tidal potential forcing 158 sn_tide_cnames(1) = 'Q1' ! name of constituent 159 sn_tide_cnames(2) = 'O1' 160 sn_tide_cnames(3) = 'P1' 161 sn_tide_cnames(4) = 'S1' 162 sn_tide_cnames(5) = 'K1' 163 sn_tide_cnames(6) = '2N2' 164 sn_tide_cnames(7) = 'MU2' 165 sn_tide_cnames(8) = 'N2' 166 sn_tide_cnames(9) = 'NU2' 167 sn_tide_cnames(10) = 'M2' 168 sn_tide_cnames(11) = 'L2' 169 sn_tide_cnames(12) = 'T2' 170 sn_tide_cnames(13) = 'S2' 171 sn_tide_cnames(14) = 'K2' 172 sn_tide_cnames(15) = 'M4' 174 173 / 175 174 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SHARED/field_def_nemo-oce.xml
r12022 r12117 206 206 207 207 </field_group> <!-- grid_T --> 208 209 <!-- Tides --> 210 211 <field_group id="Tides_T" grid_ref="grid_T_2D" operation="once" > 212 <!-- Tidal potential --> 213 <field id="tide_pot" long_name="Total tidal potential" unit="m" /> 214 <field id="tide_pot_M2" long_name="M2 tidal potential" unit="m" /> 215 <field id="tide_pot_N2" long_name="N2 tidal potential" unit="m" /> 216 <field id="tide_pot_2N2" long_name="2N2 tidal potential" unit="m" /> 217 <field id="tide_pot_S2" long_name="S2 tidal potential" unit="m" /> 218 <field id="tide_pot_K2" long_name="K2 tidal potential" unit="m" /> 219 <field id="tide_pot_K1" long_name="K1 tidal potential" unit="m" /> 220 <field id="tide_pot_O1" long_name="O1 tidal potential" unit="m" /> 221 <field id="tide_pot_Q1" long_name="Q1 tidal potential" unit="m" /> 222 <field id="tide_pot_P1" long_name="P1 tidal potential" unit="m" /> 223 <field id="tide_pot_M4" long_name="M4 tidal potential" unit="m" /> 224 <field id="tide_pot_Mf" long_name="Mf tidal potential" unit="m" /> 225 <field id="tide_pot_Mm" long_name="Mm tidal potential" unit="m" /> 226 <field id="tide_pot_Msqm" long_name="Msqm tidal potential" unit="m" /> 227 <field id="tide_pot_Mtm" long_name="Mtm tidal potential" unit="m" /> 228 <field id="tide_pot_S1" long_name="S1 tidal potential" unit="m" /> 229 <field id="tide_pot_MU2" long_name="MU2 tidal potential" unit="m" /> 230 <field id="tide_pot_NU2" long_name="NU2 tidal potential" unit="m" /> 231 <field id="tide_pot_L2" long_name="L2 tidal potential" unit="m" /> 232 <field id="tide_pot_T2" long_name="T2 tidal potential" unit="m" /> 233 </field_group> 208 234 209 235 <!-- OSMOSIS variables (available with ln_zdfosm=.true.) --> -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SHARED/namelist_ref
r11983 r12117 568 568 !----------------------------------------------------------------------- 569 569 ln_tide = .false. ! Activate tides 570 nn_tide_var = 1 ! Variant of tidal parameter set and tide-potential computation 571 ! ! (1: default; 0: compatibility with previous versions) 572 ln_tide_dia = .false. ! Enable tidal diagnostic output 570 573 ln_tide_pot = .true. ! use tidal potential forcing 574 rn_tide_gamma = 0.7 ! Tidal tilt factor 571 575 ln_scal_load = .false. ! Use scalar approximation for 572 576 rn_scal_load = 0.094 ! load potential … … 575 579 ! 576 580 ln_tide_ramp = .false. ! Use linear ramp for tides at startup 577 r dttideramp = 0.! ramp duration in days578 clname(1)= 'DUMMY' ! name of constituent - all tidal components must be set in namelist_cfg581 rn_tide_ramp_dt = 0. ! ramp duration in days 582 sn_tide_cnames(1) = 'DUMMY' ! name of constituent - all tidal components must be set in namelist_cfg 579 583 / 580 584 !----------------------------------------------------------------------- … … 652 656 filtide = 'bdydta/amm12_bdytide_' ! file name root of tidal forcing files 653 657 ln_bdytide_2ddta = .false. ! 654 ln_bdytide_conj = .false. !655 658 / 656 659 -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/cfgs/SPITZ12/EXPREF/namelist_cfg
r11983 r12117 139 139 &nam_tide ! tide parameters (default: OFF) 140 140 !----------------------------------------------------------------------- 141 ln_tide = .true. ! Activate tides142 ln_tide_pot = .false.! use tidal potential forcing143 clname(1) = 'M2'! name of constituent144 clname(2)= 'S2'145 clname(3)= 'N2'146 clname(4)= 'K2'147 clname(5)= 'K1'148 clname(6)= 'O1'149 clname(7)= 'P1'150 clname(8)= 'Q1'141 ln_tide = .true. ! Activate tides 142 ln_tide_pot = .false. ! use tidal potential forcing 143 sn_tide_cnames(1) = 'M2' ! name of constituent 144 sn_tide_cnames(2) = 'S2' 145 sn_tide_cnames(3) = 'N2' 146 sn_tide_cnames(4) = 'K2' 147 sn_tide_cnames(5) = 'K1' 148 sn_tide_cnames(6) = 'O1' 149 sn_tide_cnames(7) = 'P1' 150 sn_tide_cnames(8) = 'Q1' 151 151 / 152 152 !----------------------------------------------------------------------- -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdydta.F90
r12075 r12117 23 23 USE phycst ! physical constants 24 24 USE sbcapr ! atmospheric pressure forcing 25 USE sbctide ! Tidal forcing or not25 USE tide_mod, ONLY: ln_tide ! tidal forcing 26 26 USE bdy_oce ! ocean open boundary conditions 27 27 USE bdytides ! tidal forcing at boundaries … … 75 75 CONTAINS 76 76 77 SUBROUTINE bdy_dta( kt, k it, kt_offset )77 SUBROUTINE bdy_dta( kt, kt_offset ) 78 78 !!---------------------------------------------------------------------- 79 79 !! *** SUBROUTINE bdy_dta *** … … 85 85 !!---------------------------------------------------------------------- 86 86 INTEGER, INTENT(in) :: kt ! ocean time-step index 87 INTEGER, INTENT(in), OPTIONAL :: kit ! subcycle time-step index (for timesplitting option) 88 INTEGER, INTENT(in), OPTIONAL :: kt_offset ! time offset in units of timesteps. NB. if kit 89 ! ! is present then units = subcycle timesteps. 87 INTEGER, INTENT(in), OPTIONAL :: kt_offset ! time offset in units of timesteps 90 88 ! ! kt_offset = 0 => get data at "now" time level 91 89 ! ! kt_offset = -1 => get data at "before" time level … … 105 103 ! Initialise data arrays once for all from initial conditions where required 106 104 !--------------------------------------------------------------------------- 107 IF( kt == nit000 .AND. .NOT.PRESENT(kit)) THEN105 IF( kt == nit000 ) THEN 108 106 109 107 ! Calculate depth-mean currents … … 216 214 ! read/update all bdy data 217 215 ! ------------------------ 218 CALL fld_read( kt, 1, bf_alias, k it = kit, kt_offset = kt_offset )216 CALL fld_read( kt, 1, bf_alias, kt_offset = kt_offset ) 219 217 220 218 ! apply some corrections in some specific cases... … … 275 273 END DO 276 274 ENDIF ! ltotvel 277 278 ! update tidal harmonic forcing279 IF( PRESENT(kit) .AND. nn_dyn2d_dta(jbdy) .GE. 2 ) THEN280 CALL bdytide_update( kt = kt, idx = idx_bdy(jbdy), dta = dta_alias, td = tides(jbdy), &281 & kit = kit, kt_offset = kt_offset )282 ENDIF283 275 284 276 ! atm surface pressure : add inverted barometer effect to ssh if it was read -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdyini.F90
r11536 r12117 22 22 USE bdydta ! open boundary cond. setting (bdy_dta_init routine) 23 23 USE bdytides ! open boundary cond. setting (bdytide_init routine) 24 USE sbctide ! Tidal forcing or not24 USE tide_mod, ONLY: ln_tide ! tidal forcing 25 25 USE phycst , ONLY: rday 26 26 ! -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/BDY/bdytides.F90
r11536 r12117 18 18 USE phycst ! physical constants 19 19 USE bdy_oce ! ocean open boundary conditions 20 USE tide ini!20 USE tide_mod ! 21 21 USE daymod ! calendar 22 22 ! … … 30 30 31 31 PUBLIC bdytide_init ! routine called in bdy_init 32 PUBLIC bdytide_update ! routine called in bdy_dta33 32 PUBLIC bdy_dta_tides ! routine called in dyn_spg_ts 34 33 … … 45 44 TYPE(OBC_DATA) , PUBLIC, DIMENSION(jp_bdy) :: dta_bdy_s !: bdy external data (slow component) 46 45 46 INTEGER :: kt_tide 47 47 48 !!---------------------------------------------------------------------- 48 49 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 64 65 CHARACTER(len=80) :: filtide !: Filename root for tidal input files 65 66 LOGICAL :: ln_bdytide_2ddta !: If true, read 2d harmonic data 66 LOGICAL :: ln_bdytide_conj !: If true, assume complex conjugate tidal data67 67 !! 68 68 INTEGER :: ib_bdy, itide, ib !: dummy loop indices … … 77 77 TYPE(TIDES_DATA), POINTER :: td !: local short cut 78 78 !! 79 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta , ln_bdytide_conj79 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta 80 80 !!---------------------------------------------------------------------- 81 81 ! … … 105 105 IF(lwp) WRITE(numout,*) ' Namelist nambdy_tide : tidal harmonic forcing at open boundaries' 106 106 IF(lwp) WRITE(numout,*) ' read tidal data in 2d files: ', ln_bdytide_2ddta 107 IF(lwp) WRITE(numout,*) ' assume complex conjugate : ', ln_bdytide_conj108 107 IF(lwp) WRITE(numout,*) ' Number of tidal components to read: ', nb_harmo 109 108 IF(lwp) THEN 110 109 WRITE(numout,*) ' Tidal components: ' 111 110 DO itide = 1, nb_harmo 112 WRITE(numout,*) ' ', Wave(ntide(itide))%cname_tide111 WRITE(numout,*) ' ', tide_harmonics(itide)%cname_tide 113 112 END DO 114 113 ENDIF … … 151 150 igrd = 1 ! Everything is at T-points here 152 151 DO itide = 1, nb_harmo 153 CALL iom_get( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) )154 CALL iom_get( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) )152 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z1', ztr(:,:) ) 153 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z2', zti(:,:) ) 155 154 DO ib = 1, ilen0(igrd) 156 155 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 168 167 igrd = 2 ! Everything is at U-points here 169 168 DO itide = 1, nb_harmo 170 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) )171 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) )169 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u1', ztr(:,:) ) 170 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u2', zti(:,:) ) 172 171 DO ib = 1, ilen0(igrd) 173 172 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 185 184 igrd = 3 ! Everything is at V-points here 186 185 DO itide = 1, nb_harmo 187 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) )188 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) )186 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v1', ztr(:,:) ) 187 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v2', zti(:,:) ) 189 188 DO ib = 1, ilen0(igrd) 190 189 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 210 209 DO itide = 1, nb_harmo 211 210 ! ! SSH fields 212 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_T.nc'211 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_T.nc' 213 212 CALL iom_open( clfile, inum ) 214 213 CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) … … 218 217 CALL iom_close( inum ) 219 218 ! ! U fields 220 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_U.nc'219 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_U.nc' 221 220 CALL iom_open( clfile, inum ) 222 221 CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) … … 226 225 CALL iom_close( inum ) 227 226 ! ! V fields 228 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_V.nc'227 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_V.nc' 229 228 CALL iom_open( clfile, inum ) 230 229 CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) … … 240 239 ENDIF ! ln_bdytide_2ddta=.true. 241 240 ! 242 IF( ln_bdytide_conj ) THEN ! assume complex conjugate in data files243 td%ssh0(:,:,2) = - td%ssh0(:,:,2)244 td%u0 (:,:,2) = - td%u0 (:,:,2)245 td%v0 (:,:,2) = - td%v0 (:,:,2)246 ENDIF247 !248 241 ! Allocate slow varying data in the case of time splitting: 249 242 ! Do it anyway because at this stage knowledge of free surface scheme is unknown … … 260 253 ! 261 254 END SUBROUTINE bdytide_init 262 263 264 SUBROUTINE bdytide_update( kt, idx, dta, td, kit, kt_offset )265 !!----------------------------------------------------------------------266 !! *** SUBROUTINE bdytide_update ***267 !!268 !! ** Purpose : - Add tidal forcing to ssh, u2d and v2d OBC data arrays.269 !!270 !!----------------------------------------------------------------------271 INTEGER , INTENT(in ) :: kt ! Main timestep counter272 TYPE(OBC_INDEX) , INTENT(in ) :: idx ! OBC indices273 TYPE(OBC_DATA) , INTENT(inout) :: dta ! OBC external data274 TYPE(TIDES_DATA) , INTENT(inout) :: td ! tidal harmonics data275 INTEGER, OPTIONAL, INTENT(in ) :: kit ! Barotropic timestep counter (for timesplitting option)276 INTEGER, OPTIONAL, INTENT(in ) :: kt_offset ! time offset in units of timesteps. NB. if kit277 ! ! is present then units = subcycle timesteps.278 ! ! kt_offset = 0 => get data at "now" time level279 ! ! kt_offset = -1 => get data at "before" time level280 ! ! kt_offset = +1 => get data at "after" time level281 ! ! etc.282 !283 INTEGER :: itide, igrd, ib ! dummy loop indices284 INTEGER :: time_add ! time offset in units of timesteps285 INTEGER, DIMENSION(3) :: ilen0 ! length of boundary data (from OBC arrays)286 REAL(wp) :: z_arg, z_sarg, zflag, zramp ! local scalars287 REAL(wp), DIMENSION(jpmax_harmo) :: z_sist, z_cost288 !!----------------------------------------------------------------------289 !290 ilen0(1) = SIZE(td%ssh(:,1,1))291 ilen0(2) = SIZE(td%u(:,1,1))292 ilen0(3) = SIZE(td%v(:,1,1))293 294 zflag=1295 IF ( PRESENT(kit) ) THEN296 IF ( kit /= 1 ) zflag=0297 ENDIF298 299 IF ( (nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000) .AND. zflag==1 ) THEN300 !301 kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt302 !303 IF(lwp) THEN304 WRITE(numout,*)305 WRITE(numout,*) 'bdytide_update : (re)Initialization of the tidal bdy forcing at kt=',kt306 WRITE(numout,*) '~~~~~~~~~~~~~~ '307 ENDIF308 !309 CALL tide_init_elevation ( idx, td )310 CALL tide_init_velocities( idx, td )311 !312 ENDIF313 314 time_add = 0315 IF( PRESENT(kt_offset) ) THEN316 time_add = kt_offset317 ENDIF318 319 IF( PRESENT(kit) ) THEN320 z_arg = ((kt-kt_tide) * rdt + (kit+0.5_wp*(time_add-1)) * rdt / REAL(nn_baro,wp) )321 ELSE322 z_arg = ((kt-kt_tide)+time_add) * rdt323 ENDIF324 325 ! Linear ramp on tidal component at open boundaries326 zramp = 1._wp327 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rdt)/(rdttideramp*rday),0._wp),1._wp)328 329 DO itide = 1, nb_harmo330 z_sarg = z_arg * omega_tide(itide)331 z_cost(itide) = COS( z_sarg )332 z_sist(itide) = SIN( z_sarg )333 END DO334 335 DO itide = 1, nb_harmo336 igrd=1 ! SSH on tracer grid337 DO ib = 1, ilen0(igrd)338 dta%ssh(ib) = dta%ssh(ib) + zramp*(td%ssh(ib,itide,1)*z_cost(itide) + td%ssh(ib,itide,2)*z_sist(itide))339 END DO340 igrd=2 ! U grid341 DO ib = 1, ilen0(igrd)342 dta%u2d(ib) = dta%u2d(ib) + zramp*(td%u (ib,itide,1)*z_cost(itide) + td%u (ib,itide,2)*z_sist(itide))343 END DO344 igrd=3 ! V grid345 DO ib = 1, ilen0(igrd)346 dta%v2d(ib) = dta%v2d(ib) + zramp*(td%v (ib,itide,1)*z_cost(itide) + td%v (ib,itide,2)*z_sist(itide))347 END DO348 END DO349 !350 END SUBROUTINE bdytide_update351 255 352 256 … … 392 296 ! Linear ramp on tidal component at open boundaries 393 297 zramp = 1. 394 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(r dttideramp*rday),0.),1.)298 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(rn_tide_ramp_dt*rday),0.),1.) 395 299 396 300 DO ib_bdy = 1,nb_bdy … … 433 337 DO itide = 1, nb_harmo 434 338 ! 435 z_sarg = (z_arg + zoff) * omega_tide(itide)339 z_sarg = (z_arg + zoff) * tide_harmonics(itide)%omega 436 340 z_cost = zramp * COS( z_sarg ) 437 341 z_sist = zramp * SIN( z_sarg ) … … 491 395 END DO 492 396 DO ib = 1 , ilen0(igrd) 493 mod_tide(ib)=mod_tide(ib)* ftide(itide)494 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)397 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 398 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0+tide_harmonics(itide)%u 495 399 ENDDO 496 400 DO ib = 1 , ilen0(igrd) … … 530 434 END DO 531 435 DO ib = 1, ilen0(igrd) 532 mod_tide(ib)=mod_tide(ib)* ftide(itide)533 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)436 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 437 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 534 438 ENDDO 535 439 DO ib = 1, ilen0(igrd) … … 551 455 END DO 552 456 DO ib = 1, ilen0(igrd) 553 mod_tide(ib)=mod_tide(ib)* ftide(itide)554 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)457 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 458 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 555 459 ENDDO 556 460 DO ib = 1, ilen0(igrd) -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/DYN/dynspg.F90
r11536 r12117 21 21 USE dynspg_exp ! surface pressure gradient (dyn_spg_exp routine) 22 22 USE dynspg_ts ! surface pressure gradient (dyn_spg_ts routine) 23 USE sbctide ! 24 USE updtide ! 23 USE tide_mod ! 25 24 USE trd_oce ! trends: ocean variables 26 25 USE trddyn ! trend manager: dynamics … … 43 42 INTEGER, PARAMETER :: np_EXP = 0 ! explicit time stepping 44 43 INTEGER, PARAMETER :: np_NO =-1 ! no surface pressure gradient, no scheme 44 ! 45 REAL(wp) :: zt0step ! Time of day at the beginning of the time step 45 46 46 47 !! * Substitutions … … 113 114 IF( .NOT.ln_dynspg_ts .AND. ( ln_tide_pot .AND. ln_tide ) ) THEN ! N.B. added directly at sub-time-step in ts-case 114 115 ! 115 CALL upd_tide( kt ) ! update tide potential 116 ! Update tide potential at the beginning of current time step 117 zt0step = REAL(nsec_day, wp)-0.5_wp*rdt 118 CALL upd_tide(zt0step) 116 119 ! 117 120 DO jj = 2, jpjm1 ! add tide potential forcing -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/DYN/dynspg_ts.F90
r12075 r12117 44 44 USE bdytides ! open boundary condition data 45 45 USE bdydyn2d ! open boundary conditions on barotropic variables 46 USE sbctide ! tides 47 USE updtide ! tide potential 46 USE tide_mod ! 48 47 USE sbcwave ! surface wave 49 48 USE diatmb ! Top,middle,bottom output … … 170 169 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztwdmask, zuwdmask, zvwdmask ! ROMS wetting and drying masks at t,u,v points 171 170 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zuwdav2, zvwdav2 ! averages over the sub-steps of zuwdmask and zvwdmask 171 REAL(wp) :: zt0substep ! Time of day at the beginning of the time substep 172 172 !!---------------------------------------------------------------------- 173 173 ! … … 424 424 ! 425 425 IF( ln_bdy .AND. ln_tide ) CALL bdy_dta_tides( kt, kit=jn, kt_offset= noffset+1 ) 426 IF( ln_tide_pot .AND. ln_tide ) CALL upd_tide ( kt, kit=jn, kt_offset= noffset ) 426 ! Update tide potential at the beginning of current time substep 427 IF( ln_tide_pot .AND. ln_tide ) THEN 428 zt0substep = REAL(nsec_day, wp) - 0.5_wp*rdt + (jn + noffset - 1) * rdt / REAL(nn_baro, wp) 429 CALL upd_tide(zt0substep) 430 END IF 427 431 ! 428 432 ! !== extrapolation at mid-step ==! (jn+1/2) -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/nemogcm.F90
r12022 r12117 46 46 USE closea ! treatment of closed seas (for ln_closea) 47 47 USE usrdef_nam ! user defined configuration 48 USE tide ini ! tidal components initialization (tide_iniroutine)48 USE tide_mod, ONLY : tide_init ! tidal components initialization (tide_init routine) 49 49 USE bdy_oce, ONLY : ln_bdy 50 50 USE bdyini ! open boundary cond. setting (bdy_init routine) -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/step.F90
r12022 r12117 112 112 ! Update external forcing (tides, open boundaries, and surface boundary condition (including sea-ice) 113 113 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 114 IF( ln_tide ) CALL sbc_tide( kstp )! update tide potential114 IF( ln_tide ) CALL tide_update( kstp ) ! update tide potential 115 115 IF( ln_apr_dyn ) CALL sbc_apr ( kstp ) ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib) 116 116 IF( ln_bdy ) CALL bdy_dta ( kstp, kt_offset = +1 ) ! update dynamic & tracer data at open boundaries -
NEMO/branches/2019/dev_r11879_ENHANCE-05_SimonM-Harmonic_Analysis/src/OCE/step_oce.F90
r12022 r12117 19 19 USE sbccpl ! surface boundary condition: coupled formulation (call send at end of step) 20 20 USE sbcapr ! surface boundary condition: atmospheric pressure 21 USE sbctide ! Tide initialisation21 USE tide_mod, ONLY : ln_tide, tide_update 22 22 USE sbcwave ! Wave intialisation 23 23
Note: See TracChangeset
for help on using the changeset viewer.