GnssParametrization
This class defines the models and parameters of the linearized observation equations for all phase and code measurements (see GnssProcessing) \[\label{gnssParametrizationType:model} \M l - \M f(\M x_0) = \left.\frac{\partial \M f(\M x)}{\partial \M x}\right|_{\M x_0} \Delta\M x + \M\epsilon, \]where the left side is the observation vector minus the effects computed from the a priori models. After each least squares adjustment (see GnssProcessing:processingStep:estimate) the a priori parameters are updated \[\label{gnssParametrizationType:update} \M x_0 := \M x_0 + \Delta\hat{\M x}. \]The vector $\M x_0$ can be written with GnssProcessing:processingStep:writeAprioriSolution. Any outputfiles defined in the parametrizations are written with GnssProcessing:processingStep:writeResults.
Each parametrization (and possible constraint equations) has a name which enables activating/deactivating the estimation of subsets of $\Delta\M x$ with GnssProcessing:processingStep:selectParametrizations. The a priori model $\M f(\M x_0)$ is unaffected and is always reduced.
The model for the different observation types can be described as \[\label{gnssParametrizationType:gnssFullModel} \begin{split} f[\tau\nu a]_r^s(\M x) &= \text{geometry}(\M r_r^s) + \text{clock}^s(t) + \text{clock}_r(t) \\ &+ \text{ionosphere}([\tau\nu],t,\M r_r^s) + \text{troposphere}(t,\M r_r^s) \\ &+ \text{antenna}[\tau\nu a]^s + \text{antenna}[\tau\nu a]_r \\ &+ \text{bias}[\tau\nu a]^s + \text{bias}[\tau\nu a]_r + \lambda[L\nu] N[L\nu a]_r^s + \text{other}(\ldots) + \epsilon[\tau\nu a]_r^s \end{split} \]The notation $[\tau\nu a]_r^s$ describes the attribution to a signal type $\tau$ (i.e., C or L), frequency $\nu$, signal attribute $a$ (e.g., C, W, Q, X), transmitting satellite $s$, and observing receiver $r$. It follows the RINEX 3 definition, see GnssType.
See also GnssProcessing.
IonosphereSTEC
The influence of the ionosphere is modelled by a STEC parameter (slant total electron content) in terms of $[TECU]$ between each transmitter and receiver at each epoch. These parameters are pre-eliminated from the observation equations before accumulating the normal equations. This is similar to using the ionosphere-free linear combination as observations but only one STEC parameter is needed for an arbitrary number of observation types.
The influence on the code and phase observation is modeled as \[\label{gnssParametrizationType:IonosphereSTEC:STEC} \begin{split} \text{ionosphere}([C\nu], STEC) &= \frac{40.3}{f_{\nu}^2}STEC + \frac{7525\M b^T\M k}{f_{\nu}^3}STEC + \frac{r}{f_{\nu}^4}STEC^2 \\ \text{ionosphere}([L\nu], STEC) &= -\frac{40.3}{f_{\nu}^2}STEC - \frac{7525\M b^T\M k}{2f_{\nu}^3}STEC - \frac{r}{3f_{\nu}^4}STEC^2 + \text{bending}(E)STEC^2 \end{split} \]The second order term depends on the magnetosphere $\M b$ and the direction of the signal $\M k$.
If further information about the ionosphere is available (in the form of a prior model or as additional parametrizations such as parametrization:ionosphereMap or parametrization:ionosphereVTEC) the STEC parameters describe local and short–term scintillations. The STEC parameters are estimated as additions to the model and it is advised to constrain them towards zero with a standard deviation of sigmaSTEC.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
apply2ndOrderCorrection | boolean | apply ionospheric correction |
apply3rdOrderCorrection | boolean | apply ionospheric correction |
applyBendingCorrection | boolean | apply ionospheric correction |
magnetosphere | magnetosphere | |
nameConstraint | string | used for parameter selection |
sigmaSTEC | expression | expr. for sigma [TECU] for STEC constraint, variable E (elevation) available |
IonosphereVTEC
The influence of the ionosphere is modelled by a VTEC parameter (vertical total electron content) in terms of $[TECU]$ for every selected receiver each epoch. The slant TEC is computed using the elevation $E$ dependent Modified Single-Layer Model (MSLM) mapping function \[\label{gnssParametrizationType:IonosphereVTEC:STEC} STEC = \frac{VTEC}{\cos z'} \qquad\text{with}\qquad \sin z'= \left(\frac{R}{R+H}\right)\sin\left(\alpha(\pi/2-E)\right) \]inserted into eq. \eqref{gnssParametrizationType:IonosphereSTEC:STEC}.
The result is written as a times series file at epochs with observations depending on GnssProcessing:processingStep:selectEpochs.
This class provides a simplifed model of the ionosphere for single receivers and enables the separation of the TEC and signal biases, meaning parametrization:tecBiases becomes estimable. Local and short-term scintillations should be considered by adding loosely constrained parametrization:ionosphereSTEC.
The parameter names are <station>:VTEC::<time>
.
Name | Type | Annotation |
---|---|---|
name | string | |
selectReceivers | platformSelector | |
outputfileVTEC | filename | variable {station} available |
mapR | double | constant of MSLM mapping function |
mapH | double | constant of MSLM mapping function |
mapAlpha | double | constant of MSLM mapping function |
IonosphereMap
Apriori VTEC maps can be removed from the observations with inputfileGriddedDataTimeSeries (e.g. from GnssIonex2GriddedDataTimeSeries).
The ionosphere is parametrized in terms of $[TECU]$ in a single layer sphere with
radiusIonosphericLayer as a temporally
changing (e.g. hourly linear splines) spherical harmonics expansion
\[
VTEC(\lambda,\theta,t) = \sum_{n=0}^{n_{max}} \sum_{m=0}^n c_{nm}(t)C_{nm}(\lambda,\theta)+s_{nm}(t)S_{nm}(\lambda,\theta)
\]up to maxDegree=15
in a solar-geomagentic frame defined
by magnetosphere. The VTEC values are mapped to STEC values
in the observation equations via eq. \eqref{gnssParametrizationType:IonosphereVTEC:STEC}.
The estimated VTEC inclusive the apriori inputfileGriddedDataTimeSeries can be written to outputfileGriddedDataTimeSeries evaluated at outputGrid and outputTimeSeries.
Local and short-term scintillations should be considered by adding constrained parametrization:ionosphereSTEC. To account for signal biases add parametrization:tecBiases.
The parameter names are
VTEC:sphericalHarmonics.c_<degree>_<order>:<temporal>:<interval>
,-
VTEC:sphericalHarmonics.s_<degree>_<order>:<temporal>:<interval>
.
Name | Type | Annotation |
---|---|---|
name | string | |
selectReceivers | platformSelector | |
outputfileGriddedDataTimeSeries | filename | single layer VTEC [TECU] |
outputGrid | grid | |
outputTimeSeries | timeSeries | |
inputfileGriddedDataTimeSeries | filename | single layer VTEC [TECU] |
maxDegree | uint | spherical harmonics parametrization |
temporal | parametrizationTemporal | temporal evolution of VTEC values |
radiusIonosphericLayer | double | [m] radius of ionospheric single layer |
mapR | double | [m] constant of MSLM mapping function |
mapH | double | [m] constant of MSLM mapping function |
mapAlpha | double | constant of MSLM mapping function |
magnetosphere | magnetosphere |
Clocks
Clock errors are estimated epoch-wise for each selectTransmitter/Receiver. No clock errors are estimated if no valid observations are available (e.g. data gaps in the observations).
These parameters are lineary dependent and would lead to a rank deficiency in the normal equation matrix. To circumvent this issue, the estimation requires an additional zero-mean constraint added in each epoch. This is realized with an additional observation equation \[ 0 = \frac{1}{n_i + n_k} (\sum_i \Delta t^{s_i} + \sum_k \Delta t_{r_k}) \]summed over all selectTransmitters/ReceiversZeroMean with a standard deviation of sigmaZeroMeanConstraint.
The parameter names are <station or prn>:clock::<time>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
selectReceivers | platformSelector | |
outputfileClockTransmitter | filename | variable {prn} available |
outputfileClockReceiver | filename | variable {station} available |
nameConstraint | string | used for parameter selection |
selectTransmittersZeroMean | platformSelector | |
selectReceiversZeroMean | platformSelector | |
sigmaZeroMeanConstraint | double | (0 = unconstrained) sigma [m] for zero-mean constraint over all selected clocks |
ClocksModel
This parametrization is an alternative to parametrization:clocks. Clock errors are estimated epoch-wise for each selectTransmitter/Receiver and, opposed to parametrization:clocks, are also estimated for epochs that have no valid observations available (e.g. data gaps).
The clock error of the an epoch can be predicted by the clock error of the preceding epoch and an unknown clock drift \[ \Delta t_{i+1} = \Delta t_{i} + t_{drift} dt + \epsilon_i. \]This equation is applied as an additional constraint equation in each epoch \[ 0 = \Delta t_{i+1} - \Delta t_{i} - t_{drift} dt + \epsilon_i. \]The variance $\sigma^2(\epsilon)$ is estimated iteratively by variance component estimation (VCE). Clock jumps are treated as outliers and are automatically downweighted as described in GnssProcessing:processingStep:estimate.
The absolute initial clock error and clock drift cannot be determined if all receiver and transmitter clocks are estimated together due to their linear dependency. This linear dependency would lead to a rank deficiency in the normal equation matrix in the same manner as described in parametrization:clocks. To circumvent the rank deficiency additional zero-mean constraints are required for the first and last epoch. The realization of the constraint is done as an additional observation equation in the form \[ 0 = \frac{1}{n_i + n_k} (\sum_i \Delta t^{s_i} + \sum_k \Delta t_{r_k}) \]summed over all selectTransmitters/ReceiversZeroMean with a standard deviation of sigmaZeroMeanConstraint.
The parameter names are <station or prn>:clock::<time>
and <station or prn>:clockDrift::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
selectReceivers | platformSelector | |
outputfileClockTransmitter | filename | variable {prn} available |
outputfileClockReceiver | filename | variable {station} available |
huber | double | clock jumps > huber*sigma0 are downweighted |
huberPower | double | clock jumps > huber: sigma=(e/huber)^huberPower*sigma0 |
nameConstraint | string | used for parameter selection |
selectTransmittersZeroMean | platformSelector | use these transmitters for zero-mean constraint |
selectReceiversZeroMean | platformSelector | use these receivers for zero-mean constraint |
sigmaZeroMeanConstraint | double | (0 = unconstrained) sigma [m] for zero-mean constraint over all selected clocks |
SignalBiases
Each code and phase observation (e.g C1C
or L2W
) contains a bias at transmitter/receiver level
\[
[\tau\nu a]_r^s(t) = \dots + \text{bias}[\tau\nu a]^s + \text{bias}[\tau\nu a]_r + \dots
\]This class provides the apriori model $\M f(\M x_0)$ of eq. \eqref{gnssParametrizationType:model} only.
The inputfileSignalBiasTransmitter/Receiver are read
for each receiver and transmitter. The file name is interpreted as a template with
the variables {prn}
and {station}
being replaced by the name.
(Infos regarding the variables {prn}
and {station}
can be found in
gnssTransmitterGeneratorType and
gnssReceiverGeneratorType respectively). The files can
be converted with GnssSinexBias2SignalBias.
The estimation of the biases is complex due to different linear dependencies, which result in rank deficiencies in the system of normal equations. For simplification the parametrization for $\Delta\M x$ has been split into: parametrization:codeBiases, parametrization:tecBiases, and parametrization:ambiguities (including phase biases). The file handling on the other hand still remains within this class. Any prior values for the receiver/transmitter biases are read with the respective inputFileSignalBias. All biases for a receiver/transmitter are accumulated and written to the respective outputFileSignalBias.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
selectReceivers | platformSelector | |
outputfileSignalBiasTransmitter | filename | variable {prn} available |
outputfileSignalBiasReceiver | filename | variable {station} available |
inputfileSignalBiasTransmitter | filename | variable {prn} available |
inputfileSignalBiasReceiver | filename | variable {station} available |
Ambiguities
Sets up an ambiguity parameter for each track and phase observation type. \[ [L\nu a]_r^s(t) = \dots + \text{bias}[L\nu a]^s + \text{bias}[L\nu a]_r + \lambda[L\nu] N[L\nu a]_r^s \]As the phase observations contain a float bias at transmitter/receiver level, not all ambiguities are resolvable to integer values. The number of resolvable ambiguities can be increased with known phase biases read from file via parametrization:signalBiases. In this case, estimateTransmitter/ReceiverPhaseBiasTransmitter should not be used for the corresponding transmitters and receivers.
In case of GLONASS, the phase biases at receiver level differ between different frequency channels (frequency division multiple access, FDMA) and for each channel an extra float phase bias is estimated. With linearGlonassBias a linear relationship between bias and frequency channel is assumed, which reduces the number of float bias parameters and increases the number of resolvable integer ambiguities.
The integer ambiguities can be resolved and fixed in GnssProcessing:processingStep:resolveAmbiguities. Resolved integer ambiguities are not estimated as unknown parameters in gnssProcessingStepType:estimate anymore and are removed from the system of normal equations.
The estimated phase biases can be written to files in parametrization:signalBiases.
The parameter names are
<station>:phaseBias(<gnssType>)::
,-
<prn>:phaseBias(<gnssType>)::
, -
<station>.<prn>:ambiguity<index>of<count>(<GnssTypes>)::<track interval>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
estimateTransmitterPhaseBias | platformSelector | |
estimateReceiverPhaseBias | platformSelector | |
linearGlonassBias | boolean | bias depends linear on frequency channel number |
CodeBiases
Each code observation (e.g C1C
or C2W
) contains a bias at transmitter/receiver level
\[
[C\nu a]_r^s(t) = \dots + \text{bias}[C\nu a]^s + \text{bias}[C\nu a]_r + \dots
\]The code biases cannot be estimated together with clock errors and ionospheric delays in an absolute sense
as rank deficiencies will occur in the system of normal equations. Therefore, the biases are not initialized and set up
as parameters directly but only estimable linear combinations are parametrized.
The basic idea is to set up simplified normal equations with the biases, clock and STEC parameters of one single receiver or transmitter, eliminate clock and STEC parameters and perform an eigen value decomposition of the normal equation matrix \[ \M N = \M Q \M\Lambda \M Q^T. \]Instead of estimating the original bias parameter $\M x$ a transformed set $\bar{\M x}$ is introduced: \[ \bar{\M x} = \M Q^T \M x. \]The new parameters corresponding to eigen values $\lambda>0$ are estimable, the others are left out (set to zero). The behavior can be controlled by explicitly setting up to two bias types with typesClockDatum for each transmitter to zero. These then define the ionosphere-free clock datum of the transmitter. The missing linear combinations, which depend on the STEC parameters, can be added with parametrization:tecBiases.
Additional rank deficiencies may also occur when biases of transmitters and receivers are estimated together. The minimum norm nullspace (also via eigen value decomposition) is formulated as zero constraint equations and added with a standard deviation of sigmaZeroMeanConstraint.
In case of GLONASS the code biases at receiver level can differ between different frequency channels (frequency division multiple access, FDMA) and for each channel an extra code bias is estimated. With linearGlonassBias a linear relationship between bias and frequency channel is assumed, which reduces the number of bias parameters.
The estimated biases can be written to files in parametrization:signalBiases.
The parameter names are <station or prn>:codeBias0<index><combi of gnssTypes>::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
selectReceivers | platformSelector | |
linearGlonassBias | boolean | bias depends linear on frequency channel number |
typesClockDatum | gnssType | first two matching types define the ionosphere free transmitter clock (e.g. C1WG, C2WG) |
nameConstraint | string | used for parameter selection |
sigmaZeroMeanConstraint | double | (0 = unconstrained) sigma [m] for null space constraint |
TecBiases
Each code observation (e.g C1C
or C2W
) contains a bias at transmitter/receiver level
\[
[C\nu a]_r^s(t) = \dots + \text{bias}[C\nu a]^s + \text{bias}[C\nu a]_r + \ldots
\]This parametrization represents the linear combination of signal biases
which completely depend on the STEC parameters. Ignoring these bias combinations would result
in a biased STEC estimation (all other parameters are nearly unaffected).
To determine this part of the signal biases
the parametrization:ionosphereSTEC should be constrained.
Furthermore, additional information about the ionosphere is required from
parametrization:ionosphereVTEC or
parametrization:ionosphereMap.
Rank deficiencies due to the signal bias parameters may occur if biases of transmitters and receivers are estimated together. The minimum norm nullspace is formulated as zero constraint equations and added with a standard deviation of sigmaZeroMeanConstraint.
The accumulated estimated result can be written to files in parametrization:signalBiases.
The parameter names are <station or prn>:tecBias0<index><combi of gnssTypes>::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
selectReceivers | platformSelector | |
linearGlonassBias | boolean | phase or code biases depend linear on frequency channel number |
nameConstraint | string | used for parameter selection |
sigmaZeroMeanConstraint | double | (0 = unconstrained) sigma [m] for null space constraint |
TemporalBias
This parametrization resolves the issue of some phase observations suffering from time-variable biases. Such a phenomenon has been found to affect GPS block IIF satellites on the L5 phase measurements (see Montenbruck et al. 2011, DOI: 10.1007/s10291-011-0232-x).
For these time-variable biases an appropriate temporal representation has to be defined in
parametrizationTemporal.
For example, time-variable biases for GPS block IIF L5 phase observations (type=L5*G
)
can be represented by a cubic spline with a nodal distance of one hour.
The result is written as a times series file at the processing sampling or the sampling set by GnssProcessing:processingStep:selectEpochs).
This parametrization should be set up in addition to the constant parametrization:signalBiases. Depending on the temporal representation a temporal zero-mean constraint is needed to separate this parametrization from the constant component. The constraint equations are added with a standard deviation of sigmaZeroMeanConstraint.
The parameter names are
<prn>:signalBias.<gnssType>:<temporal>:<interval>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
outputfileBiasTimeSeries | filename | variable {prn} available |
inputfileBiasTimeSeries | filename | variable {prn} available |
type | gnssType | |
parametrizationTemporal | parametrizationTemporal | |
nameConstraint | string | used for parameter selection |
sigmaZeroMeanConstraint | double | (0 = unconstrained) sigma [m] for temporal zero-mean constraint |
StaticPositions
Estimates a static position for all selectReceivers in the terrestrial frame.
No-net constraints can be applied for a subset of stations, selectNoNetReceivers, with a standard deviation of noNetTranslationSigma and noNetRotationSigma and noNetScaleSigma. If the template inputfileNoNetPositions is provided the constraints are applied relatively to these positions. Only stations with an existing position file are considered. Without inputfileNoNetPositions the constraints are applied towards the apriori values from GnssProcessing:receiver. As a single corrupted station position can disturb the no-net conditions, the rotation/translation parameters are estimated in a robust least squares adjustment beforehand. The computed weight matrix is used to downweight corrupted stations in the constraint equations.
In case you want to align to an ITRF/IGS reference frame, precise coordinates can be generated with Sinex2StationPositions.
The parameter names are
<station>:position.x::
,-
<station>:position.y::
, -
<station>:position.z::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectReceivers | platformSelector | |
outputfileGriddedPosition | filename | delta north east up for all stations |
outputfilePosition | filename | variable {station} available, full estimated coordinates (in TRF) |
nameConstraint | string | used for parameter selection |
selectNoNetReceivers | platformSelector | |
inputfileNoNetPositions | filename | variable {station} available, precise coordinates used for no-net constraints (in TRF) |
noNetTranslationSigma | double | (0 = unconstrained) sigma [m] for no-net translation constraint on station coordinates |
noNetRotationSigma | double | (0 = unconstrained) sigma [m] at Earth's surface for no-net rotation constraint on station coordinates |
noNetScaleSigma | double | (0 = unconstrained) sigma [m] for no-net scale constraint on station coordinates |
huber | double | stations > huber*sigma0 are downweighted in no-net constraint |
huberPower | double | stations > huber: sigma=(e/huber)^huberPower*sigma0 |
KinematicPositions
Estimates the epoch-wise outputfilePositions in an Earth-fixed frame (or in case of LEO satellites in an intertial frame).
The $3\times3$ epoch wise outputfileCovarianceEpoch are computed within GnssProcessing:processingStep:computeCovarianceMatrix
The parameter names are
<station>:position.x::<time>
,-
<station>:position.y::<time>
, -
<station>:position.z::<time>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectReceivers | platformSelector | |
outputfilePositions | filename | variable {station} available, estimated kinematic positions/orbit |
outputfileCovarianceEpoch | filename | variable {station} available, 3x3 epoch covariances |
LeoDynamicOrbits
The estimation of (reduced) dynamic orbits is formulated as variational equations. It is based on inputfileVariational calculated with PreprocessingVariationalEquation. Necessary integrations are performed by integrating a moving interpolation polynomial of degree integrationDegree. The parametrizationAcceleration must include at least those parameters that were estimated in PreprocessingVariationalEquationOrbitFit. Additional stochasticPulse parameters can be set up to reduce orbit mismodeling. If not enough epochs with observations are available (minEstimableEpochsRatio) the LEO satellite is disabled.
The parameters and parameter names are divided into global
<station>:<parametrizationAcceleration>:*:*
,-
<station>:stochasticPulse.x::<time>
, -
<station>:stochasticPulse.y::<time>
, -
<station>:stochasticPulse.z::<time>
,
<station>:arc<no>.<parametrizationAcceleration>:*:*
,-
<station>:arc<no>.position0.x::
, -
<station>:arc<no>.position0.y::
, -
<station>:arc<no>.position0.z::
. -
<station>:arc<no>.velocity0.x::
, -
<station>:arc<no>.velocity0.y::
, -
<station>:arc<no>.velocity0.z::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectReceivers | platformSelector | |
outputfileOrbit | filename | variable {station} available |
outputfileParameters | filename | variable {station} available |
inputfileVariational | filename | variable {station} available |
stochasticPulse | timeSeries | [mu/s] parametrization of stochastic pulses |
parametrizationAcceleration | parametrizationAcceleration | orbit force parameters |
ephemerides | ephemerides | |
minEstimableEpochsRatio | double | drop satellites with lower ratio of estimable epochs to total epochs |
integrationDegree | uint | integration of forces by polynomial approximation of degree n |
interpolationDegree | uint | for orbit interpolation and velocity calculation |
TransmitterDynamicOrbits
Same as leoDynamicOrbits but for transmitting GNSS satellites. For more details see orbit integration.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
outputfileOrbit | filename | variable {prn} available |
outputfileParameters | filename | variable {prn} available |
inputfileVariational | filename | variable {prn} available |
stochasticPulse | timeSeries | [mu/s] parametrization of stochastic pulses |
parametrizationAcceleration | parametrizationAcceleration | orbit force parameters |
ephemerides | ephemerides | |
minEstimableEpochsRatio | double | drop satellites with lower ratio of estimable epochs to total epochs |
integrationDegree | uint | integration of forces by polynomial approximation of degree n |
interpolationDegree | uint | for orbit interpolation and velocity calculation |
Troposphere
A priori tropospheric correction is handled by a troposphere model (e.g. Vienna Mapping Functions 3). Additional parameters in $[m]$ for zenith wet delay and gradients can be set up via troposphereWetEstimation (usually 2-hourly linear splines) and troposphereGradientEstimation (usually a daily trend). These parameters can be soft-constrained using parametrization:constraints to avoid an unsolvable system of normal equations in case of data gaps.
The parameter names are
<station>:troposphereWet:<temporal>:<interval>
,-
<station>:troposphereGradient.x:<temporal>:<interval>
, -
<station>:troposphereGradient.y:<temporal>:<interval>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectReceivers | platformSelector | |
outputfileTroposphere | filename | columns: MJD, ZHD, ZWD, dry north gradient, wet north gradient, dry east gradient, wet east gradient, ... |
troposphere | troposphere | a priori troposphere model |
troposphereWetEstimation | parametrizationTemporal | [m] parametrization of zenith wet delays |
troposphereGradientEstimation | parametrizationTemporal | [degree] parametrization of north and east gradients |
EarthRotation
Earth rotation parameters (ERPs) can be estimated by defining estimatePole ($x_p$, $y_p\, [mas]$) and estimateUT1 ($dUT1\, [ms], LOD$).
Estimating length of day (LOD) with the sign according to IGS conventions requires a negative value in parametrizationTemporal:trend:timeStep.
Constraints on the defined parameters can be added via parametrization:constraints. An example would be to set up estimateUT1:constant so the $dUT1$ parameter is included in the normal equation system . Since $dUT1$ cannot be determined by GNSS, a hard constraint to its a priori value can then be added.
The parameter names are
earth:polarMotion.xp:<temporal>:<interval>
,-
earth:polarMotion.yp:<temporal>:<interval>
, -
earth:UT1:<temporal>:<interval>
, -
earth:nutation.X:<temporal>:<interval>
, -
earth:nutation.>:<temporal>:<interval>
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
outputfileEOP | filename | EOP time series (mjd, xp, yp, sp, dUT1, LOD, X, Y, S) |
estimatePole | parametrizationTemporal | xp, yp [mas] |
estimateUT1 | parametrizationTemporal | rotation angle [ms] |
estimateNutation | parametrizationTemporal | dX, dY [mas] |
ReceiverAntennas
This class is for parametrization the antenna for their antenna center offsets (ACO) and antenna center variations (ACV) by antennaCenterVariations. The receivers to be estimated can be selected by selectReceivers.
The amount of patterns to be estimated is configurable with a list of patternTypes.
For each added patternTypes a set of parameters will be evaluated. The observations
will be assigned to the first patternTypes that matches their own.
E.g. having the patterns: ***G
and L1*
would lead to all GPS observations be assigned
to the observation equations of the first pattern. The patterntype L1*
would then consist
of all other GNSS L1 phase observations. addNonMatchingTypes will, if activated, create automatically patterns
for observations that are not selected within the list patternTypes.
Furthermore, it is possible to group same antenna build types from different receivers by groupAntennas.
The grouping by same antenna build ignores antenna serial numbers.
To estimate the antenna variation parameters, a longer period of observations might be necessary for accurate estimations. Hence one should use this parametrization by accumulating normal equations from several epochs. This can be accomplished as the last steps in the processing steps by adding ReceiverAntennas to current selected parameters with GnssProcessing:processingStep:selectParametrizations and write the normal equation matrix with GnssProcessing:processingStep:writeNormalEquations. The written normal equations can then be accumulated with NormalsAccumulate and solved by NormalsSolverVCE. Further, one should apply constraints to the normal equations by GnssAntennaNormalsConstraint since the estimation of ACO and ACV can lead to rank deficiencies in the normal equation matrix. Last the solved normal equation can be parsed to a antenna definition file with the program ParameterVector2GnssAntennaDefinition.
As example referring to the cookbook GNSS satellite orbit determination and station network analysis,
one could add additionally receiverAntennas as parametrization.
Since the estimations are done on a daily basis for each receiver we add an additional
selectParametrizations which
disables parameter.receiverAntenna
. After all stations are processed together with all parameters, one
adds parameter.receiverAntenna
with selectParametrizations
to the current selected parametrizations.
The last processingStep is GnssProcessing:processingStep:writeNormalEquations
to write the daily normal equations including the parametrization receiverAntennas into files.
These normal equation files are then processed with the programs:
- NormalsAccumulate: accumulates normal equations.
- GnssAntennaNormalsConstraint: apply constraint to the normal equations.
- NormalsSolverVCE: solves the normal equations.
- ParameterVector2GnssAntennaDefinition: writes the solution into a antenna definition file
Note that the apriori value $\M x_0$ for this parametrization is always zero and never updated according to eq. \eqref{gnssParametrizationType:update}.
The parameter names are
<antennaName>:<antennaCenterVariations>.<gnssType>::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectReceivers | platformSelector | |
antennaCenterVariations | parametrizationGnssAntenna | estimate antenna center variations |
patternTypes | gnssType | gnssType for each pattern (first match is used) |
addNonMatchingTypes | boolean | add patterns for additional observed gnssTypes that don't match any of the above |
groupAntennas | boolean | common ACVs for same antenna build types (ignores antenna serial number) |
TransmitterAntennas
Same as receiverAntennas but for transmitting antennas (GNSS satellites).
The parameter names are
<antennaName>:<antennaCenterVariations>.<gnssType>::
.
Name | Type | Annotation |
---|---|---|
name | string | used for parameter selection |
selectTransmitters | platformSelector | |
antennaCenterVariations | parametrizationGnssAntenna | estimate antenna center variations |
patternTypes | gnssType | gnssType for each pattern (first match is used) |
addNonMatchingTypes | boolean | add patterns for additional observed gnssTypes that don't match any of the above |
groupAntennas | boolean | common ACVs for same antenna build types (ignores antenna serial number) |
Constraints
Add a pseudo observation equation (constraint) for each selected parameters \[ b-x_0 = 1 \cdot dx + \epsilon, \]where $b$ is the bias and $x_0$ is the a priori value of the parameter if relativeToApriori is not set. The standard deviation sigma is used to weight the observation equations.
Name | Type | Annotation |
---|---|---|
name | string | |
parameters | parameterSelector | parameter to constrain |
sigma | double | sigma of the constraint (same unit as parameter) |
bias | double | constrain all selected parameters towards this value |
relativeToApriori | boolean | constrain only dx and not full x=dx+x0 |
Group
Groups a set of parameters. This class can be used to structure complex parametrizations and has no further effect itself.
Name | Type | Annotation |
---|---|---|
parametrization | gnssParametrization |