Catégorie:User Manual 4.14 : Différence entre versions

De Wiki
Aller à : navigation, rechercher
(Page créée avec « == Introduction == This document is the main user manual of the PATRIUS library, which provides Java classes in a wide range of themes related with space flight dynamics.... »)
 
Ligne 162 : Ligne 162 :
  
 
=== Thread safety ===
 
=== Thread safety ===
 
+
Details concerning the thread safety for each of the PATRIUS classes can be found here [[:Category:Thread_Safety_4.14|here]].
{| class="wikitable"
+
|-
+
! scope="col"| Class (total number : 43)
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.math.UtilsCommonsMath
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.differentiation.RiddersDifferentiator
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.BiLinearIntervalsFunction
+
|not thread-safe
+
|input ISearchIndex not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.BiLinearIntervalsInterpolator
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.TriLinearIntervalsFunction
+
|not thread-safe
+
|input ISearchIndex not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.TriLinearIntervalsInterpolator
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.UniLinearIntervalsFunction
+
|not thread-safe
+
|input ISearchIndex not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.UniLinearIntervalsInterpolator
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.ElementaryMultiplicationTypes
+
|unconditionally thread-safe
+
|
+
|-utility class without attributes
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.FourierDecompositionEngine
+
|not thread-safe
+
|not thread safe because of the setFunction method that can change the UnivariateFunction being decomposed
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.FourierSeries
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.FourierSeriesApproximation
+
|immutable if function is immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.TrigonometricPolynomialFunction
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.TrigonometricPolynomialPrimitive
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Disk
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Ellipse
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Ellipsoid
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.EllipticCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.EllipticCylinder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteEllipticCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteEllipticCylinder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteRectangleCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteRectangleCylinder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteRightCircularCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.InfiniteRightCircularCylinder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.LineSegment
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Matrix3D
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Parallelepiped
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Plate
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.RectangleCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.RightCircularCone
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.RightCircularCylinder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Sphere
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.SphericalCap
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Spheroid
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.linear.UDDecompositionImpl
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.RungeKutta6Integrator
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.RungeKutta6StepInterpolator
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.random.UniformlyCorrelatedRandomVectorGenerator
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.utils.BinarySearchIndexClosedOpen
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.utils.BinarySearchIndexOpenClosed
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.utils.RecordSegmentSearchIndex
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.utils.SearchIndexLibrary
+
|immutable
+
|
+
|}
+
 
+
 
+
 
+
{| class="wikitable"
+
|-
+
! scope="col"| Class (total number : 103)
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeChronologicalComparator
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeFrame
+
|not thread safe
+
|it is a Frame.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeLawLeg
+
|conditionally thread-safe
+
|The use of an AttitudeLaw makes it thread-safe only if the AttitudeLaw is.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeLegLaw
+
|conditionally thread-safe
+
|The use of an AttitudeLegLaw makes it thread-safe only if      the two AttitudeLaw and the AttitudeLeg are.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeLegsSequence
+
|not thread-safe
+
|The instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudeTransformProvider
+
|conditionally thread-safe
+
|is thread-safe if all attributes are.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.ComposedAttitudeLaw
+
|conditionally thread-safe
+
|is thread-safe if the AttitudeLaw attribute is.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.ConstantSpinSlew
+
|not thread safe
+
|this class is not thread safe because the slew can be re-computed while the method                    getAttitude(PVCoordinatesProvider, AbsoluteDate, Frame) is called.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.DirectionTrackingOrientation
+
|conditionally thread safe
+
|the IDirection object has to be thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.attitudes.FixedStepAttitudeEphemerisGenerator
+
|not thread-safe
+
|The AttitudeLegsSequence attribute is mutable.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.OrientationFrame
+
|not thread safe
+
|it is a Frame.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.OrientationTransformProvider
+
|conditionally thread-safe
+
|thread-safe if all attributes are.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.RelativeTabulatedAttitudeLaw
+
|conditionally thread-safe
+
|The use of an RelativeTabulatedAttitudeLaw makes it thread-safe only if    the AttitudeLeglaw is
+
|-
+
|fr.cnes.sirius.patrius.attitudes.RelativeTabulatedAttitudeLeg
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.SunPointing
+
|unconditionally thread safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.TabulatedAttitude
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.TwoDirectionsAttitude
+
|unconditionally thread safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.TwoSpinBiasSlew
+
|not thread safe
+
|this class is not thread safe because the local attitude ephemeris is changed.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.VariableStepAttitudeEphemerisGenerator
+
|not thread-safe
+
|The AttitudeLegsSequence attribute is mutable.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.CelestialBodyPolesAxisDirection
+
|conditionally thread-safe
+
|this class is thread-safe only if the underlying CelestialBody is too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.CentralBodyCenterDirection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.ConstantVectorDirection
+
|not thread-safe
+
|The use of a frame linked to the tree of frames makes this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.CrossProductDirection
+
|conditionally thread-safe
+
|this class is not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.GenericTargetDirection
+
|not thread-safe
+
|Not thread-safe by default.No use case for sharing an instance between threads found.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.GlintApproximatePointingDirection
+
|not thread-safe
+
|Not thread-safe by default.No use case for sharing an instance between threads found.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.GroundVelocityDirection
+
|conditionally thread-safe
+
|The use of a celestial body linked to the tree of frames                    makes this class thread-safe only if the underlying CelestialBody is too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.MomentumDirection
+
|conditionally thread-safe
+
|The use of a celestial body linked to the tree of frames makes this class thread-safe only if the underlying CelestialBody is too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.NadirDirection
+
|conditionally thread-safe
+
|The use of a celestial body linked to the tree of frames                    makes this class thread-safe only if the underlying CelestialBody is too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.ToCelestialBodyCenterDirection
+
|conditionally thread-safe
+
|The use of a celestial body linked to the tree of frames                    makes this class thread-safe only if the underlying CelestialBody is too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.directions.VelocityDirection
+
|not thread-safe
+
|Not thread-safe by default. No use case for sharing an instance between threads found.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.kinematics.SlerpInterpolator
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.bodies.ExtendedOneAxisEllipsoid
+
|not thread-safe
+
|the use of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.bodies.MeeusMoon
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.bodies.MeeusSun
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.ApCoef
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.Flags
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.Input
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.NRLMSISE00
+
|thread-hostile
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.NRLMSISE00Data
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSIS2000.Output
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.MSISE2000
+
|thread-hostile
+
|The direct use of thread hostile objects makes this class thread hostile itself.
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.US76
+
|thread-hostile
+
|The direct use of thread hostile objects makes this class thread hostile itself.
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.US76Data
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.ACSOLFormatReader
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.ConstantSolarActivity
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.NOAAFormatReader
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.SolarActivityDataFactory
+
|thread-hostile
+
|uses {@link DataProvidersManager} which is thread hostile
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.SolarActivityToolbox
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.specialized.ClassicalMSISE2000SolarData
+
|conditionally thread-safe
+
|thread-safe if SolarActivityDataProvider is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.specialized.ContinuousMSISE2000SolarData
+
|conditionally thread-safe
+
|thread-safe if SolarActivityDataProvider is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.forces.atmospheres.solarActivity.specialized.DTM2000SolarData
+
|conditionally thread-safe
+
|thread-safe if SolarActivityDataProvider is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.EarthGravitationalModelFactory
+
|not thread-safe
+
|the presence of static methods makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.OceanTides
+
|not thread-safe
+
|not thread safe because of the method updateCoefficientsCandS().
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.OceanTidesDataProvider
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.OceanTidesWaves
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.TerrestrialTides
+
|not thread-safe
+
|not thread safe because of the method updateCoefficientsCandS().
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.TerrestrialTidesDataProvider
+
|thread safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.TidesStandards
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.TidesToolbox
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.coefficients.FES2004FormatReader
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.coefficients.OceanTidesCoefficientsFactory
+
|thread-hostile
+
|uses a thread-hostile DataProvidersManager
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.tides.coefficients.OceanTidesCoefficientsSet
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.variations.VariablePotentialAttractionModel
+
|not thread-safe
+
|not thread-safe because of global arrays
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.variations.coefficients.GRGSRL02FormatReader
+
|not thread-safe
+
|because of static fields
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.variations.coefficients.VariableGravityFieldFactory
+
|not thread-safe
+
|because of static fields
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.variations.coefficients.VariablePotentialCoefficientsSet
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.maneuvers.ConstantThrustError
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.forces.maneuvers.VariableThrustManeuver
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.ElementaryFlux
+
|immutable
+
|immutable class
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.KnockeRiesModel
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.RediffusedFlux
+
|conditionally thread-safe
+
|thread-safe if all constructor parameters are too.
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.RediffusedRadiationPressure
+
|conditionally thread-safe
+
|thread-safe if the CelestialBody attribute is.
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.covariance.CovarianceInterpolation
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.covariance.OrbitCovariance
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.Analytical2DOrbitModel
+
|conditionally thread-safe
+
|thread safe if the underlying Analytical2DParameterModel andAbsoluteDate objects are thread safe
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.Analytical2DParameterModel
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.Analytical2DPropagator
+
|not thread-safe
+
|extends the AbstractPropagator class
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.DateIntervalLinearFunction
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.DateIntervalParabolicFunction
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.twod.DatePolynomialFunction
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AOLDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AnomalyDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.BetaAngleDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.DistanceDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ExtremaDistanceDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ExtremaElevationDetector
+
|not thread-safe
+
|the link to the tree of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ExtremaLatitudeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ExtremaLongitudeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ExtremaThreeBodiesAngleDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.LatitudeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.LocalTimeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.LongitudeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.NadirSolarIncidenceDetector
+
|thread-hostile
+
|the earth celestial body is thread hostile itself.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.NthOccurrenceDetector
+
|not thread-safe
+
|use of internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.SolarTimeDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ThreeBodiesAngleDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.precomputed.HermiteEphemeris
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.propagation.precomputed.LagrangeEphemeris
+
|not thread-safe
+
|instances are mutable
+
|-
+
|fr.cnes.sirius.patrius.time.LocalTime
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.utils.AbsoluteDateIntervalsList
+
|not thread-safe
+
|thread safety is not required for this class. And, TreeSet is not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.utils.EphemerisPvHermite
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.utils.EphemerisPvLagrange
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.utils.ReferencePointsDisplacement
+
|conditionally thread-safe
+
|is thread-safe if the celestial body is too.
+
|}
+
 
+
 
+
 
+
 
+
 
+
{| class="wikitable"
+
|-
+
! scope="col"| Class (total number : 162)
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.utils.UtilsPatrius
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.Assembly
+
|not thread-safe
+
|The use of a frame linked to the tree of frames in each of the parts makes this class not                    thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.AssemblyBuilder
+
|not thread-safe
+
|The assembly is not thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.assembly.MainPart
+
|not thread-safe
+
|The use of a frame linked to the tree of frames makes this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.Part
+
|not thread-safe
+
|The use of a frame linked to the tree of frames makes this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.AeroModel
+
|not thread-safe
+
|The use of a frame (Assembly attribute) linked to the tree of frames in each of the parts makes                    this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.AeroWrenchModel
+
|not thread-safe
+
|class uses internal mutable attributes and frames
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.DirectRadiativeModel
+
|not thread-safe
+
|The use of a frame (Assembly attribute) linked to the tree of frames in each of the parts makes                    this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.DirectRadiativeWrenchModel
+
|not thread-safe
+
|class uses internal mutable attributes and frames
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.DragLiftModel
+
|not thread-safe
+
|The use of a frame (Assembly attribute) linked to the tree of frames in each of the parts makes                    this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.InertiaComputedModel
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this class                    not thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.InertiaSimpleModel
+
|not thread-safe
+
|the frame and setters makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.MagneticMoment
+
|conditionally thread-safe
+
|thread-safe if the underlying frame is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.MassModel
+
|not thread-safe
+
|uses internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.RFLinkBudgetModel
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.RediffusedRadiativeModel
+
|not thread-safe
+
|The use of a frame (Assembly attribute) linked to the treeof frames in each of the parts makes this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.assembly.models.SensorModel
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.AeroApplicationPoint
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.AeroFacetProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.AeroGlobalProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.AeroSphereProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.CrossSectionProviderProperty
+
|conditionally thread-safe
+
|the CrossSectionProvider object must be immutable. In this case, thisclass is immutable itself and thus, is not subject to thread safety tests.
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.GeometricProperty
+
|conditionally thread-safe
+
|the SolidShape object must be immutable. In this case, thisclass is immutable itself and thus, is not subject to thread safety tests.
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.InertiaCylinderProperty
+
|not thread-safe
+
|the use of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.InertiaParallelepipedProperty
+
|not thread-safe
+
|the use of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.InertiaSimpleProperty
+
|not thread-safe
+
|the use of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.InertiaSphereProperty
+
|not thread-safe
+
|the use of frames makes this class not thread-safe
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.MassEquation
+
|not thread-safe
+
|internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.MassProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RFAntennaProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RadiativeApplicationPoint
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RadiativeFacetProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RadiativeIRProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RadiativeProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.RadiativeSphereProperty
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.SensorProperty
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.assembly.properties.features.Facet
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.bodies.BasicBoardSun
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.CentralBodyMaskCircularFOVDetector
+
|not thread-safe
+
|one attribute not thread-safe and one conditionally thread-safe
+
|-
+
|fr.cnes.sirius.patrius.events.CodedEvent
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.CodedEventsList
+
|not thread-safe
+
|no thread-sharing use case was identified for this class, so thread safety is not required.                    Though, some precautions are taken, as an example, the method getList() returns a copy of the                    list and not directly the attribute list itself.
+
|-
+
|fr.cnes.sirius.patrius.events.CodedEventsLogger
+
|not thread-safe
+
|no thread-sharing use case was identified for this class, so thread safety is not required.
+
|-
+
|fr.cnes.sirius.patrius.events.CombinedPhenomenaDetector
+
|not thread-safe or thread-hostile
+
|As of now, existing EventDetector implementations are either not thread-safe                    or thread-hostile, so this class also is.                    But this class could probably become conditionally thread-safe,                    the main thread safety condition would then be that the included EventDetector                    should be thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.events.EarthZoneDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.events.GenericCodingEventDetector
+
|not thread-safe or thread-hostile
+
|As of now, existing EventDetector implementations are either not thread-safe                    or thread-hostile, so this class also is.                    But this class could probably become conditionally thread-safe,                    the main thread safety condition would then be that the included EventDetector                    should be thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.events.PhenomenaList
+
|not thread-safe
+
|no thread-sharing use case was identified for this class, so thread safety is not required.                    Though, some precautions are taken, as an example, the method getList() returns a copy of the                    list and not directly the attribute list itself.
+
|-
+
|fr.cnes.sirius.patrius.events.Phenomenon
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.multi.MultiCodedEventsLogger
+
|not thread-safe
+
|no thread-sharing use case was identified for this class, so thread safety is not required.
+
|-
+
|fr.cnes.sirius.patrius.events.multi.MultiEventsLogger
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.multi.MultiGenericCodingEventDetector
+
|not thread-safe or thread-hostile
+
|As of now, existing MultiEventDetector implementations are either not thread-safe                    or thread-hostile, so this class also is.                    But this class could probably become conditionally thread-safe,                    the main thread safety condition would then be that the included MultiEventDetector                    should be thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.AndCriterion
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.DelayCriterion
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.ElementTypeFilter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.EventsDuringPhenomenaFilter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.MergePhenomenaCriterion
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.MergeTimelines
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.OccurrenceFilter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.OrCriterion
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.PhenomenonDurationFilter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.PolarizationSingleSelection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.PolarizationSwitch
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.TimeFilter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.events.postprocessing.Timeline
+
|not thread-safe
+
|the timeline is not thread safe due to the methods removeCodedEvent(CodedEvent) and                    removePhenomenon(Phenomenon)
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.ExtremaSightAxisDetector
+
|not thread-safe
+
|attributes are mutable and related to propagation,                    and the direct use of a not thread-safe Assembly makes this class not thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.MaskingDetector
+
|not thread-safe
+
|The use of a not thread-safe SensorModel makes this class not thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.RFVisibilityDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.SatToSatMutualVisibilityDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this class                    not thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.SecondarySpacecraft
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.SensorInhibitionDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.SensorVisibilityDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.StationToSatMutualVisibilityDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.TargetInFieldOfViewDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.events.sensor.VisibilityFromStationDetector
+
|not thread-safe
+
|the direct use of a not thread-safe Assembly makes this classnot thread-safe itself
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.AzimuthElevationField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.BooleanField
+
|conditionally thread-safe
+
|the used fields must be thread-safe themselves.All available fields are immutable.
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.CircularField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.EllipticField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.FieldAngularFace
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.InvertField
+
|conditionally thread-safe
+
|the used field must be thread-safe itself.All available fields are immutable.
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.OmnidirectionalField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.PyramidalField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.RectangleField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.fieldsofview.SectorField
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.EmpiricalForce
+
|not thread-safe
+
|attributes are mutable
+
|-
+
|fr.cnes.sirius.patrius.forces.maneuvers.ManeuversSequence
+
|not thread-safe
+
|The instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.SolarRadiationPressureEllipsoidCircular
+
|not thread-safe
+
|fields use Frames
+
|-
+
|fr.cnes.sirius.patrius.groundstation.GeometricStationAntenna
+
|not thread-safe
+
|link to the tree of frames
+
|-
+
|fr.cnes.sirius.patrius.groundstation.RFStationAntenna
+
|not thread-safe
+
|link to the tree of frames
+
|-
+
|fr.cnes.sirius.patrius.guidance.AngularVelocitiesHarmonicProfile
+
|conditionally thread-safe
+
|thread-safe if the Frame attribute is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.guidance.AngularVelocitiesPolynomialProfile
+
|conditionally thread-safe
+
|thread-safe if the attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.guidance.GuidanceProfileBuilder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.guidance.QuaternionHarmonicProfile
+
|conditionally thread-safe
+
|thread-safe if the Frame attribute is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.guidance.QuaternionPolynomialProfile
+
|conditionally thread-safe
+
|thread-safe if the attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.guidance.QuaternionPolynomialSegment
+
|conditionally thread-safe
+
|thread-safe if the UnivariateFunction attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.guidance.Vector3DPolynomialSegment
+
|conditionally thread-safe
+
|thread-safe if the UnivariateFunction attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.propagation.PVCoordinatePropagator
+
|not thread-safe
+
|extends the AbstractPropagator class
+
|-
+
|fr.cnes.sirius.patrius.propagation.SimpleAdditionalStateProvider
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.multi.AdaptedMonoEventDetector
+
|conditionally thread-safe
+
|Conditionally thread-safe if all attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.multi.AdaptedMultiEventDetector
+
|conditionally thread-safe
+
|Conditionally thread-safe if all attributes are thread-safe
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.multi.OneSatEventDetectorWrapper
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.multi.MultiEphemerisModeHandler
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.multi.MultiNumericalPropagator
+
|not thread-safe
+
|attributes are mutable and related to propagation.
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.multi.MultiStateVectorInfo
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.precomputed.multi.MultiIntegratedEphemeris
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.sampling.multi.MultiAdaptedStepHandler
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.sampling.multi.MultiPatriusStepNormalizer
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.AzoulayModel
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.SignalPropagation
+
|not thread-safe
+
|use of the frames tree
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.SignalPropagationModel
+
|not thread-safe
+
|use of the frames tree
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.iono.BentModel
+
|thread-safe
+
| with the use of a synchronized tag
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.iono.R12Loader
+
|conditionally thread-safe
+
|the instance is mutable, but no longer changes after the first call to getR12() (the first call                    triggers the DataProvidersManager on the instance).                    This means : an instance can be shared and used in several threads, if getR12() is called once                    in a single thread context first.
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.iono.USKData
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.signalpropagation.iono.USKLoader
+
|conditionally thread-safe
+
|the instance is mutable, but no longer changes after the first call to getData() (the first call                    triggers the DataProvidersManager on the instance).                    This means : an instance can be shared and used in several threads, if getData() is called once                    in a single thread context first.
+
|-
+
|fr.cnes.sirius.patrius.stela.JavaMathAdapter
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.PerigeeAltitudeDetector
+
|conditionally thread-safe
+
|the OrbitNatureConverter attribute needs to be thread-safe
+
|-
+
|fr.cnes.sirius.patrius.stela.StelaSpacecraftFactory
+
|unconditionally thread-safe
+
|access to the only static field is synchronized
+
|-
+
|fr.cnes.sirius.patrius.stela.bodies.EarthRotation
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.bodies.GeodPosition
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.bodies.MeeusMoonStela
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.bodies.MeeusSunStela
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.Squaring
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.StelaLagrangeEquations
+
|not thread-safe
+
|not thread-safe because two threads can simultaneously modify global attributes of the class
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.atmospheres.MSIS00Adapter
+
|thread-hostile
+
|The direct use of thread hostile objects makes this class thread hostile itself.
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.drag.StelaAeroModel
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.drag.StelaAtmosphericDrag
+
|not thread-safe
+
|not thread-safe due to use of mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.drag.StelaCd
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaTesseralAttraction
+
|not thread-safe
+
|not thread-safe due to use of mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaThirdBodyAttraction
+
|not thread-safe
+
|not thread-safe because two threads can simultaneously modify attributes of the class
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttraction
+
|conditionally thread-safe
+
|thread safe if the PotentialCoefficientsProvider used is thread safe
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ10
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ11
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ12
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ13
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ14
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ15
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ8
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.StelaZonalAttractionJ9
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.gravity.TesseralQuad
+
|not thread-safe
+
|use of internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.noninertial.NonInertialContribution
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.radiation.SRPPotential
+
|conditionally thread-safe
+
|thread safe if the CelestialBody used is thread safe
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.radiation.SRPSquaring
+
|conditionally thread-safe
+
|thread-safe if the given sun is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.stela.forces.radiation.StelaSRPSquaring
+
|conditionally thread-safe
+
|thread-safe if the SRPSquaring and SRPPotential models are thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.stela.orbits.JacobianConverter
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.orbits.OrbitNatureConverter
+
|not thread-safe
+
|instances are mutable
+
|-
+
|fr.cnes.sirius.patrius.stela.orbits.StelaEquinoctialOrbit
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.ForcesStepHandler
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.StelaBasicInterpolator
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.StelaDifferentialEquations
+
|not thread-safe
+
|not thread-safe due to use of mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.StelaGTOPropagator
+
|not thread-safe
+
|use of mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.StelaPartialDerivativesEquations
+
|not thread-safe
+
|use of mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.stela.propagation.data.TimeDerivativeData
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.orbits.pvcoordinates.AlmanacPVCoordinates
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.interval.AngleInterval
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.interval.AngleTools
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.Comparators
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.utils.GPSGalileoAlmanacParameter
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.interval.GenericInterval
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.wrenches.DragWrench
+
|not thread-safe
+
|class uses internal mutable attributes and frames
+
|-
+
|fr.cnes.sirius.patrius.wrenches.GenericWrenchModel
+
|not thread-safe
+
|uses frames
+
|-
+
|fr.cnes.sirius.patrius.wrenches.GravitationalAttractionWrench
+
|conditionally thread-safe
+
|thread-safe if the inertia model is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.wrenches.MagneticWrench
+
|conditionally thread-safe
+
|thread-safe if the underlying geo magnetic field is also thread-safe
+
|-
+
|fr.cnes.sirius.patrius.wrenches.SolarRadiationWrench
+
|not thread-safe
+
|class uses internal mutable attributes and frames
+
|}
+
 
+
=== Patrius-tools thread safety ===
+
 
+
Here is a list of all patrius-tools classes and thread-safety:
+
 
+
{| class="wikitable"
+
|-
+
! scope="col"| Class (total number : 23)
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.ComparisonData
+
|not thread-safe
+
|this class is not thread safe due to setThresholds(ArrayList)
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.Data
+
|not thread-safe
+
|matches the concurrency of the parameter type : using an immutable type is HIGHLY recommended
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.DateDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.DeviationProviderFactory
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.DoubleDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.EphemerisComparator
+
|not thread-safe
+
|it uses non thread-safe objects
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.EphemerisComparatorMain
+
|not thread-safe
+
|it uses non thread-safe objects
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.MeaningfulData
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.MeaningfulDataComparator
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.PSimuDataLoader
+
|not thread-safe
+
|the file could be tampered with while reading it
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.PVCoordinatesDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.QuaternionDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.RawDataComparator
+
|not thread-safe
+
|this class is not thread safe due to the attribute 'relative' which can change
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.Report
+
|thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.RotationDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.Setup
+
|not thread-safe
+
|this class is not thread safe due to the fact that some attributes are not private
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.ThresholdsData
+
|not thread-safe
+
|this class is not thread safe due to getFirstRefusedLines()
+
|-
+
|fr.cnes.sirius.patrius.tools.ephemerisComparator.VectorDPFacade
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.exception.EphemerisComparatorException
+
|not thread-safe
+
|extends Exception
+
|-
+
|fr.cnes.sirius.patrius.tools.exception.EphemerisComparatorRuntimeException
+
|not thread-safe
+
|extends Exception
+
|-
+
|fr.cnes.sirius.patrius.tools.force.validation.BasicPVCoordinatesProvider
+
|not thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.force.validation.PVEphemerisLoader
+
|not thread safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.tools.force.validation.Report
+
|not thread safe
+
|
+
|}
+
 
+
{| class="wikitable"
+
|-
+
! scope="col"| Class
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.integration.TrapezoidIntegrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.integration.SimpsonIntegrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.BicubicSplineInterpolatingFunction
+
|not thread-safe
+
|Instances are mutable (unprotected lazy initialization).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.BicubicSplineInterpolator
+
|unconditionally thread-safe
+
|Would be immutable if the class were final.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.TricubicSplineInterpolatingFunction
+
|unconditionally thread-safe
+
|Would be immutable if the class were final.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.interpolation.TricubicSplineInterpolator
+
|unconditionally thread-safe
+
|Would be immutable if the class were final.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.PolynomialFunction
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.PolynomialFunctionLagrangeForm
+
|not thread-safe
+
|Instances are mutable (unprotected lazy initialization).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.PolynomialFunctionNewtonForm
+
|not thread-safe
+
|Instances are mutable (unprotected lazy initialization).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.polynomials.HelmholtzPolynomial
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.solvers.BrentSolver
+
|not thread-safe
+
|Instances are mutable (inner Incrementor instance).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.solvers.NewtonSolver
+
|not thread-safe
+
|Instances are mutable (inner Incrementor instance).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.solvers.BisectionSolver
+
|not thread-safe
+
|Instances are mutable (inner Incrementor instance).
+
|-
+
|fr.cnes.sirius.patrius.math.analysis.solvers.MullerSolver
+
|not thread-safe
+
|Instances are mutable (inner Incrementor instance).
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Plane
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Rotation
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.RotationOrder
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Vector3D
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.math.geometry.euclidean.threed.Screw
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.math.linear.Array2DRowRealMatrix
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.linear.ArrayRealVector
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.linear.CholeskyDecompositionImpl
+
|not thread-safe
+
|Exposed mutable attributes (getters on RealMtrix).
+
|-
+
|fr.cnes.sirius.patrius.math.linear.LUDecompositionImpl
+
|not thread-safe
+
|Exposed mutable attributes (getters on RealMtrix).
+
|-
+
|fr.cnes.sirius.patrius.math.linear.QRDecompositionImpl
+
|not thread-safe
+
|Exposed mutable attributes (getters on RealMtrix).
+
|-
+
|fr.cnes.sirius.patrius.math.ode.events.EventHandler
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.ode.events.EventException
+
|unconditionally thread-safe
+
|Would be immutable if the class were final.
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.ClassicalRungeKuttaIntegrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.DormandPrince54Integrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.DormandPrince853Integrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.ode.nonstiff.GraggBulirschStoerIntegrator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.random.JDKRandomGenerator
+
|thread-safe
+
|Extends a class from the Java API whose thread-safety status is undocumented, but probably thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.math.stat.StatUtils
+
|immutable
+
|Final utility class with reentrant static methods only.
+
|-
+
|fr.cnes.sirius.patrius.math.stat.descriptive.rank.Median
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.stat.descriptive.rank.Percentile
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.math.util.FastMath
+
|immutable
+
|Final utility class with reentrant static methods only.
+
|-
+
|fr.cnes.sirius.patrius.math.util.MathUtils
+
|immutable
+
|Final utility class with reentrant static methods only.
+
|}
+
 
+
* when these are documented as "immutable" in their javadoc, it is stated so.
+
* the remainder was evaluated by the PATRIUS team.
+
 
+
The list of all validated classes is also available in the SVS.
+
 
+
NOTE : thread hostility has not been systematically researched, so it is not fully documented in this revision.
+
 
+
{| class="wikitable"
+
|-
+
! scope="col"| Class
+
! scope="col"| Concurrency
+
! scope="col"| Comment
+
|-
+
|fr.cnes.sirius.patrius.attitudes.Attitude
+
|conditionally thread-safe
+
|Exposed mutable attribute (getter on Frame), Attitude is thread-safe when the Frame is.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.AttitudesSequence
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.BodyCenterPointing
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.CelestialBodyPointed
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.BodyCenterGroundPointing.java
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.FixedRate
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.InertialProvider
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.LofOffset
+
|conditionally thread-safe
+
|Is thread-safe when the Frame attribute is.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.NadirPointing
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.SpinStabilized
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.TargetGroundPointing.java
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.TargetPointing
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.YawCompensation
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.YawSteering
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.kinematics.KinematicsToolkit
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.attitudes.kinematics.AbstractOrientationFunction
+
|conditionally thread-safe
+
|Thread-safe if the attribute differentiator is thread-safe and if the implementation of this abstract class is thread-safe too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.kinematics.AbstractVector3DFunction
+
|conditionally thread-safe
+
|Thread-safe if the attributes differentiator and integrator are thread-safe and if the implementation of this abstract class is thread-safe too.
+
|-
+
|fr.cnes.sirius.patrius.attitudes.kinematics.DynamicsElements
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.bodies.GeodeticPoint
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.bodies.JPLEphemeridesLoader
+
|conditionally thread-safe
+
|Unprotected mutable fields are modified by the loadData() method. If this method call is protected, the instance is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.bodies.OneAxisEllipsoid
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.data.ClasspathCrawler
+
|conditionally thread-safe
+
|The feed() method modifies a mutable reference (DataLoader) that may not be thread-safe. If the call to feed() is protected and the DataLoader is not thread-hostile, OR if the DataLoader is thread-safe, then the instance is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.data.DataProvidersManager
+
|thread-hostile
+
|Contains an unprotected singleton.
+
|-
+
|fr.cnes.sirius.patrius.data.DirectoryCrawler
+
|conditionally thread-safe
+
|The feed() method modifies a mutable reference (DataLoader) that may not be thread-safe. If the call to feed() is protected and the DataLoader is not thread-hostile, OR if the DataLoader is thread-safe, then the instance is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.data.NetworkCrawler
+
|conditionally thread-safe
+
|The feed() method modifies a mutable reference (DataLoader) that may not be thread-safe. If the call to feed() is protected and the DataLoader is not thread-hostile, OR if the DataLoader is thread-safe, then the instance is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.data.PoissonSeries
+
|unconditionally thread-safe
+
|Technically non-immutable, but immutable "in practice".
+
|-
+
|fr.cnes.sirius.patrius.data.ZipJarCrawler
+
|conditionally thread-safe
+
|The feed() method modifies a mutable reference (DataLoader) that may not be thread-safe. If the call to feed() is protected and the DataLoader is not thread-hostile, OR if the DataLoader is thread-safe, then the instance is thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.utils.exception.PatriusException
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.utils.exception.PropagationException
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.ConstantFunction
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.IJacobiansParameterizable
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.IParamDiffFunction
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.IParameterizableFunction
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.LinearFunction
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.Parameter
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.Parameterizable
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.PiecewiseFunction
+
|not thread-safe
+
|uses internal mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.BoxAndSolarArraySpacecraft
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.forces.drag.DTM2000
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.drag.DragForce
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.BalminoAttractionModel.java
+
|not thread-safe
+
|uses internal mutable attributes
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.potential.EGMFormatReader
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.potential.GravityFieldFactory
+
|unconditionally thread-safe
+
|Access to mutable fields are synchronized.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.potential.GRGSFormatReader
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.potential.ICGEMFormatReader
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.potential.SHMFormatReader
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.CunninghamAttractionModel
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.DrozinerAttractionModel
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.GravityToolbox.java
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.NewtonianAttraction
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.gravity.ThirdBodyAttraction
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.maneuvers.ConstantThrustManeuver
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.forces.radiation.SolarRadiationPressureCircular
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.frames.Frame
+
|not thread-safe
+
|Unprotected mutable attribute- but thread-safety problems relative to this attribute have yet to be found, so Frame is "almost" thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.frames.FramesFactory
+
|unconditionally thres-safe
+
|Access to mutable fields are synchronized. NOTE : The IERS frames provided by this class are thread-safe, these are provided by the getGCRF(), getCIRF(), getTIRF() and getITRF() methods.
+
|-
+
|fr.cnes.sirius.patrius.frames.LocalOrbitalFrame
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.frames.OrphanFrame
+
|unconditionally thread-safe
+
|No attributes, static methods only.
+
|-
+
|fr.cnes.sirius.patrius.frames.TopocentricFrame
+
|not thread-safe
+
|Is a Frame.
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.DiurnalRotation
+
|conditionally thread-safe
+
|thread-safe if constructor parameters are thread safe
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.FramesConfigurationFactory
+
|thread-safe
+
|only static methods
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.FramesConfigurationImplementation
+
|conditionally thread-safe
+
|thread-safe if constructor parameters are thread safe
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.PolarMotion
+
|conditionally thread-safe
+
|thread-safe if constructor parameters are thread safe
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.AbstractEOPHistory
+
|conditionally thread-safe
+
|Uses the time stamped cache mechanism. Thread-safe as long as the mechanisms that add entries to the lists do so in a thread-safe manner (see EOPHistoryFactory).
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.BulletinBFilesLoader
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP05C04FilesLoader
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP08C04FilesLoader
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP1980Entry
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP1980History.java
+
|unconditionally thread-safe
+
|Uses the time stamped cache mechanism|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP2000Entry
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOP2000History
+
|unconditionally thread-safe
+
|Uses the time stamped cache mechanism|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOPEntry
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.EOPHistoryFactory
+
|unconditionally thread-safe
+
|getters use synchronized keyword were access to loader lists is performed
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.NoEOP2000History
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.NutationCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.PoleCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.RapidDataAndPredictionColumnsLoader
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.eop.RapidDataAndPredictionXMLLoader
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.libration.LibrationCorrectionModelFactory
+
|immutable
+
|only static final fields
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.libration.IERS2010LibrationCorrection
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.libration.NoLibrationCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.precessionnutation.CIPCoordinates
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.precessionnutation.CIPCoordinatesGenerator
+
|conditionally thread-safe
+
|As long as a generator is referenced by one {@link TimeStampedCache cache} only, it is guaranteed to be called in a thread-safe way, even if the cache is used in a multi-threaded environment.
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.precessionnutation.IERS20032010PrecessionNutation
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.precessionnutation.PrecessionNutationCache
+
|conditionally thread-safe
+
|thread safe if precession nutation model is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.precessionnutation.PrecessionNutationModelFactory
+
|immutable
+
|only static final fields
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.sp.IERS2010SPCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.sp.NoSpCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.sp.SPrimeModelFactory
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.TidelCorrectionCache
+
|conditionally thread-safe
+
|thread safe if tides model is thread-safe
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.TidalCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.TidalCorrectionGenerator
+
|conditionally thread-safe
+
|As long as a generator is referenced by one {@link TimeStampedCache cache} only, it is guaranteed to be called in a thread-safe way, even if the cache is used in a multi-threaded environment.
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.IERS2000TidalCorrection
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.IERS2010TidalCorrection
+
|unconditionally thread-safe
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.NoTidalCorrection
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.configuration.tides.TidalCorrectionModelFactory
+
|immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.frames.transformations.HelmertTransformation
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.frames.transformations.Transform
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.models.earth.COFFileFormatReader.java
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.models.earth.FixedDelayModel.java
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.models.earth.GeoMagneticModelReader.java
+
|not thread-safe
+
|instance is mutable
+
|-
+
|fr.cnes.sirius.patrius.models.earth.GeoMagneticElements
+
|unconditionally thread-safe
+
|Would be immutable if the class were final
+
|-
+
|fr.cnes.sirius.patrius.models.earth.GeoMagneticField
+
|not thread-safe
+
|Instance are mutable
+
|-
+
|fr.cnes.sirius.patrius.models.earth.GeoMagneticFieldFactory
+
|unconditionally thread-safe
+
|Access to mutable fields are synchronized.
+
|-
+
|fr.cnes.sirius.patrius.models.earth.ModelLoader
+
|not thread-safe
+
|Mutable fields
+
|-
+
|fr.cnes.sirius.patrius.orbits.CartesianOrbit
+
|immutable
+
|Modified by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.orbits.CircularOrbit
+
|immutable
+
|Modified by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.orbits.EquinoctialOrbit
+
|immutable
+
|Modified by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.orbits.KeplerianOrbit
+
|immutable
+
|Modified by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.orbits.ApsisOrbit
+
|immutable
+
|Created by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.orbits.EquatorialOrbit
+
|immutable
+
|Created by Patrius team.
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.EcksteinHechlerPropagator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.analytical.KeplerianPropagator
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AdaptedAdditionalStatesEventDetector
+
|conditionally thread-safe
+
|if all attributes are thread safe.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AdaptedEventDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AdditionalStatesEventsLogger
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AlignmentDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.AltitudeDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ApsideDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.CircularFieldOfViewDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.DateDetector
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.DihedralFieldOfViewDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.EclipseDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.ElevationDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.EventShifter
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.EventsLogger
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.EventState
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.GroundMaskElevationDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.NodeDetector
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.AdditionalStateInfo
+
|Immutable
+
|
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.JacobiansMapper
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.propagation.numerical.NumericalPropagator
+
|not thread-safe
+
|As documented.
+
|-
+
|fr.cnes.sirius.patrius.propagation.events.PartialDerivativesEquations
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.precomputed.Ephemeris
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.precomputed.IntegratedEphemeris
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.sampling.AdaptedStepHandler
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.propagation.SpacecraftState
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.propagation.SimpleMassModel.java
+
|not thread-safe
+
|instance is mutable. WARNING : this class is wrongfully documented as immutable (javadoc)! It is mutable.
+
|-
+
|fr.cnes.sirius.patrius.time.AbsoluteDate
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.time.DateComponents
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.time.DateTimeComponents
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.time.GalileoScale
+
|unconditionally thread-safe
+
|Would be immutable if the class were final.
+
|-
+
|fr.cnes.sirius.patrius.time.GPSScale
+
|thread-hostile
+
|A deprecated method calls the thread-hostile TimeScalesFactory. When this method is removed, the class will become thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.time.TimeComponents
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.time.TimeScalesFactory
+
|thread-hostile
+
|Contains unprotected singletons.
+
|-
+
|fr.cnes.sirius.patrius.time.TAIScale
+
|thread-hostile
+
|A deprecated method calls the thread-hostile TimeScalesFactory. When this method is removed, the class will become thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.time.TTScale
+
|thread-hostile
+
|A deprecated method calls the thread-hostile TimeScalesFactory. When this method is removed, the class will become thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.time.UTCScale
+
|thread-hostile
+
|A deprecated method calls the thread-hostile TimeScalesFactory. When this method is removed, the class will (likely) become thread-safe.
+
|-
+
|fr.cnes.sirius.patrius.time.UTCTAIHistoryFilesLoader
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.time.UTCTAIOffset
+
|not thread-safe
+
|Instances are mutable.
+
|-
+
|fr.cnes.sirius.patrius.time.UT1Scale
+
|not thread-safe
+
|Exposed mutable attributes.
+
|-
+
|fr.cnes.sirius.patrius.utils.PVCoordinates
+
|unconditionally thread-safe
+
|Would be immutable if the class were final- documented as immutable, but technically untrue.
+
|-
+
|fr.cnes.sirius.patrius.wrenches.Wrench.java
+
|immutable
+
|
+
|}
+
  
 
==== Note : Frames and thread-safety ====
 
==== Note : Frames and thread-safety ====

Version du 27 août 2024 à 09:17

Introduction

This document is the main user manual of the PATRIUS library, which provides Java classes in a wide range of themes related with space flight dynamics.

The library has several purposes :

  • to be a basis for the next generation FDS development
  • to be used in mission analysis and internal studies

Its classes contain the main basis algorithms and objects representation that shall be used in further developments.

For each theme, a specific manual is available.

Applicable and Reference Documents

Applicable Documents

[A1] CDCF- Fonctions de Base du Patrimoine de Dynamique du Vol, V1.2, SIRIUS-CF-DV-0049-CN, 2011.
[A2] Dossier de réutilisation Orekit et Commons Math, V1.0, SIRIUS-DLR-DV-0080-CN, 2010.

Glossary

SDD Software Design Document
SRS Software Requirements Specification
SUM Software User Manual
SValP Software Validation Plan
SVerP Software Verification Plan
SVS Software Validation Specification

Conventions

All the user manuals contain some java code sample as use examples.

These samples are recognizable by the following colors convention :

Vector3D originCone = new Vector3D(1.0, 1.0, 1.0);
Vector3D direction = new Vector3D(2.0, 0.0, 0.0);
double angle = FastMath.PI / 4.0;
double height = 5.0;
RightCircularCone cone = new RightCircularCone(originCone, axis, angle, height);

PATRIUS uses the International System of Units (SI units) (m, kg, s, N, etc.). It is used for all PATRIUS input/output as well as internally for any computation.

Overview

This document is an aid for developers coding software using the PATRIUS library. The library provides Java classes to represent basis objects and contains low level algorithms to be used in the new FDS and mission analysis softwares. The user guide describes and explains the use of every class and functionality available.

Each theme of the library is the object of a specific document. These themes are :

  • Math basis
  • Flight dynamics basis
  • Attitude
  • Spacecraft
  • Orbits
  • Mission
  • Tools
  • Support

PATRIUS is under Apache Licence 2.0.

Quick Start

Here is a description of each theme of the PATRIUS library and an overview of its contents. See each associated document for the details.

Mathematics

This theme is not directly linked to flight dynamics. It include. It provides the mathematical tools for the rest of the library.

Its contains classes for :

  • function analysis (interpolations, polynomials, ...)
  • numerical intergrators
  • geometry (planes, lines, shapes, rotations, 3d vectors and matrixes...)
  • low level functions and constants (sine, cosine, PI, ...)
  • linear algebra (real matrix and vectors, decompositions and other matrix computations, ...

The Mathematics User Manual can be found here.

Flight Dynamics

This theme contains the basis of orbital mechanics :

  • position-velocity and orbital parameters conversions
  • frames and frames transforms
  • dates and time scales
  • time intervals

The Flight Dynamics User Manual can be found here.

Spacecraft

This theme contains everything useful to describe a spacecraft and its use :

  • general architecture (describing the spacecraft by one or several parts)
  • geometry
  • mass caracteristics
  • equipments (GS, antenna, instruments and associated computations...)
  • caracteristics used in forces computations (radiative, drag...)
  • torques computations

The Spacecraft User Manual can be found here.

Attitude

This theme contains the tools to predict the spacecraft attitude:

  • attitude laws
  • cinematics and guidance

The Attitude User Manual can be found here.

Orbits

This theme contains everything useful to propagate an orbit in time and perform orbits restitutions :

  • numerical and analytical propagators
  • physical models (for forces)
  • Measures and filtering tools

The Orbits User Manual can be found here.

Mission

This theme regroups the events computation, projections and use tools.

The Mission User Manual can be found here.

Tools

This theme comprises some external tools such as the ephemeris comparator.

The Tools User Manual can be found here.

Support

This theme is cross-functional. It contains for example the explaination of the data manager use and action.

The Support User Manual can be found here.

Thread-Safety

For all content belonging to the PATRIUS library, the thread safety of every class will be evaluated, and the results listed here.

The known levels of thread safety for a class are:

  • immutable: the contents of an instance never change after creation, therefore the class is thread-safe.
  • unconditionally thread-safe / thread-safe: the whole class is thread-safe by design.
  • conditionally thread-safe: the class is thread-safe if certain conditions (specific to the class) are met.
  • not thread-safe: the class is not thread-safe. If the class is used in a threaded environment, all accesses

to the class must be synchronized.

  • thread-hostile: the class is known to break threads, even when no instance is shared between threads!

About the comments

Some recurring comments are explained here :

  • "Exposed mutable attributes.": the class contains attributes that either "come" from outside the class, or whose reference can be obtained from the class. Unless the attributes are thread-safe or accessed in a thread-safe manner somehow, this breaks the thread safety of the class.
  • "documented as immutable, but technically untrue": Patrius document classes that are non-final as immutable- but the (quite strict) usual definition of immutability mandates that an immutable class must be final, because a non-final class can be subclassed and this subclass can break immutability "silently" (an user could access this subclass through the superclass reference and believe it is immutable due to the superclasses' documentation.) Therefore: when a class is documented as immutable, it means only the documented implementation is immutable. For safety, we chose to document these classes here as "unconditionally thread-safe", a statement that is not assumed to be preserved by subclassing.

Thread safety

Details concerning the thread safety for each of the PATRIUS classes can be found here here.

Note : Frames and thread-safety

It was determined that several Frame implementations were thread-hostile.

The current evaluation of these changes from a thread-safety point of view leads us to state the following :

  • The IERS frames (GCRF, CIRF, TIRF and ITRF) are thread-safe.

Known Issues

None.

Sous-catégories

Cette catégorie comprend 8 sous-catégories, dont les 8 ci-dessous.