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 6857 for branches/UKMO/dev_r4650_general_vert_coord_obsoper_surf_bgc/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_pco2.F90 – NEMO

Ignore:
Timestamp:
2016-08-08T17:49:27+02:00 (8 years ago)
Author:
dford
Message:

Initial implementation of observation operator for pCO2.

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_fco2 
     1MODULE obs_read_pco2 
    22   !!====================================================================== 
    3    !!                       ***  MODULE obs_read_fco2  *** 
    4    !! Observation diagnostics: Read the along track fco2 data from 
    5    !!                          GHRSST or any fco2 data from feedback files 
     3   !!                       ***  MODULE obs_read_pco2  *** 
     4   !! Observation diagnostics: Read the along track pco2 data from 
     5   !!                          GHRSST or any pco2 data from feedback files 
    66   !!====================================================================== 
    77 
    88   !!---------------------------------------------------------------------- 
    9    !!   obs_rea_fco2 : Driver for reading fco2 data from the feedback 
     9   !!   obs_rea_pco2 : Driver for reading pco2 data from the feedback 
    1010   !!---------------------------------------------------------------------- 
    1111 
     
    2121   USE obs_surf_def             ! Surface observation definitions 
    2222   USE obs_types                ! Observation type definitions 
    23    USE obs_fco2_io            ! I/O for fco2 files 
     23   USE obs_pco2_io            ! I/O for pco2 files 
    2424   USE iom                      ! I/O 
    2525   USE netcdf                   ! NetCDF library 
     
    3030   PRIVATE 
    3131 
    32    PUBLIC obs_rea_fco2      ! Read the fco2 observations from the point data 
     32   PUBLIC obs_rea_pco2      ! Read the pco2 observations from the point data 
    3333    
    3434   !!---------------------------------------------------------------------- 
     
    4040CONTAINS 
    4141 
    42    SUBROUTINE obs_rea_fco2( kformat, & 
    43       &                    fco2data, knumfiles, cfilenames, & 
     42   SUBROUTINE obs_rea_pco2( kformat, & 
     43      &                    pco2data, knumfiles, cfilenames, & 
    4444      &                    kvars, kextr, kstp, ddobsini, ddobsend, & 
    4545      &                    ldignmis, ldmod ) 
    4646      !!--------------------------------------------------------------------- 
    4747      !! 
    48       !!                   *** ROUTINE obs_rea_fco2 *** 
    49       !! 
    50       !! ** Purpose : Read from file the fco2 data 
     48      !!                   *** ROUTINE obs_rea_pco2 *** 
     49      !! 
     50      !! ** Purpose : Read from file the pco2 data 
    5151      !! 
    5252      !! ** Method  : Depending on kformat either old or new style 
     
    6666      !                    ! 1: Old-style feedback 
    6767      TYPE(obs_surf), INTENT(INOUT) :: & 
    68          & fco2data     ! fco2 data to be read 
     68         & pco2data     ! pco2 data to be read 
    6969      INTEGER, INTENT(IN) :: knumfiles   ! Number of corio format files to read in 
    7070      CHARACTER(LEN=128), INTENT(IN) :: cfilenames(knumfiles) ! File names to read in 
    71       INTEGER, INTENT(IN) :: kvars    ! Number of variables in fco2data 
    72       INTEGER, INTENT(IN) :: kextr    ! Number of extra fields for each var in fco2data 
     71      INTEGER, INTENT(IN) :: kvars    ! Number of variables in pco2data 
     72      INTEGER, INTENT(IN) :: kextr    ! Number of extra fields for each var in pco2data 
    7373      INTEGER, INTENT(IN) :: kstp     ! Ocean time-step index 
    7474      LOGICAL, INTENT(IN) :: ldignmis   ! Ignore missing files 
     
    7878          
    7979      !! * Local declarations 
    80       CHARACTER(LEN=14), PARAMETER :: cpname='obs_rea_fco2' 
     80      CHARACTER(LEN=14), PARAMETER :: cpname='obs_rea_pco2' 
    8181      INTEGER :: ji 
    8282      INTEGER :: jj 
     
    9595         & irefdate 
    9696      INTEGER :: iobsmpp 
    97       INTEGER, PARAMETER :: ifco2maxtype = 1024 
    98       INTEGER, DIMENSION(0:ifco2maxtype) :: & 
     97      INTEGER, PARAMETER :: ipco2maxtype = 1024 
     98      INTEGER, DIMENSION(0:ipco2maxtype) :: & 
    9999         & ityp, & 
    100100         & itypmpp 
     
    105105         & iindx,    & 
    106106         & ifileidx, & 
    107          & ifco2idx 
     107         & ipco2idx 
    108108      INTEGER :: itype 
    109109      REAL(wp), DIMENSION(:), ALLOCATABLE :: & 
     
    143143      ALLOCATE( inpfiles(inobf) ) 
    144144 
    145       fco2_files : DO jj = 1, inobf 
     145      pco2_files : DO jj = 1, inobf 
    146146           
    147147         !--------------------------------------------------------------------- 
     
    150150         IF(lwp) THEN 
    151151            WRITE(numout,*) 
    152             WRITE(numout,*) ' obs_rea_fco2 : Reading from file = ', & 
     152            WRITE(numout,*) ' obs_rea_pco2 : Reading from file = ', & 
    153153               & TRIM( TRIM( cfilenames(jj) ) ) 
    154154            WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
     
    200200               ENDIF 
    201201            ELSEIF ( kformat == 1) THEN 
    202                CALL read_fco2( TRIM( cfilenames(jj) ), inpfiles(jj), & 
     202               CALL read_pco2( TRIM( cfilenames(jj) ), inpfiles(jj), & 
    203203               &                 numout, lwp, .TRUE. ) 
    204204            ELSE 
     
    291291         ENDIF 
    292292 
    293       END DO fco2_files 
     293      END DO pco2_files 
    294294 
    295295      !----------------------------------------------------------------------- 
     
    311311 
    312312      ALLOCATE( iindx(iobstot), ifileidx(iobstot), & 
    313          &      ifco2idx(iobstot), zdat(iobstot) ) 
     313         &      ipco2idx(iobstot), zdat(iobstot) ) 
    314314      jk = 0 
    315315      DO jj = 1, inobf 
     
    319319               jk = jk + 1 
    320320               ifileidx(jk) = jj 
    321                ifco2idx(jk) = ji 
     321               ipco2idx(jk) = ji 
    322322               zdat(jk)     = inpfiles(jj)%ptim(ji) 
    323323            ENDIF 
     
    328328         &               iindx   ) 
    329329       
    330       CALL obs_surf_alloc( fco2data, iobs, &  
     330      CALL obs_surf_alloc( pco2data, iobs, &  
    331331                           kvars, kextr, kstp, jpi, jpj ) 
    332332       
    333       ! * Read obs/positions, QC, all variable and assign to fco2data 
     333      ! * Read obs/positions, QC, all variable and assign to pco2data 
    334334  
    335335      iobs = 0 
     
    343343          
    344344         jj = ifileidx(iindx(jk)) 
    345          ji = ifco2idx(iindx(jk)) 
     345         ji = ipco2idx(iindx(jk)) 
    346346         IF ( ( inpfiles(jj)%ptim(ji) >  djulini(jj) ) .AND.  & 
    347347            & ( inpfiles(jj)%ptim(ji) <= djulend(jj) ) ) THEN 
     
    370370 
    371371 
    372                ! fco2 time coordinates 
    373                fco2data%nyea(iobs) = iyea 
    374                fco2data%nmon(iobs) = imon 
    375                fco2data%nday(iobs) = iday 
    376                fco2data%nhou(iobs) = ihou 
    377                fco2data%nmin(iobs) = imin 
     372               ! 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 
    378378                
    379                ! fco2 space coordinates 
    380                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) 
    382382 
    383383               ! 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) 
    386386                
    387387               ! Instrument type 
     
    392392                  itype = 0 
    393393               ENDIF 
    394                fco2data%ntyp(iobs) = itype 
    395                IF ( itype < ifco2maxtype + 1 ) THEN 
     394               pco2data%ntyp(iobs) = itype 
     395               IF ( itype < ipco2maxtype + 1 ) THEN 
    396396                  ityp(itype+1) = ityp(itype+1) + 1 
    397397               ELSE 
    398                   IF(lwp)WRITE(numout,*)'WARNING:Increase ifco2maxtype in ',& 
     398                  IF(lwp)WRITE(numout,*)'WARNING:Increase ipco2maxtype in ',& 
    399399                     &                  cpname 
    400400               ENDIF 
    401401 
    402402               ! Bookkeeping data to match observations 
    403                fco2data%nsidx(iobs) = iobs 
    404                fco2data%nsfil(iobs) = iindx(jk) 
     403               pco2data%nsidx(iobs) = iobs 
     404               pco2data%nsfil(iobs) = iindx(jk) 
    405405 
    406406               ! QC flags 
    407                fco2data%nqc(iobs) = inpfiles(jj)%ivqc(ji,1) 
     407               pco2data%nqc(iobs) = inpfiles(jj)%ivqc(ji,1) 
    408408 
    409409               ! Observed value 
    410                fco2data%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1) 
     410               pco2data%robs(iobs,1) = inpfiles(jj)%pob(1,ji,1) 
    411411 
    412412 
    413413               ! Model and MDT is set to fbrmdi unless read from file 
    414414               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) 
    416416               ELSE 
    417                   fco2data%rmod(iobs,1) = fbrmdi 
     417                  pco2data%rmod(iobs,1) = fbrmdi 
    418418               ENDIF 
    419419            ENDIF 
     
    434434 
    435435         WRITE(numout,*) 
    436          WRITE(numout,'(1X,A)')'fco2 data types' 
     436         WRITE(numout,'(1X,A)')'pco2 data types' 
    437437         WRITE(numout,'(1X,A)')'-----------------' 
    438438         DO jj = 1,8 
     
    450450      ! Deallocate temporary data 
    451451      !----------------------------------------------------------------------- 
    452       DEALLOCATE( ifileidx, ifco2idx, zdat ) 
     452      DEALLOCATE( ifileidx, ipco2idx, zdat ) 
    453453 
    454454      !----------------------------------------------------------------------- 
     
    460460      DEALLOCATE( inpfiles ) 
    461461 
    462    END SUBROUTINE obs_rea_fco2 
    463  
    464 END MODULE obs_read_fco2 
    465  
     462   END SUBROUTINE obs_rea_pco2 
     463 
     464END MODULE obs_read_pco2 
     465 
Note: See TracChangeset for help on using the changeset viewer.