User Manual 4.7 Measure and Filtering
Introduction
Scope
This section describes all the building blocks available for measure functions computation and measures management.
For now are available in the "signal propagation" package the tools to compute a signal propagation object (emission and reception dates, propagation vector) and modify it (tropospheric effects correction, ionospheric effects correction...)
Javadoc
The packages associated to the "measure and filtering" theme are :
Library | Javadoc |
---|---|
Orekit | Package fr.cnes.sirius.patrius.models.earth |
Patrius | Package fr.cnes.sirius.patrius.signalpropagation |
Patrius | Package fr.cnes.sirius.patrius.signalpropagation.iono |
Links
None as of now.
Useful Documents
- Bent model
http://modelweb.gsfc.nasa.gov/ionos/bent.html
Package Overview
- Signal propagation
The Signal Propagation package contains the classes for signal propagation computation :
- SignalPropagation, that represents the signal itself (vector, emission date, reception date)
- SignalPropagationModel, a toolbox that provides methods to compute the signal propagation (first the initial commutation in the void, and then potentially apply to it some correction).
It also contains the classes for signal corrections: the correction models (AzoulayModel and FixedDelayModel) and their interfaces TroposphericCorrection and AngularCorrection.
- Iono
For now, the Iono package contains the generic interface for ionospheric corrections (IonosphericCorrection) and the classes relevant to computing the electronic content of the ionosphere, according to the Bent ionosphere model :
- BentModel, the Bent model for the electronic content used in ionospheric corrections.
- R12Loader, data loader for the CCIR12 data file.
- USKLoader, data loader for the USK data file ("NEWUSK" type).
Features Description
Signal Propagation
The signal propagation model is a toolbox.
Its main method "computeSignalPropagation" is able to compute and create a propagation object (propagation vector, emission and reception dates) out of the two PVCoordinatesProvider, that represent the transmitter and the receiver, and one of the two dates (emission or reception).
It also provides method to get the corrections to be applied to this signal, like the tropospheric effects correction (see next paragraph).
Tropospheric correction
- Interface
The tropospheric correction interface (TroposphericCorrection) returns the signal correction (in seconds) due to tropospheric effects to be applied to a given signal propagation vector.
NB : to get directly the correction associated to a SignalPropagation object, a method is available in the SignalPropagationModel, using any TroposphericCorrection.
- Azoulay model
The Azoulay model is a particular model of tropospheric correction, under the TroposphericCorrection and AngularCorrection interfaces.
For its computations are also needed the local pressure, temperature, moisture and geodetic altitude of the involved station.
Ionospheric correction
Currently, the provided ionospheric correction capabilities are :
- an implementation of the Bent ionospheric model (electronic content computation)
Other are scheduled to appear eventually.
Bent ionospheric model
What it does
The Bent ionospheric model implementation in Patrius is issued from the existing MSLIB Fortran implementation.
It computes the electronic content for the signal propagated between a ground station and the satellite.
The Bent model needs for initialization :
- a SolarActivityDataProvider
- a R12Provider : sunspots data (usually from a file)
- a USKProvider : custom data for the Bent Model (usually from a file)
- the BodyShape representing the Earth
- the coordinates of the station position and the associated frame
The R12Provider and USKProvider implementations are part of the package; they use the Patrius data loading features.
What it does not
The Bent model implementation is strictly for the computation of the electronic content. The following is missing :
- taking into account the direction of the signal
- taking into account multiple paths for the signal
- taking into account the position and date corrections for the movement during the signal propagation
All these issues will have to be addressed before the model is really usable, i.e. used in a signal propagation model like the tropospheric corrections already are.
About thread-safety
The BentModel class isn't thread-safe; but, since it's mainly a computational class, whose attributes change for each new computation, an instance of this class isn't interesting to share between threads anyway.
On the contrary, R12Loader and USKLoader contain generic data ; it wouldn't be efficient to have more than one instance of each : they should, and can, be shared between threads, since they're conditionally thread-safe.
So, the proper way to use this Bent model in a multi-threaded environment is :
- In a single thread : create and initialize the R12Loader and USKLoader instances.
- While multithreading : share the R12Loader and USKLoader instances between all threads, but create an instance of BentModel per thread.
Getting Started
Signal propagation
Here is a code sample of the computation of a signal propagation.
// the transmitter (here, the station) is supposed to be a well defined PVCoordinatesProvider PVCoordinatesProvider station; // the receiver (here, the spacecraft) is supposed to be a well defined PVCoordinatesProvider PVCoordinatesProvider spacecraft; // the emission date is supposed to be known AbsoluteDate emissionDate; // creation of the signal propagation model // Reference frame : must be an inertial frame Frame refFrame = FramesFactory.getGCRF(); // signal propagation computation threshold (see the javadoc for details) double threshold = 1.0e-13; // model SignalPropagationModel model = new SignalPropagationModel(refFrame, threshold); // compuation of the signal propagation // the FixedDate informs the method that the given date is the EMISSION date SignalPropagation goSignal = model.computeSignalPropagation( station, spacecraft, emissionDate, FixedDate.EMISSION);
Tropospheric correction
Here is a code sample for how to get the correction associated to a given SignalPropagation object using the Azoulay model.
// Topocentric frame of the station // NB : this object is a PVCoordinatesProvider and can be used to compute the SignalPropagation // object, cf. previous paragraph TopocentricFrame stationTopoFrame = new TopocentricFrame(earthShape, stationPosition, "station"); // tropospheric correction model creation TroposphericCorrection correctionModel = new AzoulayModel(pressure, temperature, moisture, stationAltitude); // Computation of the corrections directly from the signal object (SignalPropagation class) double corrections = model.getSignalTropoCorrection(correctionModel, signal, stationTopoFrame);
Ionospheric correction
Here is a code sample on how to use the Bent ionospheric model.
// Input needed for the Bent model // 1) solar activity final SolarActivityDataProvider cstSolarActivity = new ConstantSolarActivity(84., 15); // 2) R12 file reader (sunspots data) final R12Provider r12Prov = new R12Loader("CCIR12"); // 3) USK file reader (Bent model parameters) final USKProvider uskProv = new USKLoader("NEWUSK"); // 4) earth shape final Frame earthFrame = FramesFactory.getITRF(); final BodyShape earth = new OneAxisEllipsoid(6378137, 1. / 298.257, earthFrame); // We can then create a Bent model instance final IonosphericCorrection ionoBent = new BentModel(r12Prov, cstSolarActivity, uskProv, earth, stationPosition, stationFrame, frequency); // and call it with parameters : // satellite position and frame, // date final double delay = ionoBent.computeSignalDelay(date, satellitePosition, satelliteFrame);
For those knowing the MSLIB version of this model : the computed value is the TOTNA variable in the original Fortran code.
Contents
Interfaces
Interface | Summary | Javadoc |
---|---|---|
TroposphericCorrection | Interface for all the signal propagation corrections due to the troposphere. | ... |
IonosphericCorrection | Interface for all the signal propagation corrections due to the ionosphere. | ... |
AngularCorrection | Interface representing an angular correction (on the satellite elevation). | ... |
R12Provider | R12 value provider for the Bent model. | ... |
USKProvider | Interface for the providers of USK data for the Bent ionospheric correction. | ... |
Classes
Class | Summary | Javadoc |
---|---|---|
SignalPropagation | A propagation vector and its associated dates. | ... |
SignalPropagationModel | Toolbox to compute SignalPropagation objects and correct it with different models. | ... |
AzoulayModel | Azoulay tropospheric correction model. | ... |
BentModel | Bent model for the electronic content used in ionospheric corrections. | ... |
R12Loader | Data loader for the R12 values. | ... |
USKLoader | Reader for the USK data file (file of the "NEWUSK" type). | ... |
SaastamoinenModel | Saastamoinen model for tropospheric corrections. | ... |
FixedDelayModel | Fixed delay tropospheric correction model. | ... |