Catégorie:User Manual 4.2

De Wiki
Aller à : navigation, rechercher

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);

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

Class (total number : 43) Concurrency 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
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 (total number : 103) Concurrency 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 (total number : 162) Concurrency 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 not thread-safe
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 (total number : 23) Concurrency 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 Concurrency 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 Concurrency 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
fr.cnes.sirius.patrius.frames.configuration.eop.EOP2000Entry immutable
fr.cnes.sirius.patrius.frames.configuration.eop.EOP2000History unconditionally thread-safe
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

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 6 sous-catégories, dont les 6 ci-dessous.