Changeset 3491


Ignore:
Timestamp:
2012-10-08T16:28:28+02:00 (8 years ago)
Author:
cbricaud
Message:

add Jerome Chanut 's modications for BDY, Mercator_1 2012 task

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3327_MERCATOR1_BDY/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r3294 r3491  
    667667      !!---------------------------------------------------------------------- 
    668668#if defined key_bdy 
    669       USE bdy_oce, ONLY:  dta_global         ! workspace to read in global data arrays 
     669      USE bdy_oce, ONLY:  dta_global, dta_global2         ! workspace to read in global data arrays 
    670670#endif  
    671671 
     
    681681      INTEGER                                 ::   ilendta  ! length of data in file 
    682682      INTEGER                                 ::   idvar    ! variable ID 
    683       INTEGER                                 ::   ib, ik   ! loop counters 
     683      INTEGER                                 ::   ib, ik, ji, jj   ! loop counters 
    684684      INTEGER                                 ::   ierr 
    685       REAL(wp), POINTER, DIMENSION(:,:,:)     ::   dta_read ! work space for global data 
     685      REAL(wp), POINTER, DIMENSION(:,:,:)     ::   dta_read  ! work space for global data 
    686686      !!--------------------------------------------------------------------- 
    687687             
    688 #if defined key_bdy 
    689       dta_read => dta_global 
    690 #endif 
    691  
    692688      ipi = SIZE( dta, 1 ) 
    693689      ipj = 1 
     
    696692      idvar   = iom_varid( num, clvar ) 
    697693      ilendta = iom_file(num)%dimsz(1,idvar) 
     694 
     695#if defined key_bdy 
     696      ipj = iom_file(num)%dimsz(2,idvar) 
     697      IF (ipj == 1) THEN ! we assume that this is a structured open boundary file 
     698         dta_read => dta_global 
     699      ELSE 
     700         dta_read => dta_global2 
     701      ENDIF 
     702#endif 
     703 
     704      IF ((lwp).AND.(ipi>ilendta*ipj)) CALL ctl_stop('fld_map problem with file dimension') 
     705 
    698706      IF(lwp) WRITE(numout,*) 'Dim size for ',TRIM(clvar),' is ', ilendta 
    699707      IF(lwp) WRITE(numout,*) 'Number of levels for ',TRIM(clvar),' is ', ipk 
     708 
    700709 
    701710      SELECT CASE( ipk ) 
     
    706715      END SELECT 
    707716      ! 
    708       DO ib = 1, ipi 
    709          DO ik = 1, ipk 
    710             dta(ib,1,ik) =  dta_read(map(ib),1,ik) 
     717      IF (ipj==1) THEN 
     718         DO ib = 1, ipi 
     719            DO ik = 1, ipk 
     720               dta(ib,1,ik) =  dta_read(map(ib),1,ik) 
     721            END DO 
    711722         END DO 
    712       END DO 
     723      ELSE ! we assume that this is a structured open boundary file 
     724         DO ib = 1, ipi 
     725            jj=1+floor(REAL(map(ib)-1)/REAL(ilendta)) 
     726            ji=map(ib)-(jj-1)*ilendta 
     727            DO ik = 1, ipk 
     728               dta(ib,1,ik) =  dta_read(ji,jj,ik) 
     729            END DO 
     730         END DO 
     731      ENDIF 
    713732 
    714733   END SUBROUTINE fld_map 
Note: See TracChangeset for help on using the changeset viewer.