New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5313 for branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90 – NEMO

Ignore:
Timestamp:
2015-05-29T11:46:03+02:00 (9 years ago)
Author:
timgraham
Message:

Merged head of trunk (r5302) into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r5312 r5313  
    6969   END TYPE FLD 
    7070 
    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 
    7374   END TYPE MAP_POINTER 
    7475 
     
    601602      ! 
    602603      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 ) 
    605606         ENDIF 
    606607      ELSE IF( LEN(TRIM(sdjf%wgtname)) > 0 ) THEN 
     
    672673      REAL(wp), DIMENSION(:,:,:), INTENT(out) ::   dta   ! output field on model grid (2 dimensional) 
    673674      INTEGER                   , INTENT(in ) ::   nrec    ! record number to read (ie time slice) 
    674       INTEGER,  DIMENSION(:)    , INTENT(in ) ::   map     ! global-to-local mapping indices 
     675      TYPE(MAP_POINTER)         , INTENT(in ) ::   map     ! global-to-local mapping indices 
    675676      !! 
    676677      INTEGER                                 ::   ipi      ! length of boundary data on local process 
     
    693694#if defined key_bdy 
    694695      ipj = iom_file(num)%dimsz(2,idvar) 
    695       IF (ipj == 1) THEN ! we assume that this is a structured open boundary file 
     696      IF ( map%ll_unstruc) THEN ! unstructured open boundary data file 
    696697         dta_read => dta_global 
    697       ELSE 
     698      ELSE                      ! structured open boundary data file 
    698699         dta_read => dta_global2 
    699700      ENDIF 
     
    708709      END SELECT 
    709710      ! 
    710       IF (ipj==1) THEN 
     711      IF ( map%ll_unstruc ) THEN ! unstructured open boundary data file 
    711712         DO ib = 1, ipi 
    712713            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) 
    714715            END DO 
    715716         END DO 
    716       ELSE ! we assume that this is a structured open boundary file 
     717      ELSE                       ! structured open boundary data file 
    717718         DO ib = 1, ipi 
    718             jj=1+floor(REAL(map(ib)-1)/REAL(ilendta)) 
    719             ji=map(ib)-(jj-1)*ilendta 
     719            jj=1+floor(REAL(map%ptr(ib)-1)/REAL(ilendta)) 
     720            ji=map%ptr(ib)-(jj-1)*ilendta 
    720721            DO ik = 1, ipk 
    721722               dta(ib,1,ik) =  dta_read(ji,jj,ik) 
Note: See TracChangeset for help on using the changeset viewer.