Changeset 5313 for branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
- Timestamp:
- 2015-05-29T11:46:03+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r5312 r5313 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.