Changeset 5260 for branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
- Timestamp:
- 2015-05-12T12:37:15+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO10_Tidally_Meaned_Diagnostics/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r4624 r5260 32 32 USE tideini 33 33 ! USE tide_mod ! Useless ?? 34 USE fldread , ONLY: fld_map34 USE fldread 35 35 USE dynspg_oce, ONLY: lk_dynspg_ts 36 36 … … 88 88 !! 89 89 TYPE(TIDES_DATA), POINTER :: td !: local short cut 90 TYPE(MAP_POINTER), DIMENSION(jpbgrd) :: ibmap_ptr !: array of pointers to nbmap 90 91 !! 91 92 NAMELIST/nambdy_tide/filtide, ln_bdytide_2ddta, ln_bdytide_conj … … 125 126 IF(lwp) WRITE(numout,*) ' Number of tidal components to read: ', nb_harmo 126 127 IF(lwp) THEN 127 WRITE(numout,*) ' Tidal c pt name - Phase speed (deg/hr)'128 WRITE(numout,*) ' Tidal components: ' 128 129 DO itide = 1, nb_harmo 129 WRITE(numout,*) ' ', Wave(ntide(itide))%cname_tide, omega_tide(itide)130 WRITE(numout,*) ' ', Wave(ntide(itide))%cname_tide 130 131 END DO 131 132 ENDIF … … 220 221 ! 221 222 ALLOCATE( dta_read( MAXVAL(ilen0(1:3)), 1, 1 ) ) 223 ! 224 ! Set map structure 225 ibmap_ptr(1)%ptr => idx_bdy(ib_bdy)%nbmap(:,1) 226 ibmap_ptr(1)%ll_unstruc = ln_coords_file(ib_bdy) 227 ibmap_ptr(2)%ptr => idx_bdy(ib_bdy)%nbmap(:,2) 228 ibmap_ptr(2)%ll_unstruc = ln_coords_file(ib_bdy) 229 ibmap_ptr(3)%ptr => idx_bdy(ib_bdy)%nbmap(:,3) 230 ibmap_ptr(3)%ll_unstruc = ln_coords_file(ib_bdy) 222 231 223 232 ! Open files and read in tidal forcing data … … 228 237 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_T.nc' 229 238 CALL iom_open( clfile, inum ) 230 CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )239 CALL fld_map( inum, 'z1' , dta_read(1:ilen0(1),1:1,1:1) , 1, ibmap_ptr(1) ) 231 240 td%ssh0(:,itide,1) = dta_read(1:ilen0(1),1,1) 232 CALL fld_map( inum, 'z2' , dta_read(1:ilen0(1),1:1,1:1) , 1, idx_bdy(ib_bdy)%nbmap(:,1) )241 CALL fld_map( inum, 'z2' , dta_read(1:ilen0(1),1:1,1:1) , 1, ibmap_ptr(1) ) 233 242 td%ssh0(:,itide,2) = dta_read(1:ilen0(1),1,1) 234 243 CALL iom_close( inum ) … … 236 245 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_U.nc' 237 246 CALL iom_open( clfile, inum ) 238 CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, i dx_bdy(ib_bdy)%nbmap(:,2) )247 CALL fld_map( inum, 'u1' , dta_read(1:ilen0(2),1:1,1:1) , 1, ibmap_ptr(2) ) 239 248 td%u0(:,itide,1) = dta_read(1:ilen0(2),1,1) 240 CALL fld_map( inum, 'u2' , dta_read(1:ilen0(2),1:1,1:1) , 1, i dx_bdy(ib_bdy)%nbmap(:,2) )249 CALL fld_map( inum, 'u2' , dta_read(1:ilen0(2),1:1,1:1) , 1, ibmap_ptr(2) ) 241 250 td%u0(:,itide,2) = dta_read(1:ilen0(2),1,1) 242 251 CALL iom_close( inum ) … … 244 253 clfile = TRIM(filtide)//TRIM(Wave(ntide(itide))%cname_tide)//'_grid_V.nc' 245 254 CALL iom_open( clfile, inum ) 246 CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, i dx_bdy(ib_bdy)%nbmap(:,3) )255 CALL fld_map( inum, 'v1' , dta_read(1:ilen0(3),1:1,1:1) , 1, ibmap_ptr(3) ) 247 256 td%v0(:,itide,1) = dta_read(1:ilen0(3),1,1) 248 CALL fld_map( inum, 'v2' , dta_read(1:ilen0(3),1:1,1:1) , 1, i dx_bdy(ib_bdy)%nbmap(:,3) )257 CALL fld_map( inum, 'v2' , dta_read(1:ilen0(3),1:1,1:1) , 1, ibmap_ptr(3) ) 249 258 td%v0(:,itide,2) = dta_read(1:ilen0(3),1,1) 250 259 CALL iom_close( inum ) … … 418 427 DO ib_bdy = 1,nb_bdy 419 428 420 ! line below should be simplified (runoff case)421 !! CHANUT: TO BE SORTED OUT422 !! IF (( nn_dyn2d_dta(ib_bdy) .ge. 2 ).AND.(nn_tra(ib_bdy).NE.4)) THEN423 429 IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 424 430 … … 453 459 IF ( PRESENT(kit) ) THEN 454 460 IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 455 dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1))456 dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2))457 dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3))461 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 462 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 463 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 458 464 459 465 ELSE ! Initialize arrays from slow varying open boundary data: 460 dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1))461 dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2))462 dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3))466 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 467 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 468 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 463 469 ENDIF 464 470 ENDIF … … 471 477 z_sist = zramp * SIN( z_sarg ) 472 478 ! 473 igrd=1 ! SSH on tracer grid 474 DO ib = 1, ilen0(igrd) 475 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 476 & ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 477 & tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 478 END DO 479 ! 480 igrd=2 ! U grid 481 DO ib = 1, ilen0(igrd) 482 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 483 & ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 484 & tides(ib_bdy)%u(ib,itide,2)*z_sist ) 485 END DO 486 ! 487 igrd=3 ! V grid 488 DO ib = 1, ilen0(igrd) 489 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 490 & ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 491 & tides(ib_bdy)%v(ib,itide,2)*z_sist ) 492 END DO 493 END DO 479 IF ( dta_bdy(ib_bdy)%ll_ssh ) THEN 480 igrd=1 ! SSH on tracer grid 481 DO ib = 1, ilen0(igrd) 482 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 483 & ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 484 & tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 485 END DO 486 ENDIF 487 ! 488 IF ( dta_bdy(ib_bdy)%ll_u2d ) THEN 489 igrd=2 ! U grid 490 DO ib = 1, ilen0(igrd) 491 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 492 & ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 493 & tides(ib_bdy)%u(ib,itide,2)*z_sist ) 494 END DO 495 ENDIF 496 ! 497 IF ( dta_bdy(ib_bdy)%ll_v2d ) THEN 498 igrd=3 ! V grid 499 DO ib = 1, ilen0(igrd) 500 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 501 & ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 502 & tides(ib_bdy)%v(ib,itide,2)*z_sist ) 503 END DO 504 ENDIF 505 END DO 494 506 END IF 495 507 END DO
Note: See TracChangeset
for help on using the changeset viewer.