Kinematic Processing
From GeodesyLab
Workflow
- define subnet file (including clock site, a couple of non-kinematically estimated sites, at the ones you are really interested in)
- define namelist (nml) file (RANDOM-WALK!), at best put them into /home/akda/Kinematic . That's also were examples live
- adapt script that calls solve (check whether you need a rapid solution -- when orbits aren't in yet)
- run solution
- extract data from .trop files
- plot results.
Temporal Resolution below 5 min
The standard solutions run with a temporal solution of 5 minutes (6 minutes if older than 1995). This means the standard qm files do not contain enough information if you need a finer resolution. Here is what to do:
- create campaign directory:
newcamp /gps/data/CAMPAIGN_NAME-interval
- create qm files for all rinex files from sites that go into that campaign for respective time:
rnx2qm.rndev RINEX-file -dir $procdir -interval 30
where $procdir=/gps/data/CAMPAIGN_NAME-interval, i.e. the campaign directory you just created.
- copy the orbits for the repective day(s) into /gps/data/CAMPAIGN_NAME-interval/orbit
- add the
-nosvclkfile
flag to yoursolve
call, to make sure the satellite clocks are not used ... - or get high resolution clocks for the respective days from ftp://sideshow.jpl.nasa.gov/pub/gipsy_products/hrclocks/ and copy those into /gps/data/CAMPAIGN_NAME-interval/orbit
- if you got the high resolution orbits, make sure to rename them: mv *.tdp *.tdpc
- make sure to update the $CAMP variable in the make-xxxxx file that you copy into your /gps/data/CAMPAIGN_NAME-interval/flt directory
Define the solution parameters
Use an NML file to define the solution parameters. Here is an example to start with.
$PREP !namelist input for preprefilter ! reference clock is REQUIRED. you need to use one of ! your sites, generally one with a stable clock. Mostly ! it means anything except a trimble. If an external ! oscillator is used, then it can be a reference clock. REFCLOCK = 'THU1' ! just says whether the troposphere will be estimated stochastically. ! except for very short baselines, this is always true. WETZTROP = .TRUE. ! don't recall what this is yaddsg = 0.1 ! this is the random walk constraint for the troposphere, in km/sqrt(sec) TROPDRIFT = 1.70D-7 ! if you want to estimate additional paraetmeters stochastically, you ! put them here. You don't have to put clocks here, because GIPSY ! assumes that all clocks will be estimated stochastically. SSTCH = 'STA E SCOB','STA N SCOB', 'STA V SCOB' ! in this example they are the east, north, and vertical components ! for station SCOB. Generally station locations are not ! estimated stochastically ! This tells you how to constrain the parameters you named above. SPSIG = 3*1.0D-6, ! random walk constraint SMTAU = 3*'RANDOMWALK', ! how often do you want to estimate these stochastic parameters SDELT = 3*'/00:05', ! compute a position every 5 minutes $END $INIT !namelist input for filter YDEL(1) = 'STABIAS THU1' ! same for the reference clock ! STABIAS is the GIPSY name for a station clock. SATBIAS is ! for a satellite clock ! this is if you are estimating station positions stochastically. ! just do it. grounddelete = 'SCOB', STAINT = .FALSE. IDIGIT = 9 ! this is a list of all the parameters you DO NOT ! want GIPSY to estimate. look at the cartoon book ! for more info. X, Y, Z, DX, DY, DZare the satellite orbits. ! you don't want to estimate them if youare using someone ! else's orbits, which I would assume you are all going to do YDEL(2) = 'UT1-UTC', 'UT1-UTC RATE', 'X POLE *', 'Y POLE *', 'GEOCENTER*', 'V LOVE', 'H LOVE', 'DRYZTROP*', 'LMPZTROP*', 'STA DRFT*', 'STA ACCL*', 'SAT DRFT*', 'SAT ACCL*', 'BIASPSR*', 'SOLARSCLTOP*','Y_BIAS TOP*', 'XPOLEMOTION','XPOLERATE','YPOLEMOTION','YPOLERATE', 'X*', 'Y*', 'Z*', 'DX*', 'DY*', 'DZ*','TRPAZ*', 'SOLSCL_X*', 'Y_BIAS*', 'SOLSCL_Z*', 'SOLARSCL*' SOLPRT = .TRUE. NOMEAS = .FALSE. SOLVE = .TRUE. DEBUG = 1 OUTNAME = 'OASIS' $END $APRIORI !namelist input for filter APALL = .TRUE. ! The following are NOT currently estimated ! ! Parameters actually estimated start here ! APNAMS( 1) = 'WETZTROP*', APSIGS( 1) = 10.0D-5 !10 cm APNAMS( 2) = 'STABIAS*', APSIGS( 2) = 3.0D5 !1 sec APNAMS( 3) = 'SATBIAS*', APSIGS( 3) = 3.0D5 !1 sec APNAMS( 4) = 'PHASE*', APSIGS( 4) = 1.0D-1 !1 micr ! I am using ENV here, but you should set these for XYZ if you are doing ! it in the Cartesian frame APNAMS( 5) = 'STAE*', APSIGS( 5) = 1. !1 km APNAMS( 6) = 'STAN*', APSIGS( 6) = 1. !1 km APNAMS( 7) = 'STAV*', APSIGS( 7) = 1. !1 km APNAMS( 8) = 'STA E KOKB', APSIGS( 8) = 10.0D-3 !10 m APNAMS( 9) = 'STA N KOKB', APSIGS( 9) = 10.0D-3 !10 m APNAMS(10) = 'STA V KOKB', APSIGS(10) = 10.0D-3 !10 m $END $DATAWGHT !namelist input for filter, edtpnt2, and post ELMINSTA = 15.0D0 ! elevation angle minimum ! 110 is pseudorange, 120 is phase DATYPE = 110, 120, DATSIG = 1.0D-3, 1.0D-5, ! these are in km XRECNM(1) = 'HOLE' ! this is to delete a specific receiver XXMTNM(1) = 'GPS04' ! this is to delete a specific satellite $END $SMINPUT !namelist input for smapper SAVEUD = 'LAST' SAVESIGMA = .TRUE. IDIGIT = 9 MAPTYP = 'CARTESIAN' OUTNAME = 'OASIS' TDPFULLPRECISION = .TRUE. ! write out these parameters for stochastic parameters ! GIPSY only creates this file if asked for (it is a TDP ! - time-dependent-parameter file). If you want to know ! clock values, then you need to write their names here. WRTTDP = 'STA E SCOB', 'STA N SCOB', 'STA V SCOB', TDPTYP = 'TIMEVARY', TDPTOL = 1.0d00, STAINT = .FALSE. $END $APRIORINML !namelist input for smapper $END $LIMITS !namelist input for postfit ! outlier criterion, i.e. flag all phase data greater than 5 cm. STAINT = .FALSE. DATYPE = 120 WINDOW = 5.0D-5, $END $EDTINIT !namelist input for edtpnt2 STAINT = .FALSE. DEBUG = .TRUE. $END