├── version ├── cmake_modules ├── yolo │ ├── YOLOProjectCleanup.cmake │ ├── README.md │ └── YOLOProjectAddExternalData.cmake └── FindNLOPT.cmake ├── tests ├── src │ ├── support │ │ ├── numericalIntegratorTests.cpp │ │ └── CMakeLists.txt │ ├── interface │ │ ├── json │ │ │ └── inputs │ │ │ │ ├── unitTestMassRateModel │ │ │ │ ├── types.json │ │ │ │ └── fromThrust.json │ │ │ │ ├── unitTestRadiationPressure │ │ │ │ ├── types.json │ │ │ │ └── cannonBall.json │ │ │ │ ├── unitTestTorque │ │ │ │ ├── aerodynamic.json │ │ │ │ ├── secondOrderGravitational.json │ │ │ │ └── types.json │ │ │ │ ├── unitTestAtmosphere │ │ │ │ ├── nrlmsise00.json │ │ │ │ ├── models.json │ │ │ │ ├── nrlmsise00_custom.json │ │ │ │ ├── exponential.json │ │ │ │ └── tabulated.json │ │ │ │ ├── unitTestThrust │ │ │ │ ├── frameTypes.json │ │ │ │ ├── magnitudeTypes.json │ │ │ │ ├── directionTypes.json │ │ │ │ ├── directionMagnitude.json │ │ │ │ └── interpolated.json │ │ │ │ ├── unitTestShapeModel │ │ │ │ ├── sphericalSpice.json │ │ │ │ ├── spherical.json │ │ │ │ ├── types.json │ │ │ │ └── oblateSpherical.json │ │ │ │ ├── unitTestGravityField │ │ │ │ ├── pointMassSpice.json │ │ │ │ ├── pointMass.json │ │ │ │ ├── types.json │ │ │ │ ├── sphericalHarmonic_model.json │ │ │ │ ├── sphericalHarmonicModels.json │ │ │ │ ├── sh_manualparam.txt │ │ │ │ ├── sphericalHarmonic_file.json │ │ │ │ ├── sh.txt │ │ │ │ ├── sphericalHarmonic_file_manualparam.json │ │ │ │ └── sphericalHarmonic_direct.json │ │ │ │ ├── unitTestAerodynamics │ │ │ │ ├── coefficientsTypes.json │ │ │ │ ├── dragCoefficient.json │ │ │ │ ├── variables.json │ │ │ │ ├── constant.json │ │ │ │ ├── tabulatedN.json │ │ │ │ └── tabulated1.json │ │ │ │ ├── unitTestInterpolation │ │ │ │ ├── fromFileDataMap.json │ │ │ │ ├── lookupSchemes.json │ │ │ │ ├── boundaryHandlings.json │ │ │ │ ├── lagrangeInterpolator.json │ │ │ │ ├── types.json │ │ │ │ ├── interpolator.json │ │ │ │ ├── modelInterpolation.json │ │ │ │ ├── dataMap.json │ │ │ │ ├── dataInterpolation.json │ │ │ │ ├── independentDependentDataMap.json │ │ │ │ ├── hermiteDataMap.json │ │ │ │ └── thrustValues.txt │ │ │ │ ├── unitTestState │ │ │ │ ├── direct.json │ │ │ │ ├── types.json │ │ │ │ ├── cartesian.json │ │ │ │ ├── keplerian1.json │ │ │ │ ├── keplerian4.json │ │ │ │ ├── keplerian3.json │ │ │ │ ├── keplerian2.json │ │ │ │ ├── keplerian9.json │ │ │ │ ├── keplerian8.json │ │ │ │ ├── keplerian5.json │ │ │ │ ├── spherical.json │ │ │ │ ├── spherical_altitude.json │ │ │ │ ├── keplerian0.json │ │ │ │ ├── keplerian7.json │ │ │ │ └── keplerian6.json │ │ │ │ ├── unitTestPropagator │ │ │ │ ├── types.json │ │ │ │ ├── translationalTypes.json │ │ │ │ ├── mass.json │ │ │ │ ├── rotational.json │ │ │ │ └── translational.json │ │ │ │ ├── unitTestDeserialization │ │ │ │ ├── mergeable │ │ │ │ │ ├── rk4.json │ │ │ │ │ ├── inputs │ │ │ │ │ │ ├── merge1.json │ │ │ │ │ │ ├── merge2.json │ │ │ │ │ │ └── merge3.json │ │ │ │ │ └── shared.json │ │ │ │ ├── modular │ │ │ │ │ ├── rk4.json │ │ │ │ │ ├── propagator.json │ │ │ │ │ ├── main.json │ │ │ │ │ ├── bodies.json │ │ │ │ │ ├── export │ │ │ │ │ │ └── export.json │ │ │ │ │ └── variables │ │ │ │ │ │ └── main.json │ │ │ │ └── valueAccess.json │ │ │ │ ├── unitTestIntegrator │ │ │ │ ├── euler.json │ │ │ │ ├── rksets.json │ │ │ │ ├── types.json │ │ │ │ ├── rungeKutta4.json │ │ │ │ ├── bulirschStoer.json │ │ │ │ ├── adamsBashforthMoulton.json │ │ │ │ └── rungeKuttaVariableStepSize.json │ │ │ │ ├── unitTestGravityFieldVariation │ │ │ │ ├── bodyDeformationTypes.json │ │ │ │ ├── basicSolidBody.json │ │ │ │ └── tabulated.json │ │ │ │ ├── unitTestRotationModel │ │ │ │ ├── types.json │ │ │ │ ├── spice.json │ │ │ │ ├── gcrsItrs.json │ │ │ │ ├── synchronous.json │ │ │ │ └── simple.json │ │ │ │ ├── unitTestVariable │ │ │ │ ├── dependent.json │ │ │ │ ├── types.json │ │ │ │ ├── acceleration.json │ │ │ │ ├── relativeBodyAerodynamicOrientationAngle.json │ │ │ │ ├── torque.json │ │ │ │ ├── intermediateAerodynamicRotationMatrix.json │ │ │ │ ├── sphericalHarmonicAccelerationTerms.json │ │ │ │ ├── singleGravityFieldVariationAcceleration.json │ │ │ │ ├── accelerationPartialWrtBodyTranslationalState.json │ │ │ │ ├── singleGravityFieldVariationAccelerationTerms.json │ │ │ │ └── dependentTypes.json │ │ │ │ ├── unitTestGroundStation │ │ │ │ ├── positionElementTypes.json │ │ │ │ ├── singleGroundStationCartesian.json │ │ │ │ ├── singleGroundStationGeodetic.json │ │ │ │ └── singleGroundStationSpherical.json │ │ │ │ ├── unitTestAcceleration │ │ │ │ ├── sphericalHarmonicGravity.json │ │ │ │ ├── types.json │ │ │ │ ├── empirical.json │ │ │ │ ├── relativisticCorrection.json │ │ │ │ └── mutualSphericalHarmonicGravity.json │ │ │ │ ├── unitTestReferenceFrames │ │ │ │ ├── aerodynamic.json │ │ │ │ └── aerodynamicAngles.json │ │ │ │ ├── unitTestSpice │ │ │ │ ├── standard.json │ │ │ │ ├── custom.json │ │ │ │ └── alternative.json │ │ │ │ ├── unitTestEphemeris │ │ │ │ ├── types.json │ │ │ │ ├── constant.json │ │ │ │ ├── approximatePlanetPositions.json │ │ │ │ ├── bodiesWithEphemerisData.json │ │ │ │ ├── directSpice.json │ │ │ │ ├── interpolatedSpice.json │ │ │ │ ├── kepler.json │ │ │ │ └── tabulated.json │ │ │ │ ├── unitTestTermination │ │ │ │ ├── single.json │ │ │ │ ├── anyOf.json │ │ │ │ └── allOf.json │ │ │ │ ├── unitTestExport │ │ │ │ ├── fullResult.json │ │ │ │ └── partialResult.json │ │ │ │ ├── unitTestSimulationThrustAccelerationFromFile │ │ │ │ └── thrustValues.txt │ │ │ │ └── unitTestSimulationSingleSatellite │ │ │ │ └── main.json │ │ ├── CMakeLists.txt │ │ ├── spice │ │ │ └── CMakeLists.txt │ │ └── sofa │ │ │ └── CMakeLists.txt │ ├── astro │ │ ├── propulsion │ │ │ └── CMakeLists.txt │ │ ├── orbit_determination │ │ │ ├── rotational_dynamics_partials │ │ │ │ └── CMakeLists.txt │ │ │ └── acceleration_partials │ │ │ │ └── CMakeLists.txt │ │ ├── ground_stations │ │ │ └── CMakeLists.txt │ │ ├── relativity │ │ │ └── CMakeLists.txt │ │ ├── reference_frames │ │ │ └── CMakeLists.txt │ │ ├── low_thrust │ │ │ ├── CMakeLists.txt │ │ │ └── shape_based │ │ │ │ └── CMakeLists.txt │ │ └── CMakeLists.txt │ ├── math │ │ ├── geometric │ │ │ └── CMakeLists.txt │ │ ├── quadrature │ │ │ └── CMakeLists.txt │ │ ├── CMakeLists.txt │ │ ├── root_finders │ │ │ └── CMakeLists.txt │ │ ├── filters │ │ │ └── CMakeLists.txt │ │ ├── basic │ │ │ └── CMakeLists.txt │ │ └── statistics │ │ │ └── CMakeLists.txt │ ├── basics │ │ └── CMakeLists.txt │ └── simulation │ │ └── CMakeLists.txt ├── data.zip ├── CMakeLists.txt └── include │ └── tudat │ └── astro │ └── aerodynamics │ └── applicationOutput.h ├── docs ├── requirements.txt ├── img.png ├── sphinx │ ├── Makefile │ └── make.bat └── doxygen-old │ └── mainDoxygenPage.h ├── src ├── simulation │ ├── estimation_setup │ │ ├── createEstimatableParameters.cpp │ │ ├── orbitDeterminationManager.cpp │ │ └── createEulerAngleObservationPartials.cpp │ ├── propagation_setup │ │ └── environmentUpdater.cpp │ └── CMakeLists.txt ├── math │ ├── filters │ │ ├── filter.cpp │ │ └── CMakeLists.txt │ ├── quadrature │ │ ├── dummyNumericalQuadrature.cpp │ │ ├── createNumericalQuadrature.cpp │ │ ├── CMakeLists.txt │ │ └── gaussianQuadrature.cpp │ ├── integrators │ │ ├── numericalIntegrator.cpp │ │ ├── rungeKutta4Integrator.cpp │ │ ├── adamsBashforthMoultonIntegrator.cpp │ │ ├── rungeKuttaVariableStepSizeIntegrator.cpp │ │ └── reinitializableNumericalIntegrator.cpp │ ├── interpolators │ │ ├── multiLinearInterpolator.cpp │ │ ├── interpolator.cpp │ │ ├── lagrangeInterpolator.cpp │ │ └── cubicSplineInterpolator.cpp │ ├── CMakeLists.txt │ ├── basic │ │ └── basicMathematicsFunctions.cpp │ └── root_finders │ │ └── CMakeLists.txt ├── astro │ ├── system_models │ │ ├── dummySystemModel.cpp │ │ └── CMakeLists.txt │ ├── basic_astro │ │ ├── accelerationModel.cpp │ │ ├── torqueModel.cpp │ │ └── physicalConstants.cpp │ ├── ephemerides │ │ ├── compositeEphemeris.cpp │ │ └── tabulatedRotationalEphemeris.cpp │ ├── propagators │ │ ├── nBodyCowellStateDerivative.cpp │ │ ├── nBodyEnckeStateDerivative.cpp │ │ └── rotationalMotionStateDerivative.cpp │ ├── ground_stations │ │ ├── groundStation.cpp │ │ └── CMakeLists.txt │ ├── observation_models │ │ ├── simulateObservations.cpp │ │ ├── lightTimeSolution.cpp │ │ ├── observationModel.cpp │ │ └── observationManager.cpp │ ├── relativity │ │ ├── metric.cpp │ │ └── CMakeLists.txt │ ├── orbit_determination │ │ ├── podInputOutputTypes.cpp │ │ ├── CMakeLists.txt │ │ ├── observation_partials │ │ │ ├── observationPartial.cpp │ │ │ ├── positionPartials.cpp │ │ │ └── firstOrderRelativisticPartial.cpp │ │ └── rotational_dynamics_partials │ │ │ └── CMakeLists.txt │ ├── gravitation │ │ └── mutualSphericalHarmonicGravityModel.cpp │ ├── electromagnetism │ │ ├── cannonBallRadiationPressureForce.cpp │ │ ├── lorentzStaticMagneticForce.cpp │ │ ├── cannonBallRadiationPressureAcceleration.cpp │ │ └── lorentzStaticMagneticAcceleration.cpp │ ├── propulsion │ │ ├── CMakeLists.txt │ │ └── thrustFunctions.cpp │ ├── CMakeLists.txt │ ├── reference_frames │ │ └── CMakeLists.txt │ ├── low_thrust │ │ └── CMakeLists.txt │ └── aerodynamics │ │ └── aerodynamicCoefficientGenerator.cpp ├── utils │ ├── CMakeLists.txt │ └── data │ │ └── CMakeLists.txt ├── interface │ ├── CMakeLists.txt │ ├── json │ │ ├── jsonInterface.cpp │ │ ├── jsonEstimationInterface.cpp │ │ └── jsonInterfaceVariational.cpp │ ├── spice │ │ └── CMakeLists.txt │ └── sofa │ │ └── CMakeLists.txt ├── io │ ├── tabulatedAtmosphereReader.cpp │ ├── linearFieldTransform.cpp │ ├── fieldValue.cpp │ └── util.cpp └── basics │ └── CMakeLists.txt ├── .deepsource.toml ├── examples ├── tudat │ ├── CMakeLists.txt │ └── satellite_propagation │ │ ├── testThrustValues.txt │ │ ├── new │ │ └── SingleSatelliteThrust.cpp │ │ ├── applicationOutput.h │ │ ├── CMakeLists.txt │ │ └── singleUnperturbedSatellitePropagator.json ├── CMakeLists.txt ├── README.md ├── .gitignore └── pagmo │ └── problems │ └── saveOptimizationResults.h ├── CHANGELOG.rst ├── README.md ├── .clang-format ├── .conda ├── mingw │ ├── conda_build_config.yaml │ └── bld.bat ├── conda_build_config.yaml ├── build.sh └── bld.bat ├── news ├── TEMPLATE.rst └── develop.rst ├── .bumpversion.cfg ├── dev ├── header.template └── fix_git.sh ├── include └── tudat │ ├── basics.h │ ├── astro │ ├── system_models.h │ ├── ground_stations.h │ ├── relativity.h │ ├── reference_frames.h │ ├── propulsion.h │ ├── earth_orientation.h │ ├── electromagnetism.h │ ├── aerodynamics │ │ └── applicationOutput.h │ ├── mission_segments.h │ ├── conversions.h │ └── electromagnetism │ │ └── basicElectroMagnetism.h │ ├── interface │ ├── sofa.h │ └── spice.h │ ├── paths.hpp │ ├── constants.h │ ├── math │ ├── quadrature.h │ ├── filters.h │ ├── root_finders.h │ ├── statistics.h │ ├── geometric.h │ ├── integrators.h │ ├── geometric │ │ └── surfaceGeometry.h │ ├── basic.h │ └── interpolators.h │ ├── io │ ├── util.h │ └── applicationOutput.h │ ├── utils │ └── data │ │ └── downloadFile.h │ └── simulation │ ├── estimation.h │ ├── environment_setup.h │ └── estimation_setup │ └── createLightTimeCorrectionPartials.h ├── AUTHORS ├── NOTICE ├── config.hpp.in ├── .github └── workflows │ ├── linter.yml.disabled │ └── inform.yml ├── tools └── update_copyright.py ├── .gitignore └── rever.xsh /version: -------------------------------------------------------------------------------- 1 | 2.10.8 2 | -------------------------------------------------------------------------------- /cmake_modules/yolo/YOLOProjectCleanup.cmake: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/src/support/numericalIntegratorTests.cpp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | breathe 2 | furo 3 | sphinx_rtd_theme -------------------------------------------------------------------------------- /src/simulation/estimation_setup/createEstimatableParameters.cpp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tudat/tudat/HEAD/docs/img.png -------------------------------------------------------------------------------- /tests/data.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tudat/tudat/HEAD/tests/data.zip -------------------------------------------------------------------------------- /cmake_modules/yolo/README.md: -------------------------------------------------------------------------------- 1 | # yolo 2 | 3 | You only link once. A parody of YACMA. -------------------------------------------------------------------------------- /.deepsource.toml: -------------------------------------------------------------------------------- 1 | version = 1 2 | 3 | [[analyzers]] 4 | name = "shell" 5 | enabled = true -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestMassRateModel/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "fromThrust" 3 | ] -------------------------------------------------------------------------------- /examples/tudat/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | #add_subdirectory(satellite_propagation) 6 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRadiationPressure/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "cannonBall" 3 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTorque/aerodynamic.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "aerodynamic" 3 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAtmosphere/nrlmsise00.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "nrlmsise00" 3 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestThrust/frameTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "intertial", 3 | "lvlh" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestShapeModel/sphericalSpice.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "sphericalSpice" 3 | } -------------------------------------------------------------------------------- /CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | Tudat Change Log 3 | ================ 4 | 5 | .. current developments 6 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/pointMassSpice.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "pointMassSpice" 3 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/coefficientsTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "constant", 3 | "tabulated" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/fromFileDataMap.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "@path(thrustValues.txt)" 3 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestShapeModel/spherical.json: -------------------------------------------------------------------------------- 1 | { 2 | "radius": 6.4E+6, 3 | "type": "spherical" 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/direct.json: -------------------------------------------------------------------------------- 1 | [ 2 | 1.5, 3 | 0, 4 | 0, 5 | 0, 6 | -0.02, 7 | 0 8 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "cartesian", 3 | "keplerian", 4 | "spherical" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestThrust/magnitudeTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "constant", 3 | "fromEngineProperties" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAtmosphere/models.json: -------------------------------------------------------------------------------- 1 | [ 2 | "exponential", 3 | "tabulated", 4 | "nrlmsise00" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/lookupSchemes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "huntingAlgorithm", 3 | "binarySearch" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestPropagator/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "translational", 3 | "rotational", 4 | "mass" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/cartesian.json: -------------------------------------------------------------------------------- 1 | { 2 | "x": 1.5, 3 | "vy": -0.02, 4 | "type": "cartesian" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTorque/secondOrderGravitational.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "secondOrderGravitational" 3 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/mergeable/rk4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "rungeKutta4", 3 | "stepSize": 30 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/rk4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "rungeKutta4", 3 | "stepSize": 30 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/boundaryHandlings.json: -------------------------------------------------------------------------------- 1 | [ 2 | "cubicSplineBoundary", 3 | "noBoundary" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/lagrangeInterpolator.json: -------------------------------------------------------------------------------- 1 | { 2 | "order": 8, 3 | "type": "lagrange" 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/euler.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "euler", 3 | "initialTime": 3, 4 | "stepSize": 1.4 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestShapeModel/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "spherical", 3 | "sphericalSpice", 4 | "oblateSpheroid" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTorque/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "undefined", 3 | "secondOrderGravitational", 4 | "aerodynamic" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/pointMass.json: -------------------------------------------------------------------------------- 1 | { 2 | "gravitationalParameter": 4.0E+14, 3 | "type": "pointMass" 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "pointMass", 3 | "pointMassSpice", 4 | "sphericalHarmonic" 5 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestThrust/directionTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "colinearWithStateSegment", 3 | "fromExistingBodyOrientation" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sphericalHarmonic_model.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": "ggm02c", 3 | "type": "sphericalHarmonic" 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityFieldVariation/bodyDeformationTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "basicSolidBody", 3 | "tabulatedVariation" 4 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRotationModel/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "simple", 3 | "spice", 4 | "gcrsToItrs", 5 | "synchronous" 6 | ] 7 | -------------------------------------------------------------------------------- /src/math/filters/filter.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/filters/filter.h" 2 | 3 | // FILE INCLUDED FOR COMPATIBILITY (MUST HAVE .CPP FILE ON SOME SYSTEMS) 4 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRotationModel/spice.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "spice", 3 | "originalFrame": "foo", 4 | "targetFrame": "oof" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/mergeable/inputs/merge1.json: -------------------------------------------------------------------------------- 1 | [ 2 | "$(../rk4.json)", 3 | { 4 | "stepSize": 20 5 | } 6 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAtmosphere/nrlmsise00_custom.json: -------------------------------------------------------------------------------- 1 | { 2 | "spaceWeatherFile": "@path(spaceWeatherFile.foo)", 3 | "type": "nrlmsise00" 4 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/mergeable/inputs/merge2.json: -------------------------------------------------------------------------------- 1 | [ 2 | "$(../shared.json)", 3 | { 4 | "integrator.stepSize": 20 5 | } 6 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian1.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "radius": 2, 4 | "type": "keplerian" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian4.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "period": 0.05, 4 | "type": "keplerian" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/dependent.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "body", 3 | "dependentVariableType": "altitude", 4 | "relativeToBody": "Earth" 5 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | NOTE: This Tudat version is no longer supported. See https://docs.tudat.space/en/stable/ and https://github.com/tudat-team/tudat-bundle for the new version 2 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGroundStation/positionElementTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "cartesianPosition", 3 | "sphericalPosition", 4 | "geodeticPosition" 5 | ] 6 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestShapeModel/oblateSpherical.json: -------------------------------------------------------------------------------- 1 | { 2 | "equatorialRadius": 6.378E+6, 3 | "flattening": 0.0034, 4 | "type": "oblateSpheroid" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian3.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "meanMotion": 0.01, 4 | "type": "keplerian" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "linear", 3 | "cubicSpline", 4 | "lagrange", 5 | "hermiteSpline", 6 | "piecewiseConstant" 7 | ] -------------------------------------------------------------------------------- /src/astro/system_models/dummySystemModel.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/system_models/engineModel.h" 2 | 3 | // FILE INCLUDED FOR COMPATIBILITY (MUST HAVE .CPP FILE ON SOME SYSTEMS) 4 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAcceleration/sphericalHarmonicGravity.json: -------------------------------------------------------------------------------- 1 | { 2 | "maximumDegree": 7, 3 | "maximumOrder": 2, 4 | "type": "sphericalHarmonicGravity" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/dragCoefficient.json: -------------------------------------------------------------------------------- 1 | { 2 | "forceCoefficients": [ 3 | 2.2, 4 | 0, 5 | 0 6 | ], 7 | "referenceArea": 10.5 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestMassRateModel/fromThrust.json: -------------------------------------------------------------------------------- 1 | { 2 | "useAllThrustModels": false, 3 | "associatedThrustSource": "booster2", 4 | "type": "fromThrust" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/interpolator.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "piecewiseConstant", 3 | "lookupScheme": "binarySearch", 4 | "useLongDoubleTimeStep": true 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRotationModel/gcrsItrs.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "gcrsToItrs", 3 | "originalFrame": "J2000", 4 | "precessionNutationTheory": "IAU2000b" 5 | } 6 | -------------------------------------------------------------------------------- /src/math/quadrature/dummyNumericalQuadrature.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/quadrature/numericalQuadrature.h" 2 | 3 | // FILE INCLUDED FOR COMPATIBILITY (MUST HAVE .CPP FILE ON SOME SYSTEMS) 4 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/propagator.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodies": [ 3 | "Earth" 4 | ], 5 | "bodiesToPropagate": [ 6 | "satellite" 7 | ] 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/rksets.json: -------------------------------------------------------------------------------- 1 | [ 2 | "rungeKuttaFehlberg45", 3 | "rungeKuttaFehlberg56", 4 | "rungeKuttaFehlberg78", 5 | "rungeKutta87DormandPrince" 6 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestReferenceFrames/aerodynamic.json: -------------------------------------------------------------------------------- 1 | [ 2 | "intertial", 3 | "corotating", 4 | "vertical", 5 | "trajectory", 6 | "aerodynamic", 7 | "body" 8 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "euler", 3 | "rungeKutta4", 4 | "rungeKuttaVariableStepSize", 5 | "adamsBashforthMoulton", 6 | "bulirschStoer" 7 | ] 8 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestSpice/standard.json: -------------------------------------------------------------------------------- 1 | { 2 | "preloadEphemeris": true, 3 | "interpolationOffsets": [ 4 | 10, 5 | 400 6 | ], 7 | "useStandardKernels": true 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "approximatePlanetPositions", 3 | "directSpice", 4 | "tabulated", 5 | "interpolatedSpice", 6 | "constant", 7 | "kepler" 8 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sphericalHarmonicModels.json: -------------------------------------------------------------------------------- 1 | [ 2 | "custom", 3 | "egm96", 4 | "ggm02c", 5 | "ggm02s", 6 | "glgm3150", 7 | "lpe200", 8 | "jgmro120d" 9 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "independent", 3 | "cpuTime", 4 | "state", 5 | "dependent", 6 | "stateTransitionMatrix", 7 | "sensitivityMatrix" 8 | ] 9 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/constant.json: -------------------------------------------------------------------------------- 1 | { 2 | "constantState": [ 3 | 0, 4 | 1, 5 | 0, 6 | -0.1, 7 | 0, 8 | 0 9 | ], 10 | "type": "constant" 11 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestSpice/custom.json: -------------------------------------------------------------------------------- 1 | { 2 | "kernels": [ 3 | "foo.txt" 4 | ], 5 | "preloadEphemeris": true, 6 | "interpolationStep": 9, 7 | "useStandardKernels": false 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian2.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "centralBodyAverageRadius": 0.5, 4 | "altitude": 1.5, 5 | "type": "keplerian" 6 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/variables.json: -------------------------------------------------------------------------------- 1 | [ 2 | "machNumber", 3 | "angleOfAttack", 4 | "angleOfSideslip", 5 | "altitude", 6 | "controlSurfaceDeflection", 7 | "undefined" 8 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/modelInterpolation.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialTime": -5, 3 | "finalTime": 5, 4 | "timeStep": 0.5, 5 | "interpolator": { 6 | "type": "linear" 7 | } 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestReferenceFrames/aerodynamicAngles.json: -------------------------------------------------------------------------------- 1 | [ 2 | "latitude", 3 | "longitude", 4 | "heading", 5 | "flightPath", 6 | "angleOfAttach", 7 | "sideslip", 8 | "bank" 9 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRotationModel/synchronous.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "synchronous", 3 | "originalFrame": "ECLIPJ2000", 4 | "targetFrame": "IAU_Earth", 5 | "centralBodyName": "Sun" 6 | } 7 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestSpice/alternative.json: -------------------------------------------------------------------------------- 1 | { 2 | "alternativeKernels": [ 3 | "foo.txt", 4 | "oof.txt" 5 | ], 6 | "preloadEphemeris": false, 7 | "useStandardKernels": true 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/dataMap.json: -------------------------------------------------------------------------------- 1 | { 2 | "map": { 3 | "1": [ 4 | 0.5, 5 | 1.5 6 | ], 7 | "2": [ 8 | 1.5, 9 | 2.5 10 | ] 11 | } 12 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/rungeKutta4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "rungeKutta4", 3 | "initialTime": 3, 4 | "stepSize": 1.4, 5 | "saveFrequency": 2, 6 | "assessTerminationOnMinorSteps": true 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRotationModel/simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialTime": 42, 3 | "rotationRate": 2E-5, 4 | "type": "simple", 5 | "originalFrame": "ECLIPJ2000", 6 | "targetFrame": "IAU_Earth" 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian9.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "semiMajorAxis": 3, 4 | "eccentricity": 0.1, 5 | "meanAnomaly": 1, 6 | "type": "keplerian" 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/acceleration.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "body", 3 | "dependentVariableType": "accelerationNorm", 4 | "accelerationType": "thrust", 5 | "bodyExertingAcceleration": "body" 6 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/relativeBodyAerodynamicOrientationAngle.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "relativeBodyAerodynamicOrientationAngle", 4 | "angle": "bank" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/approximatePlanetPositions.json: -------------------------------------------------------------------------------- 1 | { 2 | "bodyIdentifier": "earthMoonBarycenter", 3 | "useCircularCoplanarApproximation": false, 4 | "type": "approximatePlanetPositions" 5 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian8.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "semiMajorAxis": 3, 4 | "eccentricity": 0.1, 5 | "eccentricAnomaly": 1, 6 | "type": "keplerian" 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/dataInterpolation.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "file": "@path(thrustValues.txt)" 4 | }, 5 | "interpolator": { 6 | "order": 4, 7 | "type": "lagrange" 8 | } 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian5.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "inclination": 0.3, 4 | "periapsisDistance": 2, 5 | "apoapsisDistance": 3, 6 | "type": "keplerian" 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/spherical.json: -------------------------------------------------------------------------------- 1 | { 2 | "radius": 2, 3 | "epoch": 666, 4 | "latitude": 0.5, 5 | "longitude": -1.4, 6 | "speed": 5, 7 | "flightPathAngle": 0.08, 8 | "type": "spherical" 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTermination/single.json: -------------------------------------------------------------------------------- 1 | { 2 | "variable": { 3 | "body": "body", 4 | "dependentVariableType": "altitude", 5 | "relativeToBody": "Earth" 6 | }, 7 | "lowerLimit": 105000 8 | } -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | 2 | BasedOnStyle: LLVM 3 | IndentWidth: 4 4 | 5 | ExperimentalAutoDetectBinPacking: false 6 | AllowAllParametersOfDeclarationOnNextLine: false 7 | BinPackArguments: false 8 | BinPackParameters: false 9 | 10 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sh_manualparam.txt: -------------------------------------------------------------------------------- 1 | 2 0 -0.484E-03 0.000E+00 2 | 2 1 -0.186E-09 0.119E-08 3 | 2 2 0.243E-05 -0.140E-05 4 | 3 0 0.957E-06 0.000E+00 5 | 3 1 0.202E-05 0.248E-06 6 | 3 2 0.904E-06 -0.619E-06 7 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestRadiationPressure/cannonBall.json: -------------------------------------------------------------------------------- 1 | { 2 | "referenceArea": 2, 3 | "radiationPressureCoefficient": 1.5, 4 | "sourceBody": "Sun", 5 | "occultingBodies": [ 6 | "Earth", 7 | "Moon" 8 | ] 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/torque.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "Moon", 3 | "dependentVariableType": "torque", 4 | "torqueType": "secondOrderGravitational", 5 | "bodyExertingTorque": "Earth", 6 | "componentIndex": 2 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/mergeable/shared.json: -------------------------------------------------------------------------------- 1 | { 2 | "integrator": { 3 | "type": "rungeKutta4", 4 | "stepSize": 30, 5 | "initialTimes": [ 6 | 0, 7 | 86400 8 | ] 9 | } 10 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/bodiesWithEphemerisData.json: -------------------------------------------------------------------------------- 1 | [ 2 | "mercury", 3 | "venus", 4 | "earthMoonBarycenter", 5 | "mars", 6 | "jupiter", 7 | "saturn", 8 | "uranus", 9 | "neptune", 10 | "pluto" 11 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sphericalHarmonic_file.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "@path(sh.txt)", 3 | "associatedReferenceFrame": "IAU_Earth", 4 | "maximumDegree": 2, 5 | "maximumOrder": 1, 6 | "type": "sphericalHarmonic" 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sh.txt: -------------------------------------------------------------------------------- 1 | 0.3986004418E15 6378137.0 2 | 2 0 -0.484E-03 0.000E+00 3 | 2 1 -0.186E-09 0.119E-08 4 | 2 2 0.243E-05 -0.140E-05 5 | 3 0 0.957E-06 0.000E+00 6 | 3 1 0.202E-05 0.248E-06 7 | 3 2 0.904E-06 -0.619E-06 8 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/main.json: -------------------------------------------------------------------------------- 1 | { 2 | "bodies": "$(bodies.json){Earth:Earth,satellite:sat}", 3 | "propagators": [ 4 | "$(propagator.json)" 5 | ], 6 | "integrator": "$(rk4)", 7 | "export": "$(export/export)" 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAtmosphere/exponential.json: -------------------------------------------------------------------------------- 1 | { 2 | "densityScaleHeight": 5, 3 | "constantTemperature": 290, 4 | "densityAtZeroAltitude": 1, 5 | "specificGasConstant": 3, 6 | "ratioOfSpecificHeats": -10.0, 7 | "type": "exponential" 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/intermediateAerodynamicRotationMatrix.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "intermediateAerodynamicRotationMatrix", 4 | "baseFrame": "body", 5 | "targetFrame": "intertial", 6 | "componentIndex": 8 7 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGroundStation/singleGroundStationCartesian.json: -------------------------------------------------------------------------------- 1 | { 2 | "stationName": "station", 3 | "stationPosition": [ 4 | 1917032.19, 5 | 6029782.349, 6 | -801376.113 7 | ], 8 | "positionElementType": "cartesianPosition" 9 | } 10 | -------------------------------------------------------------------------------- /src/math/quadrature/createNumericalQuadrature.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/quadrature/createNumericalQuadrature.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace numerical_quadrature 7 | { 8 | 9 | 10 | } // namespace numerical_quadrature 11 | 12 | } // namespace tudat 13 | 14 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/directSpice.json: -------------------------------------------------------------------------------- 1 | { 2 | "correctForStellarAberration": true, 3 | "correctForLightTimeAberration": false, 4 | "convergeLighTimeAberration": true, 5 | "type": "directSpice", 6 | "frameOrigin": "Foo", 7 | "frameOrientation": "FOO" 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGroundStation/singleGroundStationGeodetic.json: -------------------------------------------------------------------------------- 1 | { 2 | "stationName": "station", 3 | "stationPosition": [ 4 | -63.667, 5 | -0.126825222586261, 6 | 1.262974717421854 7 | ], 8 | "positionElementType": "geodeticPosition" 9 | } 10 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestPropagator/translationalTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "cowell", 3 | "encke", 4 | "gaussKeplerian", 5 | "gaussModifiedEquinoctial", 6 | "unifiedStateModelQuaternions", 7 | "unifiedStateModelModifiedRodriguesParameters", 8 | "unifiedStateModelExponentialMap" 9 | ] -------------------------------------------------------------------------------- /.conda/mingw/conda_build_config.yaml: -------------------------------------------------------------------------------- 1 | channel_sources: 2 | - msys2, tudat-team, conda-forge # [win] 3 | - tudat-team, conda-forge # [not win] 4 | channel_targets: 5 | - tudat-team main 6 | boost_cpp: 7 | - 1.67.0 8 | tudat_resources: 9 | - 1.1.2 10 | channel_priority: strict -------------------------------------------------------------------------------- /news/TEMPLATE.rst: -------------------------------------------------------------------------------- 1 | **Added:** 2 | 3 | * 4 | 5 | **Changed:** 6 | 7 | * 8 | 9 | **Deprecated:** 10 | 11 | * 12 | 13 | **Removed:** 14 | 15 | * 16 | 17 | **Fixed:** 18 | 19 | * 20 | 21 | **Security:** 22 | 23 | * 24 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGroundStation/singleGroundStationSpherical.json: -------------------------------------------------------------------------------- 1 | { 2 | "stationName": "station", 3 | "stationPosition": [ 4 | 6377734.023012809, 5 | -0.1259851829553764, 6 | 1.262974717378488 7 | ], 8 | "positionElementType": "sphericalPosition" 9 | } 10 | -------------------------------------------------------------------------------- /.conda/conda_build_config.yaml: -------------------------------------------------------------------------------- 1 | channel_targets: 2 | - tudat-team main 3 | boost: 4 | - 1.64.0 5 | channel_sources: 6 | - tudat-team 7 | - conda-forge 8 | - defaults 9 | channels: 10 | sources: [tudat-team, conda-forge, defaults] 11 | targets: 12 | - [tudat-team, main] 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | if (TUDAT_BUILD_TUDAT_TUTORIALS) 5 | message("Building Tudat tutorials.") 6 | add_subdirectory(tudat) 7 | endif () 8 | 9 | #if (TUDAT_BUILD_WITH_PAGMO) 10 | # message("Building pagmo tutorials.") 11 | # add_subdirectory(pagmo) 12 | #endif () 13 | -------------------------------------------------------------------------------- /examples/tudat/satellite_propagation/testThrustValues.txt: -------------------------------------------------------------------------------- 1 | 0 0 0 5 2 | 6068 0 1 5 3 | 6097 1.0 0 5 4 | 6097.5 0.8 0 5 5 | 6098 0.6 0.1 5 6 | 6099 0.1 0.5 5 7 | 12192 0.2 1.0 4.5 8 | 18288 0.3 1.5 4.0 9 | 243575 0.4 2.0 3.0 10 | 3.999e6 1.0 1.0 2.0 11 | 4e6 1.1 5.0 1.0 12 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/independentDependentDataMap.json: -------------------------------------------------------------------------------- 1 | { 2 | "independentVariableValues": [ 3 | 1, 4 | 2 5 | ], 6 | "dependentVariableValues": [ 7 | [ 8 | 0.5, 9 | 1.5 10 | ], 11 | [ 12 | 1.5, 13 | 2.5 14 | ] 15 | ] 16 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/bodies.json: -------------------------------------------------------------------------------- 1 | { 2 | "Earth": { 3 | "useDefaultSettings": true 4 | }, 5 | "Moon": { 6 | "useDefaultSettings": true 7 | }, 8 | "Sun": { 9 | "useDefaultSettings": true 10 | }, 11 | "sat": { 12 | "mass": 500 13 | } 14 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/sphericalHarmonicAccelerationTerms.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "sphericalHarmonicsAccelerationTerms", 4 | "bodyExertingAcceleration": "body", 5 | "componentIndices": [ [ 0, 0 ], [ 1, 0 ], [ 1, 1 ] ], 6 | "componentIndex": -1 7 | } -------------------------------------------------------------------------------- /src/astro/basic_astro/accelerationModel.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/basic_astro/accelerationModel.h" 2 | 3 | namespace tudat 4 | { 5 | namespace basic_astrodynamics 6 | { 7 | 8 | template class AccelerationModel< Eigen::Vector3d >; 9 | 10 | } // namespace basic_astrodynamics 11 | 12 | } // namespace tudat 13 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAcceleration/types.json: -------------------------------------------------------------------------------- 1 | [ 2 | "undefined", 3 | "pointMassGravity", 4 | "aerodynamic", 5 | "cannonBallRadiationPressure", 6 | "sphericalHarmonicGravity", 7 | "mutualSphericalHarmonicGravity", 8 | "thrust", 9 | "relativisticCorrection", 10 | "empirical" 11 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/spherical_altitude.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyAverageRadius": 0.5, 3 | "altitude": 1.5, 4 | "epoch": -800000, 5 | "latitude": 0.5, 6 | "longitude": -1.4, 7 | "speed": 5, 8 | "flightPathAngle": 0.08, 9 | "headingAngle": -0.12, 10 | "type": "spherical" 11 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian0.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "semiMajorAxis": 3, 4 | "eccentricity": 0.2, 5 | "inclination": 0.3, 6 | "argumentOfPeriapsis": 0.4, 7 | "longitudeOfAscendingNode": 0.5, 8 | "trueAnomaly": 0.6, 9 | "type": "keplerian" 10 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/mergeable/inputs/merge3.json: -------------------------------------------------------------------------------- 1 | [ 2 | "$(merge2.json)", 3 | { 4 | "integrator.initialTimes[1]": 43200, 5 | "integrator.initialTimes[2]": 86400, 6 | "spice": { 7 | "useStandardKernels": true, 8 | "preloadEpehemeris": false 9 | } 10 | } 11 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/export/export.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "file": "@path(../outputs/epochs.txt)", 4 | "variables": "$(../variables){time,}" 5 | }, 6 | { 7 | "file": "@path(../states.txt)", 8 | "variables": "$(../variables/main.json){position,velocity}" 9 | } 10 | ] -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian7.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "eccentricity": 0.2, 4 | "inclination": 0.3, 5 | "argumentOfPeriapsis": 0.4, 6 | "longitudeOfAscendingNode": 0.5, 7 | "trueAnomaly": 0.6, 8 | "semiLatusRectum": 3.5, 9 | "type": "keplerian" 10 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/singleGravityFieldVariationAcceleration.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "singleGravityFieldVariationAcceleration", 4 | "bodyExertingAcceleration": "body", 5 | "deformationType": "basicSolidBody", 6 | "identifier": "", 7 | "componentIndex": -1 8 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAcceleration/empirical.json: -------------------------------------------------------------------------------- 1 | { 2 | "constantAcceleration": [ 3 | 0.4, 4 | -0.1, 5 | 0.05 6 | ], 7 | "sineAcceleration": [ 8 | 0, 9 | 0.02, 10 | 0 11 | ], 12 | "cosineAcceleration": [ 13 | -0.01, 14 | 0, 15 | 0 16 | ], 17 | "type": "empirical" 18 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/bulirschStoer.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialStepSize": 1.4, 3 | "minimumStepSize": 0.4, 4 | "maximumStepSize": 2.4, 5 | "maximumNumberOfSteps": 8, 6 | "relativeErrorTolerance": 0.0001, 7 | "absoluteErrorTolerance": 0.01, 8 | "type": "bulirschStoer", 9 | "initialTime": -0.3 10 | } 11 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/adamsBashforthMoulton.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialStepSize": 1.4, 3 | "minimumStepSize": 0.4, 4 | "maximumStepSize": 2.4, 5 | "relativeErrorTolerance": 0.0001, 6 | "absoluteErrorTolerance": 0.01, 7 | "bandwidth": 200, 8 | "type": "adamsBashforthMoulton", 9 | "initialTime": -0.3 10 | } 11 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestState/keplerian6.json: -------------------------------------------------------------------------------- 1 | { 2 | "centralBodyGravitationalParameter": 4.0E+8, 3 | "centralBodyAverageRadius": 0.5, 4 | "argumentOfPeriapsis": 0.4, 5 | "longitudeOfAscendingNode": 0.5, 6 | "trueAnomaly": 0.6, 7 | "periapsisAltitude": 1.5, 8 | "apoapsisAltitude": 2.5, 9 | "type": "keplerian" 10 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/accelerationPartialWrtBodyTranslationalState.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "accelerationPartialWrtBodyTranslationalState", 4 | "bodyExertingAcceleration": "body", 5 | "accelerationType": "thrust", 6 | "derivativeWrtBody": "otherBody", 7 | "thirdBody": "", 8 | "componentIndex": -1 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestExport/fullResult.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "@path(full.txt)", 3 | "variables": [ 4 | { 5 | "type": "independent" 6 | }, 7 | { 8 | "body": "body", 9 | "dependentVariableType": "altitude", 10 | "relativeToBody": "Earth" 11 | } 12 | ], 13 | "header": "Foo\n", 14 | "epochsInFirstColumn": false 15 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/hermiteDataMap.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependentVariableFirstDerivativeValues": [ 3 | [ 4 | 1, 5 | 0.8 6 | ], 7 | [ 8 | 0.5, 9 | 0.4 10 | ] 11 | ], 12 | "map": { 13 | "1": [ 14 | 0.5, 15 | 1.5 16 | ], 17 | "2": [ 18 | 1.5, 19 | 2.5 20 | ] 21 | } 22 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAcceleration/relativisticCorrection.json: -------------------------------------------------------------------------------- 1 | { 2 | "calculateSchwarzschildCorrection": true, 3 | "calculateLenseThirringCorrection": false, 4 | "calculateDeSitterCorrection": true, 5 | "primaryBody": "Mars", 6 | "centralBodyAngularMomentum": [ 7 | 7E-9, 8 | 8E-10, 9 | 5E-5 10 | ], 11 | "type": "relativisticCorrection" 12 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestInterpolation/thrustValues.txt: -------------------------------------------------------------------------------- 1 | 0 0 0 5 2 | 6068 0 1 5 3 | 6097 1.0 0 5 4 | 6097.5 0.8 0 5 5 | 6098 0.6 0.1 5 6 | 6099 0.1 0.5 5 7 | 12192 20 10 45 8 | 18288 30 15 40 9 | 1e5 0.4 2.0 3.0 10 | 3.999e5 1.0 1.0 2.0 11 | 4e5 1.1 5.0 1.0 12 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestExport/partialResult.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "@path(partial.txt)", 3 | "variables": [ 4 | { 5 | "body": "body", 6 | "dependentVariableType": "altitude", 7 | "relativeToBody": "Earth" 8 | } 9 | ], 10 | "epochsInFirstColumn": true, 11 | "numericalPrecision": 6, 12 | "onlyInitialStep": true, 13 | "onlyFinalStep": true 14 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/singleGravityFieldVariationAccelerationTerms.json: -------------------------------------------------------------------------------- 1 | { 2 | "body": "vehicle", 3 | "dependentVariableType": "singleGravityFieldVariationAccelerationTerms", 4 | "bodyExertingAcceleration": "body", 5 | "componentIndices": [ [ 0, 0 ], [ 1, 0 ], [ 1, 1 ] ], 6 | "deformationType": "basicSolidBody", 7 | "identifier": "", 8 | "componentIndex": -1 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/interpolatedSpice.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialTime": 2, 3 | "finalTime": 100, 4 | "timeStep": 10, 5 | "interpolator": { 6 | "order": 4, 7 | "type": "lagrange" 8 | }, 9 | "correctForLightTimeAberration": true, 10 | "type": "interpolatedSpice", 11 | "frameOrigin": "Foo", 12 | "frameOrientation": "FOO", 13 | "makeMultiArc": true 14 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestSimulationThrustAccelerationFromFile/thrustValues.txt: -------------------------------------------------------------------------------- 1 | 0 0 0 5 2 | 6068 0 1 5 3 | 6097 1.0 0 5 4 | 6097.5 0.8 0 5 5 | 6098 0.6 0.1 5 6 | 6099 0.1 0.5 5 7 | 12192 20 10 45 8 | 18288 30 15 40 9 | 1e5 0.4 2.0 3.0 10 | 3.999e5 1.0 1.0 2.0 11 | 4e5 1.1 5.0 1.0 12 | -------------------------------------------------------------------------------- /news/develop.rst: -------------------------------------------------------------------------------- 1 | **Added:** 2 | 3 | * `rever` setup. 4 | * `tudat::utils::data::download_file` function. 5 | 6 | **Changed:** 7 | 8 | * 9 | 10 | **Deprecated:** 11 | 12 | * 13 | 14 | **Removed:** 15 | 16 | * 17 | 18 | **Fixed:** 19 | 20 | * `.git` history for commit authors with `hidden@hidden.com` as their email. 21 | 22 | **Security:** 23 | 24 | * 25 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAcceleration/mutualSphericalHarmonicGravity.json: -------------------------------------------------------------------------------- 1 | { 2 | "maximumDegreeOfBodyExertingAcceleration": 7, 3 | "maximumOrderOfBodyExertingAcceleration": 0, 4 | "maximumDegreeOfBodyUndergoingAcceleration": 3, 5 | "maximumOrderOfBodyUndergoingAcceleration": 2, 6 | "maximumDegreeOfCentralBody": 5, 7 | "maximumOrderOfCentralBody": 4, 8 | "type": "mutualSphericalHarmonicGravity" 9 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTermination/anyOf.json: -------------------------------------------------------------------------------- 1 | { 2 | "anyOf": [ 3 | { 4 | "variable": { 5 | "body": "body", 6 | "dependentVariableType": "altitude", 7 | "relativeToBody": "Earth" 8 | }, 9 | "lowerLimit": 105000 10 | }, 11 | { 12 | "variable": { 13 | "type": "cpuTime" 14 | }, 15 | "upperLimit": 60 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestThrust/directionMagnitude.json: -------------------------------------------------------------------------------- 1 | { 2 | "direction": { 3 | "type": "colinearWithStateSegment", 4 | "relativeBody": "Mercury", 5 | "colinearWithVelocity": true, 6 | "towardsRelativeBody": false 7 | }, 8 | "magnitude": { 9 | "useAllEngines": false, 10 | "type": "fromEngineProperties", 11 | "originID": "booster" 12 | }, 13 | "type": "thrust" 14 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sphericalHarmonic_file_manualparam.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "@path(sh_manualparam.txt)", 3 | "associatedReferenceFrame": "IAU_Earth", 4 | "maximumDegree": 2, 5 | "maximumOrder": 1, 6 | "gravitationalParameterIndex": -1, 7 | "referenceRadiusIndex": -1, 8 | "gravitationalParameter": 4.0E+14, 9 | "referenceRadius": 6.4E+6, 10 | "type": "sphericalHarmonic" 11 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/modular/variables/main.json: -------------------------------------------------------------------------------- 1 | { 2 | "time": { 3 | "type": "independent" 4 | }, 5 | "position": { 6 | "body": "satellite", 7 | "dependentVariableType": "relativePosition", 8 | "relatieToBody": "Earth" 9 | }, 10 | "velocity": { 11 | "body": "satellite", 12 | "dependentVariableType": "relativeVelocity", 13 | "relatieToBody": "Earth" 14 | } 15 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestPropagator/mass.json: -------------------------------------------------------------------------------- 1 | { 2 | "massRateModels": { 3 | "a": [ 4 | { 5 | "type": "fromThrust" 6 | } 7 | ], 8 | "b": [ 9 | { 10 | "type": "fromThrust" 11 | } 12 | ] 13 | }, 14 | "integratedStateType": "mass", 15 | "bodiesToPropagate": [ 16 | "a", 17 | "b" 18 | ], 19 | "initialStates": [ 20 | 100, 21 | 200 22 | ] 23 | } -------------------------------------------------------------------------------- /.bumpversion.cfg: -------------------------------------------------------------------------------- 1 | [bumpversion] 2 | current_version = 2.10.6.dev13 3 | commit = True 4 | tag = True 5 | parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))? 6 | serialize = 7 | {major}.{minor}.{patch}.{release}{dev} 8 | {major}.{minor}.{patch} 9 | 10 | [bumpversion:part:release] 11 | optional_value = gamma 12 | values = 13 | dev 14 | gamma 15 | 16 | [bumpversion:part:dev] 17 | 18 | [bumpversion:file:version] 19 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/kepler.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialStateInKeplerianElements": [ 3 | 7.0E+6, 4 | 0.1, 5 | 0, 6 | 0, 7 | 0, 8 | 0 9 | ], 10 | "epochOfInitialState": -40000, 11 | "centralBodyGravitationalParameter": 4.0E+14, 12 | "rootFinderAbsoluteTolerance": 1E-9, 13 | "rootFinderMaximumNumberOfIterations": 100, 14 | "type": "kepler", 15 | "frameOrigin": "Foo", 16 | "frameOrientation": "FOO" 17 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestTermination/allOf.json: -------------------------------------------------------------------------------- 1 | { 2 | "allOf": [ 3 | { 4 | "variable": { 5 | "body": "body", 6 | "dependentVariableType": "altitude", 7 | "relativeToBody": "Earth" 8 | }, 9 | "lowerLimit": 105000 10 | }, 11 | { 12 | "variable": { 13 | "body": "body", 14 | "dependentVariableType": "machNumber" 15 | }, 16 | "upperLimit": 1 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestEphemeris/tabulated.json: -------------------------------------------------------------------------------- 1 | { 2 | "bodyStateHistory": { 3 | "0": [ 4 | 1, 5 | 0, 6 | 0, 7 | 0, 8 | -0.4, 9 | 0 10 | ], 11 | "1": [ 12 | 3, 13 | 0, 14 | 0, 15 | 0, 16 | -0.2, 17 | 0 18 | ], 19 | "2": [ 20 | 4, 21 | 0, 22 | 0, 23 | 0, 24 | -0.1, 25 | 0 26 | ] 27 | }, 28 | "type": "tabulated" 29 | } -------------------------------------------------------------------------------- /dev/header.template: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | -------------------------------------------------------------------------------- /cmake_modules/yolo/YOLOProjectAddExternalData.cmake: -------------------------------------------------------------------------------- 1 | 2 | 3 | function(TUDAT_ADD_DATA_DIR arg1) 4 | get_filename_component(dir_name ${CMAKE_CURRENT_SOURCE_DIR} NAME) 5 | install(DIRECTORY ${arg1} DESTINATION ${INSTALL_DATA_DIR}/${dir_name}) 6 | endfunction() 7 | 8 | 9 | function(TUDAT_ADD_TEST_DATA arg1) 10 | # We move the test files into the testing directory 11 | file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/${arg1}/" DESTINATION "${CMAKE_BINARY_DIR}/${arg1}/") 12 | endfunction() 13 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/constant.json: -------------------------------------------------------------------------------- 1 | { 2 | "forceCoefficients": [ 3 | 1, 4 | 2, 5 | 3 6 | ], 7 | "momentCoefficients": [ 8 | 0, 9 | 0.001, 10 | -0.1 11 | ], 12 | "referenceLength": 5, 13 | "referenceArea": 10.5, 14 | "lateralReferenceLength": 4, 15 | "momentReferencePoint": [ 16 | 0.7, 17 | 0.8, 18 | 0.9 19 | ], 20 | "areCoefficientsInAerodynamicFrame": true, 21 | "areCoefficientsInNegativeAxisDirection": false 22 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityFieldVariation/basicSolidBody.json: -------------------------------------------------------------------------------- 1 | { 2 | "deformingBodies": [ 3 | "Moon" 4 | ], 5 | "loveNumbers": [ 6 | [ 7 | "(1,2)", 8 | "(2,-1)", 9 | "(0.3,-5)" 10 | ], 11 | [ 12 | "(0,0.5)", 13 | "(0,2)", 14 | "(4,-2)" 15 | ], 16 | [ 17 | "(-3,0)", 18 | "(-5,1)", 19 | "(6,0.5)" 20 | ] 21 | ], 22 | "referenceRadius": 6.4E+6, 23 | "bodyDeformationType": "basicSolidBody" 24 | } -------------------------------------------------------------------------------- /src/math/integrators/numericalIntegrator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/integrators/numericalIntegrator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace numerical_integrators 6 | { 7 | 8 | template class NumericalIntegrator < double, Eigen::VectorXd, Eigen::VectorXd >; 9 | template class NumericalIntegrator < double, Eigen::Vector6d, Eigen::Vector6d >; 10 | template class NumericalIntegrator < double, Eigen::MatrixXd, Eigen::MatrixXd >; 11 | 12 | } // namespace numerical_integrators 13 | } // namespace tudat 14 | 15 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityField/sphericalHarmonic_direct.json: -------------------------------------------------------------------------------- 1 | { 2 | "associatedReferenceFrame": "IAU_Earth", 3 | "gravitationalParameter": 4.0E+14, 4 | "referenceRadius": 6.4E+6, 5 | "cosineCoefficients": [ 6 | [ 7 | 1, 8 | 0 9 | ], 10 | [ 11 | 0, 12 | 0 13 | ] 14 | ], 15 | "sineCoefficients": [ 16 | [ 17 | 0, 18 | 0 19 | ], 20 | [ 21 | 0, 22 | 0 23 | ] 24 | ], 25 | "type": "sphericalHarmonic" 26 | } -------------------------------------------------------------------------------- /src/utils/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | add_subdirectory(data) 12 | 13 | -------------------------------------------------------------------------------- /src/math/integrators/rungeKutta4Integrator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/integrators/rungeKutta4Integrator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace numerical_integrators 6 | { 7 | 8 | template class RungeKutta4Integrator < double, Eigen::VectorXd, Eigen::VectorXd >; 9 | template class RungeKutta4Integrator < double, Eigen::Vector6d, Eigen::Vector6d >; 10 | template class RungeKutta4Integrator < double, Eigen::MatrixXd, Eigen::MatrixXd >; 11 | 12 | } // namespace numerical_integrators 13 | } // namespace tudat 14 | 15 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAtmosphere/tabulated.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": { 3 | "0": "@path(atmosphereTable.foo)" 4 | }, 5 | "type": "tabulated", 6 | "independentVariablesNames": [ 7 | "altitude", 8 | "time" 9 | ], 10 | "dependentVariablesNames": [ 11 | "temperature", 12 | "gasConstant", 13 | "density", 14 | "pressure" 15 | ], 16 | "specificGasConstant": 10.0, 17 | "ratioOfSpecificHeats": 3.0, 18 | "boundaryHandling": [ 19 | "boundaryValue", 20 | "throwException" 21 | ] 22 | } -------------------------------------------------------------------------------- /src/astro/ephemerides/compositeEphemeris.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/ephemerides/compositeEphemeris.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace ephemerides 7 | { 8 | 9 | template class CompositeEphemeris< double, double >; 10 | 11 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 12 | template class CompositeEphemeris< Time, double >; 13 | template class CompositeEphemeris< double, long double >; 14 | template class CompositeEphemeris< Time, long double >; 15 | #endif 16 | 17 | } // namespace ephemerides 18 | 19 | } // namespace tudat 20 | -------------------------------------------------------------------------------- /src/math/integrators/adamsBashforthMoultonIntegrator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/integrators/adamsBashforthMoultonIntegrator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace numerical_integrators 6 | { 7 | 8 | template class AdamsBashforthMoultonIntegrator < double, Eigen::VectorXd, Eigen::VectorXd >; 9 | template class AdamsBashforthMoultonIntegrator < double, Eigen::Vector6d, Eigen::Vector6d >; 10 | template class AdamsBashforthMoultonIntegrator < double, Eigen::MatrixXd, Eigen::MatrixXd >; 11 | 12 | } // namespace integrators 13 | } // namespace tudat 14 | 15 | -------------------------------------------------------------------------------- /examples/tudat/satellite_propagation/new/SingleSatelliteThrust.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "SingleSatelliteThrust.h" 12 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestIntegrator/rungeKuttaVariableStepSize.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialStepSize": 1.4, 3 | "rungeKuttaCoefficientSet": "rungeKuttaFehlberg78", 4 | "minimumStepSize": 0.4, 5 | "maximumStepSize": 2.4, 6 | "relativeErrorTolerance": 0.0001, 7 | "absoluteErrorTolerance": 0.01, 8 | "safetyFactorForNextStepSize": 2, 9 | "maximumFactorIncreaseForNextStepSize": 10, 10 | "minimumFactorDecreaseForNextStepSize": 0.1, 11 | "type": "rungeKuttaVariableStepSize", 12 | "initialTime": -0.3, 13 | "areTolerancesDefinedAsScalar": true 14 | } 15 | -------------------------------------------------------------------------------- /include/tudat/basics.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_BASICS_H 12 | #define TUDAT_BASICS_H 13 | 14 | #endif // TUDAT_BASICS_H 15 | -------------------------------------------------------------------------------- /tests/src/astro/propulsion/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(ThrustAcceleration PRIVATE_LINKS ${Tudat_ESTIMATION_LIBRARIES}) 12 | -------------------------------------------------------------------------------- /src/simulation/propagation_setup/environmentUpdater.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/simulation/propagation_setup/environmentUpdater.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace propagators 7 | { 8 | 9 | template class EnvironmentUpdater< double, double >; 10 | 11 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 12 | template class EnvironmentUpdater< double, Time >; 13 | template class EnvironmentUpdater< long double, double >; 14 | template class EnvironmentUpdater< long double, Time >; 15 | #endif 16 | 17 | } // namespace propagators 18 | 19 | } // namespace tudat 20 | 21 | -------------------------------------------------------------------------------- /src/math/integrators/rungeKuttaVariableStepSizeIntegrator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/integrators/rungeKuttaVariableStepSizeIntegrator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace numerical_integrators 6 | { 7 | 8 | template class RungeKuttaVariableStepSizeIntegrator < double, Eigen::VectorXd, Eigen::VectorXd >; 9 | template class RungeKuttaVariableStepSizeIntegrator < double, Eigen::Vector6d, Eigen::Vector6d >; 10 | template class RungeKuttaVariableStepSizeIntegrator < double, Eigen::MatrixXd, Eigen::MatrixXd >; 11 | 12 | } // namespace numerical_integrators 13 | } // namespace tudat 14 | 15 | -------------------------------------------------------------------------------- /src/simulation/estimation_setup/orbitDeterminationManager.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/simulation/estimation_setup/orbitDeterminationManager.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace simulation_setup 7 | { 8 | 9 | 10 | template class OrbitDeterminationManager< double, double >; 11 | 12 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 13 | template class OrbitDeterminationManager< double, Time >; 14 | template class OrbitDeterminationManager< long double, double >; 15 | template class OrbitDeterminationManager< long double, Time >; 16 | #endif 17 | 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/astro/basic_astro/torqueModel.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/basic_astro/torqueModel.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace basic_astrodynamics 7 | { 8 | 9 | //! Update the members of a torque model and evaluate the acceleration. 10 | Eigen::Vector3d updateAndGetTorque( 11 | const std::shared_ptr< TorqueModel > torqueModel, 12 | const double currentTime ) 13 | { 14 | // Update members. 15 | torqueModel->updateMembers( currentTime ); 16 | 17 | // Evaluate and return acceleration. 18 | return torqueModel->getTorque( ); 19 | } 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/math/integrators/reinitializableNumericalIntegrator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/integrators/reinitializableNumericalIntegrator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace numerical_integrators 6 | { 7 | 8 | 9 | template class ReinitializableNumericalIntegrator < double, Eigen::VectorXd, Eigen::VectorXd >; 10 | template class ReinitializableNumericalIntegrator < double, Eigen::Vector6d, Eigen::Vector6d >; 11 | template class ReinitializableNumericalIntegrator < double, Eigen::MatrixXd, Eigen::MatrixXd >; 12 | 13 | 14 | 15 | } // namespace numerical_integrators 16 | } // namespace tudat 17 | -------------------------------------------------------------------------------- /tests/src/math/geometric/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(LawgsSurfaceGeometry PRIVATE_LINKS tudat_geometric_shapes tudat_basic_mathematics) 12 | -------------------------------------------------------------------------------- /src/astro/propagators/nBodyCowellStateDerivative.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/propagators/nBodyCowellStateDerivative.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace propagators 7 | { 8 | 9 | template class NBodyCowellStateDerivative< double, double >; 10 | 11 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 12 | template class NBodyCowellStateDerivative< long double, double >; 13 | template class NBodyCowellStateDerivative< double, Time >; 14 | template class NBodyCowellStateDerivative< long double, Time >; 15 | #endif 16 | 17 | 18 | } // namespace propagators 19 | 20 | } // namespace tudat 21 | 22 | -------------------------------------------------------------------------------- /.conda/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | mkdir build 4 | 5 | cd build 6 | 7 | cmake \ 8 | -DCMAKE_CXX_STANDARD=14 \ 9 | -DCMAKE_BUILD_TYPE=Release \ 10 | -DCMAKE_INSTALL_PREFIX=$PREFIX \ 11 | -DCMAKE_PREFIX_PATH=$PREFIX \ 12 | -DPREFIX=$PREFIX \ 13 | -DTUDAT_CONDA_BUILD=on \ 14 | -DTUDAT_BUILD_STATIC_LIBRARY=on \ 15 | -DTUDAT_BUILD_TUDAT_TUTORIALS=off \ 16 | -DTUDAT_BUILD_WITH_SOFA_INTERFACE=on \ 17 | -DTUDAT_BUILD_WITH_SPICE_INTERFACE=on \ 18 | -DTUDAT_INSTALL=on \ 19 | -DTUDAT_TEST_INSTALL=off \ 20 | .. 21 | 22 | make -j2 23 | 24 | ctest 25 | 26 | make install 27 | -------------------------------------------------------------------------------- /src/math/interpolators/multiLinearInterpolator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/interpolators/multiLinearInterpolator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace interpolators 6 | { 7 | 8 | template class MultiLinearInterpolator< double, Eigen::Vector6d, 1 >; 9 | template class MultiLinearInterpolator< double, Eigen::Vector6d, 2 >; 10 | template class MultiLinearInterpolator< double, Eigen::Vector6d, 3 >; 11 | template class MultiLinearInterpolator< double, Eigen::Vector6d, 4 >; 12 | template class MultiLinearInterpolator< double, Eigen::Vector6d, 5 >; 13 | 14 | } // namespace interpolators 15 | } // namespace tudat 16 | 17 | -------------------------------------------------------------------------------- /tests/src/astro/orbit_determination/rotational_dynamics_partials/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | 10 | TUDAT_ADD_TEST_CASE(TorquePartials 11 | PRIVATE_LINKS 12 | ${Tudat_ESTIMATION_LIBRARIES} 13 | ) 14 | -------------------------------------------------------------------------------- /src/simulation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | add_subdirectory(environment_setup) 12 | add_subdirectory(propagation_setup) 13 | if (TUDAT_BUILD_WITH_ESTIMATION_TOOLS) 14 | add_subdirectory(estimation_setup) 15 | endif () 16 | -------------------------------------------------------------------------------- /tests/src/basics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | if(TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS) 12 | TUDAT_ADD_TEST_CASE(TimeTypes) 13 | endif() 14 | 15 | TUDAT_ADD_TEST_CASE(TudatTypeTraits PRIVATE_LINKS tudat_basics) 16 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | Tudat Example Applications 2 | ====== 3 | 4 | This repository contains example applications that make use of the Tudat library. 5 | 6 | Examples 7 | ------ 8 | 9 | Currently, the following two example applications are available: 10 | * Template Application: 11 | demonstrates how to make use of the Tudat libraries and dependencies (can be used as basis for new Tudat applications) 12 | * Satellite Propagator Examples: 13 | demonstrates how to set up a variety of satellite propagation simulators 14 | 15 | Contact 16 | ------ 17 | 18 | For more information, please refer to: http://tudat.tudelft.nl. 19 | Questions should be directed to tudat-AE@tudelft.nl 20 | -------------------------------------------------------------------------------- /src/astro/ground_stations/groundStation.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/astro/ground_stations/groundStation.h" 12 | 13 | 14 | namespace tudat 15 | { 16 | 17 | namespace ground_stations 18 | { 19 | 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/interface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | add_subdirectory(spice) 12 | 13 | if (TUDAT_BUILD_WITH_JSON_INTERFACE) 14 | add_subdirectory(json) 15 | endif () 16 | 17 | if (TUDAT_BUILD_WITH_SOFA_INTERFACE) 18 | add_subdirectory(sofa) 19 | endif () 20 | -------------------------------------------------------------------------------- /src/io/tabulatedAtmosphereReader.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/io/tabulatedAtmosphereReader.h" 12 | #include "tudat/io/util.h" 13 | 14 | namespace tudat 15 | { 16 | 17 | namespace input_output 18 | { 19 | 20 | 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/astro/observation_models/simulateObservations.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/simulation/estimation_setup/simulateObservations.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace observation_models 7 | { 8 | 9 | Eigen::VectorXd getIdenticallyAndIndependentlyDistributedNoise( 10 | const std::function< double( const double ) > noiseFunction, 11 | const int observationSize, 12 | const double evaluationTime ) 13 | { 14 | Eigen::VectorXd noiseValues = Eigen::VectorXd( observationSize ); 15 | for( int i = 0; i < observationSize; i++ ) 16 | { 17 | noiseValues( i ) = noiseFunction( evaluationTime ); 18 | } 19 | return noiseValues; 20 | } 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | All of the people who have made at least one contribution to Tudat. 2 | Authors are sorted by number of commits. 3 | 4 | * Kartik Kumar 5 | * mfacchinelli 6 | * Aleix Pinardell 7 | * mchambe 8 | * Dominic Dirkx 9 | * Michele Facchinelli 10 | * Jacco Geul 11 | * Emil Heeren & Jeroen Melman 12 | * Elmar Puts 13 | * mvandenbroeck 14 | * Rene107 15 | * ifodde 16 | * foggionni 17 | * Geoffrey H. Garrett 18 | * jhener 19 | * Liban Abdulkadir 20 | * pipas 21 | * MiguelAvillez 22 | * Rody Oldenhuis 23 | * Frank Hogervorst 24 | * Jérémie Gaffarel 25 | * Guido Holtkamp 26 | * FlyOHolic 27 | * René 28 | * Alejandro Gonzalez Puerta 29 | * Valerio Filice 30 | * DeepSource Bot 31 | * kimonito98 32 | * jo11he 33 | -------------------------------------------------------------------------------- /include/tudat/astro/system_models.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_SYSTEM_MODELS_H 12 | #define TUDAT_SYSTEM_MODELS_H 13 | 14 | #include "system_models/engineModel.h" 15 | #include "system_models/vehicleSystems.h" 16 | 17 | #endif // TUDAT_SYSTEM_MODELS_H 18 | -------------------------------------------------------------------------------- /include/tudat/interface/sofa.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_SOFA_H 12 | #define TUDAT_SOFA_H 13 | 14 | #include "sofa/earthOrientation.h" 15 | #include "sofa/fundamentalArguments.h" 16 | #include "sofa/sofaTimeConversions.h" 17 | 18 | #endif // TUDAT_SOFA_H 19 | -------------------------------------------------------------------------------- /tests/src/interface/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | add_subdirectory(spice) 12 | 13 | if (TUDAT_BUILD_WITH_JSON_INTERFACE) 14 | add_subdirectory(json) 15 | endif () 16 | 17 | 18 | if (TUDAT_BUILD_WITH_SOFA_INTERFACE) 19 | add_subdirectory(sofa) 20 | endif () 21 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/tabulatedN.json: -------------------------------------------------------------------------------- 1 | { 2 | "forceCoefficients": [ 3 | "@path(aurora_CD.txt)", 4 | "@path()", 5 | "@path(aurora_CL.txt)" 6 | ], 7 | "momentCoefficients": [ 8 | "@path()", 9 | "@path(aurora_Cm.txt)", 10 | "@path()" 11 | ], 12 | "coefficientsType": "tabulated", 13 | "referenceLength": 5, 14 | "referenceArea": 10.5, 15 | "lateralReferenceLength": 4, 16 | "momentReferencePoint": [ 17 | 0.7, 18 | 0.8, 19 | 0.9 20 | ], 21 | "independentVariableNames": [ 22 | "machNumber", 23 | "angleOfAttack" 24 | ], 25 | "areCoefficientsInAerodynamicFrame": true, 26 | "areCoefficientsInNegativeAxisDirection": true 27 | } -------------------------------------------------------------------------------- /include/tudat/interface/spice.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_SPICE_H 12 | #define TUDAT_SPICE_H 13 | 14 | #include "spice/spiceEphemeris.h" 15 | #include "spice/spiceInterface.h" 16 | #include "spice/spiceRotationalEphemeris.h" 17 | 18 | #endif // TUDAT_SPICE_H 19 | -------------------------------------------------------------------------------- /tests/src/interface/spice/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(SpiceInterface 12 | PRIVATE_LINKS 13 | tudat_ephemerides 14 | tudat_basic_mathematics 15 | tudat_spice_interface 16 | tudat_basic_astrodynamics 17 | ) 18 | -------------------------------------------------------------------------------- /include/tudat/paths.hpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_PATHS_HPP 12 | #define TUDAT_PATHS_HPP 13 | 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | 20 | #endif //TUDAT_PATHS_HPP 21 | -------------------------------------------------------------------------------- /src/astro/basic_astro/physicalConstants.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | #include "tudat/astro/basic_astro/physicalConstants.h" 11 | 12 | namespace tudat 13 | { 14 | 15 | namespace physical_constants 16 | { 17 | 18 | 19 | } // namespace physical_constants 20 | 21 | } // namespace tudat 22 | -------------------------------------------------------------------------------- /tests/src/astro/ground_stations/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(GroundStationState 12 | PRIVATE_LINKS 13 | ${Tudat_PROPAGATION_LIBRARIES}) 14 | 15 | TUDAT_ADD_TEST_CASE(PointingAnglesCalculator 16 | PRIVATE_LINKS 17 | ${Tudat_PROPAGATION_LIBRARIES}) 18 | -------------------------------------------------------------------------------- /docs/sphinx/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = source 9 | BUILDDIR = build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestPropagator/rotational.json: -------------------------------------------------------------------------------- 1 | { 2 | "torques": { 3 | "A": { 4 | "B": [ 5 | { 6 | "type": "secondOrderGravitational" 7 | } 8 | ] 9 | }, 10 | "B": { 11 | "A": [ 12 | { 13 | "type": "secondOrderGravitational" 14 | }, 15 | { 16 | "type": "aerodynamic" 17 | } 18 | ] 19 | } 20 | }, 21 | "integratedStateType": "rotational", 22 | "bodiesToPropagate": [ 23 | "A", 24 | "B" 25 | ], 26 | "initialStates": [ 27 | 0, 28 | 1, 29 | 2, 30 | 3, 31 | 4, 32 | 5, 33 | 6, 34 | 7, 35 | 8, 36 | 9, 37 | 10, 38 | 11, 39 | 12, 40 | 13 41 | ] 42 | } -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Tudat 2 | Copyright 2010-2013 Delft University of Technology 3 | 4 | This product includes software developed in the Astrodynamics and Space missions 5 | research chair at the Faculty of Aerospace Engineering, Delft University of 6 | Technology, The Netherlands. Most of this software was developed in conjunction 7 | with graduate student research. 8 | 9 | More information on the Tudat project can be found at http://tudat.tudelft.nl. 10 | The Tudat Wiki (http://tudat.tudelft.nl/projects/tudat/wiki) contains extensive 11 | documentation, howtos, and tutorials. 12 | 13 | This software makes use of the Eigen (http://eigen.tuxfamily.org/) and Boost C++ 14 | (http://www.boost.org/). 15 | 16 | For any enquires, please contact tudat-AE@tudelft.nl. 17 | -------------------------------------------------------------------------------- /include/tudat/constants.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_CONSTANTS_H 12 | #define TUDAT_CONSTANTS_H 13 | 14 | #include "astro/basic_astro/celestialBodyConstants.h" 15 | #include "astro/basic_astro/physicalConstants.h" 16 | #include "math/basic/mathematicalConstants.h" 17 | 18 | #endif // TUDAT_CONSTANTS_H 19 | -------------------------------------------------------------------------------- /tests/src/simulation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(EnvironmentModelSetup 12 | PRIVATE_LINKS 13 | ${Tudat_PROPAGATION_LIBRARIES} 14 | ) 15 | 16 | TUDAT_ADD_TEST_CASE(AccelerationModelSetup 17 | PRIVATE_LINKS 18 | ${Tudat_PROPAGATION_LIBRARIES} 19 | ) 20 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(src/astro) 2 | add_subdirectory(src/basics) 3 | add_subdirectory(src/interface) 4 | add_subdirectory(src/math) 5 | add_subdirectory(src/simulation) 6 | add_subdirectory(src/io) 7 | add_subdirectory(src/support) 8 | 9 | # Unzip compressed data and place in build tree. 10 | add_custom_target( unpack_test_data ALL) 11 | add_custom_command(TARGET unpack_test_data PRE_BUILD 12 | COMMAND ${CMAKE_COMMAND} -E remove_directory ${PROJECT_BINARY_DIR}/tests/data/ 13 | COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_CURRENT_SOURCE_DIR}/data.zip 14 | WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/tests 15 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data.zip 16 | COMMENT "Unpacking data.zip" 17 | VERBATIM) 18 | -------------------------------------------------------------------------------- /tests/src/math/quadrature/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(TrapezoidQuadrature 12 | PRIVATE_LINKS 13 | tudat_numerical_quadrature 14 | ) 15 | 16 | TUDAT_ADD_TEST_CASE(GaussianQuadrature 17 | PRIVATE_LINKS 18 | tudat_input_output 19 | tudat_numerical_quadrature 20 | ) 21 | -------------------------------------------------------------------------------- /include/tudat/astro/ground_stations.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_GROUND_STATIONS_H 12 | #define TUDAT_GROUND_STATIONS_H 13 | 14 | #include "ground_stations/groundStation.h" 15 | #include "ground_stations/groundStationState.h" 16 | #include "ground_stations/pointingAnglesCalculator.h" 17 | 18 | #endif // TUDAT_GROUND_STATIONS_H 19 | -------------------------------------------------------------------------------- /src/simulation/estimation_setup/createEulerAngleObservationPartials.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/simulation/estimation_setup/createEulerAngleObservationPartials.h" 2 | #include "tudat/astro/orbit_determination/observation_partials/eulerAngleObservablePartials.h" 3 | 4 | namespace tudat 5 | { 6 | 7 | namespace observation_partials 8 | { 9 | 10 | 11 | //! Function to generate one-way range partial wrt an initial position of a body. 12 | std::shared_ptr< ObservationPartial< 3 > > createEulerAngleObservablePartialWrtCurrentRotationalState( 13 | const estimatable_parameters::EstimatebleParameterIdentifier parameterIdentifier ) 14 | { 15 | return std::make_shared< EulerAngleObervationPartialWrtCurrentRotationalState >( parameterIdentifier ); 16 | 17 | } 18 | 19 | } 20 | 21 | } 22 | 23 | -------------------------------------------------------------------------------- /cmake_modules/FindNLOPT.cmake: -------------------------------------------------------------------------------- 1 | find_path(NLOPT_PAGMO_BASE_PATH NAMES nlopt.h 2 | NO_DEFAULT_PATH 3 | PATHS 4 | ${PROJECT_SOURCE_DIR}/../nlopt/src/api/ 5 | ${PROJECT_SOURCE_DIR}/../../nlopt/src/api/ 6 | ${PROJECT_SOURCE_DIR}/../../../nlopt/src/api/) 7 | 8 | set(NLOPT_LIBRARY "${NLOPT_PAGMO_BASE_PATH}/../../lib/libnlopt.a") 9 | set(NLOPT_INCLUDE_DIR "${NLOPT_PAGMO_BASE_PATH}/../../src/api/") 10 | 11 | add_library(NLOPT::nlopt UNKNOWN IMPORTED) 12 | set_target_properties(NLOPT::nlopt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${NLOPT_INCLUDE_DIR}") 13 | set_target_properties(NLOPT::nlopt PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "C" IMPORTED_LOCATION "${NLOPT_LIBRARY}") 14 | 15 | -------------------------------------------------------------------------------- /.conda/bld.bat: -------------------------------------------------------------------------------- 1 | mkdir build 2 | if errorlevel 1 exit 1 3 | cd build 4 | if errorlevel 1 exit 1 5 | cmake ^ 6 | -G "Visual Studio 15 2017 Win64" ^ 7 | -DCMAKE_CXX_STANDARD=17 ^ 8 | -DCMAKE_BUILD_TYPE=Release ^ 9 | -DCMAKE_PREFIX_PATH=%LIBRARY_PREFIX% ^ 10 | -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ 11 | -DPREFIX=%LIBRARY_PREFIX% ^ 12 | -DTUDAT_CONDA_BUILD=on ^ 13 | -DTUDAT_BUILD_STATIC_LIBRARY=off ^ 14 | -DTUDAT_BUILD_TUDAT_TUTORIALS=off ^ 15 | -DTUDAT_BUILD_WITH_SOFA_INTERFACE=on ^ 16 | -DTUDAT_BUILD_WITH_SPICE_INTERFACE=on ^ 17 | -DTUDAT_INSTALL=on ^ 18 | -DTUDAT_TEST_INSTALL=off ^ 19 | .. 20 | if errorlevel 1 exit 1 21 | cmake --build . --config RelWithDebInfo --target install 22 | if errorlevel 1 exit 1 23 | ctest 24 | if errorlevel 1 exit 1 25 | -------------------------------------------------------------------------------- /.conda/mingw/bld.bat: -------------------------------------------------------------------------------- 1 | mkdir build 2 | if errorlevel 1 exit 1 3 | cd build 4 | if errorlevel 1 exit 1 5 | cmake ^ 6 | -G "MinGW Makefiles" ^ 7 | -DCMAKE_CXX_STANDARD=14 ^ 8 | -DCMAKE_BUILD_TYPE=Release ^ 9 | -DCMAKE_PREFIX_PATH=%LIBRARY_PREFIX% ^ 10 | -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ 11 | -DPREFIX=%LIBRARY_PREFIX% ^ 12 | -DTUDAT_BUILD_STATIC_LIBRARY=on ^ 13 | -DTUDAT_BUILD_TUDAT_TUTORIALS=off ^ 14 | -DTUDAT_BUILD_TESTS=off ^ 15 | -DTUDAT_BUILD_WITH_SOFA_INTERFACE=on ^ 16 | -DTUDAT_BUILD_WITH_SPICE_INTERFACE=on ^ 17 | -DTUDAT_BUILD_WITH_JSON_INTERFACE=off ^ 18 | .. 19 | if errorlevel 1 exit 1 20 | cmake --build . --config RelWithDebInfo --target install -- -j2 21 | if errorlevel 1 exit 1 22 | :: ctest --verbose 23 | if errorlevel 1 exit 1 24 | -------------------------------------------------------------------------------- /include/tudat/math/quadrature.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_QUADRATURE_H 12 | #define TUDAT_QUADRATURE_H 13 | 14 | #include "quadrature/createNumericalQuadrature.h" 15 | #include "quadrature/gaussianQuadrature.h" 16 | #include "quadrature/numericalQuadrature.h" 17 | #include "quadrature/trapezoidQuadrature.h" 18 | 19 | #endif // TUDAT_QUADRATURE_H 20 | -------------------------------------------------------------------------------- /src/utils/data/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add source files. 12 | set(data_HEADERS downloadFile.h) 13 | 14 | # Add header files. 15 | set(data_SOURCES downloadFile.cpp) 16 | 17 | # Add library. 18 | TUDAT_ADD_LIBRARY("data" 19 | "${data_SOURCES}" 20 | "${data_HEADERS}" 21 | PUBLIC_LINKS "${CURL_LIBRARIES}" 22 | ) 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/src/astro/relativity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(RelativisticAccelerationCorrection PRIVATE_LINKS ${Tudat_PROPAGATION_LIBRARIES}) 12 | 13 | if( TUDAT_BUILD_WITH_ESTIMATION_TOOLS ) 14 | 15 | TUDAT_ADD_TEST_CASE(ShapiroTimeDelay PRIVATE_LINKS tudat_relativity tudat_gravitation tudat_observation_models tudat_ephemerides) 16 | 17 | endif( ) 18 | -------------------------------------------------------------------------------- /include/tudat/astro/relativity.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_RELATIVITY_H 12 | #define TUDAT_RELATIVITY_H 13 | 14 | #include "relativity/metric.h" 15 | #include "relativity/relativisticAccelerationCorrection.h" 16 | #include "relativity/relativisticLightTimeCorrection.h" 17 | #include "relativity/relativisticTimeConversion.h" 18 | 19 | #endif // TUDAT_RELATIVITY_H 20 | -------------------------------------------------------------------------------- /tests/src/astro/reference_frames/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | 12 | TUDAT_ADD_TEST_CASE(ReferenceFrameTransformations PRIVATE_LINKS tudat_reference_frames) 13 | 14 | TUDAT_ADD_TEST_CASE(ApparentAccelerationModel PRIVATE_LINKS tudat_reference_frames tudat_basic_astrodynamics) 15 | 16 | TUDAT_ADD_TEST_CASE(AerodynamicAngleCalculator PRIVATE_LINKS ${Tudat_PROPAGATION_LIBRARIES}) 17 | -------------------------------------------------------------------------------- /tests/src/astro/low_thrust/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | # 11 | 12 | # # Add subdirectories. 13 | add_subdirectory(shape_based) 14 | 15 | #### Add unit tests. 16 | #if( TUDAT_WITH_PAGMO ) 17 | # TUDAT_ADD_TEST_CASE(SimsFlanagan PRIVATE_LINKS tudat_low_thrust_trajectories tudat_shape_based_methods tudat_numerical_quadrature pagmo ${Tudat_PROPAGATION_LIBRARIES} ${Boost_LIBRARIES}) 18 | #endif( ) 19 | -------------------------------------------------------------------------------- /tests/src/math/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | # Notes 11 | # 12 | 13 | add_subdirectory("basic") 14 | add_subdirectory("geometric") 15 | add_subdirectory("interpolators") 16 | add_subdirectory("integrators") 17 | add_subdirectory("root_finders") 18 | add_subdirectory("statistics") 19 | add_subdirectory("quadrature") 20 | if(TUDAT_BUILD_WITH_FILTERS) 21 | add_subdirectory("filters") 22 | endif() 23 | -------------------------------------------------------------------------------- /include/tudat/math/filters.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_FILTERS_H 12 | #define TUDAT_FILTERS_H 13 | 14 | #include "filters/createFilter.h" 15 | #include "filters/extendedKalmanFilter.h" 16 | #include "filters/filter.h" 17 | #include "filters/kalmanFilter.h" 18 | #include "filters/linearKalmanFilter.h" 19 | #include "filters/unscentedKalmanFilter.h" 20 | 21 | #endif // TUDAT_FILTERS_H 22 | -------------------------------------------------------------------------------- /tests/src/astro/low_thrust/shape_based/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(HodographicShaping PRIVATE_LINKS tudat_shape_based_methods tudat_low_thrust_trajectories tudat_numerical_quadrature ${Tudat_PROPAGATION_LIBRARIES}) 12 | 13 | TUDAT_ADD_TEST_CASE(SphericalShaping PRIVATE_LINKS tudat_shape_based_methods tudat_low_thrust_trajectories tudat_numerical_quadrature ${Tudat_PROPAGATION_LIBRARIES}) 14 | -------------------------------------------------------------------------------- /src/math/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | # Notes 11 | # 12 | 13 | # Add sub-directories. 14 | add_subdirectory("basic") 15 | add_subdirectory("geometric") 16 | add_subdirectory("interpolators") 17 | add_subdirectory("integrators") 18 | add_subdirectory("root_finders") 19 | add_subdirectory("statistics") 20 | add_subdirectory("quadrature") 21 | if(TUDAT_BUILD_WITH_FILTERS) 22 | add_subdirectory("filters") 23 | endif() 24 | -------------------------------------------------------------------------------- /include/tudat/astro/reference_frames.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_REFERENCE_FRAMES_H 12 | #define TUDAT_REFERENCE_FRAMES_H 13 | 14 | #include "reference_frames/aerodynamicAngleCalculator.h" 15 | #include "reference_frames/apparentAccelerationModel.h" 16 | #include "reference_frames/dependentOrientationCalculator.h" 17 | #include "reference_frames/referenceFrameTransformations.h" 18 | 19 | #endif // TUDAT_REFERENCE_FRAMES_H 20 | -------------------------------------------------------------------------------- /include/tudat/astro/propulsion.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_PROPULSION_H 12 | #define TUDAT_PROPULSION_H 13 | 14 | #include "propulsion/costateBasedThrustGuidance.h" 15 | #include "propulsion/massRateFromThrust.h" 16 | #include "propulsion/thrustAccelerationModel.h" 17 | #include "propulsion/thrustFunctions.h" 18 | #include "propulsion/thrustGuidance.h" 19 | #include "propulsion/thrustMagnitudeWrapper.h" 20 | 21 | #endif // TUDAT_PROPULSION_H 22 | -------------------------------------------------------------------------------- /include/tudat/io/util.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ggarrett on 19-05-20. 3 | // 4 | 5 | #ifndef TUDAT_UTIL_H 6 | #define TUDAT_UTIL_H 7 | 8 | #include 9 | 10 | namespace tudat { 11 | namespace input_output { 12 | //! Function to compare if two lists of aerodynamic coefficient independent variables are equal 13 | /*! 14 | * Function to compare if two lists of aerodynamic coefficient independent variables (vector of vector of doubles) are equal 15 | * \param list1 First list that is to be compared. 16 | * \param list2 Second list that is to be compared. 17 | * \return True of the two lists are completely equal in size and contents, false otherwise. 18 | */ 19 | bool compareIndependentVariables( const std::vector< std::vector< double > >& list1, 20 | const std::vector< std::vector< double > >& list2 ); 21 | 22 | } 23 | } 24 | #endif //TUDAT_UTIL_H 25 | 26 | -------------------------------------------------------------------------------- /src/astro/relativity/metric.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include 12 | 13 | #include "tudat/astro/relativity/metric.h" 14 | 15 | namespace tudat 16 | { 17 | 18 | namespace relativity 19 | { 20 | 21 | //! Initialize global PPN parameters 22 | std::shared_ptr< PPNParameterSet > ppnParameterSet = std::make_shared< PPNParameterSet >( 1.0, 1.0 ); 23 | 24 | double equivalencePrincipleLpiViolationParameter = 0.0; 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestGravityFieldVariation/tabulated.json: -------------------------------------------------------------------------------- 1 | { 2 | "cosineCoefficientCorrections": { 3 | "0": [ 4 | [ 5 | 0, 6 | 1 7 | ], 8 | [ 9 | -2, 10 | 1 11 | ] 12 | ], 13 | "1": [ 14 | [ 15 | 3, 16 | 2.5 17 | ], 18 | [ 19 | -1, 20 | 0 21 | ] 22 | ] 23 | }, 24 | "sineCoefficientCorrections": { 25 | "0": [ 26 | [ 27 | -1, 28 | 4 29 | ], 30 | [ 31 | 0, 32 | 1 33 | ] 34 | ], 35 | "1": [ 36 | [ 37 | 3, 38 | 0.5 39 | ], 40 | [ 41 | -1, 42 | -2 43 | ] 44 | ] 45 | }, 46 | "minimumDegree": 4, 47 | "minimumOrder": 2, 48 | "interpolator": { 49 | "type": "cubicSpline" 50 | }, 51 | "bodyDeformationType": "tabulatedVariation" 52 | } -------------------------------------------------------------------------------- /config.hpp.in: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_CONFIG_HPP 12 | #define TUDAT_CONFIG_HPP 13 | 14 | #define TUDAT_VERSION "@Tudat_VERSION@" 15 | #define TUDAT_VERSION_MAJOR "@Tudat_VERSION_MAJOR@" 16 | #define TUDAT_VERSION_MINOR "@Tudat_VERSION_MINOR@" 17 | #define TUDAT_VERSION_PATCH "@Tudat_VERSION_PATCH@" 18 | 19 | // TODO: This need to be moved somewhere else eventually. 20 | #define TEST_DATA_FOLDER "@PROJECT_BINARY_DIR@/tests/data/" 21 | 22 | //@TUDAT_BUILD_TESTS@ 23 | 24 | #endif -------------------------------------------------------------------------------- /include/tudat/math/root_finders.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_ROOT_FINDERS_H 12 | #define TUDAT_ROOT_FINDERS_H 13 | 14 | #include "root_finders/bisection.h" 15 | #include "root_finders/createRootFinder.h" 16 | #include "root_finders/halleyRootFinder.h" 17 | #include "root_finders/newtonRaphson.h" 18 | #include "root_finders/rootFinder.h" 19 | #include "root_finders/secantRootFinder.h" 20 | #include "root_finders/terminationConditions.h" 21 | 22 | #endif // TUDAT_ROOT_FINDERS_H 23 | -------------------------------------------------------------------------------- /include/tudat/utils/data/downloadFile.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2022, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | namespace tudat { 12 | namespace utils { 13 | namespace data { 14 | 15 | std::string download_file(const char *remote_url, 16 | const char *cache = "true", 17 | int verbosity = 1, 18 | bool try_unzip = true, 19 | const char *prefix = nullptr); 20 | 21 | } // namespace data 22 | } // namespace utils 23 | } // namespace tudat 24 | -------------------------------------------------------------------------------- /tests/src/math/root_finders/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | ## Add tests 12 | TUDAT_ADD_TEST_CASE(Bisection 13 | PRIVATE_LINKS 14 | tudat_root_finders 15 | ) 16 | 17 | TUDAT_ADD_TEST_CASE( HalleyRootFinder 18 | PRIVATE_LINKS 19 | tudat_root_finders 20 | ) 21 | 22 | TUDAT_ADD_TEST_CASE(NewtonRaphson 23 | PRIVATE_LINKS 24 | tudat_root_finders 25 | ) 26 | 27 | TUDAT_ADD_TEST_CASE(SecantRootFinder 28 | PRIVATE_LINKS 29 | tudat_root_finders 30 | ) 31 | -------------------------------------------------------------------------------- /docs/sphinx/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=source 11 | set BUILDDIR=build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestPropagator/translational.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "encke", 3 | "centralBodies": [ 4 | "A", 5 | "B" 6 | ], 7 | "accelerations": { 8 | "a": { 9 | "A": [ 10 | { 11 | "type": "pointMassGravity" 12 | } 13 | ], 14 | "B": [ 15 | { 16 | "type": "pointMassGravity" 17 | } 18 | ] 19 | }, 20 | "b": { 21 | "A": [ 22 | { 23 | "type": "pointMassGravity" 24 | } 25 | ], 26 | "B": [ 27 | { 28 | "type": "pointMassGravity" 29 | } 30 | ] 31 | } 32 | }, 33 | "integratedStateType": "translational", 34 | "bodiesToPropagate": [ 35 | "a", 36 | "b" 37 | ], 38 | "initialStates": [ 39 | 1, 40 | 2, 41 | 3, 42 | 4, 43 | 5, 44 | 6, 45 | 7, 46 | 8, 47 | 9, 48 | 10, 49 | 11, 50 | 12 51 | ] 52 | } -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestThrust/interpolated.json: -------------------------------------------------------------------------------- 1 | { 2 | "dataInterpolation": { 3 | "data": { 4 | "dependentVariableFirstDerivativeValues": [ 5 | [ 6 | 0, 7 | 0.1, 8 | 0 9 | ], 10 | [ 11 | 0.1, 12 | -0.1, 13 | 0 14 | ], 15 | [ 16 | -0.02, 17 | 0, 18 | 0 19 | ] 20 | ], 21 | "map": { 22 | "0": [ 23 | 0, 24 | 0, 25 | 5 26 | ], 27 | "6068": [ 28 | 0, 29 | 1, 30 | 5 31 | ], 32 | "6097": [ 33 | 1, 34 | 0, 35 | 5 36 | ] 37 | } 38 | }, 39 | "interpolator": { 40 | "type": "hermiteSpline" 41 | } 42 | }, 43 | "specificImpulse": 3000, 44 | "frame": "intertial", 45 | "centralBody": "Moon", 46 | "type": "thrust" 47 | } -------------------------------------------------------------------------------- /tests/src/astro/orbit_determination/acceleration_partials/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | 10 | TUDAT_ADD_TEST_CASE(AccelerationPartials 11 | PRIVATE_LINKS 12 | ${Tudat_ESTIMATION_LIBRARIES} 13 | ) 14 | 15 | TUDAT_ADD_TEST_CASE(SphericalHarmonicPartials 16 | PRIVATE_LINKS 17 | ${Tudat_ESTIMATION_LIBRARIES} 18 | ) 19 | 20 | TUDAT_ADD_TEST_CASE(MutualSphericalHarmonicPartials 21 | PRIVATE_LINKS 22 | ${Tudat_ESTIMATION_LIBRARIES} 23 | ) 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/src/support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Set the source files. 12 | set(test_support_SOURCES 13 | "numericalObservationPartial.cpp" 14 | "observationPartialTestFunctions.cpp" 15 | ) 16 | 17 | # Set the header files. 18 | set(test_support_HEADERS 19 | "numericalIntegratorTests.h" 20 | "numericalObservationPartial.h" 21 | "observationPartialTestFunctions.h" 22 | ) 23 | 24 | TUDAT_ADD_TEST_LIBRARY("support" 25 | "${test_support_SOURCES}" 26 | "${test_support_HEADERS}") 27 | 28 | -------------------------------------------------------------------------------- /.github/workflows/linter.yml.disabled: -------------------------------------------------------------------------------- 1 | name: Linter 🔎 2 | 3 | # Workflow syntax: 4 | # https://help.github.com/en/articles/workflow-syntax-for-github-actions 5 | 6 | on: 7 | push: 8 | paths-ignore: "docs/**" 9 | pull_request: 10 | paths-ignore: "docs/**" 11 | 12 | jobs: 13 | cpp-linter: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v2 17 | - uses: shenxianpeng/cpp-linter-action@master 18 | id: linter 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | with: 22 | tidy-checks: '-*' 23 | version: 12 24 | files-changed-only: false 25 | # lines-changed-only: true 26 | thread-comments: true 27 | 28 | - name: Fail fast?! 29 | if: steps.linter.outputs.checks-failed > 0 30 | run: | 31 | echo "Some files failed the linting checks!" 32 | # for actual deployment 33 | # run: exit 1 -------------------------------------------------------------------------------- /src/astro/system_models/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Set the header files. 12 | set(system_models_HEADERS 13 | "engineModel.h" 14 | "vehicleSystems.h" 15 | ) 16 | 17 | set(system_models_SOURCES 18 | "dummySystemModel.cpp" 19 | ) 20 | 21 | TUDAT_ADD_LIBRARY("system_models" 22 | "${system_models_SOURCES}" 23 | "${system_models_HEADERS}" 24 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 25 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 26 | ) 27 | -------------------------------------------------------------------------------- /tools/update_copyright.py: -------------------------------------------------------------------------------- 1 | 2 | def get_current_year(): 3 | """ 4 | gets current year 5 | :return: 6 | """ 7 | return datetime.datetime.now().year 8 | 9 | COPYRIGHT = ( 10 | f""" 11 | /* Copyright (c) 2010-{get_current_year()}, Delft University of Technology 12 | * All rights reserved 13 | * 14 | * This file is part of the Tudat. Redistribution and use in source and 15 | * binary forms, with or without modification, are permitted exclusively 16 | * under the terms of the Modified BSD license. You should have received 17 | * a copy of the license with this file. If not, please or visit: 18 | * http://tudat.tudelft.nl/LICENSE. 19 | */ 20 | """ 21 | ) 22 | 23 | def get_all_files(path): 24 | """ 25 | gets all files recursively 26 | :param path: 27 | :return: 28 | """ 29 | for root, dirs, files in os.walk(path): 30 | for file in files: 31 | yield os.path.join(root, file) 32 | 33 | 34 | def -------------------------------------------------------------------------------- /examples/.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # cmake 3 | # 4 | CMakeCache.txt 5 | CMakeLists.txt.user 6 | CMakeFiles 7 | CMakeScripts 8 | Makefile 9 | cmake_install.cmake 10 | install_manifest.txt 11 | 12 | # 13 | # C++ 14 | # 15 | # Compiled Object files 16 | *.slo 17 | *.lo 18 | *.o 19 | *.obj 20 | 21 | # Precompiled Headers 22 | *.gch 23 | *.pch 24 | 25 | # Compiled Dynamic libraries 26 | *.so 27 | *.dylib 28 | *.dll 29 | 30 | # Fortran module files 31 | *.mod 32 | 33 | # Data files 34 | *.dat 35 | 36 | # Figure files 37 | *.eps 38 | *.png 39 | *.pdf 40 | *.jpg 41 | *.jpeg 42 | 43 | # Compiled Static libraries 44 | *.lai 45 | *.la 46 | *.a 47 | *.lib 48 | 49 | # Executables 50 | *.exe 51 | *.out 52 | *.app 53 | 54 | # 55 | # Build and doxygen related 56 | # 57 | Documentation/ 58 | doc/doxygen/html/ 59 | doc/doxygen/latex/ 60 | build*/ 61 | bin/ 62 | lib/ 63 | sandbox/ 64 | 65 | # 66 | # Editor related 67 | # 68 | *~ 69 | *# 70 | .#* 71 | *.autosave 72 | *.~?~ 73 | *.save 74 | .DS_Store 75 | -------------------------------------------------------------------------------- /.github/workflows/inform.yml: -------------------------------------------------------------------------------- 1 | name: Inform .github repository ℹ️ 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | - 'master' 8 | - 'develop' 9 | - 'feature/**' 10 | 11 | jobs: 12 | dispacher: 13 | runs-on: ubuntu-latest 14 | name: webservices 15 | steps: 16 | - name: repository-dispatch 17 | uses: peter-evans/repository-dispatch@v1 18 | with: 19 | token: ${{ secrets.GH_TOKEN }} 20 | repository: tudat-team/.github 21 | event-type: push to ${{ github.repository }} 22 | client-payload: >- 23 | { 24 | "event": "${{ github.event_name }}", 25 | "actor": "${{ github.actor }}", 26 | "repository": "${{ github.repository }}", 27 | "ref": "${{ github.ref }}", 28 | "ref_name": "${{ github.ref_name }}", 29 | "ref_type": "${{ github.ref_type }}", 30 | "sha": "${{ github.sha }}" 31 | } 32 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/podInputOutputTypes.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/orbit_determination/podInputOutputTypes.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace simulation_setup 7 | { 8 | 9 | void scaleInformationMatrixWithWeights( 10 | Eigen::MatrixXd& informationMatrix, 11 | const Eigen::VectorXd& weightsDiagonal ) 12 | { 13 | int numberOfParameters = informationMatrix.cols( ); 14 | for( int i = 0; i < weightsDiagonal.rows( ); i++ ) 15 | { 16 | informationMatrix.block( i, 0, 1, numberOfParameters ) *= std::sqrt( weightsDiagonal( i ) ); 17 | } 18 | } 19 | 20 | 21 | template class PodInput< double, double >; 22 | template struct PodOutput< double >; 23 | 24 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 25 | template class PodInput< long double, double >; 26 | template class PodInput< double, Time >; 27 | template class PodInput< long double, Time >; 28 | template struct PodOutput< long double >; 29 | #endif 30 | 31 | } 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /dev/fix_git.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | git filter-branch -f --env-filter ' 4 | 5 | HIDDEN_EMAIL="hidden@hidden.com" 6 | 7 | if [[ "GIT_AUTHOR_EMAIL" = "$HIDDEN_EMAIL" || "$GIT_COMMITTER_EMAIL" = "$HIDDEN_EMAIL" ]]; 8 | then 9 | if [[ "$GIT_COMMITTER_NAME" = "Guido Holtkamp" || "$GIT_AUTHOR_NAME" = "Guido Holtkamp" ]]; 10 | then 11 | export GIT_AUTHOR_EMAIL="guido.email@unknown.com" 12 | export GIT_COMMITTER_EMAIL="guido.email@unknown.com" 13 | fi 14 | if [[ "$GIT_COMMITTER_NAME" = "Liban Abdulkadir" || "$GIT_AUTHOR_NAME" = "Liban Abdulkadir" ]]; 15 | then 16 | export GIT_AUTHOR_EMAIL="liban.email@unknown.com" 17 | export GIT_COMMITTER_EMAIL="liban.email@unknown.com" 18 | fi 19 | if [[ "$GIT_COMMITTER_NAME" = "Dominic Dirkx" || "$GIT_AUTHOR_NAME" = "Dominic Dirkx" ]]; 20 | then 21 | export GIT_AUTHOR_EMAIL="D.Dirkx@tudelft.nl" 22 | export GIT_COMMITTER_EMAIL="D.Dirkx@tudelft.nl" 23 | fi 24 | fi 25 | ' --tag-name-filter cat -- --branches --tags 26 | -------------------------------------------------------------------------------- /src/interface/json/jsonInterface.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include 12 | 13 | #include "tudat/interface/json/jsonInterface.h" 14 | 15 | namespace tudat 16 | { 17 | 18 | namespace json_interface 19 | { 20 | 21 | template class JsonSimulationManager< double, double >; 22 | 23 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 24 | template class JsonSimulationManager< double, long double >; 25 | //template class JsonSimulationManager< Time, double >; 26 | //template class JsonSimulationManager< Time, long double >; 27 | #endif 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/astro/propagators/nBodyEnckeStateDerivative.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/astro/propagators/nBodyEnckeStateDerivative.h" 12 | 13 | namespace tudat 14 | { 15 | 16 | namespace propagators 17 | { 18 | 19 | template class NBodyEnckeStateDerivative< double, double >; 20 | 21 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 22 | template class NBodyEnckeStateDerivative< long double, double >; 23 | template class NBodyEnckeStateDerivative< double, Time >; 24 | template class NBodyEnckeStateDerivative< long double, Time >; 25 | #endif 26 | 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/interface/json/jsonEstimationInterface.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include 12 | 13 | #include "tudat/interface/json/jsonEstimationInterface.h" 14 | 15 | namespace tudat 16 | { 17 | 18 | namespace json_interface 19 | { 20 | 21 | template class JsonEstimationManager< double, double >; 22 | 23 | //#if( BUILD_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 24 | //template class JsonEstimationManager< Time, long double >; 25 | //template class JsonEstimationManager< double, double >; 26 | //template class JsonEstimationManager< Time, long double >; 27 | //#endif 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /include/tudat/math/statistics.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_STATISTICS_H 12 | #define TUDAT_STATISTICS_H 13 | 14 | #include "statistics/basicStatistics.h" 15 | #include "statistics/boostProbabilityDistributions.h" 16 | #include "statistics/continuousProbabilityDistributions.h" 17 | #include "statistics/kernelDensityDistribution.h" 18 | #include "statistics/multiVariateGaussianProbabilityDistributions.h" 19 | #include "statistics/randomSampling.h" 20 | #include "statistics/randomVariableGenerator.h" 21 | #include "statistics/simpleLinearRegression.h" 22 | 23 | #endif // TUDAT_STATISTICS_H 24 | -------------------------------------------------------------------------------- /include/tudat/math/geometric.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_GEOMETRIC_H 12 | #define TUDAT_GEOMETRIC_H 13 | 14 | #include "geometric/capsule.h" 15 | #include "geometric/compositeSurfaceGeometry.h" 16 | #include "geometric/conicalFrustum.h" 17 | #include "geometric/geometricShapesToFile.h" 18 | #include "geometric/lawgsPartGeometry.h" 19 | #include "geometric/quadrilateralMeshedSurfaceGeometry.h" 20 | #include "geometric/singleSurfaceGeometry.h" 21 | #include "geometric/sphereSegment.h" 22 | #include "geometric/surfaceGeometry.h" 23 | #include "geometric/torus.h" 24 | 25 | #endif // TUDAT_GEOMETRIC_H 26 | -------------------------------------------------------------------------------- /tests/src/interface/sofa/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(SofaEarthOrientationInterface 12 | PRIVATE_LINKS 13 | tudat_sofa_interface 14 | tudat_basic_mathematics 15 | ) 16 | 17 | TUDAT_ADD_TEST_CASE(SofaFundamentalArguments 18 | PRIVATE_LINKS 19 | tudat_sofa_interface 20 | tudat_basic_mathematics 21 | tudat_basic_astrodynamics 22 | ) 23 | 24 | TUDAT_ADD_TEST_CASE(SofaTimeConversions 25 | PRIVATE_LINKS 26 | tudat_sofa_interface 27 | tudat_basic_astrodynamics 28 | tudat_basic_mathematics 29 | ) 30 | -------------------------------------------------------------------------------- /src/interface/spice/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | #Set the source files. 12 | set(spice_interface_SOURCES 13 | "spiceEphemeris.cpp" 14 | "spiceRotationalEphemeris.cpp" 15 | "spiceInterface.cpp" 16 | ) 17 | 18 | # Set the header files. 19 | set(spice_interface_HEADERS 20 | "spiceEphemeris.h" 21 | "spiceRotationalEphemeris.h" 22 | "spiceInterface.h" 23 | ) 24 | 25 | # Add library. 26 | TUDAT_ADD_LIBRARY("spice_interface" 27 | "${spice_interface_SOURCES}" 28 | "${spice_interface_HEADERS}" 29 | PRIVATE_LINKS "${CSpice_LIBRARIES}" 30 | ) 31 | -------------------------------------------------------------------------------- /include/tudat/astro/earth_orientation.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_EARTH_ORIENTATION_H 12 | #define TUDAT_EARTH_ORIENTATION_H 13 | 14 | #include "earth_orientation/earthOrientationCalculator.h" 15 | #include "earth_orientation/eopReader.h" 16 | #include "earth_orientation/polarMotionCalculator.h" 17 | #include "earth_orientation/precessionNutationCalculator.h" 18 | #include "earth_orientation/readAmplitudeAndArgumentMultipliers.h" 19 | #include "earth_orientation/shortPeriodEarthOrientationCorrectionCalculator.h" 20 | #include "earth_orientation/terrestrialTimeScaleConverter.h" 21 | 22 | #endif // TUDAT_EARTH_ORIENTATION_H 23 | -------------------------------------------------------------------------------- /src/math/basic/basicMathematicsFunctions.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include 13 | #include 14 | 15 | #include "tudat/math/basic/basicMathematicsFunctions.h" 16 | 17 | namespace tudat 18 | { 19 | namespace basic_mathematics 20 | { 21 | 22 | //! Get global random number generator. 23 | GlobalRandomNumberGeneratorType& getGlobalRandomNumberGenerator( ) 24 | { 25 | static GlobalRandomNumberGeneratorType globalRandomNumberGenerator( 26 | static_cast< unsigned int >( std::time( 0 ) ) ); 27 | return globalRandomNumberGenerator; 28 | } 29 | 30 | } // namespace basic_mathematics 31 | } // namespace tudat 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # cmake 3 | # 4 | CMakeCache.txt 5 | CMakeLists.txt.user 6 | CMakeFiles 7 | CMakeScripts 8 | cmake_install.cmake 9 | install_manifest.txt 10 | 11 | #. 12 | # C++ 13 | # 14 | # Compiled Object files 15 | *.slo 16 | *.lo 17 | *.o 18 | *.obj 19 | 20 | # Precompiled Headers 21 | *.gch 22 | *.pch 23 | 24 | # Compiled Dynamic libraries 25 | *.so 26 | *.dylib 27 | *.dll 28 | 29 | # Fortran module files 30 | *.mod 31 | 32 | # Compiled Static libraries 33 | *.lai 34 | *.la 35 | *.a 36 | *.lib 37 | 38 | # Executables 39 | *.exe 40 | *.out 41 | *.app 42 | *.sh 43 | 44 | # 45 | # Build and doxygen related 46 | # 47 | Documentation/ 48 | docs/doxygen/html/ 49 | docs/doxygen/latex/ 50 | docs/doxygen/xml/ 51 | build*/ 52 | bin/ 53 | lib/ 54 | 55 | # 56 | # Spice Kernel creation tools 57 | # 58 | Tudat/interface/spice/Kernels/KernelMerge/ 59 | Tudat/interface/spice/Kernels/ 60 | 61 | # 62 | # Editor related 63 | # 64 | *~ 65 | *# 66 | .#* 67 | *.autosave 68 | *.~?~ 69 | *.save 70 | .DS_Store 71 | /.idea/* 72 | /cmake-build-debug/* 73 | /cmake-build* 74 | 75 | 76 | # Rever 77 | rever/ 78 | -------------------------------------------------------------------------------- /src/astro/gravitation/mutualSphericalHarmonicGravityModel.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | #include "tudat/astro/gravitation/mutualSphericalHarmonicGravityModel.h" 11 | 12 | namespace tudat 13 | { 14 | 15 | namespace gravitation 16 | { 17 | 18 | //! Function to manually remove the C(0,0) term from cosine coefficients. 19 | Eigen::MatrixXd setDegreeAndOrderCoefficientToZero( 20 | const std::function< Eigen::MatrixXd( ) > originalCosineCoefficientFunction ) 21 | { 22 | Eigen::MatrixXd newCoefficients = originalCosineCoefficientFunction( ); 23 | newCoefficients( 0, 0 ) = 0.0; 24 | return newCoefficients; 25 | } 26 | 27 | 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /include/tudat/math/integrators.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_INTEGRATORS_H 12 | #define TUDAT_INTEGRATORS_H 13 | 14 | #include "integrators/adamsBashforthMoultonIntegrator.h" 15 | #include "integrators/bulirschStoerVariableStepsizeIntegrator.h" 16 | #include "integrators/createNumericalIntegrator.h" 17 | #include "integrators/euler.h" 18 | #include "integrators/numericalIntegrator.h" 19 | #include "integrators/reinitializableNumericalIntegrator.h" 20 | #include "integrators/rungeKutta4Integrator.h" 21 | #include "integrators/rungeKuttaCoefficients.h" 22 | #include "integrators/rungeKuttaVariableStepSizeIntegrator.h" 23 | 24 | #endif // TUDAT_INTEGRATORS_H 25 | -------------------------------------------------------------------------------- /src/basics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add source files. 12 | set(basics_SOURCES 13 | "utilities.cpp" 14 | ) 15 | 16 | # Add header files. 17 | set(basics_HEADERS 18 | "utilities.h" 19 | "testMacros.h" 20 | "utilityMacros.h" 21 | "timeType.h" 22 | "basicTypedefs.h" 23 | "identityElements.h" 24 | "tudatTypeTraits.h" 25 | ) 26 | 27 | # Add library. 28 | TUDAT_ADD_LIBRARY("basics" 29 | "${basics_SOURCES}" 30 | "${basics_HEADERS}" 31 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 32 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 33 | ) 34 | -------------------------------------------------------------------------------- /include/tudat/io/applicationOutput.h: -------------------------------------------------------------------------------- 1 | #ifndef TUDAT_APPLICATIONOUTPUT_H 2 | #define TUDAT_APPLICATIONOUTPUT_H 3 | 4 | #include 5 | 6 | namespace tudat_applications 7 | { 8 | 9 | //! Get path for output directory. 10 | static inline std::string getOutputPath( const std::string& extraDirectory = "" ) 11 | { 12 | // Declare file path string assigned to filePath. 13 | // __FILE__ only gives the absolute path of the header file! 14 | std::string filePath_( __FILE__ ); 15 | 16 | // Strip filename from temporary string and return root-path string. 17 | std::string reducedPath = filePath_.substr( 0, filePath_.length( ) - 18 | std::string( "applicationOutput.h" ).length( ) ); 19 | std::string outputPath = reducedPath + "SimulationOutput/"; 20 | if( extraDirectory != "" ) 21 | { 22 | outputPath += extraDirectory; 23 | } 24 | 25 | if( outputPath.at( outputPath.size( ) - 1 ) != '/' ) 26 | { 27 | outputPath += "/"; 28 | } 29 | 30 | return outputPath; 31 | } 32 | } 33 | 34 | 35 | #endif // TUDAT_APPLICATIONOUTPUT_H 36 | -------------------------------------------------------------------------------- /src/math/filters/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add header files. 12 | set(filters_HEADERS 13 | "createFilter.h" 14 | "extendedKalmanFilter.h" 15 | "filter.h" 16 | "kalmanFilter.h" 17 | "linearKalmanFilter.h" 18 | "unscentedKalmanFilter.h" 19 | "tests/controlClass.h" 20 | ) 21 | 22 | set(filters_SOURCES 23 | "filter.cpp" 24 | ) 25 | 26 | # Add library. 27 | TUDAT_ADD_LIBRARY("filters" 28 | "${filters_SOURCES}" 29 | "${filters_HEADERS}" 30 | PRIVATE_LINKS "${Boost_LIBRARIES}" 31 | PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 32 | ) 33 | 34 | -------------------------------------------------------------------------------- /src/interface/json/jsonInterfaceVariational.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include 12 | 13 | #include "tudat/interface/json/jsonInterfaceVariational.h" 14 | 15 | namespace tudat 16 | { 17 | 18 | namespace json_interface 19 | { 20 | 21 | template class JsonVariationalEquationsSimulationManager< double, double >; 22 | 23 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 24 | //template class JsonVariationalEquationsSimulationManager< Time, double >; 25 | template class JsonVariationalEquationsSimulationManager< double, long double >; 26 | //template class JsonVariationalEquationsSimulationManager< Time, long double >; 27 | #endif 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /examples/tudat/satellite_propagation/applicationOutput.h: -------------------------------------------------------------------------------- 1 | #ifndef TUDAT_APPLICATIONOUTPUT_H 2 | #define TUDAT_APPLICATIONOUTPUT_H 3 | 4 | #include 5 | 6 | namespace tudat_applications 7 | { 8 | 9 | //! Get path for output directory. 10 | static inline std::string getOutputPath( const std::string& extraDirectory = "" ) 11 | { 12 | // Declare file path string assigned to filePath. 13 | // __FILE__ only gives the absolute path of the header file! 14 | std::string filePath_( __FILE__ ); 15 | 16 | // Strip filename from temporary string and return root-path string. 17 | std::string reducedPath = filePath_.substr( 0, filePath_.length( ) - 18 | std::string( "applicationOutput.h" ).length( ) ); 19 | std::string outputPath = reducedPath + "SimulationOutput/"; 20 | if( extraDirectory != "" ) 21 | { 22 | outputPath += extraDirectory; 23 | } 24 | 25 | if( outputPath.at( outputPath.size( ) - 1 ) != '/' ) 26 | { 27 | outputPath += "/"; 28 | } 29 | 30 | return outputPath; 31 | } 32 | 33 | } 34 | 35 | #endif // TUDAT_APPLICATIONOUTPUT_H 36 | -------------------------------------------------------------------------------- /src/astro/ground_stations/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Set the source files. 12 | set(ground_stations_SOURCES 13 | "groundStation.cpp" 14 | "groundStationState.cpp" 15 | "pointingAnglesCalculator.cpp" 16 | ) 17 | 18 | # Set the header files. 19 | set(ground_stations_HEADERS 20 | "groundStation.h" 21 | "groundStationState.h" 22 | "pointingAnglesCalculator.h" 23 | ) 24 | 25 | TUDAT_ADD_LIBRARY("ground_stations" 26 | "${ground_stations_SOURCES}" 27 | "${ground_stations_HEADERS}" 28 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 29 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 30 | ) 31 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | 10 | add_subdirectory("acceleration_partials") 11 | add_subdirectory("rotational_dynamics_partials") 12 | add_subdirectory("estimatable_parameters") 13 | add_subdirectory("observation_partials") 14 | 15 | ## Set the source files. 16 | set(orbit_determination_SOURCES 17 | "stateDerivativePartial.cpp" 18 | "podInputOutputTypes.cpp" 19 | ) 20 | 21 | # Set the header files. 22 | set(orbit_determination_HEADERS 23 | "stateDerivativePartial.h" 24 | "podInputOutputTypes.h" 25 | ) 26 | # 27 | # 28 | # Add library. 29 | TUDAT_ADD_LIBRARY("orbit_determination" 30 | "${orbit_determination_SOURCES}" 31 | "${orbit_determination_HEADERS}" 32 | ) 33 | -------------------------------------------------------------------------------- /src/astro/electromagnetism/cannonBallRadiationPressureForce.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include "tudat/astro/electromagnetism/cannonBallRadiationPressureForce.h" 13 | 14 | namespace tudat 15 | { 16 | namespace electromagnetism 17 | { 18 | 19 | //! Compute radiation pressure force using a cannon-ball model. 20 | Eigen::Vector3d computeCannonBallRadiationPressureForce( 21 | const double radiationPressure, 22 | const Eigen::Vector3d& vectorToSource, 23 | const double area, 24 | const double radiationPressureCoefficient ) 25 | { 26 | return -radiationPressure * radiationPressureCoefficient * area * vectorToSource; 27 | } 28 | 29 | } // namespace electromagnetism 30 | } // namespace tudat 31 | -------------------------------------------------------------------------------- /src/math/root_finders/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add header files. 12 | set(root_finders_HEADERS 13 | "halleyRootFinder.h" 14 | "newtonRaphson.h" 15 | "rootFinder.h" 16 | "secantRootFinder.h" 17 | "bisection.h" 18 | "terminationConditions.h" 19 | "createRootFinder.h" 20 | ) 21 | 22 | # Add source files. 23 | set(root_finders_SOURCES 24 | "createRootFinder.cpp" 25 | ) 26 | 27 | # Add library. 28 | TUDAT_ADD_LIBRARY("root_finders" 29 | "${root_finders_SOURCES}" 30 | "${root_finders_HEADERS}" 31 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 32 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 33 | ) 34 | -------------------------------------------------------------------------------- /include/tudat/astro/electromagnetism.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_ELECTROMAGNETISM_H 12 | #define TUDAT_ELECTROMAGNETISM_H 13 | 14 | #include "electromagnetism/basicElectroMagnetism.h" 15 | #include "electromagnetism/cannonBallRadiationPressureAcceleration.h" 16 | #include "electromagnetism/cannonBallRadiationPressureForce.h" 17 | #include "electromagnetism/lorentzStaticMagneticAcceleration.h" 18 | #include "electromagnetism/lorentzStaticMagneticForce.h" 19 | #include "electromagnetism/panelledRadiationPressure.h" 20 | #include "electromagnetism/radiationPressureInterface.h" 21 | #include "electromagnetism/solarSailAcceleration.h" 22 | #include "electromagnetism/solarSailForce.h" 23 | 24 | #endif // TUDAT_ELECTROMAGNETISM_H 25 | -------------------------------------------------------------------------------- /src/io/linearFieldTransform.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include "tudat/io/linearFieldTransform.h" 13 | 14 | namespace tudat 15 | { 16 | namespace input_output 17 | { 18 | 19 | //! Transform input string. 20 | std::shared_ptr< std::string > LinearFieldTransform::transform( const std::string& input ) 21 | { 22 | // Transform string to double. 23 | const double number = std::stod( input ); 24 | 25 | // Perform transformation. 26 | const double result = slope * number + intercept; 27 | 28 | // Return pointer to transformed value, in string format. 29 | return std::shared_ptr< std::string >( new std::string( std::to_string( result ) ) ); 30 | } 31 | 32 | } // namespace input_output 33 | } // namespace tudat 34 | -------------------------------------------------------------------------------- /include/tudat/math/geometric/surfaceGeometry.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #ifndef TUDAT_SURFACEGEOMETRY_H 13 | #define TUDAT_SURFACEGEOMETRY_H 14 | 15 | //! Tudat library namespace. 16 | /*! 17 | * The Tudat library namespace. 18 | */ 19 | namespace tudat 20 | { 21 | 22 | //! Surface geometry base class. 23 | /*! 24 | * Base class for surface geometry representations in terms of two 25 | * parameterizing variables 1 and 2. 26 | */ 27 | class SurfaceGeometry 28 | { 29 | public: 30 | 31 | //! Default destructor. 32 | /*! 33 | * Default destructor. 34 | */ 35 | virtual ~SurfaceGeometry( ) { } 36 | 37 | protected: 38 | 39 | private: 40 | }; 41 | 42 | } // namespace tudat 43 | 44 | #endif // TUDAT_SURFACEGEOMETRY_H 45 | -------------------------------------------------------------------------------- /include/tudat/astro/aerodynamics/applicationOutput.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | #ifndef TUDAT_APPLICATIONOUTPUT_H 11 | #define TUDAT_APPLICATIONOUTPUT_H 12 | 13 | namespace tudat_applications 14 | { 15 | 16 | //! Get path for output directory. 17 | static inline std::string getOutputPath( ) 18 | { 19 | // Declare file path string assigned to filePath. 20 | // __FILE__ only gives the absolute path of the header file! 21 | std::string filePath_( __FILE__ ); 22 | 23 | // Strip filename from temporary string and return root-path string. 24 | return filePath_.substr( 0, filePath_.length( ) - 25 | std::string( "applicationOutput.h" ).length( ) ); 26 | } 27 | 28 | } 29 | 30 | #endif // TUDAT_APPLICATIONOUTPUT_H 31 | -------------------------------------------------------------------------------- /include/tudat/astro/mission_segments.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_MISSION_SEGMENTS_H 12 | #define TUDAT_MISSION_SEGMENTS_H 13 | 14 | #include "mission_segments/escapeAndCapture.h" 15 | #include "mission_segments/gravityAssist.h" 16 | #include "mission_segments/improvedInversePolynomialWall.h" 17 | #include "mission_segments/lambertRoutines.h" 18 | #include "mission_segments/lambertTargeter.h" 19 | #include "mission_segments/lambertTargeterGooding.h" 20 | #include "mission_segments/lambertTargeterIzzo.h" 21 | #include "mission_segments/multiRevolutionLambertTargeterIzzo.h" 22 | #include "mission_segments/oscillatingFunctionNovak.h" 23 | #include "mission_segments/zeroRevolutionLambertTargeterIzzo.h" 24 | 25 | #endif // TUDAT_MISSION_SEGMENTS_H 26 | -------------------------------------------------------------------------------- /tests/include/tudat/astro/aerodynamics/applicationOutput.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | #ifndef TUDAT_APPLICATIONOUTPUT_H 11 | #define TUDAT_APPLICATIONOUTPUT_H 12 | 13 | namespace tudat_applications 14 | { 15 | 16 | //! Get path for output directory. 17 | static inline std::string getOutputPath( ) 18 | { 19 | // Declare file path string assigned to filePath. 20 | // __FILE__ only gives the absolute path of the header file! 21 | std::string filePath_( __FILE__ ); 22 | 23 | // Strip filename from temporary string and return root-path string. 24 | return filePath_.substr( 0, filePath_.length( ) - 25 | std::string( "applicationOutput.h" ).length( ) ); 26 | } 27 | 28 | } 29 | 30 | #endif // TUDAT_APPLICATIONOUTPUT_H 31 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/observation_partials/observationPartial.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/orbit_determination/observation_partials/observationPartial.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace observation_partials 7 | { 8 | 9 | template class ObservationPartial< 1 >; 10 | template class ObservationPartial< 2 >; 11 | template class ObservationPartial< 3 >; 12 | 13 | template class ObservationPartialWrtConstantAbsoluteBias< 1 >; 14 | template class ObservationPartialWrtConstantAbsoluteBias< 2 >; 15 | template class ObservationPartialWrtConstantAbsoluteBias< 3 >; 16 | 17 | template class ObservationPartialWrtArcWiseAbsoluteBias< 1 >; 18 | template class ObservationPartialWrtArcWiseAbsoluteBias< 2 >; 19 | template class ObservationPartialWrtArcWiseAbsoluteBias< 3 >; 20 | 21 | template class ObservationPartialWrtConstantRelativeBias< 1 >; 22 | template class ObservationPartialWrtConstantRelativeBias< 2 >; 23 | template class ObservationPartialWrtConstantRelativeBias< 3 >; 24 | 25 | template class ObservationPartialWrtArcWiseRelativeBias< 1 >; 26 | template class ObservationPartialWrtArcWiseRelativeBias< 2 >; 27 | template class ObservationPartialWrtArcWiseRelativeBias< 3 >; 28 | 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /examples/tudat/satellite_propagation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | 10 | 11 | #TUDAT_ADD_EXECUTABLE(application_SingleSatellitePropagator 12 | # "singleSatellitePropagator.cpp" 13 | # ${Tudat_PROPAGATION_LIBRARIES} 14 | # ) 15 | 16 | TUDAT_ADD_EXECUTABLE(application_SinglePerturbedSatellitePropagator 17 | "singlePerturbedSatellitePropagator.cpp" 18 | ${Tudat_PROPAGATION_LIBRARIES} 19 | ) 20 | 21 | TUDAT_ADD_EXECUTABLE(application_InnerSolarSystemPropagation 22 | "innerSolarSystemPropagation.cpp" 23 | ${Tudat_PROPAGATION_LIBRARIES} 24 | ) 25 | 26 | TUDAT_ADD_EXECUTABLE(application_EarthOrbiterBasicStateEstimation 27 | "earthOrbiterBasicStateEstimation.cpp" 28 | ${Tudat_ESTIMATION_LIBRARIES} 29 | ) 30 | -------------------------------------------------------------------------------- /include/tudat/simulation/estimation.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | 12 | #ifndef TUDAT_ESTIMATIONHEADER_H 13 | #define TUDAT_ESTIMATIONHEADER_H 14 | 15 | #include "tudat/simulation/simulation.h" 16 | #include "tudat/simulation/estimation_setup/createObservationModel.h" 17 | #include "tudat/simulation/environment_setup/createGroundStations.h" 18 | #include "tudat/simulation/estimation_setup/orbitDeterminationManager.h" 19 | #include "tudat/simulation/estimation_setup/podProcessing.h" 20 | #include "tudat/simulation/estimation_setup/simulateObservations.h" 21 | #include "tudat/astro/propagators/propagateCovariance.h" 22 | 23 | #include "tudat/math/statistics/basicStatistics.h" 24 | #include "tudat/math/statistics/randomVariableGenerator.h" 25 | 26 | #endif // TUDAT_ESTIMATIONHEADER_H 27 | -------------------------------------------------------------------------------- /src/astro/observation_models/lightTimeSolution.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | 12 | #include "tudat/astro/basic_astro/physicalConstants.h" 13 | 14 | #include "tudat/astro/observation_models/lightTimeSolution.h" 15 | 16 | namespace tudat 17 | { 18 | namespace observation_models 19 | { 20 | 21 | 22 | //! Function to retrieve the default tolerance for the light-time equation solution. 23 | template< > 24 | double getDefaultLightTimeTolerance< double >( ) 25 | { 26 | return 1.0E-12; 27 | } 28 | 29 | //! Function to retrieve the default tolerance for the light-time equation solution. 30 | template< > 31 | long double getDefaultLightTimeTolerance< long double >( ) 32 | { 33 | return 1.0E-15L; 34 | } 35 | 36 | 37 | } // namespace observation_models 38 | } // namespace tudat 39 | -------------------------------------------------------------------------------- /src/math/quadrature/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add header files. 12 | set(numerical_quadrature_HEADERS 13 | "numericalQuadrature.h" 14 | "trapezoidQuadrature.h" 15 | "gaussianQuadrature.h" 16 | "createNumericalQuadrature.h" 17 | ) 18 | 19 | # Add source files. 20 | set(numerical_quadrature_SOURCES 21 | "dummyNumericalQuadrature.cpp" 22 | "gaussianQuadrature.cpp" 23 | "createNumericalQuadrature.cpp" 24 | ) 25 | 26 | # Add library. 27 | TUDAT_ADD_LIBRARY("numerical_quadrature" 28 | "${numerical_quadrature_SOURCES}" 29 | "${numerical_quadrature_HEADERS}" 30 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 31 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 32 | ) 33 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestAerodynamics/tabulated1.json: -------------------------------------------------------------------------------- 1 | { 2 | "independentVariableValues": [ 3 | 0, 4 | 1, 5 | 2, 6 | 3 7 | ], 8 | "forceCoefficients": [ 9 | [ 10 | 0.7, 11 | 0.8, 12 | 0.9 13 | ], 14 | [ 15 | 1.7, 16 | 1.8, 17 | 1.9 18 | ], 19 | [ 20 | 2.7, 21 | 2.8, 22 | 2.9 23 | ], 24 | [ 25 | 3.7, 26 | 3.8, 27 | 3.9 28 | ] 29 | ], 30 | "momentCoefficients": [ 31 | [ 32 | 1, 33 | 2, 34 | 3 35 | ], 36 | [ 37 | 1, 38 | 1, 39 | 1 40 | ], 41 | [ 42 | 2, 43 | 2, 44 | 2 45 | ], 46 | [ 47 | 3, 48 | 3, 49 | 3 50 | ] 51 | ], 52 | "interpolator": { 53 | "type": "cubicSpline" 54 | }, 55 | "coefficientsType": "tabulated", 56 | "referenceLength": 5, 57 | "referenceArea": 10.5, 58 | "lateralReferenceLength": 4, 59 | "momentReferencePoint": [ 60 | 0.7, 61 | 0.8, 62 | 0.9 63 | ], 64 | "independentVariableNames": [ 65 | "angleOfSideslip" 66 | ], 67 | "areCoefficientsInAerodynamicFrame": false, 68 | "areCoefficientsInNegativeAxisDirection": false 69 | } -------------------------------------------------------------------------------- /include/tudat/math/basic.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_BASIC_H 12 | #define TUDAT_BASIC_H 13 | 14 | #include "basic/basicFunction.h" 15 | #include "basic/basicMathematicsFunctions.h" 16 | #include "basic/convergenceException.h" 17 | #include "basic/coordinateConversions.h" 18 | #include "basic/function.h" 19 | #include "basic/functionProxy.h" 20 | #include "basic/leastSquaresEstimation.h" 21 | #include "basic/legendrePolynomials.h" 22 | #include "basic/linearAlgebra.h" 23 | #include "basic/mathematicalConstants.h" 24 | #include "basic/nearestNeighbourSearch.h" 25 | #include "basic/numericalDerivative.h" 26 | #include "basic/rotationAboutArbitraryAxis.h" 27 | #include "basic/rotationRepresentations.h" 28 | #include "basic/sphericalHarmonics.h" 29 | 30 | #endif // TUDAT_BASIC_H 31 | -------------------------------------------------------------------------------- /src/astro/relativity/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Set the source files. 12 | set(relativity_SOURCES 13 | "relativisticLightTimeCorrection.cpp" 14 | "relativisticAccelerationCorrection.cpp" 15 | "relativisticTimeConversion.cpp" 16 | "metric.cpp" 17 | ) 18 | 19 | # Set the header files. 20 | set(relativity_HEADERS 21 | "relativisticLightTimeCorrection.h" 22 | "relativisticAccelerationCorrection.h" 23 | "relativisticTimeConversion.h" 24 | "metric.h" 25 | ) 26 | 27 | TUDAT_ADD_LIBRARY("relativity" 28 | "${relativity_SOURCES}" 29 | "${relativity_HEADERS}" 30 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 31 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 32 | ) 33 | -------------------------------------------------------------------------------- /rever.xsh: -------------------------------------------------------------------------------- 1 | $PROJECT = 'Tudat' 2 | $ACTIVITIES = [ 3 | 'authors', # authors must have commit before executing Rever, otherwise he/she will be omitted. 4 | 'version_bump', # Changes the version number in various source files (setup.py, __init__.py, etc) 5 | 'changelog', # Uses files in the news folder to create a changelog for release 6 | 'tag', # Creates a tag for the new version number 7 | 'push_tag', # Pushes the tag up to the $TAG_REMOTE 8 | ] 9 | 10 | $VERSION_BUMP_PATTERNS = [ # These note where/how to find the version numbers 11 | ('version', '.*,', "'$VERSION'") 12 | ] 13 | 14 | $CHANGELOG_FILENAME = 'CHANGELOG.rst' # Filename for the changelog 15 | $CHANGELOG_TEMPLATE = 'TEMPLATE.rst' # Filename for the news template 16 | $CHANGELOG_AUTHORS_TITLE = 'Authors' 17 | $CHANGELOG_AUTHORS_FORMAT = '* {name}\n' 18 | $PUSH_TAG_REMOTE = 'git@github.com:tudat-team/tudat.git' # Repo to push tags to 19 | $PUSH_TAG_PROTOCOL='ssh' 20 | 21 | $GITHUB_ORG = 'tudat-team' # Github org for Github releases and conda-forge 22 | $GITHUB_REPO = 'tudat' # Github repo for Github releases and conda-forge 23 | 24 | -------------------------------------------------------------------------------- /src/astro/propulsion/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | 12 | # Set the source files. 13 | set(propulsion_SOURCES 14 | "thrustGuidance.cpp" 15 | "thrustFunctions.cpp" 16 | "costateBasedThrustGuidance.cpp" 17 | ) 18 | 19 | # Set the header files. 20 | set(propulsion_HEADERS 21 | "thrustAccelerationModel.h" 22 | "thrustGuidance.h" 23 | "thrustFunctions.h" 24 | "thrustMagnitudeWrapper.h" 25 | "massRateFromThrust.h" 26 | "costateBasedThrustGuidance.h" 27 | ) 28 | 29 | TUDAT_ADD_LIBRARY("propulsion" 30 | "${propulsion_SOURCES}" 31 | "${propulsion_HEADERS}" 32 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 33 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 34 | ) 35 | -------------------------------------------------------------------------------- /tests/src/math/filters/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(LinearKalmanFilter PRIVATE_LINKS 12 | tudat_filters 13 | tudat_numerical_integrators 14 | tudat_statistics 15 | tudat_basics 16 | tudat_basic_mathematics 17 | tudat_input_output) 18 | 19 | TUDAT_ADD_TEST_CASE(ExtendedKalmanFilter PRIVATE_LINKS 20 | tudat_filters 21 | tudat_numerical_integrators 22 | tudat_statistics 23 | tudat_basics 24 | tudat_basic_mathematics 25 | tudat_input_output) 26 | 27 | TUDAT_ADD_TEST_CASE(UnscentedKalmanFilter PRIVATE_LINKS 28 | tudat_filters 29 | tudat_numerical_integrators 30 | tudat_statistics 31 | tudat_basics 32 | tudat_basic_mathematics 33 | tudat_input_output) 34 | -------------------------------------------------------------------------------- /src/math/interpolators/interpolator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/interpolators/interpolator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace interpolators 6 | { 7 | 8 | template class Interpolator< double, Eigen::VectorXd >; 9 | template class Interpolator< double, Eigen::Vector6d >; 10 | template class Interpolator< double, Eigen::MatrixXd >; 11 | 12 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 13 | template class Interpolator< Time, Eigen::VectorXd >; 14 | template class Interpolator< Time, Eigen::Vector6d >; 15 | template class Interpolator< Time, Eigen::MatrixXd >; 16 | 17 | template class Interpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 1 > >; 18 | template class Interpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 6 > >; 19 | template class Interpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > >; 20 | 21 | template class Interpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 1 > >; 22 | template class Interpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 6 > >; 23 | template class Interpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > >; 24 | #endif 25 | 26 | } // namespace interpolators 27 | 28 | } // namespace tudat 29 | 30 | -------------------------------------------------------------------------------- /include/tudat/math/interpolators.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_INTERPOLATORS_H 12 | #define TUDAT_INTERPOLATORS_H 13 | 14 | #include "interpolators/createInterpolator.h" 15 | #include "interpolators/cubicSplineInterpolator.h" 16 | #include "interpolators/hermiteCubicSplineInterpolator.h" 17 | #include "interpolators/interpolator.h" 18 | #include "interpolators/jumpDataLinearInterpolator.h" 19 | #include "interpolators/lagrangeInterpolator.h" 20 | #include "interpolators/linearInterpolator.h" 21 | #include "interpolators/lookupScheme.h" 22 | #include "interpolators/multiDimensionalInterpolator.h" 23 | #include "interpolators/multiLinearInterpolator.h" 24 | #include "interpolators/oneDimensionalInterpolator.h" 25 | #include "interpolators/piecewiseConstantInterpolator.h" 26 | 27 | #endif//TUDAT_INTERPOLATORS_H 28 | -------------------------------------------------------------------------------- /examples/pagmo/problems/saveOptimizationResults.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | #include "applicationOutput.h" 6 | 7 | #include "tudat/io/basicInputOutput.h" 8 | 9 | void printPopulationToFile( const std::vector< std::vector< double > >& population, 10 | const std::string fileSuffix, 11 | const bool isFitness ) 12 | { 13 | 14 | Eigen::MatrixXd matrixToPrint( population.size( ), population.at( 0 ).size( ) ); 15 | for( unsigned int i = 0; i < population.size( ); i++ ) 16 | { 17 | for( unsigned int j = 0; j < population.at( 0 ).size( ); j++ ) 18 | { 19 | matrixToPrint( i, j ) = population.at( i ).at( j ); 20 | } 21 | } 22 | 23 | if( !isFitness ) 24 | { 25 | tudat::input_output::writeMatrixToFile( matrixToPrint, "population_" + fileSuffix + ".dat", 16, 26 | tudat_pagmo_applications::getOutputPath( ) ); 27 | } 28 | else 29 | { 30 | tudat::input_output::writeMatrixToFile( matrixToPrint, "fitness_" + fileSuffix + ".dat", 16, 31 | tudat_pagmo_applications::getOutputPath( ) ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/rotational_dynamics_partials/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | 10 | # Set the source files. 11 | set(rotational_dynamics_partials_SOURCES 12 | "inertialTorquePartial.cpp" 13 | "constantTorquePartial.cpp" 14 | "secondDegreeGravitationalTorquePartial.cpp" 15 | "sphericalHarmonicGravitationalTorquePartial.cpp" 16 | ) 17 | 18 | # Set the header files. 19 | set(rotational_dynamics_partials_HEADERS 20 | "torquePartial.h" 21 | "inertiaTensorPartial.h" 22 | "inertialTorquePartial.h" 23 | "constantTorquePartial.h" 24 | "secondDegreeGravitationalTorquePartial.h" 25 | "sphericalHarmonicGravitationalTorquePartial.h" 26 | ) 27 | 28 | 29 | TUDAT_ADD_LIBRARY("torque_partials" 30 | "${rotational_dynamics_partials_SOURCES}" 31 | "${rotational_dynamics_partials_HEADERS}" 32 | ) 33 | 34 | -------------------------------------------------------------------------------- /tests/src/math/basic/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(MathematicalConstants) 12 | 13 | TUDAT_ADD_TEST_CASE(LinearAlgebra PRIVATE_LINKS tudat_basic_mathematics) 14 | 15 | TUDAT_ADD_TEST_CASE(CoordinateConversions PRIVATE_LINKS tudat_basic_mathematics) 16 | 17 | TUDAT_ADD_TEST_CASE(NearestNeighbourSearch PRIVATE_LINKS tudat_basic_mathematics) 18 | 19 | TUDAT_ADD_TEST_CASE(NumericalDerivative PRIVATE_LINKS tudat_basic_mathematics) 20 | 21 | TUDAT_ADD_TEST_CASE(LegendrePolynomials PRIVATE_LINKS tudat_basic_mathematics) 22 | 23 | TUDAT_ADD_TEST_CASE(SphericalHarmonics PRIVATE_LINKS tudat_basic_mathematics) 24 | 25 | TUDAT_ADD_TEST_CASE(RotationAboutArbitraryAxis PRIVATE_LINKS tudat_basic_mathematics) 26 | 27 | TUDAT_ADD_TEST_CASE(RotationPartials PRIVATE_LINKS tudat_basic_mathematics tudat_reference_frames) 28 | -------------------------------------------------------------------------------- /src/astro/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | # Notes 11 | # 12 | 13 | # Add subdirectories. 14 | add_subdirectory("aerodynamics") 15 | add_subdirectory("basic_astro") 16 | if (TUDAT_BUILD_WITH_SOFA_INTERFACE) 17 | add_subdirectory("earth_orientation") 18 | endif () 19 | add_subdirectory("electromagnetism") 20 | add_subdirectory("ephemerides") 21 | add_subdirectory("gravitation") 22 | add_subdirectory("ground_stations") 23 | add_subdirectory("low_thrust") 24 | add_subdirectory("mission_segments") 25 | if (TUDAT_BUILD_WITH_ESTIMATION_TOOLS) 26 | add_subdirectory("observation_models") 27 | add_subdirectory("orbit_determination") 28 | endif () 29 | add_subdirectory("propagators") 30 | add_subdirectory("propulsion") 31 | add_subdirectory("reference_frames") 32 | add_subdirectory("relativity") 33 | add_subdirectory("system_models") 34 | -------------------------------------------------------------------------------- /tests/src/astro/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | # Notes 11 | # 12 | 13 | # Add subdirectories. 14 | add_subdirectory("aerodynamics") 15 | add_subdirectory("basic_astro") 16 | if (TUDAT_BUILD_WITH_SOFA_INTERFACE) 17 | add_subdirectory("earth_orientation") 18 | endif () 19 | add_subdirectory("electromagnetism") 20 | add_subdirectory("ephemerides") 21 | add_subdirectory("gravitation") 22 | add_subdirectory("ground_stations") 23 | add_subdirectory("low_thrust") 24 | add_subdirectory("mission_segments") 25 | if (TUDAT_BUILD_WITH_ESTIMATION_TOOLS) 26 | add_subdirectory("observation_models") 27 | add_subdirectory("orbit_determination") 28 | endif () 29 | add_subdirectory("propagators") 30 | add_subdirectory("propulsion") 31 | add_subdirectory("reference_frames") 32 | add_subdirectory("relativity") 33 | #add_subdirectory("system_models") 34 | -------------------------------------------------------------------------------- /src/astro/electromagnetism/lorentzStaticMagneticForce.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include 13 | 14 | #include "tudat/astro/electromagnetism/lorentzStaticMagneticForce.h" 15 | 16 | namespace tudat 17 | { 18 | namespace electromagnetism 19 | { 20 | 21 | //! Compute Lorentz Force due to static magnetic field 22 | Eigen::Vector3d computeLorentzForceDueToStaticMagneticField( 23 | const Eigen::Vector3d& velocityOfBodySubjectToAcceleration, 24 | const Eigen::Vector3d& localMagneticField, 25 | const double chargeOfBodySubjectToAcceleration ) 26 | { 27 | //Return Lorentz force due to static magnetic field 28 | return chargeOfBodySubjectToAcceleration * velocityOfBodySubjectToAcceleration.cross( localMagneticField ); 29 | 30 | } 31 | 32 | } // namespace electromagnetism 33 | } // namespace tudat 34 | -------------------------------------------------------------------------------- /src/astro/reference_frames/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # Add source files. 12 | set(reference_frames_SOURCES 13 | "referenceFrameTransformations.cpp" 14 | "apparentAccelerationModel.cpp" 15 | "aerodynamicAngleCalculator.cpp" 16 | ) 17 | 18 | # Add header files. 19 | set(reference_frames_HEADERS 20 | "referenceFrameTransformations.h" 21 | "apparentAccelerationModel.h" 22 | "aerodynamicAngleCalculator.h" 23 | "dependentOrientationCalculator.h" 24 | ) 25 | 26 | TUDAT_ADD_LIBRARY("reference_frames" 27 | "${reference_frames_SOURCES}" 28 | "${reference_frames_HEADERS}" 29 | # PUBLIC_LINKS tudat_basic_astrodynamics 30 | # PRIVATE_LINKS "${Boost_LIBRARIES}" 31 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" 32 | ) 33 | -------------------------------------------------------------------------------- /src/interface/sofa/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # http://www.iausofa.org/current_C.html#Downloads 12 | 13 | #Set the source files. 14 | set(sofa_interface_SOURCES 15 | "sofaTimeConversions.cpp" 16 | "fundamentalArguments.cpp" 17 | "earthOrientation.cpp" 18 | ) 19 | 20 | # Set the header files. 21 | set(sofa_interface_HEADERS 22 | "sofaTimeConversions.h" 23 | "fundamentalArguments.h" 24 | "earthOrientation.h" 25 | ) 26 | 27 | # Add static libraries. 28 | TUDAT_ADD_LIBRARY("sofa_interface" 29 | "${sofa_interface_SOURCES}" 30 | "${sofa_interface_HEADERS}" 31 | # PUBLIC_LINKS 32 | # tudat_basic_astrodynamics 33 | PRIVATE_LINKS "${Sofa_LIBRARIES}" 34 | # PRIVATE_INCLUDES "${EIGEN3_INCLUDE_DIRS}" "${Boost_INCLUDE_DIRS}" "${Sofa_INCLUDE_DIRS}" 35 | ) 36 | -------------------------------------------------------------------------------- /tests/src/math/statistics/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | TUDAT_ADD_TEST_CASE(SimpleLinearRegression PRIVATE_LINKS 12 | tudat_statistics 13 | tudat_basics 14 | ) 15 | 16 | TUDAT_ADD_TEST_CASE(BasicStatistics PRIVATE_LINKS 17 | tudat_statistics 18 | tudat_basics 19 | ) 20 | 21 | TUDAT_ADD_TEST_CASE(MultiVariateGaussianProbabilityDistributions PRIVATE_LINKS 22 | tudat_statistics 23 | tudat_basics 24 | ) 25 | 26 | TUDAT_ADD_TEST_CASE(BoostRandomVariables PRIVATE_LINKS 27 | tudat_statistics 28 | tudat_basics 29 | ) 30 | 31 | TUDAT_ADD_TEST_CASE(KernelDensityDistribution PRIVATE_LINKS 32 | tudat_statistics 33 | tudat_basics 34 | ) 35 | 36 | TUDAT_ADD_TEST_CASE(RandomSampling PRIVATE_LINKS 37 | tudat_statistics 38 | tudat_basics 39 | ) 40 | -------------------------------------------------------------------------------- /src/astro/observation_models/observationModel.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/observation_models/observationModel.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace observation_models 7 | { 8 | 9 | template class ObservationModel< 1, double, double >; 10 | template class ObservationModel< 2, double, double >; 11 | template class ObservationModel< 3, double, double >; 12 | template class ObservationModel< 6, double, double >; 13 | 14 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 15 | template class ObservationModel< 1, double, Time >; 16 | template class ObservationModel< 1, long double, double >; 17 | template class ObservationModel< 1, long double, Time >; 18 | 19 | template class ObservationModel< 2, double, Time >; 20 | template class ObservationModel< 2, long double, double >; 21 | template class ObservationModel< 2, long double, Time >; 22 | 23 | template class ObservationModel< 3, double, Time >; 24 | template class ObservationModel< 3, long double, double >; 25 | template class ObservationModel< 3, long double, Time >; 26 | 27 | template class ObservationModel< 6, double, Time >; 28 | template class ObservationModel< 6, long double, double >; 29 | template class ObservationModel< 6, long double, Time >; 30 | #endif 31 | 32 | 33 | } // namespace observation_models 34 | 35 | } // namespace tudat 36 | -------------------------------------------------------------------------------- /include/tudat/astro/conversions.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_CONVERSIONS_H 12 | #define TUDAT_CONVERSIONS_H 13 | 14 | #include "basic_astro/attitudeElementConversions.h" 15 | #include "basic_astro/geodeticCoordinateConversions.h" 16 | #include "basic_astro/modifiedEquinoctialElementConversions.h" 17 | #include "basic_astro/orbitalElementConversions.h" 18 | #include "basic_astro/sphericalStateConversions.h" 19 | #include "basic_astro/stateRepresentationConversions.h" 20 | #include "basic_astro/stateVectorIndices.h" 21 | #include "basic_astro/timeConversions.h" 22 | #include "basic_astro/unifiedStateModelExponentialMapElementConversions.h" 23 | #include "basic_astro/unifiedStateModelModifiedRodriguesParameterElementConversions.h" 24 | #include "basic_astro/unifiedStateModelQuaternionElementConversions.h" 25 | #include "basic_astro/unitConversions.h" 26 | 27 | #endif//TUDAT_CONVERSIONS_H 28 | -------------------------------------------------------------------------------- /src/io/fieldValue.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include 13 | 14 | #include "tudat/io/fieldValue.h" 15 | 16 | namespace tudat 17 | { 18 | namespace input_output 19 | { 20 | 21 | //! Create a FieldValue containing type, string content and transformation of field. 22 | FieldValue::FieldValue( const FieldType& fieldType, const std::string& fieldContent, 23 | const std::shared_ptr< FieldTransform > transformer ) 24 | : type( fieldType ), rawField( fieldContent ), transform ( transformer ) 25 | { } 26 | 27 | //! Get transformed field content. 28 | const std::string& FieldValue::getTransformed( ) 29 | { 30 | loadTransformation( ); 31 | return transformedField; 32 | } 33 | 34 | //! Get raw field content. 35 | const std::string& FieldValue::getRaw( ) { return rawField; } 36 | 37 | } // namespace input_output 38 | } // namespace tudat 39 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestDeserialization/valueAccess.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "dog", 3 | "name": "Bumper", 4 | "age": 11, 5 | "mass": 19.5, 6 | "hobbies": [ 7 | "eat", 8 | "sleep" 9 | ], 10 | "food": { 11 | "12": "meat", 12 | "15": "feed", 13 | "19": "feed", 14 | "7": "feed" 15 | }, 16 | "orientation": [ 17 | [ 18 | 1, 19 | 0, 20 | 0 21 | ], 22 | [ 23 | 0, 24 | 2, 25 | 1 26 | ], 27 | [ 28 | 0, 29 | 3, 30 | -1 31 | ] 32 | ], 33 | "enemies": [ 34 | { 35 | "type": "cat", 36 | "name": "Skai", 37 | "age": 8, 38 | "mass": 2.6, 39 | "offspring": [ 40 | "Dee", 41 | "Cout", 42 | "Plaat" 43 | ], 44 | "offspringMasses": [ 45 | 1.7, 46 | 1.8, 47 | 1.3 48 | ], 49 | "mother": { 50 | "birthplace": { 51 | "city": { 52 | "name": "Valencia", 53 | "temperatureRange": [ 54 | 0, 55 | 40 56 | ] 57 | }, 58 | "continent": { 59 | "name": "Europe", 60 | "temperatureRange": [ 61 | -15, 62 | 45 63 | ] 64 | } 65 | } 66 | } 67 | } 68 | ] 69 | } -------------------------------------------------------------------------------- /docs/doxygen-old/mainDoxygenPage.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | /*! \mainpage 11 | * Tudat is an astro library, providing a number of features, including numerical 12 | * integrators, orbital element conversions, mission segments, gravitational and aerodynamic 13 | * forces environment models, unit conversions, and various other functionality used by 14 | * astrodynamicists. For more information about the use of Tudat, please visit: 15 | * http://tudat.tudelft.nl. 16 | * 17 | * This Doxygen website provides an overview of the various code interfaces incorporated in Tudat. 18 | * 19 | * Tudat is maintained by staff and students 20 | * in the astro & Space missions research group, at the Faculty of Aerospace Engineering, 21 | * Delft University of Technology, The Netherlands. For more information vist: 22 | * http://tudat.tudelft.nl. 23 | * 24 | * Please address any queries regarding Tudat to tudat-AE@tudelft.nl. 25 | * 26 | */ 27 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestSimulationSingleSatellite/main.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialEpoch": 0, 3 | "finalEpoch": 3600, 4 | "spice": { 5 | "useStandardKernels": true 6 | }, 7 | "bodies": { 8 | "Earth": { 9 | "useDefaultSettings": true, 10 | "ephemeris": { 11 | "constantState": [ 12 | 0, 13 | 0, 14 | 0, 15 | 0, 16 | 0, 17 | 0 18 | ], 19 | "type": "constant" 20 | } 21 | }, 22 | "asterix": { 23 | "initialState": { 24 | "semiMajorAxis": 7.5E+6, 25 | "eccentricity": 0.1, 26 | "inclination": 1.4888, 27 | "argumentOfPeriapsis": 4.1137, 28 | "longitudeOfAscendingNode": 0.4084, 29 | "trueAnomaly": 2.4412, 30 | "type": "keplerian" 31 | } 32 | } 33 | }, 34 | "propagators": [ 35 | { 36 | "centralBodies": [ 37 | "Earth" 38 | ], 39 | "accelerations": { 40 | "asterix": { 41 | "Earth": [ 42 | { 43 | "type": "pointMassGravity" 44 | } 45 | ] 46 | } 47 | }, 48 | "integratedStateType": "translational", 49 | "bodiesToPropagate": [ 50 | "asterix" 51 | ] 52 | } 53 | ], 54 | "integrator": { 55 | "type": "rungeKutta4", 56 | "stepSize": 10 57 | } 58 | } -------------------------------------------------------------------------------- /include/tudat/simulation/environment_setup.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2018, Delft University of Technology 2 | * All rights reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_ENVIRONMENT_SETUP_H 12 | #define TUDAT_ENVIRONMENT_SETUP_H 13 | 14 | #include "environment_setup/body.h" 15 | #include "environment_setup/createAerodynamicCoefficientInterface.h" 16 | #include "environment_setup/createAerodynamicControlSurfaces.h" 17 | #include "environment_setup/createAtmosphereModel.h" 18 | #include "environment_setup/createBodies.h" 19 | #include "environment_setup/createBodyShapeModel.h" 20 | #include "environment_setup/createEphemeris.h" 21 | #include "environment_setup/createFlightConditions.h" 22 | #include "environment_setup/createGravityField.h" 23 | #include "environment_setup/createGravityFieldVariations.h" 24 | #include "environment_setup/createGroundStations.h" 25 | #include "environment_setup/createRadiationPressureInterface.h" 26 | #include "environment_setup/createRotationModel.h" 27 | #include "environment_setup/defaultBodies.h" 28 | 29 | #endif // TUDAT_ENVIRONMENT_SETUP_H 30 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/observation_partials/positionPartials.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/math/basic/mathematicalConstants.h" 12 | 13 | #include "tudat/astro/reference_frames/referenceFrameTransformations.h" 14 | #include "tudat/astro/orbit_determination/observation_partials/positionPartials.h" 15 | 16 | namespace tudat 17 | { 18 | 19 | namespace observation_partials 20 | { 21 | 22 | //! Function to calculate the partial of position of a point on or in a body wrt position of that body. 23 | Eigen::Matrix3d calculatePartialOfPointPositionWrtBodyPosition( ) 24 | { 25 | return Eigen::Matrix3d::Identity( ); 26 | } 27 | 28 | //! Function to calculate the partial of position of a point on a body wrt its body-fixed position 29 | Eigen::Matrix3d calculatePartialOfPointPositionWrtBodyFixedPointPosition( 30 | const Eigen::Matrix3d& rotationMatrixToInertialFrame ) 31 | { 32 | return rotationMatrixToInertialFrame; 33 | } 34 | 35 | } 36 | 37 | } 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/astro/electromagnetism/cannonBallRadiationPressureAcceleration.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include "tudat/math/basic/mathematicalConstants.h" 13 | 14 | #include "tudat/astro/electromagnetism/cannonBallRadiationPressureAcceleration.h" 15 | #include "tudat/astro/electromagnetism/cannonBallRadiationPressureForce.h" 16 | 17 | namespace tudat 18 | { 19 | namespace electromagnetism 20 | { 21 | 22 | //! Compute radiation pressure acceleration using a cannon-ball model. 23 | Eigen::Vector3d computeCannonBallRadiationPressureAcceleration( 24 | const double radiationPressure, 25 | const Eigen::Vector3d& vectorToSource, 26 | const double area, 27 | const double radiationPressureCoefficient, 28 | const double mass ) 29 | { 30 | return computeCannonBallRadiationPressureForce( 31 | radiationPressure, vectorToSource, area, radiationPressureCoefficient ) / mass; 32 | } 33 | 34 | } // namespace electromagnetism 35 | } // namespace tudat 36 | -------------------------------------------------------------------------------- /src/math/interpolators/lagrangeInterpolator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/interpolators/lagrangeInterpolator.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace interpolators 7 | { 8 | 9 | template class LagrangeInterpolator< double, Eigen::VectorXd >; 10 | template class LagrangeInterpolator< double, Eigen::Vector6d >; 11 | template class LagrangeInterpolator< double, Eigen::MatrixXd >; 12 | 13 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 14 | template class LagrangeInterpolator< Time, Eigen::VectorXd, long double >; 15 | template class LagrangeInterpolator< Time, Eigen::Vector6d, long double >; 16 | template class LagrangeInterpolator< Time, Eigen::MatrixXd, long double >; 17 | 18 | template class LagrangeInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 1 > >; 19 | template class LagrangeInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 6 > >; 20 | template class LagrangeInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > >; 21 | 22 | template class LagrangeInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 1 >, long double >; 23 | template class LagrangeInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 6 >, long double >; 24 | template class LagrangeInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic >, long double >; 25 | #endif 26 | 27 | } // namespace interpolators 28 | 29 | } // namespace tudat 30 | -------------------------------------------------------------------------------- /src/astro/ephemerides/tabulatedRotationalEphemeris.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/ephemerides/tabulatedRotationalEphemeris.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace ephemerides 7 | { 8 | 9 | template class TabulatedRotationalEphemeris< double, double >; 10 | 11 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 12 | template class TabulatedRotationalEphemeris< long double, double >; 13 | template class TabulatedRotationalEphemeris< double, Time >; 14 | template class TabulatedRotationalEphemeris< long double, Time >; 15 | #endif 16 | 17 | //! Function to check whether an ephemeris is a (type of) tabulated ephemeris 18 | bool isTabulatedRotationalEphemeris( const std::shared_ptr< RotationalEphemeris > rotationalEphemeris ) 19 | { 20 | bool objectIsTabulated = 0; 21 | if( ( std::dynamic_pointer_cast< TabulatedRotationalEphemeris< double, double > >( rotationalEphemeris ) != nullptr ) || 22 | ( std::dynamic_pointer_cast< TabulatedRotationalEphemeris< long double, double > >( rotationalEphemeris ) != nullptr ) || 23 | ( std::dynamic_pointer_cast< TabulatedRotationalEphemeris< long double, Time > >( rotationalEphemeris ) != nullptr ) || 24 | ( std::dynamic_pointer_cast< TabulatedRotationalEphemeris< double, Time > >( rotationalEphemeris ) != nullptr ) ) 25 | { 26 | objectIsTabulated = 1; 27 | } 28 | return objectIsTabulated; 29 | } 30 | 31 | } 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/astro/electromagnetism/lorentzStaticMagneticAcceleration.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include "tudat/astro/electromagnetism/lorentzStaticMagneticForce.h" 13 | #include "tudat/astro/electromagnetism/lorentzStaticMagneticAcceleration.h" 14 | 15 | 16 | namespace tudat 17 | { 18 | namespace electromagnetism 19 | { 20 | 21 | //! Compute acceleration due to static magnetic field 22 | Eigen::Vector3d computeLorentzAccelerationDueToStaticMagneticField( 23 | const Eigen::Vector3d& velocityOfBodySubjectToAcceleration, 24 | const Eigen::Vector3d& localMagneticField, 25 | const double chargeOfBodySubjectToAcceleration, 26 | const double massOfBodySubjectToAcceleration ) 27 | { 28 | return computeLorentzForceDueToStaticMagneticField( 29 | velocityOfBodySubjectToAcceleration, localMagneticField, 30 | chargeOfBodySubjectToAcceleration ) / massOfBodySubjectToAcceleration; 31 | } 32 | 33 | } // namespace electromagnetism 34 | } // namespace tudat 35 | -------------------------------------------------------------------------------- /src/astro/propulsion/thrustFunctions.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | 12 | #include "tudat/astro/propulsion/thrustFunctions.h" 13 | #include "tudat/astro/basic_astro/physicalConstants.h" 14 | 15 | namespace tudat 16 | { 17 | 18 | namespace propulsion 19 | { 20 | 21 | //! Function to compute engine thrust from propellant mass rate and specific impulse 22 | double computeThrustFromSpecificImpulse( 23 | const double propellantMassRate, const double specificImpulse ) 24 | { 25 | return physical_constants::SEA_LEVEL_GRAVITATIONAL_ACCELERATION * specificImpulse * propellantMassRate; 26 | } 27 | 28 | //! Function to compute propellant mass rate from engine thrust and specific impulse 29 | double computePropellantMassRateFromSpecificImpulse( 30 | const double thrustMagnitude, const double specificImpulse ) 31 | { 32 | return thrustMagnitude / ( physical_constants::SEA_LEVEL_GRAVITATIONAL_ACCELERATION * specificImpulse ); 33 | } 34 | 35 | 36 | } // namespace propulsion 37 | 38 | } // namespace tudat 39 | 40 | -------------------------------------------------------------------------------- /include/tudat/astro/electromagnetism/basicElectroMagnetism.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #ifndef TUDAT_BASICELECTROMAGNETISM_H 12 | #define TUDAT_BASICELECTROMAGNETISM_H 13 | 14 | #include "tudat/astro/basic_astro/physicalConstants.h" 15 | 16 | namespace tudat 17 | { 18 | namespace electromagnetism 19 | { 20 | 21 | //! Function to compute the blackbody radiation intensity at a given body temperature 22 | /*! 23 | * Function to compute the blackbody radiation intensity (W/m^2) at a given body temperature. 24 | * \param bodyTemperature Temperature of black body emitting radiation. 25 | * \return Blackbodt radiation intensity at given temperature. 26 | */ 27 | inline double computeBlackbodyRadiationIntensity( const double bodyTemperature ) 28 | { 29 | return physical_constants::STEFAN_BOLTZMANN_CONSTANT * 30 | bodyTemperature * bodyTemperature * bodyTemperature * bodyTemperature; 31 | } 32 | 33 | } // namespace electromagnetism 34 | 35 | } // namespace tudat 36 | 37 | 38 | #endif // TUDAT_BASICELECTROMAGNETISM_H 39 | -------------------------------------------------------------------------------- /src/math/interpolators/cubicSplineInterpolator.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/interpolators/cubicSplineInterpolator.h" 2 | 3 | namespace tudat 4 | { 5 | namespace interpolators 6 | { 7 | 8 | template class CubicSplineInterpolator< double, Eigen::VectorXd >; 9 | template class CubicSplineInterpolator< double, Eigen::Vector6d >; 10 | template class CubicSplineInterpolator< double, Eigen::MatrixXd >; 11 | 12 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 13 | template class CubicSplineInterpolator< Time, Eigen::VectorXd, long double >; 14 | template class CubicSplineInterpolator< Time, Eigen::Vector6d, long double >; 15 | template class CubicSplineInterpolator< Time, Eigen::MatrixXd, long double >; 16 | 17 | template class CubicSplineInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 1 > >; 18 | template class CubicSplineInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, 6 > >; 19 | template class CubicSplineInterpolator< double, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > >; 20 | 21 | template class CubicSplineInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 1 >, long double >; 22 | template class CubicSplineInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, 6 >, long double >; 23 | template class CubicSplineInterpolator< Time, Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic >, long double >; 24 | #endif 25 | 26 | } // namespace interpolators 27 | } // namespace tudat 28 | 29 | -------------------------------------------------------------------------------- /src/math/quadrature/gaussianQuadrature.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/math/quadrature/gaussianQuadrature.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace numerical_quadrature 7 | { 8 | 9 | //! Function to create Gauss quadrature node/weight container 10 | template< typename IndependentVariableType > 11 | std::shared_ptr< GaussQuadratureNodesAndWeights< IndependentVariableType > > 12 | getGaussQuadratureNodesAndWeights( ) 13 | { 14 | return std::make_shared< GaussQuadratureNodesAndWeights< IndependentVariableType > >( ); 15 | } 16 | 17 | //! Function to create Gauss quadrature node/weight container with long double precision. 18 | template< > 19 | std::shared_ptr< GaussQuadratureNodesAndWeights< long double > > 20 | getGaussQuadratureNodesAndWeights( ) 21 | { 22 | return longDoubleGaussQuadratureNodesAndWeights; 23 | } 24 | 25 | //! Function to create Gauss quadrature node/weight container with double precision. 26 | template< > 27 | std::shared_ptr< GaussQuadratureNodesAndWeights< double > > 28 | getGaussQuadratureNodesAndWeights( ) 29 | { 30 | return doubleGaussQuadratureNodesAndWeights; 31 | } 32 | 33 | //! Function to create Gauss quadrature node/weight container with float precision. 34 | template< > 35 | std::shared_ptr< GaussQuadratureNodesAndWeights< float > > 36 | getGaussQuadratureNodesAndWeights( ) 37 | { 38 | return floatGaussQuadratureNodesAndWeights; 39 | } 40 | 41 | 42 | } // namespace numerical_quadrature 43 | 44 | } // namespace tudat 45 | 46 | -------------------------------------------------------------------------------- /src/astro/propagators/rotationalMotionStateDerivative.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/astro/propagators/rotationalMotionStateDerivative.h" 12 | 13 | namespace tudat 14 | { 15 | 16 | namespace propagators 17 | { 18 | 19 | //! Function to evaluated the classical rotational equations of motion (Euler equations) 20 | Eigen::Vector3d evaluateRotationalEquationsOfMotion( 21 | const Eigen::Matrix3d& inertiaTensor, const Eigen::Vector3d& totalTorque, 22 | const Eigen::Vector3d& angularVelocityVector, 23 | const Eigen::Matrix3d& inertiaTensorTimeDerivative ) 24 | { 25 | return inertiaTensor.inverse( ) * ( totalTorque ); 26 | } 27 | 28 | template class RotationalMotionStateDerivative< double, double >; 29 | 30 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 31 | template class RotationalMotionStateDerivative< long double, double >; 32 | template class RotationalMotionStateDerivative< double, Time >; 33 | template class RotationalMotionStateDerivative< long double, Time >; 34 | #endif 35 | 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/io/util.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by ggarrett on 19-05-20. 3 | // 4 | 5 | #include "tudat/io/util.h" 6 | 7 | namespace tudat 8 | { 9 | namespace input_output{ 10 | 11 | //! Function to compare if two lists of aerodynamic coefficient independent variables are equal 12 | bool compareIndependentVariables( const std::vector< std::vector< double > >& list1, 13 | const std::vector< std::vector< double > >& list2 ) 14 | { 15 | // Check if sizes of outer vectors are equal 16 | bool isEqual = 1; 17 | if( list1.size( ) != list2.size( ) ) 18 | { 19 | isEqual = 0; 20 | } 21 | 22 | // Check if sizes of inner vectors are equal 23 | if( isEqual ) 24 | { 25 | for( unsigned int i = 0; i < list1.size( ); i++ ) 26 | { 27 | if( list1.at( i ).size( ) != list2.at( i ).size( ) ) 28 | { 29 | isEqual = 0; 30 | } 31 | else 32 | { 33 | for( unsigned int j = 0; j < list1.at( i ).size( ); j++ ) 34 | { 35 | if( list1.at( i ).at( j ) != list2.at( i ).at( j ) ) 36 | { 37 | isEqual = 0; 38 | } 39 | } 40 | } 41 | } 42 | } 43 | 44 | return isEqual; 45 | } 46 | 47 | } 48 | 49 | } -------------------------------------------------------------------------------- /src/astro/low_thrust/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2010-2019, Delft University of Technology 2 | # All rigths reserved 3 | # 4 | # This file is part of the Tudat. Redistribution and use in source and 5 | # binary forms, with or without modification, are permitted exclusively 6 | # under the terms of the Modified BSD license. You should have received 7 | # a copy of the license with this file. If not, please or visit: 8 | # http://tudat.tudelft.nl/LICENSE. 9 | # 10 | 11 | # # Add subdirectories. 12 | add_subdirectory(shape_based) 13 | 14 | set(low_thrust_trajectories_SOURCES 15 | "lowThrustLegSettings.cpp" 16 | "lowThrustLeg.cpp" 17 | ) 18 | 19 | set(low_thrust_trajectories_HEADERS 20 | "lowThrustLegSettings.h" 21 | "lowThrustLeg.h" 22 | ) 23 | 24 | ## Set the source files. 25 | if(TUDAT_BUILD_WITH_PAGMO) 26 | set(low_thrust_trajectories_SOURCES 27 | ${low_thrust_trajectories_SOURCES} 28 | # "simsFlanaganModel.cpp" 29 | # "simsFlanagan.cpp" 30 | # "simsFlanaganOptimisationSetup.cpp" 31 | ) 32 | 33 | set(low_thrust_trajectories_HEADERS 34 | ${low_thrust_trajectories_HEADERS} 35 | # "simsFlanaganModel.h" 36 | # "simsFlanagan.h" 37 | # "simsFlanaganOptimisationSetup.h" 38 | ) 39 | 40 | endif( ) 41 | 42 | 43 | # Add library. 44 | TUDAT_ADD_LIBRARY("low_thrust_trajectories" 45 | "${low_thrust_trajectories_SOURCES}" 46 | "${low_thrust_trajectories_HEADERS}" 47 | ) 48 | -------------------------------------------------------------------------------- /tests/src/interface/json/inputs/unitTestVariable/dependentTypes.json: -------------------------------------------------------------------------------- 1 | [ 2 | "machNumber", 3 | "altitude", 4 | "airspeed", 5 | "localDensity", 6 | "relativeSpeed", 7 | "relativePosition", 8 | "relativeDistance", 9 | "relativeVelocity", 10 | "radiationPressure", 11 | "totalAccelerationNorm", 12 | "accelerationNorm", 13 | "totalAcceleration", 14 | "acceleration", 15 | "aerodynamicForceCoefficients", 16 | "aerodynamicMomentCoefficients", 17 | "rotationMatrixToBodyFixedFrame", 18 | "intermediateAerodynamicRotationMatrix", 19 | "relativeBodyAerodynamicOrientationAngle", 20 | "bodyFixedAirspeedBasedVelocity", 21 | "totalAerodynamicGLoad", 22 | "stagnationPointHeatFlux", 23 | "localTemperature", 24 | "geodeticLatitude", 25 | "controlSurfaceDeflection", 26 | "totalMassRates", 27 | "lvlhToInertialFrameRotation", 28 | "periapsisAltitude", 29 | "totalTorqueNorm", 30 | "torqueNorm", 31 | "totalTorque", 32 | "torque", 33 | "bodyFixedGroundspeedBasedVelocity", 34 | "keplerElements", 35 | "modifiedEquinoctialElements", 36 | "sphericalHarmonicsAccelerationTerms", 37 | "sphericalHarmonicsAccelerationTermNorms", 38 | "bodyFixedRelativeCartesianPosition", 39 | "bodyFixedRelativeSphericalPosition", 40 | "totalGravityFieldVariationAcceleration", 41 | "singleGravityFieldVariationAcceleration", 42 | "singleGravityFieldVariationAccelerationTerms", 43 | "accelerationPartialWrtBodyTranslationalState", 44 | "localDynamicPressure", 45 | "localAerodynamicHeatRate" 46 | ] 47 | -------------------------------------------------------------------------------- /include/tudat/simulation/estimation_setup/createLightTimeCorrectionPartials.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | 12 | #ifndef TUDAT_CREATELIGHTTIMECORRECTIONPARTIALS_H 13 | #define TUDAT_CREATELIGHTTIMECORRECTIONPARTIALS_H 14 | 15 | #include "tudat/astro/observation_models/corrections/lightTimeCorrection.h" 16 | #include "tudat/astro/orbit_determination/observation_partials/lightTimeCorrectionPartial.h" 17 | 18 | namespace tudat 19 | { 20 | 21 | namespace observation_partials 22 | { 23 | 24 | //! Function to create a partial objects from list of light time corrections. 25 | /*! 26 | * Function to create a partial objects from list of light time corrections. 27 | * \param lightTimeCorrectionList List of light time corrections. 28 | * \return List of light-time correction partial objects 29 | */ 30 | std::vector< std::shared_ptr< LightTimeCorrectionPartial > > createLightTimeCorrectionPartials( 31 | const std::vector< std::shared_ptr< observation_models::LightTimeCorrection > >& lightTimeCorrectionList ); 32 | 33 | } 34 | 35 | } 36 | 37 | #endif // TUDAT_CREATELIGHTTIMECORRECTIONPARTIALS_H 38 | -------------------------------------------------------------------------------- /src/astro/orbit_determination/observation_partials/firstOrderRelativisticPartial.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | */ 10 | 11 | #include "tudat/astro/orbit_determination/observation_partials/firstOrderRelativisticPartial.h" 12 | 13 | namespace tudat 14 | { 15 | 16 | namespace observation_partials 17 | { 18 | 19 | //! Function to compute partial derivative of 1st order relativistic correction w.r.t. gravitational parameter. 20 | double getPartialOfFirstOrderRelativisticLightTimeCorrectionWrtSingleGravitationalParameter( 21 | const double singleBodyLightTimeCorrection, const double bodyGravitationalParameter ) 22 | { 23 | return singleBodyLightTimeCorrection / bodyGravitationalParameter; 24 | } 25 | 26 | //! Function to compute partial derivative of 1st order relativistic correction w.r.t. PPN parameter gamma. 27 | double getPartialOfFirstOrderRelativisticLightTimeCorrectionWrtPpnParameterGamma( 28 | const double totalLightTimeCorrection, const double ppnParameterGamma ) 29 | { 30 | return totalLightTimeCorrection / ( ppnParameterGamma + 1.0 ); 31 | } 32 | 33 | 34 | 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /examples/tudat/satellite_propagation/singleUnperturbedSatellitePropagator.json: -------------------------------------------------------------------------------- 1 | { 2 | "initialEpoch": 0, 3 | "finalEpoch": 86400, 4 | "globalFrameOrigin": "Earth", 5 | "globalFrameOrientation": "J2000", 6 | "spice": { 7 | "useStandardKernels": true, 8 | "preloadEphemeris": false 9 | }, 10 | "bodies": { 11 | "Earth": { 12 | "useDefaultSettings": true 13 | }, 14 | "Asterix": { 15 | "initialState": { 16 | "type": "keplerian", 17 | "semiMajorAxis": 7.5E+6, 18 | "eccentricity": 0.1, 19 | "inclination": 1.4888, 20 | "argumentOfPeriapsis": 4.1137, 21 | "longitudeOfAscendingNode": 0.4084, 22 | "trueAnomaly": 2.4412 23 | } 24 | } 25 | }, 26 | "propagators": [ 27 | { 28 | "integratedStateType": "translational", 29 | "centralBodies": [ 30 | "Earth" 31 | ], 32 | "bodiesToPropagate": [ 33 | "Asterix" 34 | ], 35 | "accelerations": { 36 | "Asterix": { 37 | "Earth": [ 38 | { 39 | "type": "pointMassGravity" 40 | } 41 | ] 42 | } 43 | } 44 | } 45 | ], 46 | "integrator": { 47 | "type": "rungeKutta4", 48 | "stepSize": 10 49 | }, 50 | "export": [ 51 | { 52 | "file": "@path(stateHistory.txt)", 53 | "variables": [ 54 | { 55 | "type": "state" 56 | } 57 | ] 58 | } 59 | ], 60 | "options": { 61 | "fullSettingsFile": "@path(fullSettings.json)" 62 | } 63 | } -------------------------------------------------------------------------------- /src/astro/observation_models/observationManager.cpp: -------------------------------------------------------------------------------- 1 | #include "tudat/astro/observation_models/observationManager.h" 2 | 3 | namespace tudat 4 | { 5 | 6 | namespace observation_models 7 | { 8 | 9 | template class ObservationManagerBase< double, double >; 10 | template class ObservationManager< 1, double, double >; 11 | template class ObservationManager< 2, double, double >; 12 | template class ObservationManager< 3, double, double >; 13 | template class ObservationManager< 6, double, double >; 14 | 15 | #if( TUDAT_BUILD_WITH_EXTENDED_PRECISION_PROPAGATION_TOOLS ) 16 | template class ObservationManagerBase< double, Time >; 17 | template class ObservationManagerBase< long double, double >; 18 | template class ObservationManagerBase< long double, Time >; 19 | 20 | template class ObservationManager< 1, double, Time >; 21 | template class ObservationManager< 1, long double, double >; 22 | template class ObservationManager< 1, long double, Time >; 23 | 24 | template class ObservationManager< 2, double, Time >; 25 | template class ObservationManager< 2, long double, double >; 26 | template class ObservationManager< 2, long double, Time >; 27 | 28 | template class ObservationManager< 3, double, Time >; 29 | template class ObservationManager< 3, long double, double >; 30 | template class ObservationManager< 3, long double, Time >; 31 | 32 | template class ObservationManager< 6, double, Time >; 33 | template class ObservationManager< 6, long double, double >; 34 | template class ObservationManager< 6, long double, Time >; 35 | 36 | #endif 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/astro/aerodynamics/aerodynamicCoefficientGenerator.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2019, Delft University of Technology 2 | * All rigths reserved 3 | * 4 | * This file is part of the Tudat. Redistribution and use in source and 5 | * binary forms, with or without modification, are permitted exclusively 6 | * under the terms of the Modified BSD license. You should have received 7 | * a copy of the license with this file. If not, please or visit: 8 | * http://tudat.tudelft.nl/LICENSE. 9 | * 10 | */ 11 | 12 | #include 13 | 14 | namespace tudat 15 | { 16 | 17 | namespace aerodynamics 18 | { 19 | 20 | //! Function to print to console which aerodynamic coefficients are being saved. 21 | void informUserOnSavedCoefficient( std::vector< unsigned int > coefficientIndices ) 22 | { 23 | // Set order of coefficients 24 | std::vector< std::string > coefficientNames; 25 | coefficientNames.push_back( "Drag" ); 26 | coefficientNames.push_back( "Side" ); 27 | coefficientNames.push_back( "Lift" ); 28 | coefficientNames.push_back( "X-Moment" ); 29 | coefficientNames.push_back( "Y-Moment" ); 30 | coefficientNames.push_back( "Z-Moment" ); 31 | 32 | // Inform user on which variable is being saved 33 | for ( unsigned int index: coefficientIndices ) 34 | { 35 | std::cout << "Saving " + coefficientNames.at( index ) << " aerodynamic coefficient." << std::endl; 36 | } 37 | } 38 | 39 | } // namespace aerodynamics 40 | 41 | } // namespace tudat 42 | --------------------------------------------------------------------------------