Changeset 5132
- Timestamp:
- 2015-03-06T16:53:00+01:00 (8 years ago)
- Location:
- trunk/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r5123 r5132 733 733 IF( blf_i(jfld)%ln_tint ) ALLOCATE( bf(jfld)%fdta(ilen1(jfld),1,ilen3(jfld),2) ) 734 734 nbmap_ptr(jfld)%ptr => idx_bdy(ibdy(jfld))%nbmap(:,igrid(jfld)) 735 nbmap_ptr(jfld)%ll_unstruc = ln_coords_file(ibdy(jfld)) 735 736 ENDDO 736 737 -
trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r5084 r5132 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 … … 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 ) -
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r4784 r5132 69 69 END TYPE FLD 70 70 71 TYPE, PUBLIC :: MAP_POINTER !: Array of integer pointers to 1D arrays 72 INTEGER, POINTER :: ptr(:) 71 TYPE, PUBLIC :: MAP_POINTER !: Map from input data file to local domain 72 INTEGER, POINTER, DIMENSION(:) :: ptr ! Array of integer pointers to 1D arrays 73 LOGICAL :: ll_unstruc ! Unstructured (T) or structured (F) boundary data file 73 74 END TYPE MAP_POINTER 74 75 … … 601 602 ! 602 603 IF( ASSOCIATED(map%ptr) ) THEN 603 IF( sdjf%ln_tint ) THEN ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), map %ptr)604 ELSE ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1), map %ptr)604 IF( sdjf%ln_tint ) THEN ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), map ) 605 ELSE ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1), map ) 605 606 ENDIF 606 607 ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN … … 672 673 REAL(wp), DIMENSION(:,:,:), INTENT(out) :: dta ! output field on model grid (2 dimensional) 673 674 INTEGER , INTENT(in ) :: nrec ! record number to read (ie time slice) 674 INTEGER, DIMENSION(:), INTENT(in ) :: map ! global-to-local mapping indices675 TYPE(MAP_POINTER) , INTENT(in ) :: map ! global-to-local mapping indices 675 676 !! 676 677 INTEGER :: ipi ! length of boundary data on local process … … 693 694 #if defined key_bdy 694 695 ipj = iom_file(num)%dimsz(2,idvar) 695 IF ( ipj == 1) THEN ! we assume that this is a structured open boundaryfile696 IF ( map%ll_unstruc) THEN ! unstructured open boundary data file 696 697 dta_read => dta_global 697 ELSE 698 ELSE ! structured open boundary data file 698 699 dta_read => dta_global2 699 700 ENDIF … … 708 709 END SELECT 709 710 ! 710 IF ( ipj==1) THEN711 IF ( map%ll_unstruc ) THEN ! unstructured open boundary data file 711 712 DO ib = 1, ipi 712 713 DO ik = 1, ipk 713 dta(ib,1,ik) = dta_read(map (ib),1,ik)714 dta(ib,1,ik) = dta_read(map%ptr(ib),1,ik) 714 715 END DO 715 716 END DO 716 ELSE ! we assume that this is a structured open boundaryfile717 ELSE ! structured open boundary data file 717 718 DO ib = 1, ipi 718 jj=1+floor(REAL(map (ib)-1)/REAL(ilendta))719 ji=map (ib)-(jj-1)*ilendta719 jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 720 ji=map%ptr(ib)-(jj-1)*ilendta 720 721 DO ik = 1, ipk 721 722 dta(ib,1,ik) = dta_read(ji,jj,ik)
Note: See TracChangeset
for help on using the changeset viewer.