Changeset 6857 for branches/UKMO/dev_r4650_general_vert_coord_obsoper_surf_bgc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_pco2.F90
- Timestamp:
- 2016-08-08T17:49:27+02:00 (8 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r4650_general_vert_coord_obsoper_surf_bgc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_pco2.F90
r6856 r6857 1 MODULE obs_read_ fco21 MODULE obs_read_pco2 2 2 !!====================================================================== 3 !! *** MODULE obs_read_ fco2 ***4 !! Observation diagnostics: Read the along track fco2 data from5 !! GHRSST or any fco2 data from feedback files3 !! *** MODULE obs_read_pco2 *** 4 !! Observation diagnostics: Read the along track pco2 data from 5 !! GHRSST or any pco2 data from feedback files 6 6 !!====================================================================== 7 7 8 8 !!---------------------------------------------------------------------- 9 !! obs_rea_ fco2 : Driver for reading fco2 data from the feedback9 !! obs_rea_pco2 : Driver for reading pco2 data from the feedback 10 10 !!---------------------------------------------------------------------- 11 11 … … 21 21 USE obs_surf_def ! Surface observation definitions 22 22 USE obs_types ! Observation type definitions 23 USE obs_ fco2_io ! I/O for fco2 files23 USE obs_pco2_io ! I/O for pco2 files 24 24 USE iom ! I/O 25 25 USE netcdf ! NetCDF library … … 30 30 PRIVATE 31 31 32 PUBLIC obs_rea_ fco2 ! Read the fco2 observations from the point data32 PUBLIC obs_rea_pco2 ! Read the pco2 observations from the point data 33 33 34 34 !!---------------------------------------------------------------------- … … 40 40 CONTAINS 41 41 42 SUBROUTINE obs_rea_ fco2( kformat, &43 & fco2data, knumfiles, cfilenames, &42 SUBROUTINE obs_rea_pco2( kformat, & 43 & pco2data, knumfiles, cfilenames, & 44 44 & kvars, kextr, kstp, ddobsini, ddobsend, & 45 45 & ldignmis, ldmod ) 46 46 !!--------------------------------------------------------------------- 47 47 !! 48 !! *** ROUTINE obs_rea_ fco2 ***49 !! 50 !! ** Purpose : Read from file the fco2 data48 !! *** ROUTINE obs_rea_pco2 *** 49 !! 50 !! ** Purpose : Read from file the pco2 data 51 51 !! 52 52 !! ** Method : Depending on kformat either old or new style … … 66 66 ! ! 1: Old-style feedback 67 67 TYPE(obs_surf), INTENT(INOUT) :: & 68 & fco2data ! fco2 data to be read68 & pco2data ! pco2 data to be read 69 69 INTEGER, INTENT(IN) :: knumfiles ! Number of corio format files to read in 70 70 CHARACTER(LEN=128), INTENT(IN) :: cfilenames(knumfiles) ! File names to read in 71 INTEGER, INTENT(IN) :: kvars ! Number of variables in fco2data72 INTEGER, INTENT(IN) :: kextr ! Number of extra fields for each var in fco2data71 INTEGER, INTENT(IN) :: kvars ! Number of variables in pco2data 72 INTEGER, INTENT(IN) :: kextr ! Number of extra fields for each var in pco2data 73 73 INTEGER, INTENT(IN) :: kstp ! Ocean time-step index 74 74 LOGICAL, INTENT(IN) :: ldignmis ! Ignore missing files … … 78 78 79 79 !! * Local declarations 80 CHARACTER(LEN=14), PARAMETER :: cpname='obs_rea_ fco2'80 CHARACTER(LEN=14), PARAMETER :: cpname='obs_rea_pco2' 81 81 INTEGER :: ji 82 82 INTEGER :: jj … … 95 95 & irefdate 96 96 INTEGER :: iobsmpp 97 INTEGER, PARAMETER :: i fco2maxtype = 102498 INTEGER, DIMENSION(0:i fco2maxtype) :: &97 INTEGER, PARAMETER :: ipco2maxtype = 1024 98 INTEGER, DIMENSION(0:ipco2maxtype) :: & 99 99 & ityp, & 100 100 & itypmpp … … 105 105 & iindx, & 106 106 & ifileidx, & 107 & i fco2idx107 & ipco2idx 108 108 INTEGER :: itype 109 109 REAL(wp), DIMENSION(:), ALLOCATABLE :: & … … 143 143 ALLOCATE( inpfiles(inobf) ) 144 144 145 fco2_files : DO jj = 1, inobf145 pco2_files : DO jj = 1, inobf 146 146 147 147 !--------------------------------------------------------------------- … … 150 150 IF(lwp) THEN 151 151 WRITE(numout,*) 152 WRITE(numout,*) ' obs_rea_ fco2 : Reading from file = ', &152 WRITE(numout,*) ' obs_rea_pco2 : Reading from file = ', & 153 153 & TRIM( TRIM( cfilenames(jj) ) ) 154 154 WRITE(numout,*) ' ~~~~~~~~~~~~~~' … … 200 200 ENDIF 201 201 ELSEIF ( kformat == 1) THEN 202 CALL read_ fco2( TRIM( cfilenames(jj) ), inpfiles(jj), &202 CALL read_pco2( TRIM( cfilenames(jj) ), inpfiles(jj), & 203 203 & numout, lwp, .TRUE. ) 204 204 ELSE … … 291 291 ENDIF 292 292 293 END DO fco2_files293 END DO pco2_files 294 294 295 295 !----------------------------------------------------------------------- … … 311 311 312 312 ALLOCATE( iindx(iobstot), ifileidx(iobstot), & 313 & i fco2idx(iobstot), zdat(iobstot) )313 & ipco2idx(iobstot), zdat(iobstot) ) 314 314 jk = 0 315 315 DO jj = 1, inobf … … 319 319 jk = jk + 1 320 320 ifileidx(jk) = jj 321 i fco2idx(jk) = ji321 ipco2idx(jk) = ji 322 322 zdat(jk) = inpfiles(jj)%ptim(ji) 323 323 ENDIF … … 328 328 & iindx ) 329 329 330 CALL obs_surf_alloc( fco2data, iobs, &330 CALL obs_surf_alloc( pco2data, iobs, & 331 331 kvars, kextr, kstp, jpi, jpj ) 332 332 333 ! * Read obs/positions, QC, all variable and assign to fco2data333 ! * Read obs/positions, QC, all variable and assign to pco2data 334 334 335 335 iobs = 0 … … 343 343 344 344 jj = ifileidx(iindx(jk)) 345 ji = i fco2idx(iindx(jk))345 ji = ipco2idx(iindx(jk)) 346 346 IF ( ( inpfiles(jj)%ptim(ji) > djulini(jj) ) .AND. & 347 347 & ( inpfiles(jj)%ptim(ji) <= djulend(jj) ) ) THEN … … 370 370 371 371 372 ! fco2 time coordinates373 fco2data%nyea(iobs) = iyea374 fco2data%nmon(iobs) = imon375 fco2data%nday(iobs) = iday376 fco2data%nhou(iobs) = ihou377 fco2data%nmin(iobs) = imin372 ! pco2 time coordinates 373 pco2data%nyea(iobs) = iyea 374 pco2data%nmon(iobs) = imon 375 pco2data%nday(iobs) = iday 376 pco2data%nhou(iobs) = ihou 377 pco2data%nmin(iobs) = imin 378 378 379 ! fco2 space coordinates380 fco2data%rlam(iobs) = inpfiles(jj)%plam(ji)381 fco2data%rphi(iobs) = inpfiles(jj)%pphi(ji)379 ! pco2 space coordinates 380 pco2data%rlam(iobs) = inpfiles(jj)%plam(ji) 381 pco2data%rphi(iobs) = inpfiles(jj)%pphi(ji) 382 382 383 383 ! Coordinate search parameters 384 fco2data%mi (iobs) = inpfiles(jj)%iobsi(ji,1)385 fco2data%mj (iobs) = inpfiles(jj)%iobsj(ji,1)384 pco2data%mi (iobs) = inpfiles(jj)%iobsi(ji,1) 385 pco2data%mj (iobs) = inpfiles(jj)%iobsj(ji,1) 386 386 387 387 ! Instrument type … … 392 392 itype = 0 393 393 ENDIF 394 fco2data%ntyp(iobs) = itype395 IF ( itype < i fco2maxtype + 1 ) THEN394 pco2data%ntyp(iobs) = itype 395 IF ( itype < ipco2maxtype + 1 ) THEN 396 396 ityp(itype+1) = ityp(itype+1) + 1 397 397 ELSE 398 IF(lwp)WRITE(numout,*)'WARNING:Increase i fco2maxtype in ',&398 IF(lwp)WRITE(numout,*)'WARNING:Increase ipco2maxtype in ',& 399 399 & cpname 400 400 ENDIF 401 401 402 402 ! Bookkeeping data to match observations 403 fco2data%nsidx(iobs) = iobs404 fco2data%nsfil(iobs) = iindx(jk)403 pco2data%nsidx(iobs) = iobs 404 pco2data%nsfil(iobs) = iindx(jk) 405 405 406 406 ! QC flags 407 fco2data%nqc(iobs) = inpfiles(jj)%ivqc(ji,1)407 pco2data%nqc(iobs) = inpfiles(jj)%ivqc(ji,1) 408 408 409 409 ! Observed value 410 fco2data%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1)410 pco2data%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1) 411 411 412 412 413 413 ! Model and MDT is set to fbrmdi unless read from file 414 414 IF ( ldmod ) THEN 415 fco2data%rmod(iobs,1) = inpfiles(jj)%padd(1,ji,1,1)415 pco2data%rmod(iobs,1) = inpfiles(jj)%padd(1,ji,1,1) 416 416 ELSE 417 fco2data%rmod(iobs,1) = fbrmdi417 pco2data%rmod(iobs,1) = fbrmdi 418 418 ENDIF 419 419 ENDIF … … 434 434 435 435 WRITE(numout,*) 436 WRITE(numout,'(1X,A)')' fco2 data types'436 WRITE(numout,'(1X,A)')'pco2 data types' 437 437 WRITE(numout,'(1X,A)')'-----------------' 438 438 DO jj = 1,8 … … 450 450 ! Deallocate temporary data 451 451 !----------------------------------------------------------------------- 452 DEALLOCATE( ifileidx, i fco2idx, zdat )452 DEALLOCATE( ifileidx, ipco2idx, zdat ) 453 453 454 454 !----------------------------------------------------------------------- … … 460 460 DEALLOCATE( inpfiles ) 461 461 462 END SUBROUTINE obs_rea_ fco2463 464 END MODULE obs_read_ fco2465 462 END SUBROUTINE obs_rea_pco2 463 464 END MODULE obs_read_pco2 465
Note: See TracChangeset
for help on using the changeset viewer.