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 5704 for branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_prof.F90 – NEMO

Ignore:
Timestamp:
2015-08-21T15:00:38+02:00 (9 years ago)
Author:
mattmartin
Message:

Updated simplified obs operator after testing sea-ice concentration and velocity data types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_prof.F90

    r5682 r5704  
    124124         & itypvar2mpp  
    125125      INTEGER, DIMENSION(:), ALLOCATABLE :: & 
    126          & iobsi,    & 
    127          & iobsj,    & 
    128          & iproc,    & 
     126         & iobsi1,    & 
     127         & iobsj1,    & 
     128         & iproc1,    & 
     129         & iobsi2,    & 
     130         & iobsj2,    & 
     131         & iproc2,    & 
    129132         & iindx,    & 
    130133         & ifileidx, & 
     
    298301 
    299302            IF ( inpfiles(jj)%nobs > 0 ) THEN 
    300                inpfiles(jj)%iproc = -1 
    301                inpfiles(jj)%iobsi = -1 
    302                inpfiles(jj)%iobsj = -1 
     303               inpfiles(jj)%iproc(:,:) = -1 
     304               inpfiles(jj)%iobsi(:,:) = -1 
     305               inpfiles(jj)%iobsj(:,:) = -1 
    303306            ENDIF 
    304307            inowin = 0 
     
    314317            ALLOCATE( zlam(inowin)  ) 
    315318            ALLOCATE( zphi(inowin)  ) 
    316             ALLOCATE( iobsi(inowin) ) 
    317             ALLOCATE( iobsj(inowin) ) 
    318             ALLOCATE( iproc(inowin) ) 
     319            ALLOCATE( iobsi1(inowin) ) 
     320            ALLOCATE( iobsj1(inowin) ) 
     321            ALLOCATE( iproc1(inowin) ) 
     322            ALLOCATE( iobsi2(inowin) ) 
     323            ALLOCATE( iobsj2(inowin) ) 
     324            ALLOCATE( iproc2(inowin) ) 
    319325            inowin = 0 
    320326            DO ji = 1, inpfiles(jj)%nobs 
     
    330336            END DO 
    331337 
    332             CALL obs_grid_search( inowin, zlam, zphi, iobsi, iobsj, iproc, 'T' ) 
     338            IF ( TRIM( inpfiles(jj)%cname(1) ) == 'POTM' ) THEN 
     339               CALL obs_grid_search( inowin, zlam, zphi, iobsi1, iobsj1, & 
     340                  &                  iproc1, 'T' ) 
     341               iobsi2(:) = iobsi1(:) 
     342               iobsj2(:) = iobsj1(:) 
     343               iproc2(:) = iproc1(:) 
     344            ELSEIF ( TRIM( inpfiles(jj)%cname(1) ) == 'UVEL' ) THEN 
     345               CALL obs_grid_search( inowin, zlam, zphi, iobsi1, iobsj1, & 
     346                  &                  iproc1, 'U' ) 
     347               CALL obs_grid_search( inowin, zlam, zphi, iobsi2, iobsj2, & 
     348                  &                  iproc2, 'V' ) 
     349            ENDIF 
    333350 
    334351            inowin = 0 
     
    340357                  & ( inpfiles(jj)%ptim(ji) <= djulend(jj) )       ) THEN 
    341358                  inowin = inowin + 1 
    342                   inpfiles(jj)%iproc(ji,1) = iproc(inowin) 
    343                   inpfiles(jj)%iobsi(ji,1) = iobsi(inowin) 
    344                   inpfiles(jj)%iobsj(ji,1) = iobsj(inowin) 
     359                  inpfiles(jj)%iproc(ji,1) = iproc1(inowin) 
     360                  inpfiles(jj)%iobsi(ji,1) = iobsi1(inowin) 
     361                  inpfiles(jj)%iobsj(ji,1) = iobsj1(inowin) 
     362                  inpfiles(jj)%iproc(ji,2) = iproc2(inowin) 
     363                  inpfiles(jj)%iobsi(ji,2) = iobsi2(inowin) 
     364                  inpfiles(jj)%iobsj(ji,2) = iobsj2(inowin) 
     365                  IF ( inpfiles(jj)%iproc(ji,1) /= & 
     366                     & inpfiles(jj)%iproc(ji,2) ) THEN 
     367                     CALL ctl_stop( 'Error in obs_read_prof:', & 
     368                        & 'var1 and var2 observation on different processors') 
     369                  ENDIF 
    345370               ENDIF 
    346371            END DO 
    347             DEALLOCATE( zlam, zphi, iobsi, iobsj, iproc ) 
     372            DEALLOCATE( zlam, zphi, iobsi1, iobsj1, iproc1, iobsi2, iobsj2, iproc2 ) 
    348373 
    349374            DO ji = 1, inpfiles(jj)%nobs 
     
    547572 
    548573               ! Coordinate search parameters 
    549                profdata%mi  (iprof,:) = inpfiles(jj)%iobsi(ji,1) 
    550                profdata%mj  (iprof,:) = inpfiles(jj)%iobsj(ji,1) 
     574               profdata%mi  (iprof,1) = inpfiles(jj)%iobsi(ji,1) 
     575               profdata%mj  (iprof,1) = inpfiles(jj)%iobsj(ji,1) 
     576               profdata%mi  (iprof,2) = inpfiles(jj)%iobsi(ji,2) 
     577               profdata%mj  (iprof,2) = inpfiles(jj)%iobsj(ji,2) 
    551578 
    552579               ! Profile WMO number 
     
    633660                     profdata%var(1)%nvlidx(ivar1t) = ij 
    634661 
    635                      ! Profile potential var1 value 
     662                     ! Profile var1 value 
    636663                     IF ( ( inpfiles(jj)%ivlqc(ij,ji,1) <= 2 ) .AND. & 
    637664                        & ( inpfiles(jj)%idqc(ij,ji) <= 2 ) ) THEN 
     
    658685 
    659686                     ! Profile insitu T value 
    660                      profdata%var(1)%vext(ivar1t,1) = & 
    661                         &                inpfiles(jj)%pext(ij,ji,1) 
     687                     IF ( TRIM( inpfiles(jj)%cname(1) ) == 'POTM' ) THEN 
     688                        profdata%var(1)%vext(ivar1t,1) = & 
     689                           &                inpfiles(jj)%pext(ij,ji,1) 
     690                     ENDIF 
    662691 
    663692                  ENDIF 
Note: See TracChangeset for help on using the changeset viewer.