- Timestamp:
- 2019-12-14T09:41:16+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/BDY/bdydta.F90
r12205 r12250 75 75 CONTAINS 76 76 77 SUBROUTINE bdy_dta( kt, Kmm, kt_offset )77 SUBROUTINE bdy_dta( kt, Kmm, pt_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 :: kt_offset ! time offset in units of timesteps 89 ! ! is present then units = subcycle timesteps. 90 ! ! kt_offset = 0 => get data at "now" time level 91 ! ! kt_offset = -1 => get data at "before" time level 92 ! ! kt_offset = +1 => get data at "after" time level 93 ! ! etc. 88 REAL(wp),INTENT(in), OPTIONAL :: pt_offset ! time offset in units of timesteps 94 89 ! 95 90 INTEGER :: jbdy, jfld, jstart, jend, ib, jl ! dummy loop indices … … 216 211 ! read/update all bdy data 217 212 ! ------------------------ 218 CALL fld_read( kt, 1, bf_alias, kt_offset = kt_offset)213 CALL fld_read( kt, 1, bf_alias, pt_offset = pt_offset, Kmm = Kmm ) 219 214 ! apply some corrections in some specific cases... 220 215 ! -------------------------------------------------- … … 336 331 nblen => idx_bdy(jbdy)%nblen 337 332 nblenrim => idx_bdy(jbdy)%nblenrim 338 IF( cn_dyn2d(jbdy) == 'frs' ) THEN ; ilen1(:)=nblen(:) ; ELSE ; ilen1(:)=nblenrim(:) ; ENDIF 339 IF ( dta_bdy(jbdy)%lneed_ssh ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 340 IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%u2d(1:ilen1(2)) = dta_bdy(jbdy)%u2d(1:ilen1(2)) 341 IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%v2d(1:ilen1(3)) = dta_bdy(jbdy)%v2d(1:ilen1(3)) 342 ENDIF 343 END DO 344 ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 345 ! 346 CALL bdy_dta_tides( kt=kt, kt_offset=kt_offset ) 347 ENDIF 333 IF( cn_dyn2d(jbdy) == 'frs' ) THEN ; ilen1(:)=nblen(:) 334 ELSE ; ilen1(:)=nblenrim(:) 335 ENDIF 336 IF ( dta_bdy(jbdy)%lneed_ssh ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 337 IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%u2d(1:ilen1(2)) = dta_bdy(jbdy)%u2d(1:ilen1(2)) 338 IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%v2d(1:ilen1(3)) = dta_bdy(jbdy)%v2d(1:ilen1(3)) 339 ENDIF 340 END DO 341 ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 342 ! 343 CALL bdy_dta_tides( kt=kt, pt_offset=pt_offset ) 348 344 ENDIF 349 ! 350 IF( ln_timing ) CALL timing_stop('bdy_dta') 351 ! 352 END SUBROUTINE bdy_dta 345 ENDIF 346 ! 347 IF( ln_timing ) CALL timing_stop('bdy_dta') 348 ! 349 END SUBROUTINE bdy_dta 353 350 354 351 … … 449 446 IF( nn_ice_dta(jbdy) == 1 ) THEN ! if we get ice bdy data from netcdf file 450 447 CALL fld_fill( bf(jp_bdya_i,jbdy:jbdy), bn_a_i, cn_dir, 'bdy_dta', 'a_i'//' '//ctmp1, ctmp2 ) ! use namelist info 451 CALL fld_clopn( bf(jp_bdya_i,jbdy), nyear, nmonth, nday ) ! not a problem when we call it again after 448 CALL fld_def( bf(jp_bdya_i,jbdy) ) 449 CALL iom_open( bf(jp_bdya_i,jbdy)%clname, bf(jp_bdya_i,jbdy)%num ) 452 450 idvar = iom_varid( bf(jp_bdya_i,jbdy)%num, bf(jp_bdya_i,jbdy)%clvar, kndims=indims, kdimsz=i4dimsz, lduld=lluld ) 453 451 IF( indims == 4 .OR. ( indims == 3 .AND. .NOT. lluld ) ) THEN ; ipl = i4dimsz(3) ! xylt or xyl 454 452 ELSE ; ipl = 1 ! xy or xyt 455 453 ENDIF 454 CALL iom_close( bf(jp_bdya_i,jbdy)%num ) 456 455 bf(jp_bdya_i,jbdy)%clrootname = 'NOT USED' ! reset to default value as this subdomain may not need to read this bdy 457 456 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.