Changeset 12205 for NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Timestamp:
- 2019-12-12T11:52:50+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE
- Files:
-
- 6 deleted
- 10 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/BDY/bdydta.F90
r12145 r12205 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, Kmm, k it, kt_offset )77 SUBROUTINE bdy_dta( kt, Kmm, kt_offset ) 78 78 !!---------------------------------------------------------------------- 79 79 !! *** SUBROUTINE bdy_dta *** … … 86 86 INTEGER, INTENT(in) :: kt ! ocean time-step index 87 87 INTEGER, INTENT(in) :: Kmm ! ocean time level index 88 INTEGER, INTENT(in), OPTIONAL :: kit ! subcycle time-step index (for timesplitting option) 89 INTEGER, INTENT(in), OPTIONAL :: kt_offset ! time offset in units of timesteps. NB. if kit 88 INTEGER, INTENT(in), OPTIONAL :: kt_offset ! time offset in units of timesteps 90 89 ! ! is present then units = subcycle timesteps. 91 90 ! ! kt_offset = 0 => get data at "now" time level … … 106 105 ! Initialise data arrays once for all from initial conditions where required 107 106 !--------------------------------------------------------------------------- 108 IF( kt == nit000 .AND. .NOT.PRESENT(kit)) THEN107 IF( kt == nit000 ) THEN 109 108 110 109 ! Calculate depth-mean currents … … 217 216 ! read/update all bdy data 218 217 ! ------------------------ 219 CALL fld_read( kt, 1, bf_alias, k it = kit, kt_offset = kt_offset )218 CALL fld_read( kt, 1, bf_alias, kt_offset = kt_offset ) 220 219 ! apply some corrections in some specific cases... 221 220 ! -------------------------------------------------- … … 275 274 END DO 276 275 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 276 284 277 ! atm surface pressure : add inverted barometer effect to ssh if it was read -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/BDY/bdyini.F90
r11960 r12205 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_r11943_MERGE_2019/src/OCE/BDY/bdytides.F90
r11960 r12205 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 … … 79 79 TYPE(TIDES_DATA), POINTER :: td !: local short cut 80 80 !! 81 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta , ln_bdytide_conj81 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta 82 82 !!---------------------------------------------------------------------- 83 83 ! … … 119 119 IF(lwp) WRITE(numout,*) ' Namelist nambdy_tide : tidal harmonic forcing at open boundaries' 120 120 IF(lwp) WRITE(numout,*) ' read tidal data in 2d files: ', ln_bdytide_2ddta 121 IF(lwp) WRITE(numout,*) ' assume complex conjugate : ', ln_bdytide_conj122 121 IF(lwp) WRITE(numout,*) ' Number of tidal components to read: ', nb_harmo 123 122 IF(lwp) THEN 124 123 WRITE(numout,*) ' Tidal components: ' 125 124 DO itide = 1, nb_harmo 126 WRITE(numout,*) ' ', Wave(ntide(itide))%cname_tide125 WRITE(numout,*) ' ', tide_harmonics(itide)%cname_tide 127 126 END DO 128 127 ENDIF … … 165 164 igrd = 1 ! Everything is at T-points here 166 165 DO itide = 1, nb_harmo 167 CALL iom_get( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) )168 CALL iom_get( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) )166 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z1', ztr(:,:) ) 167 CALL iom_get( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_z2', zti(:,:) ) 169 168 DO ib = 1, ilen0(igrd) 170 169 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 182 181 igrd = 2 ! Everything is at U-points here 183 182 DO itide = 1, nb_harmo 184 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_u1', ztr(:,:) )185 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_u2', zti(:,:) )183 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u1', ztr(:,:) ) 184 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_u2', zti(:,:) ) 186 185 DO ib = 1, ilen0(igrd) 187 186 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 199 198 igrd = 3 ! Everything is at V-points here 200 199 DO itide = 1, nb_harmo 201 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_v1', ztr(:,:) )202 CALL iom_get ( inum, jpdom_autoglo, TRIM( Wave(ntide(itide))%cname_tide)//'_v2', zti(:,:) )200 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v1', ztr(:,:) ) 201 CALL iom_get ( inum, jpdom_autoglo, TRIM(tide_harmonics(itide)%cname_tide)//'_v2', zti(:,:) ) 203 202 DO ib = 1, ilen0(igrd) 204 203 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) … … 224 223 DO itide = 1, nb_harmo 225 224 ! ! SSH fields 226 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_T.nc'225 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_T.nc' 227 226 CALL iom_open( clfile, inum ) 228 227 CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) ) … … 232 231 CALL iom_close( inum ) 233 232 ! ! U fields 234 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_U.nc'233 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_U.nc' 235 234 CALL iom_open( clfile, inum ) 236 235 CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,2) ) … … 240 239 CALL iom_close( inum ) 241 240 ! ! V fields 242 clfile = TRIM(filtide)//TRIM( Wave(ntide(itide))%cname_tide)//'_grid_V.nc'241 clfile = TRIM(filtide)//TRIM(tide_harmonics(itide)%cname_tide)//'_grid_V.nc' 243 242 CALL iom_open( clfile, inum ) 244 243 CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,3) ) … … 254 253 ENDIF ! ln_bdytide_2ddta=.true. 255 254 ! 256 IF( ln_bdytide_conj ) THEN ! assume complex conjugate in data files257 td%ssh0(:,:,2) = - td%ssh0(:,:,2)258 td%u0 (:,:,2) = - td%u0 (:,:,2)259 td%v0 (:,:,2) = - td%v0 (:,:,2)260 ENDIF261 !262 255 ! Allocate slow varying data in the case of time splitting: 263 256 ! Do it anyway because at this stage knowledge of free surface scheme is unknown … … 274 267 ! 275 268 END SUBROUTINE bdytide_init 276 277 278 SUBROUTINE bdytide_update( kt, idx, dta, td, kit, kt_offset )279 !!----------------------------------------------------------------------280 !! *** SUBROUTINE bdytide_update ***281 !!282 !! ** Purpose : - Add tidal forcing to ssh, u2d and v2d OBC data arrays.283 !!284 !!----------------------------------------------------------------------285 INTEGER , INTENT(in ) :: kt ! Main timestep counter286 TYPE(OBC_INDEX) , INTENT(in ) :: idx ! OBC indices287 TYPE(OBC_DATA) , INTENT(inout) :: dta ! OBC external data288 TYPE(TIDES_DATA) , INTENT(inout) :: td ! tidal harmonics data289 INTEGER, OPTIONAL, INTENT(in ) :: kit ! Barotropic timestep counter (for timesplitting option)290 INTEGER, OPTIONAL, INTENT(in ) :: kt_offset ! time offset in units of timesteps. NB. if kit291 ! ! is present then units = subcycle timesteps.292 ! ! kt_offset = 0 => get data at "now" time level293 ! ! kt_offset = -1 => get data at "before" time level294 ! ! kt_offset = +1 => get data at "after" time level295 ! ! etc.296 !297 INTEGER :: itide, igrd, ib ! dummy loop indices298 INTEGER :: time_add ! time offset in units of timesteps299 INTEGER, DIMENSION(3) :: ilen0 ! length of boundary data (from OBC arrays)300 REAL(wp) :: z_arg, z_sarg, zflag, zramp ! local scalars301 REAL(wp), DIMENSION(jpmax_harmo) :: z_sist, z_cost302 !!----------------------------------------------------------------------303 !304 ilen0(1) = SIZE(td%ssh(:,1,1))305 ilen0(2) = SIZE(td%u(:,1,1))306 ilen0(3) = SIZE(td%v(:,1,1))307 308 zflag=1309 IF ( PRESENT(kit) ) THEN310 IF ( kit /= 1 ) zflag=0311 ENDIF312 313 IF ( (nsec_day == NINT(0.5_wp * rdt) .OR. kt==nit000) .AND. zflag==1 ) THEN314 !315 kt_tide = kt - (nsec_day - 0.5_wp * rdt)/rdt316 !317 IF(lwp) THEN318 WRITE(numout,*)319 WRITE(numout,*) 'bdytide_update : (re)Initialization of the tidal bdy forcing at kt=',kt320 WRITE(numout,*) '~~~~~~~~~~~~~~ '321 ENDIF322 !323 CALL tide_init_elevation ( idx, td )324 CALL tide_init_velocities( idx, td )325 !326 ENDIF327 328 time_add = 0329 IF( PRESENT(kt_offset) ) THEN330 time_add = kt_offset331 ENDIF332 333 IF( PRESENT(kit) ) THEN334 z_arg = ((kt-kt_tide) * rdt + (kit+0.5_wp*(time_add-1)) * rdt / REAL(nn_baro,wp) )335 ELSE336 z_arg = ((kt-kt_tide)+time_add) * rdt337 ENDIF338 339 ! Linear ramp on tidal component at open boundaries340 zramp = 1._wp341 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg + (kt_tide-nit000)*rdt)/(rdttideramp*rday),0._wp),1._wp)342 343 DO itide = 1, nb_harmo344 z_sarg = z_arg * omega_tide(itide)345 z_cost(itide) = COS( z_sarg )346 z_sist(itide) = SIN( z_sarg )347 END DO348 349 DO itide = 1, nb_harmo350 igrd=1 ! SSH on tracer grid351 DO ib = 1, ilen0(igrd)352 dta%ssh(ib) = dta%ssh(ib) + zramp*(td%ssh(ib,itide,1)*z_cost(itide) + td%ssh(ib,itide,2)*z_sist(itide))353 END DO354 igrd=2 ! U grid355 DO ib = 1, ilen0(igrd)356 dta%u2d(ib) = dta%u2d(ib) + zramp*(td%u (ib,itide,1)*z_cost(itide) + td%u (ib,itide,2)*z_sist(itide))357 END DO358 igrd=3 ! V grid359 DO ib = 1, ilen0(igrd)360 dta%v2d(ib) = dta%v2d(ib) + zramp*(td%v (ib,itide,1)*z_cost(itide) + td%v (ib,itide,2)*z_sist(itide))361 END DO362 END DO363 !364 END SUBROUTINE bdytide_update365 269 366 270 … … 406 310 ! Linear ramp on tidal component at open boundaries 407 311 zramp = 1. 408 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(r dttideramp*rday),0.),1.)312 IF (ln_tide_ramp) zramp = MIN(MAX( (z_arg - nit000*rdt)/(rn_tide_ramp_dt*rday),0.),1.) 409 313 410 314 DO ib_bdy = 1,nb_bdy … … 447 351 DO itide = 1, nb_harmo 448 352 ! 449 z_sarg = (z_arg + zoff) * omega_tide(itide)353 z_sarg = (z_arg + zoff) * tide_harmonics(itide)%omega 450 354 z_cost = zramp * COS( z_sarg ) 451 355 z_sist = zramp * SIN( z_sarg ) … … 505 409 END DO 506 410 DO ib = 1 , ilen0(igrd) 507 mod_tide(ib)=mod_tide(ib)* ftide(itide)508 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)411 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 412 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0+tide_harmonics(itide)%u 509 413 ENDDO 510 414 DO ib = 1 , ilen0(igrd) … … 544 448 END DO 545 449 DO ib = 1, ilen0(igrd) 546 mod_tide(ib)=mod_tide(ib)* ftide(itide)547 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)450 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 451 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 548 452 ENDDO 549 453 DO ib = 1, ilen0(igrd) … … 565 469 END DO 566 470 DO ib = 1, ilen0(igrd) 567 mod_tide(ib)=mod_tide(ib)* ftide(itide)568 phi_tide(ib)=phi_tide(ib)+ v0tide(itide)+utide(itide)471 mod_tide(ib)=mod_tide(ib)*tide_harmonics(itide)%f 472 phi_tide(ib)=phi_tide(ib)+tide_harmonics(itide)%v0 + tide_harmonics(itide)%u 569 473 ENDDO 570 474 DO ib = 1, ilen0(igrd) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynspg.F90
r11960 r12205 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 … … 116 117 IF( .NOT.ln_dynspg_ts .AND. ( ln_tide_pot .AND. ln_tide ) ) THEN ! N.B. added directly at sub-time-step in ts-case 117 118 ! 118 CALL upd_tide( kt ) ! update tide potential 119 ! Update tide potential at the beginning of current time step 120 zt0step = REAL(nsec_day, wp)-0.5_wp*rdt 121 CALL upd_tide(zt0step, Kmm) 119 122 ! 120 123 DO jj = 2, jpjm1 ! add tide potential forcing -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynspg_ts.F90
r12150 r12205 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 … … 173 172 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztwdmask, zuwdmask, zvwdmask ! ROMS wetting and drying masks at t,u,v points 174 173 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zuwdav2, zvwdav2 ! averages over the sub-steps of zuwdmask and zvwdmask 174 REAL(wp) :: zt0substep ! Time of day at the beginning of the time substep 175 175 !!---------------------------------------------------------------------- 176 176 ! … … 444 444 ! 445 445 IF( ln_bdy .AND. ln_tide ) CALL bdy_dta_tides( kt, kit=jn, kt_offset= noffset+1 ) 446 IF( ln_tide_pot .AND. ln_tide ) CALL upd_tide ( kt, kit=jn, kt_offset= noffset ) 446 ! Update tide potential at the beginning of current time substep 447 IF( ln_tide_pot .AND. ln_tide ) THEN 448 zt0substep = REAL(nsec_day, wp) - 0.5_wp*rdt + (jn + noffset - 1) * rdt / REAL(nn_baro, wp) 449 CALL upd_tide(zt0substep, Kmm) 450 END IF 447 451 ! 448 452 ! !== extrapolation at mid-step ==! (jn+1/2) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/IOM/iom.F90
r12193 r12205 55 55 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 56 56 #endif 57 PUBLIC iom_init, iom_ swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_get_var57 PUBLIC iom_init, iom_init_closedef, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_get_var 58 58 PUBLIC iom_chkatt, iom_getatt, iom_putatt, iom_getszuld, iom_rstput, iom_delay_rst, iom_put 59 PUBLIC iom_use, iom_context_finalize, iom_ miss_val59 PUBLIC iom_use, iom_context_finalize, iom_update_file_name, iom_miss_val 60 60 61 61 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d … … 64 64 #if defined key_iomput 65 65 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 66 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_ update_file_name, iom_sdate66 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_sdate 67 67 PRIVATE iom_set_rst_context, iom_set_rstw_active, iom_set_rstr_active 68 68 # endif … … 92 92 CONTAINS 93 93 94 SUBROUTINE iom_init( cdname, fname, ld_tmppatch )94 SUBROUTINE iom_init( cdname, fname, ld_tmppatch, ld_closedef ) 95 95 !!---------------------------------------------------------------------- 96 96 !! *** ROUTINE *** … … 102 102 CHARACTER(len=*), OPTIONAL, INTENT(in) :: fname 103 103 LOGICAL , OPTIONAL, INTENT(in) :: ld_tmppatch 104 LOGICAL , OPTIONAL, INTENT(in) :: ld_closedef 104 105 #if defined key_iomput 105 106 ! … … 116 117 INTEGER :: nldi_save, nlei_save !: and close boundaries in output files 117 118 INTEGER :: nldj_save, nlej_save !: 119 LOGICAL :: ll_closedef = .TRUE. 118 120 !!---------------------------------------------------------------------- 119 121 ! … … 130 132 IF( njmpp + jpj - 1 == jpjglo ) nlej = jpj 131 133 ENDIF 134 IF ( PRESENT(ld_closedef) ) ll_closedef = ld_closedef 132 135 ! 133 136 ALLOCATE( zt_bnds(2,jpk), zw_bnds(2,jpk) ) … … 268 271 ENDIF 269 272 ! 270 ! end file definition273 ! set time step length 271 274 dtime%second = rdt 272 275 CALL xios_set_timestep( dtime ) 273 CALL xios_close_context_definition() 274 CALL xios_update_calendar( 0 ) 276 ! 277 ! conditional closure of context definition 278 IF ( ll_closedef ) CALL iom_init_closedef 275 279 ! 276 280 DEALLOCATE( zt_bnds, zw_bnds ) … … 283 287 ! 284 288 END SUBROUTINE iom_init 289 290 SUBROUTINE iom_init_closedef 291 !!---------------------------------------------------------------------- 292 !! *** SUBROUTINE iom_init_closedef *** 293 !!---------------------------------------------------------------------- 294 !! 295 !! ** Purpose : Closure of context definition 296 !! 297 !!---------------------------------------------------------------------- 298 299 CALL xios_close_context_definition() 300 CALL xios_update_calendar( 0 ) 301 302 END SUBROUTINE iom_init_closedef 285 303 286 304 SUBROUTINE iom_set_rstw_var_active(field) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TDE/tide_mod.F90
r12065 r12205 17 17 !!---------------------------------------------------------------------- 18 18 19 USE oce, ONLY : ssh n! sea-surface height19 USE oce, ONLY : ssh ! sea-surface height 20 20 USE par_oce ! ocean parameters 21 21 USE phycst, ONLY : rpi ! pi … … 132 132 sn_tide_cnames(:) = '' 133 133 ! Read Namelist nam_tide 134 REWIND( numnam_ref ) ! Namelist nam_tide in reference namelist : Tides135 134 READ ( numnam_ref, nam_tide, IOSTAT = ios, ERR = 901) 136 135 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tide in reference namelist' ) 137 136 ! 138 REWIND( numnam_cfg ) ! Namelist nam_tide in configuration namelist : Tides139 137 READ ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 ) 140 138 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist' ) … … 715 713 716 714 717 SUBROUTINE upd_tide(pdelta )715 SUBROUTINE upd_tide(pdelta, Kmm) 718 716 !!---------------------------------------------------------------------- 719 717 !! *** ROUTINE upd_tide *** … … 726 724 !!---------------------------------------------------------------------- 727 725 REAL, INTENT(in) :: pdelta ! Temporal offset in seconds 726 INTEGER, INTENT(IN) :: Kmm ! Time level index 728 727 INTEGER :: jk ! Dummy loop index 729 728 REAL(wp) :: zt, zramp ! Local scalars … … 755 754 ! 756 755 IF( ln_tide_dia ) THEN ! Output total tidal potential (incl. load potential) 757 IF ( iom_use( "tide_pot" ) ) CALL iom_put( "tide_pot", pot_astro(:,:) + rn_scal_load * ssh n(:,:) )756 IF ( iom_use( "tide_pot" ) ) CALL iom_put( "tide_pot", pot_astro(:,:) + rn_scal_load * ssh(:,:,Kmm) ) 758 757 END IF 759 758 ! -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/nemogcm.F90
r12193 r12205 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) … … 59 59 USE diaobs ! Observation diagnostics (dia_obs_init routine) 60 60 USE diacfl ! CFL diagnostics (dia_cfl_init routine) 61 USE dia harm ! tidal harmonics diagnostics (dia_harm_init routine)61 USE diamlr ! IOM context management for multiple-linear-regression analysis 62 62 USE step ! NEMO time-stepping (stp routine) 63 63 USE isfstp ! ice shelf (isf_stp_init routine) … … 75 75 USE diatmb ! Top,middle,bottom output 76 76 USE dia25h ! 25h mean output 77 USE diadetide ! Weights computation for daily detiding of model diagnostics 77 78 USE sbc_oce , ONLY : lk_oasis 78 79 USE wet_dry ! Wetting and drying setting (wad_init routine) … … 492 493 CALL dia_tmb_init ! TMB outputs 493 494 CALL dia_25h_init( Nbb ) ! 25h mean outputs 494 CALL dia_ harm_init ! tidal harmonics outputs495 CALL dia_detide_init ! Weights computation for daily detiding of model diagnostics 495 496 IF( ln_diaobs ) CALL dia_obs( nit000-1, Nnn ) ! Observation operator for restart 497 CALL dia_mlr_init ! Initialisation of IOM context management for multiple-linear-regression analysis 496 498 497 499 ! ! Assimilation increments -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/step.F90
r12193 r12205 107 107 108 108 IF( kstp == nit000 ) THEN ! initialize IOM context (must be done after nemo_init for AGRIF+XIOS+OASIS) 109 CALL iom_init( cxios_context ) ! for model grid (including passible AGRIF zoom) 109 CALL iom_init( cxios_context, ld_closedef=.FALSE. ) ! for model grid (including passible AGRIF zoom) 110 IF( lk_diamlr ) CALL dia_mlr_iom_init ! with additional setup for multiple-linear-regression analysis 111 CALL iom_init_closedef 110 112 IF( ln_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! for coarse grid 111 113 ENDIF … … 117 119 ! Update external forcing (tides, open boundaries, ice shelf interaction and surface boundary condition (including sea-ice) 118 120 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 119 IF( ln_tide ) CALL sbc_tide( kstp )! update tide potential121 IF( ln_tide ) CALL tide_update( kstp ) ! update tide potential 120 122 IF( ln_apr_dyn ) CALL sbc_apr ( kstp ) ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib) 121 123 IF( ln_bdy ) CALL bdy_dta ( kstp, Nnn, kt_offset = +1 ) ! update dynamic & tracer data at open boundaries … … 211 213 ! diagnostics and outputs 212 214 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 213 IF( ln_floats ) CALL flo_stp ( kstp, Nbb, Nnn )! drifting Floats214 IF( ln_diacfl ) CALL dia_cfl ( kstp, Nnn )! Courant number diagnostics215 CALL dia_hth ( kstp, Nnn )! Thermocline depth (20 degres isotherm depth)216 IF( ln_diadct ) CALL dia_dct ( kstp, Nnn )! Transports217 CALL dia_ar5 ( kstp, Nnn )! ar5 diag218 CALL dia_ptr ( kstp, Nnn )! Poleward adv/ldf TRansports diagnostics219 IF( ln_diaharm ) CALL dia_harm( kstp, Nnn ) ! Tidal harmonic analysis220 CALL dia_wri ( kstp, Nnn ) ! ocean model: outputs221 !222 IF( l n_crs ) CALL crs_fld ( kstp, Nnn ) ! ocean model: online field coarsening & output215 IF( ln_floats ) CALL flo_stp ( kstp, Nbb, Nnn ) ! drifting Floats 216 IF( ln_diacfl ) CALL dia_cfl ( kstp, Nnn ) ! Courant number diagnostics 217 CALL dia_hth ( kstp, Nnn ) ! Thermocline depth (20 degres isotherm depth) 218 IF( ln_diadct ) CALL dia_dct ( kstp, Nnn ) ! Transports 219 CALL dia_ar5 ( kstp, Nnn ) ! ar5 diag 220 CALL dia_ptr ( kstp, Nnn ) ! Poleward adv/ldf TRansports diagnostics 221 CALL dia_wri ( kstp, Nnn ) ! ocean model: outputs 222 IF( ln_crs ) CALL crs_fld ( kstp, Nnn ) ! ocean model: online field coarsening & output 223 IF( lk_diadetide ) CALL dia_detide( kstp ) ! Weights computation for daily detiding of model diagnostics 224 IF( lk_diamlr ) CALL dia_mlr ! Update time used in multiple-linear-regression analysis 223 225 224 226 #if defined key_top -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/step_oce.F90
r12150 r12205 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 … … 81 81 USE diahth ! thermocline depth (dia_hth routine) 82 82 USE diahsb ! heat, salt and volume budgets (dia_hsb routine) 83 USE diaharm84 83 USE diacfl 85 84 USE diaobs ! Observation operator 85 USE diadetide ! Weights computation for daily detiding of model diagnostics 86 USE diamlr ! IOM context management for multiple-linear-regression analysis 86 87 USE flo_oce ! floats variables 87 88 USE floats ! floats computation (flo_stp routine)
Note: See TracChangeset
for help on using the changeset viewer.