| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- PROGRAM sla2fb
- !!---------------------------------------------------------------------
- !!
- !! ** PROGRAM sla2fb **
- !!
- !! ** Purpose : Convert AVISO SLA format to feedback format
- !!
- !! ** Method : Use of utilities from obs_fbm.
- !!
- !! ** Action :
- !!
- !! Usage:
- !! sla2fb.exe [-s type] outputfile inputfile1 inputfile2 ...
- !! Option:
- !! -s Select altimeter data_source
- !!
- !! History :
- !! ! 2010 (K. Mogensen) Initial version
- !!----------------------------------------------------------------------
- USE obs_fbm
- USE obs_sla_io
- USE convmerge
- IMPLICIT NONE
- !
- ! Command line arguments for output file and input files
- !
- #ifndef NOIARGCPROTO
- INTEGER,EXTERNAL :: iargc
- #endif
- INTEGER :: nargs
- CHARACTER(len=256) :: cdoutfile
- CHARACTER(len=256),ALLOCATABLE :: cdinfile(:)
- CHARACTER(len=256) :: cdtmp
- CHARACTER(len=5) :: cdsource
- !
- ! Input data
- !
- TYPE(obfbdata), POINTER :: slaf(:)
- INTEGER :: ninfiles,ntotobs
- !
- ! Output data
- !
- TYPE(obfbdata) :: fbdata
- !
- ! Loop variables
- !
- INTEGER :: ip,ia,ji,jk,noff
- !
- ! Get number of command line arguments
- !
- nargs=IARGC()
- IF (nargs < 1) THEN
- WRITE(*,'(A)')'Usage:'
- WRITE(*,'(A)')'sla2fb [-s type] outputfile inputfile1 inputfile2 ...'
- CALL abort()
- ENDIF
- cdsource=''
- !
- ! Get input data
- !
- noff=1
- IF ( nargs > 1 ) THEN
- CALL getarg(1,cdtmp)
- IF (TRIM(cdtmp)=='-s') THEN
- IF ( nargs < 3 ) THEN
- WRITE(*,*)'Missing arguments to -s <datasource>'
- CALL abort
- ENDIF
- CALL getarg(2,cdsource)
- noff=3
- ENDIF
- ENDIF
- CALL getarg(noff,cdoutfile)
- ninfiles = nargs - noff
- ALLOCATE( slaf(MAX(nargs-noff,1)) )
- ALLOCATE( cdinfile(nargs-noff) )
- ntotobs = 0
- DO ia=1,ninfiles
- CALL getarg( ia + noff, cdinfile(ia) )
- WRITE(*,'(2A)')'File = ',TRIM(cdinfile(ia))
- CALL read_avisofile( TRIM(cdinfile(ia)), slaf(ia), 6, .TRUE., .FALSE. )
- WRITE(*,'(A,I9,A)')'has',slaf(ia)%nobs,' observations'
- IF (LEN_TRIM(cdsource)>0) THEN
- DO ji=1,slaf(ia)%nobs
- slaf(ia)%cdwmo(ji)=TRIM(slaf(ia)%cdwmo(ji))//'_'//TRIM(cdsource)
- ENDDO
- ENDIF
- ntotobs = ntotobs + slaf(ia)%nobs
- ENDDO
- IF (ninfiles==0) THEN
- CALL init_obfbdata( slaf(1) )
- CALL alloc_obfbdata( slaf(1), 1, 0, 1, 0, 0, .FALSE. )
- slaf(1)%cname(1) = 'SLA'
- slaf(1)%cdjuldref = '19500101000000'
- ENDIF
- WRITE(*,'(A,I8)') 'Total observations : ',ntotobs
- !
- ! Merge and output the data.
- !
- CALL conv_fbmerge( TRIM(cdoutfile), ninfiles, slaf )
- END PROGRAM sla2fb
|