- Timestamp:
- 2016-12-01T11:30:29+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_merge_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r6140 r7412 12 12 !! 3.4 ! 2011 (D. Storkey) rewrite in preparation for OBC-BDY merge 13 13 !! 3.6 ! 2012-01 (C. Rousset) add ice boundary conditions for lim3 14 !!----------------------------------------------------------------------15 #if defined key_bdy16 !!----------------------------------------------------------------------17 !! 'key_bdy' Open Boundary Conditions18 14 !!---------------------------------------------------------------------- 19 15 !! bdy_dta : read external data along open boundaries from file … … 36 32 #endif 37 33 USE sbcapr 34 USE sbctide ! Tidal forcing or not 38 35 39 36 IMPLICIT NONE … … 267 264 268 265 jend = jstart + dta%nread(2) - 1 269 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 270 & kit=jit, kt_offset=time_offset ) 266 IF( ln_full_vel_array(ib_bdy) ) THEN 267 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 268 & kit=jit, kt_offset=time_offset , jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy) ) 269 ELSE 270 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), & 271 & kit=jit, kt_offset=time_offset ) 272 ENDIF 271 273 272 274 ! If full velocities in boundary data then extract barotropic velocities from 3D fields … … 333 335 jend = jstart + dta%nread(1) - 1 334 336 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), & 335 & map=nbmap_ptr(jstart:jend), kt_offset=time_offset )337 & map=nbmap_ptr(jstart:jend), kt_offset=time_offset, jpk_bdy=nb_jpk_bdy, fvl=ln_full_vel_array(ib_bdy) ) 336 338 ENDIF 337 339 ! If full velocities in boundary data then split into barotropic and baroclinic data … … 381 383 END DO ! ib_bdy 382 384 383 #if defined key_tide 384 IF (ln_dynspg_ts) THEN ! Fill temporary arrays with slow-varying bdy data 385 DO ib_bdy = 1, nb_bdy ! Tidal component added in ts loop 386 IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 387 nblen => idx_bdy(ib_bdy)%nblen 388 nblenrim => idx_bdy(ib_bdy)%nblenrim 389 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN; ilen1(:)=nblen(:) ; ELSE ; ilen1(:)=nblenrim(:) ; ENDIF 390 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen1(1)) = dta_bdy(ib_bdy)%ssh(1:ilen1(1)) 391 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen1(2)) = dta_bdy(ib_bdy)%u2d(1:ilen1(2)) 392 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen1(3)) = dta_bdy(ib_bdy)%v2d(1:ilen1(3)) 393 ENDIF 394 END DO 395 ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 396 ! 397 CALL bdy_dta_tides( kt=kt, time_offset=time_offset ) 385 IF ( ln_tide ) THEN 386 IF (ln_dynspg_ts) THEN ! Fill temporary arrays with slow-varying bdy data 387 DO ib_bdy = 1, nb_bdy ! Tidal component added in ts loop 388 IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 389 nblen => idx_bdy(ib_bdy)%nblen 390 nblenrim => idx_bdy(ib_bdy)%nblenrim 391 IF( cn_dyn2d(ib_bdy) == 'frs' ) THEN; ilen1(:)=nblen(:) ; ELSE ; ilen1(:)=nblenrim(:) ; ENDIF 392 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen1(1)) = dta_bdy(ib_bdy)%ssh(1:ilen1(1)) 393 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen1(2)) = dta_bdy(ib_bdy)%u2d(1:ilen1(2)) 394 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen1(3)) = dta_bdy(ib_bdy)%v2d(1:ilen1(3)) 395 ENDIF 396 END DO 397 ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 398 ! 399 CALL bdy_dta_tides( kt=kt, time_offset=time_offset ) 400 ENDIF 398 401 ENDIF 399 #endif400 402 401 403 IF ( ln_apr_obc ) THEN … … 459 461 NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 460 462 #endif 461 NAMELIST/nambdy_dta/ ln_full_vel 463 NAMELIST/nambdy_dta/ ln_full_vel, nb_jpk_bdy 462 464 !!--------------------------------------------------------------------------- 463 465 ! … … 899 901 END SUBROUTINE bdy_dta_init 900 902 901 #else902 !!----------------------------------------------------------------------903 !! Dummy module NO Open Boundary Conditions904 !!----------------------------------------------------------------------905 CONTAINS906 SUBROUTINE bdy_dta( kt, jit, time_offset ) ! Empty routine907 INTEGER, INTENT( in ) :: kt908 INTEGER, INTENT( in ), OPTIONAL :: jit909 INTEGER, INTENT( in ), OPTIONAL :: time_offset910 WRITE(*,*) 'bdy_dta: You should not have seen this print! error?', kt911 END SUBROUTINE bdy_dta912 SUBROUTINE bdy_dta_init() ! Empty routine913 WRITE(*,*) 'bdy_dta_init: You should not have seen this print! error?'914 END SUBROUTINE bdy_dta_init915 #endif916 917 903 !!============================================================================== 918 904 END MODULE bdydta
Note: See TracChangeset
for help on using the changeset viewer.