diff --git a/README.md b/README.md index acd9962e4..6e4dd3469 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,8 @@ Once the shell is up and running, playing with it is easy: from ostk.physics import Environment from ostk.physics.time import Instant from ostk.astrodynamics.trajectory import Orbit -from ostk.astrodynamics.trajectory.orbit.models import SGP4 -from ostk.astrodynamics.trajectory.orbit.models.sgp4 import TLE +from ostk.astrodynamics.trajectory.orbit.model import SGP4 +from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE tle = TLE( '1 25544U 98067A 18231.17878740 .00000187 00000-0 10196-4 0 9994', @@ -111,7 +111,7 @@ The library exhibits the following detailed and descriptive structure: ├── Trajectory │ ├── State │ ├── Orbit -│ │ ├── Models +│ │ ├── Model │ │ │ ├── Kepler │ │ │ │ └── Classical Orbital Elements (COE) │ │ │ ├── SGP4 @@ -119,16 +119,16 @@ The library exhibits the following detailed and descriptive structure: │ │ │ ├── Tabulated (input csv) │ │ │ └── Propagated (numerical integration) │ │ ├── Pass -│ │ └── Messages +│ │ └── Message │ │ └── SpaceX │ │ └── OPM -│ ├── Models +│ ├── Model │ │ ├── Static │ │ └── Tabulated │ └── Propagator ├── Flight │ ├── Profile -│ │ ├── Models +│ │ ├── Model │ │ │ ├── Transform │ │ │ └── Tabulated │ │ └── State @@ -142,7 +142,7 @@ The library exhibits the following detailed and descriptive structure: ├── Access │ └── Generator └── Conjunction - └── Messages + └── Message └── CCSDS └── CDM ``` @@ -315,18 +315,19 @@ The validation framework takes this yaml scenario definition (from the `/validat ``` #### Running the Validation Tests + The validation tests can be run with `ostk-validate` from within the dev container, or `make validation` as a standalone. ## Dependencies -| Name | Version | License | Link | -| ----------- | --------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| Name | Version | License | Link | +| ----------- | ------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | | Pybind11 | `2.10.1` | BSD-3-Clause | [github.com/pybind/pybind11](https://github.com/pybind/pybind11) | | ordered-map | `0.6.0` | MIT | [github.com/Tessil/ordered-map](https://github.com/Tessil/ordered-map) | | Eigen | `3.3.7` | MPL2 | [eigen.tuxfamily.org](http://eigen.tuxfamily.org/index.php) | | SGP4 | `6a448b4` | Apache License 2.0 | [github.com/dnwrnr/sgp4](https://github.com/dnwrnr/sgp4) | | NLopt | `2.5.0` | LGPL | [github.com/stevengj/nlopt](https://github.com/stevengj/nlopt) | -| benchmark | `1.8.2` | Apache License 2.0 | [github.com/google/benchmark](https://github.com/google/benchmark) | +| benchmark | `1.8.2` | Apache License 2.0 | [github.com/google/benchmark](https://github.com/google/benchmark) | | Core | `main` | Apache License 2.0 | [github.com/open-space-collective/open-space-toolkit-core](https://github.com/open-space-collective/open-space-toolkit-core) | | I/O | `main` | Apache License 2.0 | [github.com/open-space-collective/open-space-toolkit-io](https://github.com/open-space-collective/open-space-toolkit-io) | | Mathematics | `main` | Apache License 2.0 | [github.com/open-space-collective/open-space-toolkit-mathematics](https://github.com/open-space-collective/open-space-toolkit-mathematics) | diff --git a/benchmark/OpenSpaceToolkit/Astrodynamics/Access.benchmark.cpp b/benchmark/OpenSpaceToolkit/Astrodynamics/Access.benchmark.cpp index d2e1d2320..7fb9414d4 100644 --- a/benchmark/OpenSpaceToolkit/Astrodynamics/Access.benchmark.cpp +++ b/benchmark/OpenSpaceToolkit/Astrodynamics/Access.benchmark.cpp @@ -17,8 +17,8 @@ #include #include #include -#include -#include +#include +#include using ostk::core::container::Array; using ostk::core::type::Shared; @@ -35,12 +35,12 @@ using ostk::physics::time::Interval; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::Access; -using ostk::astro::Trajectory; -using ostk::astro::access::Generator; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::orbit::models::SGP4; -using ostk::astro::trajectory::orbit::models::sgp4::TLE; +using ostk::astrodynamics::Access; +using ostk::astrodynamics::Trajectory; +using ostk::astrodynamics::access::Generator; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::orbit::model::SGP4; +using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; static const int DEFAULT_ITERATIONS = 10; diff --git a/benchmark/OpenSpaceToolkit/Astrodynamics/Propagation.benchmark.cpp b/benchmark/OpenSpaceToolkit/Astrodynamics/Propagation.benchmark.cpp index b9f29d567..5b39b44a6 100644 --- a/benchmark/OpenSpaceToolkit/Astrodynamics/Propagation.benchmark.cpp +++ b/benchmark/OpenSpaceToolkit/Astrodynamics/Propagation.benchmark.cpp @@ -28,12 +28,12 @@ using ostk::physics::time::DateTime; using ostk::physics::time::Instant; using ostk::physics::time::Scale; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::CentralBodyGravity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; static const int DEFAULT_ITERATIONS = 10; diff --git a/bindings/python/docs/Demonstration/Orbit Propagation.ipynb b/bindings/python/docs/Demonstration/Orbit Propagation.ipynb index b098db32f..be7c82617 100644 --- a/bindings/python/docs/Demonstration/Orbit Propagation.ipynb +++ b/bindings/python/docs/Demonstration/Orbit Propagation.ipynb @@ -41,10 +41,10 @@ "from ostk.astrodynamics.flight.system import SatelliteSystem, PropulsionSystem\n", "from ostk.astrodynamics.trajectory import LocalOrbitalFrameFactory\n", "from ostk.astrodynamics.trajectory import LocalOrbitalFrameDirection\n", - "from ostk.astrodynamics.trajectory.state import CoordinatesSubset\n", - "from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition\n", - "from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity\n", - "from ostk.astrodynamics.trajectory.state import CoordinatesBroker\n", + "from ostk.astrodynamics.trajectory.state import CoordinateSubset\n", + "from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition\n", + "from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity\n", + "from ostk.astrodynamics.trajectory.state import CoordinateBroker\n", "from ostk.astrodynamics.dynamics import (\n", " AtmosphericDrag,\n", " CentralBodyGravity,\n", @@ -202,13 +202,13 @@ "metadata": {}, "outputs": [], "source": [ - "coordinates_broker = CoordinatesBroker(\n", + "coordinate_broker = CoordinateBroker(\n", " [\n", " CartesianPosition.default(),\n", " CartesianVelocity.default(),\n", - " CoordinatesSubset.mass(),\n", - " CoordinatesSubset.surface_area(),\n", - " CoordinatesSubset.drag_coefficient(),\n", + " CoordinateSubset.mass(),\n", + " CoordinateSubset.surface_area(),\n", + " CoordinateSubset.drag_coefficient(),\n", " ]\n", ")\n", "\n", @@ -228,7 +228,7 @@ " drag_coefficient,\n", "]\n", "\n", - "start_state = State(start_instant, coordinates, Frame.GCRF(), coordinates_broker)" + "start_state = State(start_instant, coordinates, Frame.GCRF(), coordinate_broker)" ] }, { @@ -401,7 +401,7 @@ "outputs": [], "source": [ "def convert_state_with_mass(\n", - " instant: Instant, coordinates_broker: CoordinatesBroker, state: State\n", + " instant: Instant, coordinate_broker: CoordinateBroker, state: State\n", ") -> list:\n", " \"\"\"\n", " Convert an input (Instant, State) into dataframe-ready values. Including mass.\n", @@ -420,7 +420,7 @@ " float(instant.get_modified_julian_date(Scale.UTC)),\n", " *state.get_position().get_coordinates().transpose().tolist(),\n", " *state.get_velocity().get_coordinates().transpose().tolist(),\n", - " state.extract_coordinates(CoordinatesSubset.mass())[0],\n", + " state.extract_coordinates(CoordinateSubset.mass())[0],\n", " float(lla.get_latitude().in_degrees()),\n", " float(lla.get_longitude().in_degrees()),\n", " float(lla.get_altitude().in_meters()),\n", @@ -435,7 +435,7 @@ "outputs": [], "source": [ "data = [\n", - " convert_state_with_mass(state.get_instant(), coordinates_broker, state)\n", + " convert_state_with_mass(state.get_instant(), coordinate_broker, state)\n", " for state in states\n", "]" ] diff --git a/bindings/python/docs/Validation-Analysis/Orbit Propagation Validation Testing RMS Error.ipynb b/bindings/python/docs/Validation-Analysis/Orbit Propagation Validation Testing RMS Error.ipynb index d45e3b68f..edd508025 100644 --- a/bindings/python/docs/Validation-Analysis/Orbit Propagation Validation Testing RMS Error.ipynb +++ b/bindings/python/docs/Validation-Analysis/Orbit Propagation Validation Testing RMS Error.ipynb @@ -1,14028 +1,14029 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Orbit Propagation Validation Plotting for RMS differences" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This tutorial demonstrates how to perform orbit propagation using the propagated orbit mode." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 332, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import csv\n", - "import os\n", - "\n", - "import plotly.graph_objs as go\n", - "\n", - "from ostk.mathematics.geometry.d3.object import Cuboid\n", - "from ostk.mathematics.geometry.d3.object import Composite\n", - "from ostk.mathematics.geometry.d3.object import Point\n", - "\n", - "from ostk.physics.unit import Mass\n", - "from ostk.physics.time import Scale\n", - "from ostk.physics.time import Instant\n", - "from ostk.physics.time import Duration\n", - "from ostk.physics.time import DateTime\n", - "from ostk.physics.coordinate import Position\n", - "from ostk.physics.coordinate import Velocity\n", - "from ostk.physics.coordinate import Frame\n", - "from ostk.physics import Environment\n", - "from ostk.physics.environment.object.celestial import Earth\n", - "\n", - "from ostk.astrodynamics.trajectory.state import NumericalSolver\n", - "from ostk.astrodynamics.trajectory import State\n", - "from ostk.astrodynamics.trajectory import Orbit\n", - "from ostk.astrodynamics.flight.system import SatelliteSystem\n", - "from ostk.astrodynamics.dynamics import SatelliteDynamics\n", - "from ostk.astrodynamics.trajectory.orbit.models import Propagated" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Propagated Orbit Model" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "Read in reference data from CSV file " - ] - }, - { - "cell_type": "code", - "execution_count": 333, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "filename = \"STK_EGM2008_100x100NoSecVar_24hr_run.csv\"\n", - "plot_title_extension = (\n", - " \"RMS error for STK with EGM2008 (without secular coeff update) vs OSTk\"\n", - ")\n", - "# legend_name_list = ['OSTk with 30s interval']\n", - "legend_name_list = [\n", - " \"OSTk EGM2008 100x100 minus STK EGM2008 70x70\",\n", - " \"OSTk EGM2008 70x70 minus STK EGM2008 70x70\",\n", - "]\n", - "\n", - "multiplication_array = np.array([1.0e3, 1.0e3, 1.0e3])\n", - "\n", - "start_instant = Instant.date_time(DateTime.parse(\"2021-03-20T00:00:00.000\"), Scale.UTC)\n", - "frame_GCRF = Frame.GCRF()\n", - "\n", - "with open(f\"{os.getcwd()}/Outputfiles/{filename}\", newline=\"\") as csvfile:\n", - " reader = csv.DictReader(csvfile)\n", - " reference_state_array = []\n", - " instant_array = []\n", - " for row in reader:\n", - " instant_iter = start_instant + Duration.seconds(float(row[\"YAM.ElapsedSecs\"]))\n", - " position_iter = Position.meters(\n", - " [row[\"YAM.EarthICRF.X\"], row[\"YAM.EarthICRF.Y\"], row[\"YAM.EarthICRF.Z\"]],\n", - " frame_GCRF,\n", - " )\n", - " velocity_iter = Velocity.meters_per_second(\n", - " [row[\"YAM.EarthICRF.VX\"], row[\"YAM.EarthICRF.VY\"], row[\"YAM.EarthICRF.VZ\"]],\n", - " frame_GCRF,\n", - " )\n", - "\n", - " position_iter_m = np.multiply(\n", - " position_iter.get_coordinates(), multiplication_array\n", - " )\n", - " velocity_iter_ms = np.multiply(\n", - " velocity_iter.get_coordinates(), multiplication_array\n", - " )\n", - "\n", - " instant_array.append(instant_iter)\n", - " reference_state_array.append(\n", - " State(\n", - " instant_iter,\n", - " Position.meters(position_iter_m, frame_GCRF),\n", - " Velocity.meters_per_second(velocity_iter_ms, frame_GCRF),\n", - " )\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Computation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create an environment corresponding to the perturbations that should be used" - ] - }, - { - "cell_type": "code", - "execution_count": 334, - "metadata": {}, - "outputs": [], - "source": [ - "instant_J2000 = Instant.J2000()\n", - "\n", - "objects_1 = [Earth.EGM96(100, 100)] # , Sun.spherical(), Moon.spherical()]\n", - "objects_2 = [Earth.EGM96(70, 70)]\n", - "# objects_3 = [Earth.EGM96(70,70)]\n", - "# objects_4 = [Earth.EGM96(35, 35)]\n", - "\n", - "custom_env_1 = Environment(instant_J2000, objects_1)\n", - "custom_env_2 = Environment(instant_J2000, objects_2)\n", - "# custom_env_3 = Environment(instant_J2000, objects_3)\n", - "# custom_env_4 = Environment(instant_J2000, objects_4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Create multiple satellite system, a satellite dynamical system, and a numerical solver" - ] - }, - { - "cell_type": "code", - "execution_count": 335, - "metadata": {}, - "outputs": [], - "source": [ - "mass = Mass(90.0, Mass.Unit.Kilogram)\n", - "satellite_geometry = Composite(\n", - " Cuboid(\n", - " Point(0.0, 0.0, 0.0),\n", - " [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],\n", - " [1.0, 0.0, 0.0],\n", - " )\n", - ")\n", - "inertia_tensor = np.ndarray(shape=(3, 3))\n", - "surface_area = 0.8\n", - "drag_coefficient = 2.2\n", - "\n", - "satellitesystem = SatelliteSystem(\n", - " mass, satellite_geometry, inertia_tensor, surface_area, drag_coefficient\n", - ")\n", - "\n", - "start_state = reference_state_array[0]\n", - "\n", - "satellitedynamics_1 = SatelliteDynamics(custom_env_1, satellitesystem)\n", - "satellitedynamics_2 = SatelliteDynamics(custom_env_2, satellitesystem)\n", - "# satellitedynamics_3 = SatelliteDynamics(custom_env_3, satellitesystem, start_state)\n", - "# satellitedynamics_4 = SatelliteDynamics(custom_env_4, satellitesystem, start_state)\n", - "\n", - "numericalsolver_1 = NumericalSolver(\n", - " NumericalSolver.LogType.NoLog,\n", - " NumericalSolver.StepperType.RungeKuttaFehlberg78,\n", - " 5.0,\n", - " 1.0e-15,\n", - " 1.0e-15,\n", - ")\n", - "numericalsolver_2 = NumericalSolver(\n", - " NumericalSolver.LogType.NoLog,\n", - " NumericalSolver.StepperType.RungeKuttaFehlberg78,\n", - " 5.0,\n", - " 1.0e-15,\n", - " 1.0e-15,\n", - ")\n", - "# numericalsolver_3 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)\n", - "# numericalsolver_4 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)\n", - "\n", - "# numericalsolver_2 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setup a different Propagated models an an instant array at which propagated states are desired" - ] - }, - { - "cell_type": "code", - "execution_count": 336, - "metadata": {}, - "outputs": [], - "source": [ - "propagated_model_1 = Propagated(satellitedynamics_1, numericalsolver_1, start_state)\n", - "propagated_model_2 = Propagated(satellitedynamics_2, numericalsolver_2, start_state)\n", - "# propagated_model_3 = Propagated(satellitedynamics_3, numericalsolver_3)\n", - "# propagated_model_4 = Propagated(satellitedynamics_4, numericalsolver_4)\n", - "\n", - "orbit_1 = Orbit(\n", - " propagated_model_1, custom_env_1.access_celestial_object_with_name(\"Earth\")\n", - ")\n", - "orbit_2 = Orbit(\n", - " propagated_model_2, custom_env_2.access_celestial_object_with_name(\"Earth\")\n", - ")\n", - "# orbit_3 = Orbit(propagated_model_3, custom_env_3.access_celestial_object_with_name('Earth'))\n", - "# orbit_4 = Orbit(propagated_model_4, custom_env_4.access_celestial_object_with_name('Earth'))\n", - "\n", - "orbit_list = [orbit_1, orbit_2] # , orbit_3]#, orbit_4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that everything is set up, we can calculate the state arrays from the desired time instant grid" - ] - }, - { - "cell_type": "code", - "execution_count": 337, - "metadata": {}, - "outputs": [], - "source": [ - "propagated_state_array_list = [\n", - " orbit_list[ind].get_states_at(instant_array) for ind in range(0, len(orbit_list))\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 338, - "metadata": {}, - "outputs": [], - "source": [ - "def to_dataframe(propagated_state, ind):\n", - " return [\n", - " repr(propagated_state.get_instant()),\n", - " float(\n", - " (\n", - " propagated_state.get_instant()\n", - " - propagated_state_array_list[ind][0].get_instant()\n", - " ).in_seconds()\n", - " ),\n", - " *propagated_state.get_position().get_coordinates(),\n", - " *propagated_state.get_velocity().get_coordinates(),\n", - " ]" - ] - }, - { - "cell_type": "code", - "execution_count": 339, - "metadata": {}, - "outputs": [], - "source": [ - "propagated_orbit_data_list = [\n", - " [\n", - " to_dataframe(propagated_state, ind)\n", - " for propagated_state in propagated_state_array_list[ind]\n", - " ]\n", - " for ind in range(0, len(orbit_list))\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 340, - "metadata": {}, - "outputs": [], - "source": [ - "propagated_orbit_df_list = [\n", - " pd.DataFrame(\n", - " propagated_orbit_data_list[ind],\n", - " columns=[\n", - " \"$Time^{UTC}$\",\n", - " \"Elapsed secs\",\n", - " \"$x_{x}^{ECI}$\",\n", - " \"$x_{y}^{ECI}$\",\n", - " \"$x_{z}^{ECI}$\",\n", - " \"$v_{x}^{ECI}$\",\n", - " \"$v_{y}^{ECI}$\",\n", - " \"$v_{z}^{ECI}$\",\n", - " ],\n", - " )\n", - " for ind in range(0, len(orbit_list))\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Table:" - ] - }, - { - "cell_type": "code", - "execution_count": 341, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", - " 0 2021-03-20 00:00:00 [UTC] 0.0 -1.514669e+06 -192084.121491 \n", - " 1 2021-03-20 00:01:00 [UTC] 60.0 -1.892139e+06 40209.643464 \n", - " 2 2021-03-20 00:02:00 [UTC] 120.0 -2.261735e+06 272336.347500 \n", - " 3 2021-03-20 00:03:00 [UTC] 180.0 -2.621919e+06 503329.886059 \n", - " 4 2021-03-20 00:04:00 [UTC] 240.0 -2.971190e+06 732228.560244 \n", - " \n", - " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", - " 0 6.831711e+06 -6348.079188 3867.582493 -1297.176104 \n", - " 1 6.739684e+06 -6229.875938 3872.857026 -1769.350138 \n", - " 2 6.619536e+06 -6085.730799 3862.015054 -2234.203938 \n", - " 3 6.471765e+06 -5916.233718 3835.097084 -2689.802878 \n", - " 4 6.296983e+06 -5722.080031 3792.209441 -3134.248551 ,\n", - " $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", - " 0 2021-03-20 00:00:00 [UTC] 0.0 -1.514669e+06 -192084.121491 \n", - " 1 2021-03-20 00:01:00 [UTC] 60.0 -1.892139e+06 40209.643543 \n", - " 2 2021-03-20 00:02:00 [UTC] 120.0 -2.261735e+06 272336.347795 \n", - " 3 2021-03-20 00:03:00 [UTC] 180.0 -2.621919e+06 503329.886714 \n", - " 4 2021-03-20 00:04:00 [UTC] 240.0 -2.971190e+06 732228.561259 \n", - " \n", - " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", - " 0 6.831711e+06 -6348.079188 3867.582493 -1297.176104 \n", - " 1 6.739684e+06 -6229.875937 3872.857028 -1769.350136 \n", - " 2 6.619536e+06 -6085.730797 3862.015059 -2234.203933 \n", - " 3 6.471765e+06 -5916.233716 3835.097091 -2689.802874 \n", - " 4 6.296983e+06 -5722.080028 3792.209447 -3134.248547 ]" + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Orbit Propagation Validation Plotting for RMS differences" ] }, - "execution_count": 341, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[propagated_orbit_df_list[ind].head() for ind in range(0, len(orbit_list))]" - ] - }, - { - "cell_type": "code", - "execution_count": 342, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", - " 1436 2021-03-20 23:56:00 [UTC] 86160.0 6.069746e+06 -3.464214e+06 \n", - " 1437 2021-03-20 23:57:00 [UTC] 86220.0 5.992655e+06 -3.490139e+06 \n", - " 1438 2021-03-20 23:58:00 [UTC] 86280.0 5.890626e+06 -3.501541e+06 \n", - " 1439 2021-03-20 23:59:00 [UTC] 86340.0 5.764077e+06 -3.498368e+06 \n", - " 1440 2021-03-21 00:00:00 [UTC] 86400.0 5.613533e+06 -3.480632e+06 \n", - " \n", - " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", - " 1436 6.075027e+05 -1075.124079 -552.599779 7441.867643 \n", - " 1437 1.052437e+06 -1493.691431 -311.286987 7384.104632 \n", - " 1438 1.492979e+06 -1906.129737 -68.628218 7295.514250 \n", - " 1439 1.927289e+06 -2310.703179 174.357160 7176.458785 \n", - " 1440 2.353554e+06 -2705.708860 416.647785 7027.430444 ,\n", - " $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", - " 1436 2021-03-20 23:56:00 [UTC] 86160.0 6.069746e+06 -3.464214e+06 \n", - " 1437 2021-03-20 23:57:00 [UTC] 86220.0 5.992655e+06 -3.490139e+06 \n", - " 1438 2021-03-20 23:58:00 [UTC] 86280.0 5.890625e+06 -3.501541e+06 \n", - " 1439 2021-03-20 23:59:00 [UTC] 86340.0 5.764077e+06 -3.498368e+06 \n", - " 1440 2021-03-21 00:00:00 [UTC] 86400.0 5.613532e+06 -3.480632e+06 \n", - " \n", - " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", - " 1436 6.075028e+05 -1075.124174 -552.599772 7441.867649 \n", - " 1437 1.052437e+06 -1493.691525 -311.286975 7384.104631 \n", - " 1438 1.492979e+06 -1906.129832 -68.628205 7295.514243 \n", - " 1439 1.927289e+06 -2310.703272 174.357183 7176.458770 \n", - " 1440 2.353554e+06 -2705.708948 416.647809 7027.430422 ]" + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial demonstrates how to perform orbit propagation using the propagated orbit mode." ] }, - "execution_count": 342, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[propagated_orbit_df_list[ind].tail() for ind in range(0, len(orbit_list))]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "#### Trajectory RMS error vs GMAT run in the GCRF frame " - ] - }, - { - "cell_type": "code", - "execution_count": 343, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "def to_dataframe_RMS(ref_ind, list_ind):\n", - " return [\n", - " repr(propagated_state_array_list[list_ind][ref_ind].get_instant()),\n", - " float(\n", - " (\n", - " propagated_state_array_list[list_ind][ref_ind].get_instant()\n", - " - propagated_state_array_list[list_ind][0].get_instant()\n", - " ).in_seconds()\n", - " ),\n", - " (\n", - " np.linalg.norm(\n", - " (\n", - " propagated_state_array_list[list_ind][ref_ind]\n", - " .get_position()\n", - " .get_coordinates()\n", - " - reference_state_array[ref_ind].get_position().get_coordinates()\n", - " )\n", - " )\n", - " ),\n", - " # print(f'Prop:{(propagated_state_array[ref_ind].in_frame(frame_LVLH).get_position().get_coordinates())}'),\n", - " # print(f'Ref:{(reference_state_array[ref_ind].in_frame(frame_LVLH).get_position().get_coordinates())}'),\n", - " (\n", - " np.linalg.norm(\n", - " (\n", - " propagated_state_array_list[list_ind][ref_ind]\n", - " .get_velocity()\n", - " .get_coordinates()\n", - " - reference_state_array[ref_ind].get_velocity().get_coordinates()\n", - " )\n", - " )\n", - " ),\n", - " ]" - ] - }, - { - "cell_type": "code", - "execution_count": 344, - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "orbit_data_RMS_list = [\n", - " [\n", - " to_dataframe_RMS(ref_ind, list_ind)\n", - " for ref_ind in range(0, len(propagated_state_array_list[list_ind]))\n", - " ]\n", - " for list_ind in range(0, len(orbit_list))\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 345, - "metadata": {}, - "outputs": [], - "source": [ - "orbit_df_RMS_list = [\n", - " pd.DataFrame(\n", - " orbit_data_RMS_list[list_ind],\n", - " columns=[\"$Time^{UTC}$\", \"Elapsed secs\", \"${\\delta}x$\", \"${\\delta}v$\"],\n", - " )\n", - " for list_ind in range(0, len(orbit_list))\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 346, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", - " 0 2021-03-20 00:00:00 [UTC] 0.0 0.000000 0.000000\n", - " 1 2021-03-20 00:01:00 [UTC] 60.0 0.001491 0.000048\n", - " 2 2021-03-20 00:02:00 [UTC] 120.0 0.005670 0.000094\n", - " 3 2021-03-20 00:03:00 [UTC] 180.0 0.012266 0.000133\n", - " 4 2021-03-20 00:04:00 [UTC] 240.0 0.020615 0.000158,\n", - " $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", - " 0 2021-03-20 00:00:00 [UTC] 0.0 0.000000 0.000000\n", - " 1 2021-03-20 00:01:00 [UTC] 60.0 0.001432 0.000046\n", - " 2 2021-03-20 00:02:00 [UTC] 120.0 0.005489 0.000092\n", - " 3 2021-03-20 00:03:00 [UTC] 180.0 0.011969 0.000131\n", - " 4 2021-03-20 00:04:00 [UTC] 240.0 0.020217 0.000156]" + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup" ] }, - "execution_count": 346, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[orbit_df_RMS_list[list_ind].head() for list_ind in range(0, len(orbit_list))]" - ] - }, - { - "cell_type": "code", - "execution_count": 347, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", - " 1436 2021-03-20 23:56:00 [UTC] 86160.0 3.196223 0.003212\n", - " 1437 2021-03-20 23:57:00 [UTC] 86220.0 3.201085 0.003261\n", - " 1438 2021-03-20 23:58:00 [UTC] 86280.0 3.204328 0.003304\n", - " 1439 2021-03-20 23:59:00 [UTC] 86340.0 3.204297 0.003307\n", - " 1440 2021-03-21 00:00:00 [UTC] 86400.0 3.201469 0.003290,\n", - " $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", - " 1436 2021-03-20 23:56:00 [UTC] 86160.0 3.100366 0.003130\n", - " 1437 2021-03-20 23:57:00 [UTC] 86220.0 3.103318 0.003178\n", - " 1438 2021-03-20 23:58:00 [UTC] 86280.0 3.104796 0.003219\n", - " 1439 2021-03-20 23:59:00 [UTC] 86340.0 3.103123 0.003218\n", - " 1440 2021-03-21 00:00:00 [UTC] 86400.0 3.098854 0.003203]" + { + "cell_type": "code", + "execution_count": 332, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import csv\n", + "import os\n", + "\n", + "import plotly.graph_objs as go\n", + "\n", + "from ostk.mathematics.geometry.d3.object import Cuboid\n", + "from ostk.mathematics.geometry.d3.object import Composite\n", + "from ostk.mathematics.geometry.d3.object import Point\n", + "\n", + "from ostk.physics.unit import Mass\n", + "from ostk.physics.time import Scale\n", + "from ostk.physics.time import Instant\n", + "from ostk.physics.time import Duration\n", + "from ostk.physics.time import DateTime\n", + "from ostk.physics.coordinate import Position\n", + "from ostk.physics.coordinate import Velocity\n", + "from ostk.physics.coordinate import Frame\n", + "from ostk.physics import Environment\n", + "from ostk.physics.environment.object.celestial import Earth\n", + "\n", + "from ostk.astrodynamics.trajectory.state import NumericalSolver\n", + "from ostk.astrodynamics.trajectory import State\n", + "from ostk.astrodynamics.trajectory import Orbit\n", + "from ostk.astrodynamics.flight.system import SatelliteSystem\n", + "from ostk.astrodynamics.dynamics import SatelliteDynamics\n", + "from ostk.astrodynamics.trajectory.orbit.models import Propagated" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Propagated Orbit Model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "Read in reference data from CSV file " + ] + }, + { + "cell_type": "code", + "execution_count": 333, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "filename = \"STK_EGM2008_100x100NoSecVar_24hr_run.csv\"\n", + "plot_title_extension = (\n", + " \"RMS error for STK with EGM2008 (without secular coeff update) vs OSTk\"\n", + ")\n", + "# legend_name_list = ['OSTk with 30s interval']\n", + "legend_name_list = [\n", + " \"OSTk EGM2008 100x100 minus STK EGM2008 70x70\",\n", + " \"OSTk EGM2008 70x70 minus STK EGM2008 70x70\",\n", + "]\n", + "\n", + "multiplication_array = np.array([1.0e3, 1.0e3, 1.0e3])\n", + "\n", + "start_instant = Instant.date_time(DateTime.parse(\"2021-03-20T00:00:00.000\"), Scale.UTC)\n", + "frame_GCRF = Frame.GCRF()\n", + "\n", + "with open(f\"{os.getcwd()}/Outputfiles/{filename}\", newline=\"\") as csvfile:\n", + " reader = csv.DictReader(csvfile)\n", + " reference_state_array = []\n", + " instant_array = []\n", + " for row in reader:\n", + " instant_iter = start_instant + Duration.seconds(float(row[\"YAM.ElapsedSecs\"]))\n", + " position_iter = Position.meters(\n", + " [row[\"YAM.EarthICRF.X\"], row[\"YAM.EarthICRF.Y\"], row[\"YAM.EarthICRF.Z\"]],\n", + " frame_GCRF,\n", + " )\n", + " velocity_iter = Velocity.meters_per_second(\n", + " [row[\"YAM.EarthICRF.VX\"], row[\"YAM.EarthICRF.VY\"], row[\"YAM.EarthICRF.VZ\"]],\n", + " frame_GCRF,\n", + " )\n", + "\n", + " position_iter_m = np.multiply(\n", + " position_iter.get_coordinates(), multiplication_array\n", + " )\n", + " velocity_iter_ms = np.multiply(\n", + " velocity_iter.get_coordinates(), multiplication_array\n", + " )\n", + "\n", + " instant_array.append(instant_iter)\n", + " reference_state_array.append(\n", + " State(\n", + " instant_iter,\n", + " Position.meters(position_iter_m, frame_GCRF),\n", + " Velocity.meters_per_second(velocity_iter_ms, frame_GCRF),\n", + " )\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Computation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create an environment corresponding to the perturbations that should be used" + ] + }, + { + "cell_type": "code", + "execution_count": 334, + "metadata": {}, + "outputs": [], + "source": [ + "instant_J2000 = Instant.J2000()\n", + "\n", + "objects_1 = [Earth.EGM96(100, 100)] # , Sun.spherical(), Moon.spherical()]\n", + "objects_2 = [Earth.EGM96(70, 70)]\n", + "# objects_3 = [Earth.EGM96(70,70)]\n", + "# objects_4 = [Earth.EGM96(35, 35)]\n", + "\n", + "custom_env_1 = Environment(instant_J2000, objects_1)\n", + "custom_env_2 = Environment(instant_J2000, objects_2)\n", + "# custom_env_3 = Environment(instant_J2000, objects_3)\n", + "# custom_env_4 = Environment(instant_J2000, objects_4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create multiple satellite system, a satellite dynamical system, and a numerical solver" + ] + }, + { + "cell_type": "code", + "execution_count": 335, + "metadata": {}, + "outputs": [], + "source": [ + "mass = Mass(90.0, Mass.Unit.Kilogram)\n", + "satellite_geometry = Composite(\n", + " Cuboid(\n", + " Point(0.0, 0.0, 0.0),\n", + " [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],\n", + " [1.0, 0.0, 0.0],\n", + " )\n", + ")\n", + "inertia_tensor = np.ndarray(shape=(3, 3))\n", + "surface_area = 0.8\n", + "drag_coefficient = 2.2\n", + "\n", + "satellitesystem = SatelliteSystem(\n", + " mass, satellite_geometry, inertia_tensor, surface_area, drag_coefficient\n", + ")\n", + "\n", + "start_state = reference_state_array[0]\n", + "\n", + "satellitedynamics_1 = SatelliteDynamics(custom_env_1, satellitesystem)\n", + "satellitedynamics_2 = SatelliteDynamics(custom_env_2, satellitesystem)\n", + "# satellitedynamics_3 = SatelliteDynamics(custom_env_3, satellitesystem, start_state)\n", + "# satellitedynamics_4 = SatelliteDynamics(custom_env_4, satellitesystem, start_state)\n", + "\n", + "numericalsolver_1 = NumericalSolver(\n", + " NumericalSolver.LogType.NoLog,\n", + " NumericalSolver.StepperType.RungeKuttaFehlberg78,\n", + " 5.0,\n", + " 1.0e-15,\n", + " 1.0e-15,\n", + ")\n", + "numericalsolver_2 = NumericalSolver(\n", + " NumericalSolver.LogType.NoLog,\n", + " NumericalSolver.StepperType.RungeKuttaFehlberg78,\n", + " 5.0,\n", + " 1.0e-15,\n", + " 1.0e-15,\n", + ")\n", + "# numericalsolver_3 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)\n", + "# numericalsolver_4 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)\n", + "\n", + "# numericalsolver_2 = NumericalSolver(NumericalSolver.LogType.NoLog, NumericalSolver.StepperType.RungeKuttaFehlberg78, 5.0, 1.0e-15, 1.0e-15)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup a different Propagated models an an instant array at which propagated states are desired" + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "metadata": {}, + "outputs": [], + "source": [ + "propagated_model_1 = Propagated(satellitedynamics_1, numericalsolver_1, start_state)\n", + "propagated_model_2 = Propagated(satellitedynamics_2, numericalsolver_2, start_state)\n", + "# propagated_model_3 = Propagated(satellitedynamics_3, numericalsolver_3)\n", + "# propagated_model_4 = Propagated(satellitedynamics_4, numericalsolver_4)\n", + "\n", + "orbit_1 = Orbit(\n", + " propagated_model_1, custom_env_1.access_celestial_object_with_name(\"Earth\")\n", + ")\n", + "orbit_2 = Orbit(\n", + " propagated_model_2, custom_env_2.access_celestial_object_with_name(\"Earth\")\n", + ")\n", + "# orbit_3 = Orbit(propagated_model_3, custom_env_3.access_celestial_object_with_name('Earth'))\n", + "# orbit_4 = Orbit(propagated_model_4, custom_env_4.access_celestial_object_with_name('Earth'))\n", + "\n", + "orbit_list = [orbit_1, orbit_2] # , orbit_3]#, orbit_4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that everything is set up, we can calculate the state arrays from the desired time instant grid" + ] + }, + { + "cell_type": "code", + "execution_count": 337, + "metadata": {}, + "outputs": [], + "source": [ + "propagated_state_array_list = [\n", + " orbit_list[ind].get_states_at(instant_array) for ind in range(0, len(orbit_list))\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 338, + "metadata": {}, + "outputs": [], + "source": [ + "def to_dataframe(propagated_state, ind):\n", + " return [\n", + " repr(propagated_state.get_instant()),\n", + " float(\n", + " (\n", + " propagated_state.get_instant()\n", + " - propagated_state_array_list[ind][0].get_instant()\n", + " ).in_seconds()\n", + " ),\n", + " *propagated_state.get_position().get_coordinates(),\n", + " *propagated_state.get_velocity().get_coordinates(),\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "metadata": {}, + "outputs": [], + "source": [ + "propagated_orbit_data_list = [\n", + " [\n", + " to_dataframe(propagated_state, ind)\n", + " for propagated_state in propagated_state_array_list[ind]\n", + " ]\n", + " for ind in range(0, len(orbit_list))\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 340, + "metadata": {}, + "outputs": [], + "source": [ + "propagated_orbit_df_list = [\n", + " pd.DataFrame(\n", + " propagated_orbit_data_list[ind],\n", + " columns=[\n", + " \"$Time^{UTC}$\",\n", + " \"Elapsed secs\",\n", + " \"$x_{x}^{ECI}$\",\n", + " \"$x_{y}^{ECI}$\",\n", + " \"$x_{z}^{ECI}$\",\n", + " \"$v_{x}^{ECI}$\",\n", + " \"$v_{y}^{ECI}$\",\n", + " \"$v_{z}^{ECI}$\",\n", + " ],\n", + " )\n", + " for ind in range(0, len(orbit_list))\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Table:" ] }, - "execution_count": 347, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[orbit_df_RMS_list[list_ind].tail() for list_ind in range(0, len(orbit_list))]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "tags": [] - }, - "source": [ - "# Validation Plots " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot position error " - ] - }, - { - "cell_type": "code", - "execution_count": 348, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "mode": "lines", - "name": "OSTk EGM2008 100x100 minus STK EGM2008 70x70", - "type": "scatter", - "x": [ - 0, - 60, - 120, - 180, - 240, - 300, - 360, - 420, - 480, - 540, - 600, - 660, - 720, - 780, - 840, - 900, - 960, - 1020, - 1080, - 1140, - 1200, - 1260, - 1320, - 1380, - 1440, - 1500, - 1560, - 1620, - 1680, - 1740, - 1800, - 1860, - 1920, - 1980, - 2040, - 2100, - 2160, - 2220, - 2280, - 2340, - 2400, - 2460, - 2520, - 2580, - 2640, - 2700, - 2760, - 2820, - 2880, - 2940, - 3000, - 3060, - 3120, - 3180, - 3240, - 3300, - 3360, - 3420, - 3480, - 3540, - 3600, - 3660, - 3720, - 3780, - 3840, - 3900, - 3960, - 4020, - 4080, - 4140, - 4200, - 4260, - 4320, - 4380, - 4440, - 4500, - 4560, - 4620, - 4680, - 4740, - 4800, - 4860, - 4920, - 4980, - 5040, - 5100, - 5160, - 5220, - 5280, - 5340, - 5400, - 5460, - 5520, - 5580, - 5640, - 5700, - 5760, - 5820, - 5880, - 5940, - 6000, - 6060, - 6120, - 6180, - 6240, - 6300, - 6360, - 6420, - 6480, - 6540, - 6600, - 6660, - 6720, - 6780, - 6840, - 6900, - 6960, - 7020, - 7080, - 7140, - 7200, - 7260, - 7320, - 7380, - 7440, - 7500, - 7560, - 7620, - 7680, - 7740, - 7800, - 7860, - 7920, - 7980, - 8040, - 8100, - 8160, - 8220, - 8280, - 8340, - 8400, - 8460, - 8520, - 8580, - 8640, - 8700, - 8760, - 8820, - 8880, - 8940, - 9000, - 9060, - 9120, - 9180, - 9240, - 9300, - 9360, - 9420, - 9480, - 9540, - 9600, - 9660, - 9720, - 9780, - 9840, - 9900, - 9960, - 10020, - 10080, - 10140, - 10200, - 10260, - 10320, - 10380, - 10440, - 10500, - 10560, - 10620, - 10680, - 10740, - 10800, - 10860, - 10920, - 10980, - 11040, - 11100, - 11160, - 11220, - 11280, - 11340, - 11400, - 11460, - 11520, - 11580, - 11640, - 11700, - 11760, - 11820, - 11880, - 11940, - 12000, - 12060, - 12120, - 12180, - 12240, - 12300, - 12360, - 12420, - 12480, - 12540, - 12600, - 12660, - 12720, - 12780, - 12840, - 12900, - 12960, - 13020, - 13080, - 13140, - 13200, - 13260, - 13320, - 13380, - 13440, - 13500, - 13560, - 13620, - 13680, - 13740, - 13800, - 13860, - 13920, - 13980, - 14040, - 14100, - 14160, - 14220, - 14280, - 14340, - 14400, - 14460, - 14520, - 14580, - 14640, - 14700, - 14760, - 14820, - 14880, - 14940, - 15000, - 15060, - 15120, - 15180, - 15240, - 15300, - 15360, - 15420, - 15480, - 15540, - 15600, - 15660, - 15720, - 15780, - 15840, - 15900, - 15960, - 16020, - 16080, - 16140, - 16200, - 16260, - 16320, - 16380, - 16440, - 16500, - 16560, - 16620, - 16680, - 16740, - 16800, - 16860, - 16920, - 16980, - 17040, - 17100, - 17160, - 17220, - 17280, - 17340, - 17400, - 17460, - 17520, - 17580, - 17640, - 17700, - 17760, - 17820, - 17880, - 17940, - 18000, - 18060, - 18120, - 18180, - 18240, - 18300, - 18360, - 18420, - 18480, - 18540, - 18600, - 18660, - 18720, - 18780, - 18840, - 18900, - 18960, - 19020, - 19080, - 19140, - 19200, - 19260, - 19320, - 19380, - 19440, - 19500, - 19560, - 19620, - 19680, - 19740, - 19800, - 19860, - 19920, - 19980, - 20040, - 20100, - 20160, - 20220, - 20280, - 20340, - 20400, - 20460, - 20520, - 20580, - 20640, - 20700, - 20760, - 20820, - 20880, - 20940, - 21000, - 21060, - 21120, - 21180, - 21240, - 21300, - 21360, - 21420, - 21480, - 21540, - 21600, - 21660, - 21720, - 21780, - 21840, - 21900, - 21960, - 22020, - 22080, - 22140, - 22200, - 22260, - 22320, - 22380, - 22440, - 22500, - 22560, - 22620, - 22680, - 22740, - 22800, - 22860, - 22920, - 22980, - 23040, - 23100, - 23160, - 23220, - 23280, - 23340, - 23400, - 23460, - 23520, - 23580, - 23640, - 23700, - 23760, - 23820, - 23880, - 23940, - 24000, - 24060, - 24120, - 24180, - 24240, - 24300, - 24360, - 24420, - 24480, - 24540, - 24600, - 24660, - 24720, - 24780, - 24840, - 24900, - 24960, - 25020, - 25080, - 25140, - 25200, - 25260, - 25320, - 25380, - 25440, - 25500, - 25560, - 25620, - 25680, - 25740, - 25800, - 25860, - 25920, - 25980, - 26040, - 26100, - 26160, - 26220, - 26280, - 26340, - 26400, - 26460, - 26520, - 26580, - 26640, - 26700, - 26760, - 26820, - 26880, - 26940, - 27000, - 27060, - 27120, - 27180, - 27240, - 27300, - 27360, - 27420, - 27480, - 27540, - 27600, - 27660, - 27720, - 27780, - 27840, - 27900, - 27960, - 28020, - 28080, - 28140, - 28200, - 28260, - 28320, - 28380, - 28440, - 28500, - 28560, - 28620, - 28680, - 28740, - 28800, - 28860, - 28920, - 28980, - 29040, - 29100, - 29160, - 29220, - 29280, - 29340, - 29400, - 29460, - 29520, - 29580, - 29640, - 29700, - 29760, - 29820, - 29880, - 29940, - 30000, - 30060, - 30120, - 30180, - 30240, - 30300, - 30360, - 30420, - 30480, - 30540, - 30600, - 30660, - 30720, - 30780, - 30840, - 30900, - 30960, - 31020, - 31080, - 31140, - 31200, - 31260, - 31320, - 31380, - 31440, - 31500, - 31560, - 31620, - 31680, - 31740, - 31800, - 31860, - 31920, - 31980, - 32040, - 32100, - 32160, - 32220, - 32280, - 32340, - 32400, - 32460, - 32520, - 32580, - 32640, - 32700, - 32760, - 32820, - 32880, - 32940, - 33000, - 33060, - 33120, - 33180, - 33240, - 33300, - 33360, - 33420, - 33480, - 33540, - 33600, - 33660, - 33720, - 33780, - 33840, - 33900, - 33960, - 34020, - 34080, - 34140, - 34200, - 34260, - 34320, - 34380, - 34440, - 34500, - 34560, - 34620, - 34680, - 34740, - 34800, - 34860, - 34920, - 34980, - 35040, - 35100, - 35160, - 35220, - 35280, - 35340, - 35400, - 35460, - 35520, - 35580, - 35640, - 35700, - 35760, - 35820, - 35880, - 35940, - 36000, - 36060, - 36120, - 36180, - 36240, - 36300, - 36360, - 36420, - 36480, - 36540, - 36600, - 36660, - 36720, - 36780, - 36840, - 36900, - 36960, - 37020, - 37080, - 37140, - 37200, - 37260, - 37320, - 37380, - 37440, - 37500, - 37560, - 37620, - 37680, - 37740, - 37800, - 37860, - 37920, - 37980, - 38040, - 38100, - 38160, - 38220, - 38280, - 38340, - 38400, - 38460, - 38520, - 38580, - 38640, - 38700, - 38760, - 38820, - 38880, - 38940, - 39000, - 39060, - 39120, - 39180, - 39240, - 39300, - 39360, - 39420, - 39480, - 39540, - 39600, - 39660, - 39720, - 39780, - 39840, - 39900, - 39960, - 40020, - 40080, - 40140, - 40200, - 40260, - 40320, - 40380, - 40440, - 40500, - 40560, - 40620, - 40680, - 40740, - 40800, - 40860, - 40920, - 40980, - 41040, - 41100, - 41160, - 41220, - 41280, - 41340, - 41400, - 41460, - 41520, - 41580, - 41640, - 41700, - 41760, - 41820, - 41880, - 41940, - 42000, - 42060, - 42120, - 42180, - 42240, - 42300, - 42360, - 42420, - 42480, - 42540, - 42600, - 42660, - 42720, - 42780, - 42840, - 42900, - 42960, - 43020, - 43080, - 43140, - 43200, - 43260, - 43320, - 43380, - 43440, - 43500, - 43560, - 43620, - 43680, - 43740, - 43800, - 43860, - 43920, - 43980, - 44040, - 44100, - 44160, - 44220, - 44280, - 44340, - 44400, - 44460, - 44520, - 44580, - 44640, - 44700, - 44760, - 44820, - 44880, - 44940, - 45000, - 45060, - 45120, - 45180, - 45240, - 45300, - 45360, - 45420, - 45480, - 45540, - 45600, - 45660, - 45720, - 45780, - 45840, - 45900, - 45960, - 46020, - 46080, - 46140, - 46200, - 46260, - 46320, - 46380, - 46440, - 46500, - 46560, - 46620, - 46680, - 46740, - 46800, - 46860, - 46920, - 46980, - 47040, - 47100, - 47160, - 47220, - 47280, - 47340, - 47400, - 47460, - 47520, - 47580, - 47640, - 47700, - 47760, - 47820, - 47880, - 47940, - 48000, - 48060, - 48120, - 48180, - 48240, - 48300, - 48360, - 48420, - 48480, - 48540, - 48600, - 48660, - 48720, - 48780, - 48840, - 48900, - 48960, - 49020, - 49080, - 49140, - 49200, - 49260, - 49320, - 49380, - 49440, - 49500, - 49560, - 49620, - 49680, - 49740, - 49800, - 49860, - 49920, - 49980, - 50040, - 50100, - 50160, - 50220, - 50280, - 50340, - 50400, - 50460, - 50520, - 50580, - 50640, - 50700, - 50760, - 50820, - 50880, - 50940, - 51000, - 51060, - 51120, - 51180, - 51240, - 51300, - 51360, - 51420, - 51480, - 51540, - 51600, - 51660, - 51720, - 51780, - 51840, - 51900, - 51960, - 52020, - 52080, - 52140, - 52200, - 52260, - 52320, - 52380, - 52440, - 52500, - 52560, - 52620, - 52680, - 52740, - 52800, - 52860, - 52920, - 52980, - 53040, - 53100, - 53160, - 53220, - 53280, - 53340, - 53400, - 53460, - 53520, - 53580, - 53640, - 53700, - 53760, - 53820, - 53880, - 53940, - 54000, - 54060, - 54120, - 54180, - 54240, - 54300, - 54360, - 54420, - 54480, - 54540, - 54600, - 54660, - 54720, - 54780, - 54840, - 54900, - 54960, - 55020, - 55080, - 55140, - 55200, - 55260, - 55320, - 55380, - 55440, - 55500, - 55560, - 55620, - 55680, - 55740, - 55800, - 55860, - 55920, - 55980, - 56040, - 56100, - 56160, - 56220, - 56280, - 56340, - 56400, - 56460, - 56520, - 56580, - 56640, - 56700, - 56760, - 56820, - 56880, - 56940, - 57000, - 57060, - 57120, - 57180, - 57240, - 57300, - 57360, - 57420, - 57480, - 57540, - 57600, - 57660, - 57720, - 57780, - 57840, - 57900, - 57960, - 58020, - 58080, - 58140, - 58200, - 58260, - 58320, - 58380, - 58440, - 58500, - 58560, - 58620, - 58680, - 58740, - 58800, - 58860, - 58920, - 58980, - 59040, - 59100, - 59160, - 59220, - 59280, - 59340, - 59400, - 59460, - 59520, - 59580, - 59640, - 59700, - 59760, - 59820, - 59880, - 59940, - 60000, - 60060, - 60120, - 60180, - 60240, - 60300, - 60360, - 60420, - 60480, - 60540, - 60600, - 60660, - 60720, - 60780, - 60840, - 60900, - 60960, - 61020, - 61080, - 61140, - 61200, - 61260, - 61320, - 61380, - 61440, - 61500, - 61560, - 61620, - 61680, - 61740, - 61800, - 61860, - 61920, - 61980, - 62040, - 62100, - 62160, - 62220, - 62280, - 62340, - 62400, - 62460, - 62520, - 62580, - 62640, - 62700, - 62760, - 62820, - 62880, - 62940, - 63000, - 63060, - 63120, - 63180, - 63240, - 63300, - 63360, - 63420, - 63480, - 63540, - 63600, - 63660, - 63720, - 63780, - 63840, - 63900, - 63960, - 64020, - 64080, - 64140, - 64200, - 64260, - 64320, - 64380, - 64440, - 64500, - 64560, - 64620, - 64680, - 64740, - 64800, - 64860, - 64920, - 64980, - 65040, - 65100, - 65160, - 65220, - 65280, - 65340, - 65400, - 65460, - 65520, - 65580, - 65640, - 65700, - 65760, - 65820, - 65880, - 65940, - 66000, - 66060, - 66120, - 66180, - 66240, - 66300, - 66360, - 66420, - 66480, - 66540, - 66600, - 66660, - 66720, - 66780, - 66840, - 66900, - 66960, - 67020, - 67080, - 67140, - 67200, - 67260, - 67320, - 67380, - 67440, - 67500, - 67560, - 67620, - 67680, - 67740, - 67800, - 67860, - 67920, - 67980, - 68040, - 68100, - 68160, - 68220, - 68280, - 68340, - 68400, - 68460, - 68520, - 68580, - 68640, - 68700, - 68760, - 68820, - 68880, - 68940, - 69000, - 69060, - 69120, - 69180, - 69240, - 69300, - 69360, - 69420, - 69480, - 69540, - 69600, - 69660, - 69720, - 69780, - 69840, - 69900, - 69960, - 70020, - 70080, - 70140, - 70200, - 70260, - 70320, - 70380, - 70440, - 70500, - 70560, - 70620, - 70680, - 70740, - 70800, - 70860, - 70920, - 70980, - 71040, - 71100, - 71160, - 71220, - 71280, - 71340, - 71400, - 71460, - 71520, - 71580, - 71640, - 71700, - 71760, - 71820, - 71880, - 71940, - 72000, - 72060, - 72120, - 72180, - 72240, - 72300, - 72360, - 72420, - 72480, - 72540, - 72600, - 72660, - 72720, - 72780, - 72840, - 72900, - 72960, - 73020, - 73080, - 73140, - 73200, - 73260, - 73320, - 73380, - 73440, - 73500, - 73560, - 73620, - 73680, - 73740, - 73800, - 73860, - 73920, - 73980, - 74040, - 74100, - 74160, - 74220, - 74280, - 74340, - 74400, - 74460, - 74520, - 74580, - 74640, - 74700, - 74760, - 74820, - 74880, - 74940, - 75000, - 75060, - 75120, - 75180, - 75240, - 75300, - 75360, - 75420, - 75480, - 75540, - 75600, - 75660, - 75720, - 75780, - 75840, - 75900, - 75960, - 76020, - 76080, - 76140, - 76200, - 76260, - 76320, - 76380, - 76440, - 76500, - 76560, - 76620, - 76680, - 76740, - 76800, - 76860, - 76920, - 76980, - 77040, - 77100, - 77160, - 77220, - 77280, - 77340, - 77400, - 77460, - 77520, - 77580, - 77640, - 77700, - 77760, - 77820, - 77880, - 77940, - 78000, - 78060, - 78120, - 78180, - 78240, - 78300, - 78360, - 78420, - 78480, - 78540, - 78600, - 78660, - 78720, - 78780, - 78840, - 78900, - 78960, - 79020, - 79080, - 79140, - 79200, - 79260, - 79320, - 79380, - 79440, - 79500, - 79560, - 79620, - 79680, - 79740, - 79800, - 79860, - 79920, - 79980, - 80040, - 80100, - 80160, - 80220, - 80280, - 80340, - 80400, - 80460, - 80520, - 80580, - 80640, - 80700, - 80760, - 80820, - 80880, - 80940, - 81000, - 81060, - 81120, - 81180, - 81240, - 81300, - 81360, - 81420, - 81480, - 81540, - 81600, - 81660, - 81720, - 81780, - 81840, - 81900, - 81960, - 82020, - 82080, - 82140, - 82200, - 82260, - 82320, - 82380, - 82440, - 82500, - 82560, - 82620, - 82680, - 82740, - 82800, - 82860, - 82920, - 82980, - 83040, - 83100, - 83160, - 83220, - 83280, - 83340, - 83400, - 83460, - 83520, - 83580, - 83640, - 83700, - 83760, - 83820, - 83880, - 83940, - 84000, - 84060, - 84120, - 84180, - 84240, - 84300, - 84360, - 84420, - 84480, - 84540, - 84600, - 84660, - 84720, - 84780, - 84840, - 84900, - 84960, - 85020, - 85080, - 85140, - 85200, - 85260, - 85320, - 85380, - 85440, - 85500, - 85560, - 85620, - 85680, - 85740, - 85800, - 85860, - 85920, - 85980, - 86040, - 86100, - 86160, - 86220, - 86280, - 86340, - 86400 - ], - "y": [ - 0, - 0.0014914935461166879, - 0.005670308686545031, - 0.01226622495801877, - 0.020615166502155582, - 0.029935635320678708, - 0.03933513178377657, - 0.04865767988115584, - 0.05839603009965911, - 0.06883859273264774, - 0.07989746864004298, - 0.09166093719257047, - 0.10438145030615914, - 0.11772131525559242, - 0.13098187383486906, - 0.14405305965255935, - 0.15728151116023817, - 0.1712343442693403, - 0.18634524966905908, - 0.20252370968998948, - 0.21897141480040905, - 0.234610552037688, - 0.24926841159492164, - 0.26336911806686886, - 0.27753504268501733, - 0.29229211738263655, - 0.30830767961282346, - 0.32584549615205083, - 0.3434995049871606, - 0.3609362349894917, - 0.3788539177151479, - 0.3975047177411702, - 0.41681388770780553, - 0.43663958707467004, - 0.4559591778704751, - 0.4745561398558467, - 0.49319661057761716, - 0.5112706337528056, - 0.5299834990789527, - 0.5498194535778391, - 0.5694823835853953, - 0.5883275463659875, - 0.6040229983295451, - 0.618488366445963, - 0.6306774699072405, - 0.6437782459166733, - 0.6591675305999847, - 0.6711992499189302, - 0.67921118532771, - 0.6864703403907219, - 0.6926354028729962, - 0.6976918658590038, - 0.7026723093568791, - 0.7047154033472287, - 0.704287953944647, - 0.7028182158988938, - 0.7000269796107684, - 0.695076763540856, - 0.6883724101198733, - 0.6806465180327615, - 0.6717401696451691, - 0.6610670501522479, - 0.648316308564139, - 0.6344701238099382, - 0.620365261638601, - 0.6052880935062728, - 0.5904101348911741, - 0.5754691529814859, - 0.5574106727129926, - 0.5374491467676878, - 0.5167692869705901, - 0.49538733940757895, - 0.47500757529871634, - 0.4548849444066921, - 0.4331990634633052, - 0.409789658895299, - 0.38527748063749506, - 0.3596422388675038, - 0.3334111198913585, - 0.3083596124478273, - 0.28557939878866245, - 0.26448038751564634, - 0.2444896945832276, - 0.22632384886954, - 0.20876418839127503, - 0.19317641425702747, - 0.17806889336696977, - 0.16234643190413028, - 0.1518722693232648, - 0.14754807029442935, - 0.1424411357643169, - 0.13490990898167332, - 0.1271308670395014, - 0.12223260739697225, - 0.12460067128983526, - 0.13330389770333942, - 0.14329055393502219, - 0.15092788951664873, - 0.15633280923009382, - 0.15990122909367016, - 0.16369648268916048, - 0.16696013865443265, - 0.1673183713995203, - 0.16546946576187124, - 0.16284887041980367, - 0.16009053511494595, - 0.15661196089593288, - 0.1523018164119752, - 0.1488363957441424, - 0.14678155705409385, - 0.14415271342699126, - 0.14084474171177036, - 0.1379904705902316, - 0.13619248983830154, - 0.13587273611694087, - 0.13767694380916362, - 0.14245004310544895, - 0.15072281313959973, - 0.16234190820452377, - 0.17732012930774932, - 0.1895457452266452, - 0.20253575214034816, - 0.22444962672337143, - 0.2465377645411616, - 0.2688001196482003, - 0.29153606327117226, - 0.31452126876334213, - 0.33786978394428874, - 0.3615259458085421, - 0.3861768598741849, - 0.4109116332812791, - 0.43500608614875985, - 0.4617954818123938, - 0.48961677398903525, - 0.5182581209980803, - 0.5464309753452211, - 0.5735102695150046, - 0.6003832599799588, - 0.6273419645737212, - 0.6544318938503983, - 0.6820255418892961, - 0.7089903940130879, - 0.7373108308000551, - 0.7650227091111007, - 0.790938550952286, - 0.8159453096752554, - 0.8411983503050968, - 0.8644862287999712, - 0.8868613314738876, - 0.9091792158676738, - 0.9295402771432679, - 0.9476532164813196, - 0.9641528115249416, - 0.9800445979825632, - 0.9954291529666603, - 1.0090146615349904, - 1.0201268199832734, - 1.02943382320039, - 1.0375775652756152, - 1.0447093671517267, - 1.0502416126903498, - 1.0529980674889534, - 1.0525900912341037, - 1.0497520338776405, - 1.0455826427211692, - 1.041814021629151, - 1.0388663311116715, - 1.0323633491698405, - 1.019555087433137, - 1.0052209677039752, - 0.9913390474083423, - 0.9773609766367793, - 0.9624509051661485, - 0.9445153779991523, - 0.9254852658718691, - 0.9061119170397484, - 0.8849159731945326, - 0.861802970116812, - 0.8392857084284754, - 0.8168846669101628, - 0.7926109318936562, - 0.7679494142444134, - 0.7441120247128374, - 0.7196061726638445, - 0.6956674049345843, - 0.67433330278159, - 0.6539849050910564, - 0.6347628618111637, - 0.618148137625582, - 0.605138464892897, - 0.5940388099544378, - 0.5825889496750777, - 0.5736667014059674, - 0.5690804007371805, - 0.5650050817618231, - 0.5580555655104327, - 0.5501961859236454, - 0.5445569808452354, - 0.5425238224835176, - 0.5429824125396725, - 0.5445599662408221, - 0.5469290910004644, - 0.5495066954769214, - 0.5526768015156732, - 0.556436552317988, - 0.5602196261980954, - 0.5647450657269646, - 0.5706999901913885, - 0.5779953285691293, - 0.5860115665020222, - 0.5953287420594079, - 0.6063430185698053, - 0.6179876991111971, - 0.6310924550117332, - 0.6459284940116066, - 0.6613100658867823, - 0.6767308411534743, - 0.6916401605797015, - 0.707212928872319, - 0.7256919259591531, - 0.746345828388076, - 0.767967324688603, - 0.7898176657504339, - 0.8117475997591915, - 0.8340513322694331, - 0.8571687176255752, - 0.8814313671906204, - 0.9067015328215877, - 0.9325782002373216, - 0.9584743577100802, - 0.9839748925736933, - 1.0087461890480092, - 1.0329603968419896, - 1.057419435819357, - 1.0820250792258246, - 1.1061255232776048, - 1.1307454017132106, - 1.1575058830072193, - 1.1855886573195138, - 1.2132995009941148, - 1.239799392533056, - 1.266663172987255, - 1.2938322502437032, - 1.3197987257885149, - 1.3450840234029944, - 1.3679854578590003, - 1.3888826705079245, - 1.4087921823824567, - 1.4272130071822524, - 1.4431136612707036, - 1.4572394024911985, - 1.4694327276914032, - 1.478806160674864, - 1.4852286343069847, - 1.4894521966617398, - 1.4924230886482581, - 1.49396101270621, - 1.493158133199078, - 1.4893820475446662, - 1.4825671446455404, - 1.4732170031974008, - 1.461822496167369, - 1.4489405004777756, - 1.434830865275513, - 1.4185235247886057, - 1.398985036975777, - 1.3763500353173506, - 1.3513230717756095, - 1.324579989939638, - 1.2971829553560876, - 1.2706547640449328, - 1.243417770205399, - 1.212259122529216, - 1.1796201913016062, - 1.148706921176548, - 1.1171083215645072, - 1.084089865043868, - 1.0499894685662734, - 1.0152765061043987, - 0.9815693842751662, - 0.9490360275708505, - 0.9161272832001623, - 0.8827370017223001, - 0.8503735592380712, - 0.8182725741081365, - 0.7863173788733728, - 0.7571804546900145, - 0.727723806576889, - 0.6980400545690123, - 0.6725439013219019, - 0.6516736439943125, - 0.6305748187676027, - 0.6097678203999872, - 0.5926911839436325, - 0.5799905898918958, - 0.568880207270158, - 0.5597438895308557, - 0.5564751357508548, - 0.5580246031810999, - 0.5616381870629078, - 0.5669895608421647, - 0.5748831095503006, - 0.585546831766691, - 0.5989876320028319, - 0.6156036434577046, - 0.6349605307864113, - 0.6559206344810935, - 0.6782120986337264, - 0.7028836183772033, - 0.7302321226877628, - 0.7585629963313237, - 0.7870337635237097, - 0.8162875086898884, - 0.8466520297071884, - 0.8788091954236328, - 0.9131170461499182, - 0.9488845494263418, - 0.9856540160787051, - 1.0232238265647837, - 1.0611915458339345, - 1.099102645882153, - 1.1367448903985837, - 1.1745525848394274, - 1.2130918362219054, - 1.2522718562094592, - 1.2917289996109445, - 1.3312704987792328, - 1.3707398452601538, - 1.4099067875754134, - 1.4486218864415097, - 1.487318296084638, - 1.5261047046903442, - 1.5637265065912493, - 1.5991024594780385, - 1.6324350098410263, - 1.6643010603077588, - 1.6946749800105823, - 1.7224294964407632, - 1.7488211385448145, - 1.772080007773659, - 1.792708819231931, - 1.814566450626475, - 1.8369486018837147, - 1.8580040679958645, - 1.8781264148266863, - 1.8960825376813872, - 1.912364303879215, - 1.9280006362748863, - 1.943210613691, - 1.9582149463710499, - 1.973108960511674, - 1.9866604827089283, - 1.998973992169231, - 2.0110278896963787, - 2.0227138298953737, - 2.033203589717091, - 2.041781033748887, - 2.0484079466005065, - 2.053925096545211, - 2.0592694228045354, - 2.0647962717537776, - 2.0697337627771626, - 2.072661693504911, - 2.073123231357988, - 2.071774455451873, - 2.069531888843781, - 2.066966618595888, - 2.064332318469985, - 2.0613527871351875, - 2.0564271085661354, - 2.049369930442159, - 2.041958410085135, - 2.034995518477095, - 2.027238204589531, - 2.0153020220328397, - 2.003682740705033, - 1.9939637384709752, - 1.9825629180350828, - 1.9696800891929223, - 1.9565661213574344, - 1.9432475754771774, - 1.9289051954385639, - 1.9136855587527422, - 1.8986004077824576, - 1.8830469180318583, - 1.867187677193029, - 1.8533869866305803, - 1.839176568525975, - 1.8213206195835432, - 1.8007962311606056, - 1.781080377380452, - 1.7636187303838458, - 1.7461146411754942, - 1.727426492433426, - 1.7077379552225749, - 1.6865035876982064, - 1.6642359434621585, - 1.6421551454730976, - 1.620793933516945, - 1.5973152710631264, - 1.5722939101710944, - 1.5485828994341726, - 1.525098476542629, - 1.5005547425361279, - 1.4754302705778317, - 1.450146557776906, - 1.424661141762306, - 1.3991892407200892, - 1.3744086868642604, - 1.3505124960791997, - 1.3269290690127962, - 1.3041711353076564, - 1.2828069428099498, - 1.2623797611111982, - 1.2426564030870344, - 1.2239032439219464, - 1.206286417664022, - 1.1900474784809616, - 1.1756758976182877, - 1.1634147671697583, - 1.1528956915986004, - 1.1437324836691678, - 1.1363249689608974, - 1.131545944313799, - 1.1293395868935676, - 1.1287568181013694, - 1.1299710987428973, - 1.1343685119314963, - 1.1415340463094348, - 1.1497499697063684, - 1.1595530988844673, - 1.172305962790093, - 1.1876453692221258, - 1.2042999518912318, - 1.2234200417619854, - 1.2453463317549982, - 1.2683049355013378, - 1.29460722753083, - 1.3251930639235001, - 1.3545650580724036, - 1.375381905833632, - 1.3962027940332846, - 1.4200499533514472, - 1.4428785783496403, - 1.4658461088319272, - 1.4874397886736277, - 1.5069655815343435, - 1.525084327912436, - 1.5427634111246342, - 1.55945874017482, - 1.5731761924132839, - 1.5846570904139063, - 1.595302919267747, - 1.605187385938712, - 1.6140076330567679, - 1.6207194079960463, - 1.6249630676394717, - 1.6281951995215052, - 1.62928999766094, - 1.6277729440041668, - 1.6238872109923486, - 1.6181007929353661, - 1.6133074339551805, - 1.6089750152976319, - 1.603177177049531, - 1.5952498161112139, - 1.5846698567812756, - 1.5731900896611468, - 1.5603479852237638, - 1.5436631389751705, - 1.5244711593525084, - 1.5055231152179565, - 1.4874526810949613, - 1.4680506791842607, - 1.4452518619377415, - 1.4219732099324516, - 1.3999430510118576, - 1.3770364519163658, - 1.3523888633145078, - 1.3269370376829404, - 1.3020619754553533, - 1.277850743784566, - 1.2544913054508198, - 1.2317193807299331, - 1.2073112846331209, - 1.1810619921224241, - 1.1559839838039248, - 1.1356907871010369, - 1.1169671360401485, - 1.0975014841018975, - 1.078412427294966, - 1.060197660802731, - 1.044201568950765, - 1.0295440345068139, - 1.0143878817020289, - 1.000420888215064, - 0.988610261314526, - 0.9789856714416646, - 0.9714280888692464, - 0.9658249233296853, - 0.9620964127672073, - 0.9599928889896213, - 0.959145719339975, - 0.9595219972263344, - 0.9618878105273201, - 0.967684157200881, - 0.9772948883218027, - 0.9890377951096451, - 1.0014594873788234, - 1.0152613816300642, - 1.0311372501509628, - 1.048925678364492, - 1.06836893761132, - 1.0887778532386285, - 1.1096412035924588, - 1.1313063314695522, - 1.154320949653611, - 1.1788166232980926, - 1.2046640316518107, - 1.2316256774275027, - 1.2594578008480035, - 1.2876889718917486, - 1.3158614258752122, - 1.3442189000839775, - 1.3727462202485974, - 1.4008896827077864, - 1.4285564349692697, - 1.455778196833319, - 1.4821423807630394, - 1.5080184937678291, - 1.5325472250071734, - 1.5568554471402989, - 1.5796466856176257, - 1.6012194813242773, - 1.6220882583700091, - 1.6388248505993208, - 1.650536667311976, - 1.6656856606270762, - 1.684462296393315, - 1.7000837617307898, - 1.7145383838784305, - 1.7287763606950621, - 1.7420085407250538, - 1.754819587112685, - 1.7674747337209056, - 1.7794818679268716, - 1.7911787542130786, - 1.802357940582157, - 1.8130520964562815, - 1.8231890885422166, - 1.8319014835068894, - 1.8403302128161165, - 1.8482365176657156, - 1.8548597926548742, - 1.8591735591572878, - 1.8599606446454957, - 1.8583637881519035, - 1.859244745263352, - 1.8613020631188002, - 1.8609548393225386, - 1.857123054193722, - 1.852485466779851, - 1.8497965893287562, - 1.846822948917184, - 1.8409070389615012, - 1.8323783328298016, - 1.8239878315338607, - 1.8150077296056306, - 1.80484655387112, - 1.7940593043695676, - 1.7831339207322539, - 1.7715433390715947, - 1.7597878055403269, - 1.7470469168083778, - 1.7322010831811097, - 1.7166025841003274, - 1.7019294752528356, - 1.6881395852813508, - 1.6749219244477285, - 1.6612413950778608, - 1.646448608765475, - 1.6309612394093655, - 1.614601859979593, - 1.6020991031785852, - 1.5933540128265495, - 1.5835300052299015, - 1.5733566998485395, - 1.5652717068872317, - 1.5586163718543102, - 1.5523438724287673, - 1.5463253568176893, - 1.5427708840351402, - 1.541555470184452, - 1.541070978791728, - 1.541256694262145, - 1.5422772883039968, - 1.544087749443292, - 1.5467803195891128, - 1.5506343777660645, - 1.5557749053372611, - 1.5617715836339068, - 1.5679028075549863, - 1.5742361521638157, - 1.5818871203470382, - 1.5912487311548982, - 1.6013835575519861, - 1.61171699677706, - 1.6224619427508542, - 1.6338134568635259, - 1.6456146666570977, - 1.6572469517831052, - 1.668137111238828, - 1.6787681059574635, - 1.6898927502209855, - 1.702001492717919, - 1.714820747590784, - 1.7280145756616094, - 1.7412080162412757, - 1.7558127029313049, - 1.772508993728059, - 1.7883535482439985, - 1.8033305349020032, - 1.8189986290645175, - 1.8360552869289775, - 1.8542695463737544, - 1.8737750447381312, - 1.8928565702494462, - 1.9102286677845781, - 1.9281216553018978, - 1.9464792537844187, - 1.9662723910439683, - 1.9835836889411622, - 1.9961648940081096, - 2.010089764890499, - 2.023996907638618, - 2.0329508502537106, - 2.0423385694457528, - 2.051759711348932, - 2.058454349599995, - 2.063608610603813, - 2.067590877584345, - 2.069685877563211, - 2.0693464039130682, - 2.0664487336401005, - 2.061672373391244, - 2.05576854455888, - 2.04819196988383, - 2.0385206170415286, - 2.026922099436978, - 2.0132635197669915, - 1.997628055135855, - 1.9804227913618262, - 1.9617380097080708, - 1.9414617694405971, - 1.9196941329476536, - 1.896438939828354, - 1.871633113675155, - 1.8460910408992692, - 1.820996311510839, - 1.7962825665219402, - 1.7711944283209033, - 1.7446860661664776, - 1.7169763729439198, - 1.6888902996733186, - 1.6610071347807225, - 1.6340181340347595, - 1.607912925096796, - 1.5824135285573186, - 1.5576197996797647, - 1.5338441545654768, - 1.5111203800348472, - 1.4893249555941444, - 1.4687490844139366, - 1.4489839552277075, - 1.4285773033730345, - 1.4086467560970957, - 1.3913891634906632, - 1.375708724309238, - 1.3587664711424836, - 1.3422476012085491, - 1.3305398724146966, - 1.3191710707580802, - 1.3055352106409719, - 1.29148263870699, - 1.2780493731755327, - 1.2634938302220444, - 1.2488069397651538, - 1.2364592354891522, - 1.2248361632954046, - 1.2126051634043553, - 1.200766686741734, - 1.190750566625063, - 1.1824464390805884, - 1.1754035519496404, - 1.1690321674385866, - 1.1627468914687062, - 1.1568789276472415, - 1.1524804688514843, - 1.149441747982005, - 1.1476125867286084, - 1.1479608001114712, - 1.1515644681944681, - 1.1577467366936305, - 1.1644786915865335, - 1.1712004041392852, - 1.1788885962510989, - 1.1882967654609817, - 1.1994209994178726, - 1.2122844887553101, - 1.2264921329244913, - 1.2420644663868905, - 1.2595011635230762, - 1.278333396126418, - 1.2979617905776537, - 1.319441868522746, - 1.3430506374161493, - 1.3678209474167353, - 1.393292018247759, - 1.4203378547511478, - 1.4490589511377936, - 1.4771402003169063, - 1.5043349488392723, - 1.5324208429249184, - 1.5615606948430862, - 1.5895629496667028, - 1.6157621682894077, - 1.6460051756345853, - 1.6763447919184395, - 1.7007162869803059, - 1.722028683719179, - 1.745652697606966, - 1.7688517665948231, - 1.7911479499799237, - 1.8129876039812243, - 1.8340988810190488, - 1.8531433718633485, - 1.8706687409284268, - 1.8866486405245126, - 1.901169681103043, - 1.9142525191148498, - 1.9252156366864097, - 1.9339512402620613, - 1.9413558787299985, - 1.9478774130919085, - 1.9530578048617915, - 1.9563863838073574, - 1.957814351677836, - 1.957662275561731, - 1.9561098377303214, - 1.9526666348956605, - 1.9467188779118718, - 1.938266248413389, - 1.9276746217658383, - 1.9152716974765076, - 1.9020502879103556, - 1.889126112544849, - 1.8761900099123787, - 1.8621819613914887, - 1.846540921337111, - 1.829239394957887, - 1.8105333600329991, - 1.7909348518398702, - 1.770692295243767, - 1.7495241363067668, - 1.727847904570484, - 1.706364334714192, - 1.6838372268461756, - 1.6600094461921615, - 1.6363562571385915, - 1.6137294512400813, - 1.591383157294466, - 1.5683939464220145, - 1.5449303385146977, - 1.5221616282619328, - 1.4989013903905974, - 1.4743417574569464, - 1.4537800090385764, - 1.4378725667022232, - 1.4221122281659246, - 1.4056209789830132, - 1.3900317489028515, - 1.3769547702533005, - 1.3663317566863569, - 1.3587666102203455, - 1.3525535528378954, - 1.3469331729485812, - 1.3427603617693797, - 1.3407904150368077, - 1.340926937998757, - 1.3430247367392076, - 1.347538905878976, - 1.35404072190865, - 1.3607835853550814, - 1.366593916714179, - 1.3741753041755729, - 1.3853530268461254, - 1.3992821198583931, - 1.4153544042472919, - 1.433911558188882, - 1.455068215147186, - 1.4769395082725079, - 1.4979392176325526, - 1.518928269074345, - 1.5415537752774326, - 1.566559469351156, - 1.5931299727541928, - 1.6191306206194194, - 1.6445742516711779, - 1.6700555119754967, - 1.6959176704671923, - 1.7223125530478998, - 1.7488500369982312, - 1.7747975286262214, - 1.799887903151658, - 1.824325853374703, - 1.849183251700029, - 1.8741793945185414, - 1.897468232509565, - 1.9190980081508624, - 1.940595321447748, - 1.9618745213426128, - 1.9803404548437145, - 2.0009816270608676, - 2.0234512153285866, - 2.041640972031995, - 2.0549110055211655, - 2.068666618286251, - 2.08516699796271, - 2.1028216267091637, - 2.119551255459656, - 2.136135195932485, - 2.1503694143065184, - 2.1644611635710165, - 2.1782032607624267, - 2.1906185101564613, - 2.2012668555041426, - 2.2100154508597947, - 2.2174917078020737, - 2.2242224010447713, - 2.2302869743753435, - 2.2348549463446776, - 2.2379224586825353, - 2.239970771150961, - 2.2402068086739653, - 2.2379147530414927, - 2.235585494777743, - 2.232827014472289, - 2.2269865356308554, - 2.2237567446027597, - 2.2167378166201916, - 2.2036265258584056, - 2.191185702657193, - 2.179982553848964, - 2.169107140910802, - 2.15711699204601, - 2.1432965730859492, - 2.1284321500023937, - 2.1130750915568353, - 2.0967741251274177, - 2.0786863964732403, - 2.059442596411127, - 2.04122939488402, - 2.022642182361569, - 2.0035071567429936, - 1.983885519048381, - 1.9632294875578775, - 1.9438572909413692, - 1.9243527934805764, - 1.9010104314479759, - 1.8764259328016344, - 1.8539451580585602, - 1.8310771040311202, - 1.8068572247863681, - 1.783922140945144, - 1.7609419978951322, - 1.7360529169862977, - 1.710063751014645, - 1.6852929034075879, - 1.6617747457454177, - 1.6388819233348686, - 1.6187177022647794, - 1.5990967867484174, - 1.5792754771894706, - 1.5636006752987404, - 1.5516305447382133, - 1.5407773507126636, - 1.5328743321180593, - 1.5267988883245127, - 1.5229808829223819, - 1.523578924269106, - 1.5272074757806358, - 1.5328713120322117, - 1.5410599292961247, - 1.5515818095007536, - 1.5644610531839462, - 1.5808009624588781, - 1.599773549905579, - 1.6196813724334036, - 1.6393725481680634, - 1.6588229838095851, - 1.6826342447680462, - 1.7110502013059712, - 1.7393202676181994, - 1.765993857621043, - 1.7920860054956118, - 1.818701220061254, - 1.8464781414987321, - 1.8756001683532215, - 1.9056073976766106, - 1.935433903099259, - 1.9640191071744504, - 1.9915228608822473, - 2.018970785853659, - 2.046655952465579, - 2.074676318163538, - 2.102368952041324, - 2.129393385717216, - 2.1568993621735606, - 2.1861406152831444, - 2.2105672900134987, - 2.228673736090526, - 2.2471991887369054, - 2.2643469065103825, - 2.279556587477242, - 2.2934226837664706, - 2.305656631716242, - 2.3148322355380415, - 2.3230088518309313, - 2.3275104279333005, - 2.328650425254182, - 2.330498521694609, - 2.3309323646735196, - 2.329744094737778, - 2.329003522693982, - 2.3284400905875, - 2.3272004222356855, - 2.326201718980624, - 2.3246020990672456, - 2.3233740296462635, - 2.322417771898569, - 2.320923339779715, - 2.3186779640187294, - 2.3162028740127756, - 2.314404419781956, - 2.3135691024096694, - 2.3127861401422734, - 2.310027325205592, - 2.3050029499633697, - 2.299197770779385, - 2.2932338799443825, - 2.287733613492451, - 2.2821240742781237, - 2.2759759443678527, - 2.268488267235982, - 2.259474516873697, - 2.248881324729228, - 2.2369332097198775, - 2.2250050120620397, - 2.2125345523787074, - 2.198122014826857, - 2.1821332370193245, - 2.165342962363614, - 2.1479907695090814, - 2.13064881244587, - 2.113602559552651, - 2.096870835357089, - 2.08006056073498, - 2.0636152180910847, - 2.0475408050051684, - 2.03241425637175, - 2.0200074293947714, - 2.008653162657497, - 1.997266625423857, - 1.9861827784395165, - 1.9771404970419133, - 1.9685216941957715, - 1.9601771581335556, - 1.9566582020142151, - 1.9553941589383488, - 1.9544975287233037, - 1.9546684099115124, - 1.955382875093588, - 1.9583272361404442, - 1.9623754960533057, - 1.9669614525310144, - 1.9737696824503568, - 1.982226803677434, - 1.992905467435663, - 2.0050411598561304, - 2.0167097419228273, - 2.0315006783737797, - 2.04960890597358, - 2.068732177386891, - 2.087216872624162, - 2.1053959862504765, - 2.124414767366772, - 2.145207325518663, - 2.1681458307697556, - 2.193168811440622, - 2.219415442154331, - 2.2456578361940975, - 2.2712664484413234, - 2.296412466019256, - 2.32168254466806, - 2.3476024593255342, - 2.374280812059046, - 2.40117568629671, - 2.427267995251544, - 2.4521504676639045, - 2.477045659154042, - 2.5015113308325856, - 2.523408491943036, - 2.543143745197709, - 2.561877568075421, - 2.5789169515980555, - 2.593492092632696, - 2.608412164174231, - 2.6216778503317446, - 2.6327802131423987, - 2.641321740568077, - 2.6505098719819467, - 2.6613562686499423, - 2.672692394476319, - 2.680671230570265, - 2.690273064069159, - 2.7018358344548634, - 2.713206538236985, - 2.723569279969327, - 2.734035494940303, - 2.7448907878914777, - 2.7554000849214515, - 2.7655127160254684, - 2.7755329204086725, - 2.7854381162473274, - 2.7949560688260107, - 2.8035198902138236, - 2.8104167717436392, - 2.8152870706496578, - 2.8185981625887386, - 2.8212199945070884, - 2.823494855100921, - 2.825186960790028, - 2.825758158783719, - 2.824809703215466, - 2.8223550560325688, - 2.817990401081555, - 2.810981166850548, - 2.8015381404709387, - 2.790331759960398, - 2.778028895236918, - 2.7653698656307237, - 2.752288003516032, - 2.7380315903399444, - 2.7220239327368696, - 2.7051735359980333, - 2.688571467823237, - 2.6701332953193955, - 2.6491641897509464, - 2.6286803624172146, - 2.610162869337408, - 2.589857542578745, - 2.5674012406474054, - 2.5448556222450796, - 2.5230390501595696, - 2.5003766855529515, - 2.477806872684962, - 2.4559925144520625, - 2.435284633567389, - 2.413825077130249, - 2.3922200595133774, - 2.3700940836182522, - 2.3508419574822357, - 2.3329544034690297, - 2.314314776977396, - 2.2967622434919353, - 2.279558017384641, - 2.2631812435988046, - 2.2502374598154886, - 2.2408560057951257, - 2.2338098610979884, - 2.2284081523947465, - 2.223578445492215, - 2.219211168515296, - 2.2174083909427575, - 2.2194363744980916, - 2.2241137810315825, - 2.229511423873532, - 2.235588467180117, - 2.2427366172117282, - 2.251600863248265, - 2.2613829303762016, - 2.2713861273740155, - 2.281363564764453, - 2.291430191451984, - 2.302026985127513, - 2.3139135155918344, - 2.327291818753558, - 2.341080580462989, - 2.3541243787015373, - 2.3661820349877054, - 2.3777023265259944, - 2.389669514700838, - 2.4021514607274836, - 2.4142079761146222, - 2.425299144809848, - 2.4371852210674017, - 2.4504354383878577, - 2.463257214067407, - 2.4761354290492155, - 2.490194002963089, - 2.506055449532712, - 2.5239217334127138, - 2.5431819709731585, - 2.561939370904357, - 2.5799695057941787, - 2.5990247660893786, - 2.61988959683505, - 2.642565944831649, - 2.665001048105034, - 2.684475114389538, - 2.7013688923518435, - 2.718632172536584, - 2.736743374571317, - 2.754431009569295, - 2.7701769073049864, - 2.784593002037167, - 2.7979294787906417, - 2.809434330937717, - 2.8188626197576507, - 2.8270407922763288, - 2.834512840191768, - 2.840966026372461, - 2.8458645384354964, - 2.849389735402548, - 2.852189407228559, - 2.8545152184165272, - 2.855989296183291, - 2.8562035726373782, - 2.8551685650713536, - 2.85302921543386, - 2.8499297835333492, - 2.8461200685186485, - 2.8414857099451183, - 2.835383443218697, - 2.8278110382300197, - 2.8196107895502425, - 2.810211632897736, - 2.798426717241321, - 2.7845716888997734, - 2.7696739388499436, - 2.7542931892585787, - 2.7383619404141206, - 2.721495653611842, - 2.7033588402856683, - 2.6839163319907144, - 2.663229929139915, - 2.641293473206632, - 2.618097456898278, - 2.593654512321565, - 2.568483058295271, - 2.543228323027488, - 2.518719826746726, - 2.494746303069284, - 2.4704068881240984, - 2.443647922338087, - 2.4159697862644958, - 2.3889677040757196, - 2.362268730753148, - 2.337210696264018, - 2.309697942628101, - 2.2812368150914337, - 2.25486949146063, - 2.2289511171279974, - 2.2051338332216086, - 2.1830171676323062, - 2.161628008077529, - 2.1407721071504957, - 2.121306769884557, - 2.104893760955783, - 2.091138478673871, - 2.0794574770820615, - 2.066738984415126, - 2.0547161875454405, - 2.048173552597297, - 2.045180246211168, - 2.044862841892955, - 2.0481821245765746, - 2.05549585642058, - 2.0662643074347566, - 2.079519080950713, - 2.093883802060966, - 2.1084073048372303, - 2.1257038674979176, - 2.1450092493476087, - 2.1652217676960257, - 2.1891699821461805, - 2.2178726154945148, - 2.2487101385759125, - 2.2801049995893075, - 2.311944428141592, - 2.344460379906632, - 2.3769005961736607, - 2.4097270405077724, - 2.443274769917426, - 2.4765838082422738, - 2.510094314565381, - 2.5439772228133073, - 2.577231471159663, - 2.6092627377383666, - 2.6404917062943314, - 2.672236631992321, - 2.705292589230671, - 2.736565780090662, - 2.7672136623694654, - 2.800496765274029, - 2.833216075500781, - 2.8639573879890476, - 2.896875147496708, - 2.9332144704827496, - 2.9706699593193915, - 3.0054486649470777, - 3.0373964987594486, - 3.0685430269398446, - 3.1005822601102953, - 3.133502161656523, - 3.165647534578091, - 3.196273935012341, - 3.226538742282009, - 3.256738460673168, - 3.2857455804804863, - 3.3131028945837295, - 3.3391500446267477, - 3.3638652338774264, - 3.38672088950072, - 3.4073688548914425, - 3.4262308759867084, - 3.4442428234709404, - 3.461589963230666, - 3.4775276160826576, - 3.491513016874025, - 3.503400488516676, - 3.513426556069907, - 3.5226223405689456, - 3.530451114892201, - 3.5349768256874206, - 3.535842704486042, - 3.534383666875362, - 3.5311372832846843, - 3.5260820086316476, - 3.519095933650937, - 3.5100538352711066, - 3.4990276238644955, - 3.4861041362411407, - 3.4713707439724817, - 3.454913807363588, - 3.437551462906104, - 3.4202145566238022, - 3.4019319535114194, - 3.3802650984171185, - 3.3561463559907083, - 3.331666531464254, - 3.30614133913946, - 3.2799088497230997, - 3.25236993597726, - 3.224647277821929, - 3.194939956374219, - 3.1611606254118145, - 3.1284398095684014, - 3.0970618973491346, - 3.063877808474027, - 3.0302806304749748, - 2.9968259620975104, - 2.9638184818464204, - 2.9319906440055186, - 2.899519172076318, - 2.865933934262139, - 2.834834013769196, - 2.8058656108006246, - 2.7755776377982033, - 2.7459187659247126, - 2.717921875291763, - 2.6907664033857626, - 2.665348720196767, - 2.6428856433403953, - 2.6230377841864216, - 2.6033607630537863, - 2.5830098225493456, - 2.564649959872361, - 2.550567250150256, - 2.5395960805372875, - 2.528459916042324, - 2.5173091785103936, - 2.508121312341425, - 2.501628122997618, - 2.4980519393362277, - 2.4972009497926466, - 2.498562784183134, - 2.501697576542037, - 2.5068009934912134, - 2.513965200887514, - 2.5223812273954205, - 2.5320145716150013, - 2.5439361418174604, - 2.558009628685021, - 2.5732752989849725, - 2.5897641428644462, - 2.607457375291068, - 2.62688558442504, - 2.648828894671746, - 2.672039668836638, - 2.697667254792122, - 2.7250429598845733, - 2.7513509231609494, - 2.7806005836959167, - 2.815120325292122, - 2.8509380736045924, - 2.8850147407500715, - 2.918980870909844, - 2.9554857512796606, - 2.9936967006719537, - 3.032595042995829, - 3.0721403648336, - 3.112321164466938, - 3.152800405343199, - 3.1930922445712655, - 3.2332996814675825, - 3.273750337050028, - 3.3142016844337165, - 3.354309165639771, - 3.393579182274906, - 3.431571415637073, - 3.467980960766077, - 3.5029259496143133, - 3.53658346177401, - 3.5693787043396217, - 3.6013514680552507, - 3.6319778469564366, - 3.660594930718126, - 3.6869893876605815, - 3.7114355774545795, - 3.7336910002213983, - 3.7525328909861844, - 3.7675326634421706, - 3.7797004737063253, - 3.789449376695745, - 3.7964060142212572, - 3.800373055419111, - 3.8018305241191177, - 3.8008470443705153, - 3.797446692998657, - 3.7912248972775284, - 3.7815108583129438, - 3.7683413194041115, - 3.7523505386292073, - 3.733950241740933, - 3.713234446986264, - 3.690785641341613, - 3.6663088540122892, - 3.638486196314863, - 3.6077660300687224, - 3.578140631856687, - 3.548060378774928, - 3.513982934715917, - 3.4776459185974518, - 3.4428400812398925, - 3.409080899646202, - 3.37567378230301, - 3.341925437803199, - 3.307311971911659, - 3.272008435097711, - 3.2355183441250484, - 3.1993554767562857, - 3.163952691509527, - 3.1275096732535737, - 3.0904859373378, - 3.0543378332046744, - 3.0183939922448557, - 2.9821374102374842, - 2.946192504191045, - 2.910223371887499, - 2.875599598279446, - 2.844134203162375, - 2.8137382248853124, - 2.7840323231457638, - 2.7545321093462585, - 2.725488044612874, - 2.6980897631647385, - 2.67284085203017, - 2.649747766813316, - 2.62897824132639, - 2.6105461209786474, - 2.594219451542196, - 2.5798601707225353, - 2.567593250913805, - 2.557696178792652, - 2.5502818944390113, - 2.5450581717693455, - 2.5412281883213566, - 2.538826236186444, - 2.538781815740412, - 2.541517164268801, - 2.5465162393062193, - 2.5535146881391313, - 2.562977639276439, - 2.5747656621272768, - 2.5876464094132876, - 2.6040350151791234, - 2.625622126163099, - 2.644189562624587, - 2.662740852047989, - 2.6874456412884147, - 2.7161320256772252, - 2.743240147750979, - 2.769043247240974, - 2.7960393180230922, - 2.8235914426245645, - 2.851415894187, - 2.879828393515754, - 2.907378614623495, - 2.9337248348948277, - 2.959147434893677, - 2.983860506034883, - 3.0087768468679363, - 3.033056860404415, - 3.0549113244362363, - 3.0750216224666143, - 3.093798935691419, - 3.110991890799751, - 3.1264827427728594, - 3.140137953672017, - 3.152203871453168, - 3.163158441857288, - 3.1728636661887855, - 3.1808544633691023, - 3.186945998117003, - 3.1916388550336907, - 3.196222556939668, - 3.2010847806772675, - 3.204328299838681, - 3.204296779739295, - 3.2014686034100737 + { + "cell_type": "code", + "execution_count": 341, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", + " 0 2021-03-20 00:00:00 [UTC] 0.0 -1.514669e+06 -192084.121491 \n", + " 1 2021-03-20 00:01:00 [UTC] 60.0 -1.892139e+06 40209.643464 \n", + " 2 2021-03-20 00:02:00 [UTC] 120.0 -2.261735e+06 272336.347500 \n", + " 3 2021-03-20 00:03:00 [UTC] 180.0 -2.621919e+06 503329.886059 \n", + " 4 2021-03-20 00:04:00 [UTC] 240.0 -2.971190e+06 732228.560244 \n", + " \n", + " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", + " 0 6.831711e+06 -6348.079188 3867.582493 -1297.176104 \n", + " 1 6.739684e+06 -6229.875938 3872.857026 -1769.350138 \n", + " 2 6.619536e+06 -6085.730799 3862.015054 -2234.203938 \n", + " 3 6.471765e+06 -5916.233718 3835.097084 -2689.802878 \n", + " 4 6.296983e+06 -5722.080031 3792.209441 -3134.248551 ,\n", + " $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", + " 0 2021-03-20 00:00:00 [UTC] 0.0 -1.514669e+06 -192084.121491 \n", + " 1 2021-03-20 00:01:00 [UTC] 60.0 -1.892139e+06 40209.643543 \n", + " 2 2021-03-20 00:02:00 [UTC] 120.0 -2.261735e+06 272336.347795 \n", + " 3 2021-03-20 00:03:00 [UTC] 180.0 -2.621919e+06 503329.886714 \n", + " 4 2021-03-20 00:04:00 [UTC] 240.0 -2.971190e+06 732228.561259 \n", + " \n", + " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", + " 0 6.831711e+06 -6348.079188 3867.582493 -1297.176104 \n", + " 1 6.739684e+06 -6229.875937 3872.857028 -1769.350136 \n", + " 2 6.619536e+06 -6085.730797 3862.015059 -2234.203933 \n", + " 3 6.471765e+06 -5916.233716 3835.097091 -2689.802874 \n", + " 4 6.296983e+06 -5722.080028 3792.209447 -3134.248547 ]" ] }, - { - "mode": "lines", - "name": "OSTk EGM2008 70x70 minus STK EGM2008 70x70", - "type": "scatter", - "x": [ - 0, - 60, - 120, - 180, - 240, - 300, - 360, - 420, - 480, - 540, - 600, - 660, - 720, - 780, - 840, - 900, - 960, - 1020, - 1080, - 1140, - 1200, - 1260, - 1320, - 1380, - 1440, - 1500, - 1560, - 1620, - 1680, - 1740, - 1800, - 1860, - 1920, - 1980, - 2040, - 2100, - 2160, - 2220, - 2280, - 2340, - 2400, - 2460, - 2520, - 2580, - 2640, - 2700, - 2760, - 2820, - 2880, - 2940, - 3000, - 3060, - 3120, - 3180, - 3240, - 3300, - 3360, - 3420, - 3480, - 3540, - 3600, - 3660, - 3720, - 3780, - 3840, - 3900, - 3960, - 4020, - 4080, - 4140, - 4200, - 4260, - 4320, - 4380, - 4440, - 4500, - 4560, - 4620, - 4680, - 4740, - 4800, - 4860, - 4920, - 4980, - 5040, - 5100, - 5160, - 5220, - 5280, - 5340, - 5400, - 5460, - 5520, - 5580, - 5640, - 5700, - 5760, - 5820, - 5880, - 5940, - 6000, - 6060, - 6120, - 6180, - 6240, - 6300, - 6360, - 6420, - 6480, - 6540, - 6600, - 6660, - 6720, - 6780, - 6840, - 6900, - 6960, - 7020, - 7080, - 7140, - 7200, - 7260, - 7320, - 7380, - 7440, - 7500, - 7560, - 7620, - 7680, - 7740, - 7800, - 7860, - 7920, - 7980, - 8040, - 8100, - 8160, - 8220, - 8280, - 8340, - 8400, - 8460, - 8520, - 8580, - 8640, - 8700, - 8760, - 8820, - 8880, - 8940, - 9000, - 9060, - 9120, - 9180, - 9240, - 9300, - 9360, - 9420, - 9480, - 9540, - 9600, - 9660, - 9720, - 9780, - 9840, - 9900, - 9960, - 10020, - 10080, - 10140, - 10200, - 10260, - 10320, - 10380, - 10440, - 10500, - 10560, - 10620, - 10680, - 10740, - 10800, - 10860, - 10920, - 10980, - 11040, - 11100, - 11160, - 11220, - 11280, - 11340, - 11400, - 11460, - 11520, - 11580, - 11640, - 11700, - 11760, - 11820, - 11880, - 11940, - 12000, - 12060, - 12120, - 12180, - 12240, - 12300, - 12360, - 12420, - 12480, - 12540, - 12600, - 12660, - 12720, - 12780, - 12840, - 12900, - 12960, - 13020, - 13080, - 13140, - 13200, - 13260, - 13320, - 13380, - 13440, - 13500, - 13560, - 13620, - 13680, - 13740, - 13800, - 13860, - 13920, - 13980, - 14040, - 14100, - 14160, - 14220, - 14280, - 14340, - 14400, - 14460, - 14520, - 14580, - 14640, - 14700, - 14760, - 14820, - 14880, - 14940, - 15000, - 15060, - 15120, - 15180, - 15240, - 15300, - 15360, - 15420, - 15480, - 15540, - 15600, - 15660, - 15720, - 15780, - 15840, - 15900, - 15960, - 16020, - 16080, - 16140, - 16200, - 16260, - 16320, - 16380, - 16440, - 16500, - 16560, - 16620, - 16680, - 16740, - 16800, - 16860, - 16920, - 16980, - 17040, - 17100, - 17160, - 17220, - 17280, - 17340, - 17400, - 17460, - 17520, - 17580, - 17640, - 17700, - 17760, - 17820, - 17880, - 17940, - 18000, - 18060, - 18120, - 18180, - 18240, - 18300, - 18360, - 18420, - 18480, - 18540, - 18600, - 18660, - 18720, - 18780, - 18840, - 18900, - 18960, - 19020, - 19080, - 19140, - 19200, - 19260, - 19320, - 19380, - 19440, - 19500, - 19560, - 19620, - 19680, - 19740, - 19800, - 19860, - 19920, - 19980, - 20040, - 20100, - 20160, - 20220, - 20280, - 20340, - 20400, - 20460, - 20520, - 20580, - 20640, - 20700, - 20760, - 20820, - 20880, - 20940, - 21000, - 21060, - 21120, - 21180, - 21240, - 21300, - 21360, - 21420, - 21480, - 21540, - 21600, - 21660, - 21720, - 21780, - 21840, - 21900, - 21960, - 22020, - 22080, - 22140, - 22200, - 22260, - 22320, - 22380, - 22440, - 22500, - 22560, - 22620, - 22680, - 22740, - 22800, - 22860, - 22920, - 22980, - 23040, - 23100, - 23160, - 23220, - 23280, - 23340, - 23400, - 23460, - 23520, - 23580, - 23640, - 23700, - 23760, - 23820, - 23880, - 23940, - 24000, - 24060, - 24120, - 24180, - 24240, - 24300, - 24360, - 24420, - 24480, - 24540, - 24600, - 24660, - 24720, - 24780, - 24840, - 24900, - 24960, - 25020, - 25080, - 25140, - 25200, - 25260, - 25320, - 25380, - 25440, - 25500, - 25560, - 25620, - 25680, - 25740, - 25800, - 25860, - 25920, - 25980, - 26040, - 26100, - 26160, - 26220, - 26280, - 26340, - 26400, - 26460, - 26520, - 26580, - 26640, - 26700, - 26760, - 26820, - 26880, - 26940, - 27000, - 27060, - 27120, - 27180, - 27240, - 27300, - 27360, - 27420, - 27480, - 27540, - 27600, - 27660, - 27720, - 27780, - 27840, - 27900, - 27960, - 28020, - 28080, - 28140, - 28200, - 28260, - 28320, - 28380, - 28440, - 28500, - 28560, - 28620, - 28680, - 28740, - 28800, - 28860, - 28920, - 28980, - 29040, - 29100, - 29160, - 29220, - 29280, - 29340, - 29400, - 29460, - 29520, - 29580, - 29640, - 29700, - 29760, - 29820, - 29880, - 29940, - 30000, - 30060, - 30120, - 30180, - 30240, - 30300, - 30360, - 30420, - 30480, - 30540, - 30600, - 30660, - 30720, - 30780, - 30840, - 30900, - 30960, - 31020, - 31080, - 31140, - 31200, - 31260, - 31320, - 31380, - 31440, - 31500, - 31560, - 31620, - 31680, - 31740, - 31800, - 31860, - 31920, - 31980, - 32040, - 32100, - 32160, - 32220, - 32280, - 32340, - 32400, - 32460, - 32520, - 32580, - 32640, - 32700, - 32760, - 32820, - 32880, - 32940, - 33000, - 33060, - 33120, - 33180, - 33240, - 33300, - 33360, - 33420, - 33480, - 33540, - 33600, - 33660, - 33720, - 33780, - 33840, - 33900, - 33960, - 34020, - 34080, - 34140, - 34200, - 34260, - 34320, - 34380, - 34440, - 34500, - 34560, - 34620, - 34680, - 34740, - 34800, - 34860, - 34920, - 34980, - 35040, - 35100, - 35160, - 35220, - 35280, - 35340, - 35400, - 35460, - 35520, - 35580, - 35640, - 35700, - 35760, - 35820, - 35880, - 35940, - 36000, - 36060, - 36120, - 36180, - 36240, - 36300, - 36360, - 36420, - 36480, - 36540, - 36600, - 36660, - 36720, - 36780, - 36840, - 36900, - 36960, - 37020, - 37080, - 37140, - 37200, - 37260, - 37320, - 37380, - 37440, - 37500, - 37560, - 37620, - 37680, - 37740, - 37800, - 37860, - 37920, - 37980, - 38040, - 38100, - 38160, - 38220, - 38280, - 38340, - 38400, - 38460, - 38520, - 38580, - 38640, - 38700, - 38760, - 38820, - 38880, - 38940, - 39000, - 39060, - 39120, - 39180, - 39240, - 39300, - 39360, - 39420, - 39480, - 39540, - 39600, - 39660, - 39720, - 39780, - 39840, - 39900, - 39960, - 40020, - 40080, - 40140, - 40200, - 40260, - 40320, - 40380, - 40440, - 40500, - 40560, - 40620, - 40680, - 40740, - 40800, - 40860, - 40920, - 40980, - 41040, - 41100, - 41160, - 41220, - 41280, - 41340, - 41400, - 41460, - 41520, - 41580, - 41640, - 41700, - 41760, - 41820, - 41880, - 41940, - 42000, - 42060, - 42120, - 42180, - 42240, - 42300, - 42360, - 42420, - 42480, - 42540, - 42600, - 42660, - 42720, - 42780, - 42840, - 42900, - 42960, - 43020, - 43080, - 43140, - 43200, - 43260, - 43320, - 43380, - 43440, - 43500, - 43560, - 43620, - 43680, - 43740, - 43800, - 43860, - 43920, - 43980, - 44040, - 44100, - 44160, - 44220, - 44280, - 44340, - 44400, - 44460, - 44520, - 44580, - 44640, - 44700, - 44760, - 44820, - 44880, - 44940, - 45000, - 45060, - 45120, - 45180, - 45240, - 45300, - 45360, - 45420, - 45480, - 45540, - 45600, - 45660, - 45720, - 45780, - 45840, - 45900, - 45960, - 46020, - 46080, - 46140, - 46200, - 46260, - 46320, - 46380, - 46440, - 46500, - 46560, - 46620, - 46680, - 46740, - 46800, - 46860, - 46920, - 46980, - 47040, - 47100, - 47160, - 47220, - 47280, - 47340, - 47400, - 47460, - 47520, - 47580, - 47640, - 47700, - 47760, - 47820, - 47880, - 47940, - 48000, - 48060, - 48120, - 48180, - 48240, - 48300, - 48360, - 48420, - 48480, - 48540, - 48600, - 48660, - 48720, - 48780, - 48840, - 48900, - 48960, - 49020, - 49080, - 49140, - 49200, - 49260, - 49320, - 49380, - 49440, - 49500, - 49560, - 49620, - 49680, - 49740, - 49800, - 49860, - 49920, - 49980, - 50040, - 50100, - 50160, - 50220, - 50280, - 50340, - 50400, - 50460, - 50520, - 50580, - 50640, - 50700, - 50760, - 50820, - 50880, - 50940, - 51000, - 51060, - 51120, - 51180, - 51240, - 51300, - 51360, - 51420, - 51480, - 51540, - 51600, - 51660, - 51720, - 51780, - 51840, - 51900, - 51960, - 52020, - 52080, - 52140, - 52200, - 52260, - 52320, - 52380, - 52440, - 52500, - 52560, - 52620, - 52680, - 52740, - 52800, - 52860, - 52920, - 52980, - 53040, - 53100, - 53160, - 53220, - 53280, - 53340, - 53400, - 53460, - 53520, - 53580, - 53640, - 53700, - 53760, - 53820, - 53880, - 53940, - 54000, - 54060, - 54120, - 54180, - 54240, - 54300, - 54360, - 54420, - 54480, - 54540, - 54600, - 54660, - 54720, - 54780, - 54840, - 54900, - 54960, - 55020, - 55080, - 55140, - 55200, - 55260, - 55320, - 55380, - 55440, - 55500, - 55560, - 55620, - 55680, - 55740, - 55800, - 55860, - 55920, - 55980, - 56040, - 56100, - 56160, - 56220, - 56280, - 56340, - 56400, - 56460, - 56520, - 56580, - 56640, - 56700, - 56760, - 56820, - 56880, - 56940, - 57000, - 57060, - 57120, - 57180, - 57240, - 57300, - 57360, - 57420, - 57480, - 57540, - 57600, - 57660, - 57720, - 57780, - 57840, - 57900, - 57960, - 58020, - 58080, - 58140, - 58200, - 58260, - 58320, - 58380, - 58440, - 58500, - 58560, - 58620, - 58680, - 58740, - 58800, - 58860, - 58920, - 58980, - 59040, - 59100, - 59160, - 59220, - 59280, - 59340, - 59400, - 59460, - 59520, - 59580, - 59640, - 59700, - 59760, - 59820, - 59880, - 59940, - 60000, - 60060, - 60120, - 60180, - 60240, - 60300, - 60360, - 60420, - 60480, - 60540, - 60600, - 60660, - 60720, - 60780, - 60840, - 60900, - 60960, - 61020, - 61080, - 61140, - 61200, - 61260, - 61320, - 61380, - 61440, - 61500, - 61560, - 61620, - 61680, - 61740, - 61800, - 61860, - 61920, - 61980, - 62040, - 62100, - 62160, - 62220, - 62280, - 62340, - 62400, - 62460, - 62520, - 62580, - 62640, - 62700, - 62760, - 62820, - 62880, - 62940, - 63000, - 63060, - 63120, - 63180, - 63240, - 63300, - 63360, - 63420, - 63480, - 63540, - 63600, - 63660, - 63720, - 63780, - 63840, - 63900, - 63960, - 64020, - 64080, - 64140, - 64200, - 64260, - 64320, - 64380, - 64440, - 64500, - 64560, - 64620, - 64680, - 64740, - 64800, - 64860, - 64920, - 64980, - 65040, - 65100, - 65160, - 65220, - 65280, - 65340, - 65400, - 65460, - 65520, - 65580, - 65640, - 65700, - 65760, - 65820, - 65880, - 65940, - 66000, - 66060, - 66120, - 66180, - 66240, - 66300, - 66360, - 66420, - 66480, - 66540, - 66600, - 66660, - 66720, - 66780, - 66840, - 66900, - 66960, - 67020, - 67080, - 67140, - 67200, - 67260, - 67320, - 67380, - 67440, - 67500, - 67560, - 67620, - 67680, - 67740, - 67800, - 67860, - 67920, - 67980, - 68040, - 68100, - 68160, - 68220, - 68280, - 68340, - 68400, - 68460, - 68520, - 68580, - 68640, - 68700, - 68760, - 68820, - 68880, - 68940, - 69000, - 69060, - 69120, - 69180, - 69240, - 69300, - 69360, - 69420, - 69480, - 69540, - 69600, - 69660, - 69720, - 69780, - 69840, - 69900, - 69960, - 70020, - 70080, - 70140, - 70200, - 70260, - 70320, - 70380, - 70440, - 70500, - 70560, - 70620, - 70680, - 70740, - 70800, - 70860, - 70920, - 70980, - 71040, - 71100, - 71160, - 71220, - 71280, - 71340, - 71400, - 71460, - 71520, - 71580, - 71640, - 71700, - 71760, - 71820, - 71880, - 71940, - 72000, - 72060, - 72120, - 72180, - 72240, - 72300, - 72360, - 72420, - 72480, - 72540, - 72600, - 72660, - 72720, - 72780, - 72840, - 72900, - 72960, - 73020, - 73080, - 73140, - 73200, - 73260, - 73320, - 73380, - 73440, - 73500, - 73560, - 73620, - 73680, - 73740, - 73800, - 73860, - 73920, - 73980, - 74040, - 74100, - 74160, - 74220, - 74280, - 74340, - 74400, - 74460, - 74520, - 74580, - 74640, - 74700, - 74760, - 74820, - 74880, - 74940, - 75000, - 75060, - 75120, - 75180, - 75240, - 75300, - 75360, - 75420, - 75480, - 75540, - 75600, - 75660, - 75720, - 75780, - 75840, - 75900, - 75960, - 76020, - 76080, - 76140, - 76200, - 76260, - 76320, - 76380, - 76440, - 76500, - 76560, - 76620, - 76680, - 76740, - 76800, - 76860, - 76920, - 76980, - 77040, - 77100, - 77160, - 77220, - 77280, - 77340, - 77400, - 77460, - 77520, - 77580, - 77640, - 77700, - 77760, - 77820, - 77880, - 77940, - 78000, - 78060, - 78120, - 78180, - 78240, - 78300, - 78360, - 78420, - 78480, - 78540, - 78600, - 78660, - 78720, - 78780, - 78840, - 78900, - 78960, - 79020, - 79080, - 79140, - 79200, - 79260, - 79320, - 79380, - 79440, - 79500, - 79560, - 79620, - 79680, - 79740, - 79800, - 79860, - 79920, - 79980, - 80040, - 80100, - 80160, - 80220, - 80280, - 80340, - 80400, - 80460, - 80520, - 80580, - 80640, - 80700, - 80760, - 80820, - 80880, - 80940, - 81000, - 81060, - 81120, - 81180, - 81240, - 81300, - 81360, - 81420, - 81480, - 81540, - 81600, - 81660, - 81720, - 81780, - 81840, - 81900, - 81960, - 82020, - 82080, - 82140, - 82200, - 82260, - 82320, - 82380, - 82440, - 82500, - 82560, - 82620, - 82680, - 82740, - 82800, - 82860, - 82920, - 82980, - 83040, - 83100, - 83160, - 83220, - 83280, - 83340, - 83400, - 83460, - 83520, - 83580, - 83640, - 83700, - 83760, - 83820, - 83880, - 83940, - 84000, - 84060, - 84120, - 84180, - 84240, - 84300, - 84360, - 84420, - 84480, - 84540, - 84600, - 84660, - 84720, - 84780, - 84840, - 84900, - 84960, - 85020, - 85080, - 85140, - 85200, - 85260, - 85320, - 85380, - 85440, - 85500, - 85560, - 85620, - 85680, - 85740, - 85800, - 85860, - 85920, - 85980, - 86040, - 86100, - 86160, - 86220, - 86280, - 86340, - 86400 - ], - "y": [ - 0, - 0.001431647111845201, - 0.005489238621648387, - 0.011968526302890579, - 0.020216684081311213, - 0.029377216347485052, - 0.03858657325727611, - 0.047772784628765066, - 0.05741107035988838, - 0.06781894357830387, - 0.07886012103418846, - 0.09067960625025259, - 0.10346547155644108, - 0.11691459891219509, - 0.1302765495867531, - 0.14349994161040028, - 0.15694183341105505, - 0.17122909157351593, - 0.18678573774075363, - 0.20350468666703708, - 0.2205495619696852, - 0.23680096305582948, - 0.25210893042783994, - 0.266956130343609, - 0.28191106043268693, - 0.29755347755384376, - 0.31450424208242655, - 0.3329850399445557, - 0.3515197232634602, - 0.3698432679716884, - 0.3885999593868697, - 0.40814676710407155, - 0.4283388127258699, - 0.4490122522360689, - 0.4690636805464653, - 0.4883071422919621, - 0.5074688717348541, - 0.5260039630274728, - 0.5451347056872953, - 0.5652956224531096, - 0.5851768485552785, - 0.6041564848650489, - 0.6199820610469859, - 0.6345898393488892, - 0.6467398709623295, - 0.659799754195538, - 0.6750109883416842, - 0.6867976704855547, - 0.6944778074645557, - 0.7013445843686253, - 0.7069875098635159, - 0.7115140442785534, - 0.7158816266562833, - 0.7172696418045863, - 0.7161594225838128, - 0.7139968463065195, - 0.7104664323842871, - 0.7047276177426198, - 0.6972444081367709, - 0.6887050810511877, - 0.6789834117850675, - 0.6674776343562006, - 0.6538842161548911, - 0.639225793260512, - 0.6243167841952318, - 0.6084823415613122, - 0.5928391303764444, - 0.5771747962912427, - 0.5583900258008467, - 0.5377497872496795, - 0.5164943777593696, - 0.4946727878018723, - 0.47398159282128083, - 0.45357710258376954, - 0.4315818822812526, - 0.4079952159795666, - 0.38346138562278365, - 0.35790929157814694, - 0.33181041690058566, - 0.3069712740198972, - 0.2842894770015339, - 0.2633364835889971, - 0.24360508479369236, - 0.22575787668373062, - 0.2084241484448799, - 0.19296192814748378, - 0.17810038864981861, - 0.1625769723856315, - 0.1517421002937394, - 0.14660625338295186, - 0.1406340643754812, - 0.1315185469565204, - 0.12173747644169974, - 0.11489580122600454, - 0.1152198706904754, - 0.12200803755493939, - 0.1306289312526458, - 0.1377025552952363, - 0.14265871167518968, - 0.14532676907696893, - 0.14738453869078974, - 0.148427590954472, - 0.14654557351433692, - 0.14256378167153685, - 0.1380952450328448, - 0.1337056236039655, - 0.1288188388400156, - 0.12371065761616662, - 0.1203057560504389, - 0.11892733821859505, - 0.11751688310730096, - 0.11635098042639758, - 0.11672030905594258, - 0.11916378224621557, - 0.12391533827580421, - 0.1315358043037045, - 0.14226040787209257, - 0.15608215721548518, - 0.17253950247452998, - 0.19145819576909195, - 0.20717872965263548, - 0.22457228781366498, - 0.2500505017954107, - 0.27434293179904135, - 0.2984969953488317, - 0.3227700643287379, - 0.3469811685903973, - 0.37136105834741884, - 0.3958190756507726, - 0.4210185427633477, - 0.44613211694633265, - 0.47065406156503975, - 0.49764190795262386, - 0.5254642321627202, - 0.5538721596670597, - 0.5816620554848873, - 0.608387094080136, - 0.6350042518974156, - 0.6617547950999026, - 0.6887137721241027, - 0.7161918089690383, - 0.7428908159281751, - 0.770684928882877, - 0.797809359536534, - 0.8232697731070476, - 0.8478827197798873, - 0.8726480707526089, - 0.895436045051705, - 0.9173667914466572, - 0.9391937302640385, - 0.959083464004356, - 0.9767785966152712, - 0.9928903832248237, - 1.0084499342194935, - 1.0235562460224013, - 1.0369054440516112, - 1.0478188662561054, - 1.0569964772771878, - 1.0650830649555956, - 1.0722191437749855, - 1.077787105318459, - 1.0806539527197176, - 1.08037895293404, - 1.0777031887341326, - 1.0737282968473412, - 1.0702149808847983, - 1.0675514346541426, - 1.0613015659995992, - 1.048698965849348, - 1.0346363201891458, - 1.0210766854386608, - 1.0074495136630308, - 0.9929229199451581, - 0.9753281999182355, - 0.9565526268825172, - 0.937395863551402, - 0.9164250439616745, - 0.8936050322288364, - 0.8714302022928218, - 0.8494027076066801, - 0.8255769268881152, - 0.8013721930065623, - 0.7781094076595974, - 0.7543727818989171, - 0.7312950296212593, - 0.7108349525678079, - 0.6915691709741106, - 0.6736532556249629, - 0.6584901994580898, - 0.6467806620040728, - 0.6366550118144879, - 0.6257927103491507, - 0.6171048228642172, - 0.612494707088132, - 0.6082856924207372, - 0.6010576630594097, - 0.5926514064597367, - 0.586237870060288, - 0.5833044592352595, - 0.5826883082326338, - 0.583093009227392, - 0.5842108682493844, - 0.585468702678132, - 0.5874123429980602, - 0.5901269191224635, - 0.5931144199822944, - 0.5971840071858527, - 0.6029554828752635, - 0.6101659219717165, - 0.6182781239937568, - 0.62796804756914, - 0.6397377601326198, - 0.6524155388344043, - 0.6667973106207543, - 0.6831473845174667, - 0.7001944083725532, - 0.7176767789250552, - 0.7349032864901538, - 0.7529293096258205, - 0.774125909216423, - 0.7975748319464177, - 0.8220367240819813, - 0.8466161468114758, - 0.871158807869721, - 0.8959194592937672, - 0.9214262066734507, - 0.9479879899431333, - 0.975402705220759, - 1.0032732054245195, - 1.0309590044006214, - 1.0580367893592806, - 1.0841999955119326, - 1.1095946375018584, - 1.134999118872705, - 1.160285104070404, - 1.184799565655919, - 1.2095510430333938, - 1.2361944763959014, - 1.2639163640083515, - 1.2910952664901165, - 1.3169233519759183, - 1.3430026055596493, - 1.3691774975175448, - 1.3939688323257289, - 1.4179430965945725, - 1.439394639773153, - 1.4587452210741838, - 1.4770099166910948, - 1.4936488531379633, - 1.5076536840069823, - 1.5197757349292969, - 1.529847173596721, - 1.5370207783627974, - 1.5411656366540551, - 1.5430350116851799, - 1.5435900977173893, - 1.5426559846758408, - 1.5393518777286728, - 1.5330251142510545, - 1.5236668083050295, - 1.5117794628287997, - 1.4978784113062056, - 1.4825406164495483, - 1.4660535111994155, - 1.447432448209319, - 1.425626231194725, - 1.4007760857394502, - 1.3736806147292873, - 1.3449468855595226, - 1.3157376657938877, - 1.287585162615098, - 1.2589191366088244, - 1.2264444518260558, - 1.1927378606049674, - 1.1610469187467984, - 1.1286137180154723, - 1.0948333914118262, - 1.0603882153998252, - 1.0255781145918947, - 0.9920814666259052, - 0.9599379550792287, - 0.9276302917731025, - 0.8951121101381723, - 0.8637042073056768, - 0.8325914570823134, - 0.8016588390227446, - 0.7736573973599402, - 0.7455107589806959, - 0.7171473406475106, - 0.6928988511445979, - 0.6732046884063846, - 0.6533167820019006, - 0.6336843316899875, - 0.6176264035341809, - 0.6059325204004288, - 0.5959486949211121, - 0.5879672232327743, - 0.5857064922174722, - 0.5882742657971675, - 0.5929306859920185, - 0.5992904979978142, - 0.6081800544011575, - 0.6198649230790296, - 0.6343627980772031, - 0.6521206191341331, - 0.672774510999796, - 0.6950753858302108, - 0.7187882451248193, - 0.7450274400074572, - 0.7740137443607573, - 0.8040135493383067, - 0.834129309806186, - 0.8651090575425512, - 0.8972102527462336, - 0.9311261180628827, - 0.9671917951732063, - 1.0046568860114393, - 1.0431147487611467, - 1.082323428310358, - 1.1218658017702245, - 1.1612267783425452, - 1.2002152173791485, - 1.2392035521402185, - 1.2788146671008873, - 1.3189329441952677, - 1.3591930536810795, - 1.3993827199118962, - 1.439343633940307, - 1.4788360021256786, - 1.517727944348752, - 1.5564671656826319, - 1.5951411790401409, - 1.632470521587859, - 1.66740472545225, - 1.7001903908981273, - 1.7313705396536314, - 1.7609334505611212, - 1.787673859302018, - 1.8128875498525123, - 1.83481018675373, - 1.853883394968273, - 1.874000071219391, - 1.894351633227174, - 1.9131204054348185, - 1.9306256377654873, - 1.9457364967436066, - 1.9589893170234784, - 1.9714712091479076, - 1.983428480084066, - 1.9951075297792669, - 2.006617729387055, - 2.0167497430048162, - 2.0256464040069537, - 2.0343078381796222, - 2.042640209241337, - 2.0498241819901986, - 2.0551662760572578, - 2.058647698581388, - 2.061133565611177, - 2.0635890343164065, - 2.066358112019841, - 2.0686557840712716, - 2.069091281595744, - 2.0671960565130614, - 2.0636599996442855, - 2.0594049172797058, - 2.0550191660146293, - 2.0507176743218, - 2.0462506000028973, - 2.0399610308636533, - 2.0317455355789122, - 2.023368862351025, - 2.0156203550083776, - 2.0073057238347265, - 1.9950239589548981, - 1.983289162903736, - 1.9736410197105276, - 1.9624982003083657, - 1.950009990403774, - 1.93741839000461, - 1.9247435313036063, - 1.911169431053533, - 1.8967766708547702, - 1.8825530591277648, - 1.8679403262034746, - 1.8530061193847158, - 1.840119332656586, - 1.8268300455717048, - 1.8098924733541002, - 1.7902717362672944, - 1.7714592367521858, - 1.7548169446417716, - 1.73809220638855, - 1.7201319684819527, - 1.7011217268288876, - 1.6804864308252654, - 1.658775536724671, - 1.6371969461421974, - 1.6162836396654057, - 1.5931952562816982, - 1.5685074487613548, - 1.5451015595284208, - 1.5218971961575725, - 1.4976402577098409, - 1.4727730351276327, - 1.4477445640168374, - 1.4224948677048255, - 1.3972480087490062, - 1.3726956594952042, - 1.3490357747745223, - 1.3256945708403012, - 1.3031997272966869, - 1.2821307747512913, - 1.2620465522013622, - 1.2426881930032572, - 1.2243436646670594, - 1.207179361847253, - 1.1913977323123532, - 1.1775340294388845, - 1.1657862613334178, - 1.155773057103068, - 1.1470753154152986, - 1.1400529878260912, - 1.1355441548477374, - 1.1334807347867017, - 1.1328708051934904, - 1.1338786184034533, - 1.1378986894965597, - 1.1444720715442693, - 1.1518936194224252, - 1.1606686743853627, - 1.172140445055636, - 1.1860246006990858, - 1.2010393328608393, - 1.2183463005446276, - 1.2382383607544134, - 1.2590718143814674, - 1.2831488244087936, - 1.3112332572209353, - 1.3378751802984135, - 1.3559240147399627, - 1.3742001249218074, - 1.3956343859245632, - 1.4161425327557005, - 1.4368762374314592, - 1.4563008561851802, - 1.4737456606839086, - 1.4898469456773422, - 1.5055550892134413, - 1.5203302440352657, - 1.5321738451913827, - 1.5418640716385072, - 1.5508123851343285, - 1.5590777643191687, - 1.5663197251929553, - 1.5716023764037415, - 1.5744858828602795, - 1.5765011844519339, - 1.576461810603254, - 1.5739673160727108, - 1.569232258307546, - 1.562760056488026, - 1.5573599777898701, - 1.552545419364429, - 1.5463821395350361, - 1.538187418575082, - 1.5274285777683536, - 1.515825436101315, - 1.5029420734463692, - 1.4863574126074783, - 1.467369527324373, - 1.4487846582103097, - 1.4312262551855337, - 1.4122393069775039, - 1.3898337350879635, - 1.3670744714610654, - 1.345578414720847, - 1.3232934037328177, - 1.2992962156899897, - 1.2744906451337996, - 1.2502990044754931, - 1.226731759350024, - 1.2040110790108713, - 1.18193673669577, - 1.1583935489571247, - 1.133164231427871, - 1.1092879308772494, - 1.0903979611360828, - 1.0732266311469676, - 1.0554542285450526, - 1.0381018647776288, - 1.021643685392353, - 1.0074802260314, - 0.9948758322894456, - 0.9818648306178394, - 0.970131760689458, - 0.9606173457526833, - 0.9533576385181532, - 0.9482111379507127, - 0.9450472253085127, - 0.9437571480024196, - 0.9440800764133325, - 0.945621335627875, - 0.9482924518216078, - 0.9528619218720451, - 0.9607942868144901, - 0.9724381403218539, - 0.9861192111332288, - 1.0003442922091927, - 1.0158006129359292, - 1.033170971601024, - 1.052291281882717, - 1.0729100232360376, - 1.0942979323850335, - 1.1159281154098495, - 1.1381587466682674, - 1.1615304794243946, - 1.1861568148843702, - 1.2119573564090032, - 1.2386871743086507, - 1.2661099605009218, - 1.293752573026576, - 1.3211649937936676, - 1.3486054110747348, - 1.3760907933310873, - 1.4030439418153828, - 1.4293538657474245, - 1.455080848778359, - 1.4797661699518943, - 1.50374658400355, - 1.5261878010817103, - 1.5483072392364048, - 1.5687448892363813, - 1.5878129488679438, - 1.605971306450211, - 1.6198099831783659, - 1.6285452657145065, - 1.6406968199052039, - 1.6563090873803004, - 1.6685755509510616, - 1.6795377722751348, - 1.6902496933104667, - 1.6999349019922045, - 1.7092346209647933, - 1.7183934065613296, - 1.7269582292508692, - 1.735272033770655, - 1.7431242175842971, - 1.7505791517059615, - 1.757537735030854, - 1.7631677808577986, - 1.7686003851223018, - 1.7735825227093742, - 1.777330797193862, - 1.7788530570873298, - 1.7769720948120544, - 1.7728442061597578, - 1.7713367972234368, - 1.7710920848381146, - 1.7684845098337862, - 1.7625172020902338, - 1.7559257198822849, - 1.7514585198201558, - 1.7467651047156545, - 1.7392174893269141, - 1.7291889836633607, - 1.7194366209778524, - 1.7092839535383149, - 1.6981266027240391, - 1.6865011578210871, - 1.6748779530102633, - 1.662764299795983, - 1.6506774511599993, - 1.6377053227731087, - 1.6227696218787255, - 1.6071826941007024, - 1.5926229166502843, - 1.5790817987965327, - 1.5662702590528874, - 1.5531854522335589, - 1.5392237211743471, - 1.5247651701603593, - 1.5096780093511477, - 1.4985487509276607, - 1.4913303400734788, - 1.4832020974850522, - 1.4748828873467943, - 1.468709557684606, - 1.4641237940030167, - 1.4599935082018634, - 1.456181547804637, - 1.4548273423266322, - 1.455871861227261, - 1.457671419052356, - 1.4601111843718086, - 1.463412645750628, - 1.4674892495504468, - 1.472419467983841, - 1.4784996805422506, - 1.485880160859632, - 1.4941268170763067, - 1.5024784074313808, - 1.51099644376051, - 1.5207713773727043, - 1.5322332354285817, - 1.5444683132393722, - 1.5568437054316415, - 1.5696017899902404, - 1.58290901872995, - 1.5966097983582048, - 1.6100758860682958, - 1.6226181973994218, - 1.6347938961435804, - 1.6473053083563773, - 1.6606216469284447, - 1.674568642863041, - 1.688749408986401, - 1.702757820792847, - 1.7180863584360422, - 1.7353606433940794, - 1.7516233269691306, - 1.7668547796015956, - 1.7826046473399637, - 1.799551598811272, - 1.8174788638346107, - 1.8365571242553524, - 1.855081862874609, - 1.871675515849386, - 1.8885823614830566, - 1.905814959831425, - 1.9242706525319588, - 1.9399819607720008, - 1.950849060834391, - 1.962926081782335, - 1.9748783441488575, - 1.9817673108825185, - 1.98907926708531, - 1.9963906133667702, - 2.0008721393032594, - 2.003762560388778, - 2.0053953737206305, - 2.005079966859719, - 2.002284148956596, - 1.9968951279908191, - 1.9896081446049447, - 1.9811877800099398, - 1.9710814237448895, - 1.9588822053620774, - 1.9447754628908975, - 1.9286396840513635, - 1.9105818028263242, - 1.891018107376095, - 1.8700374202767276, - 1.847557900678717, - 1.8236719804820443, - 1.7984083171526428, - 1.7717410993647948, - 1.7444653617043628, - 1.7178132561850248, - 1.6916582288626154, - 1.665290311266658, - 1.6376353369480936, - 1.608963735579105, - 1.5800916055543528, - 1.5516029028744518, - 1.524179836058752, - 1.4978245167106177, - 1.4722149380461558, - 1.4474490820744303, - 1.4238555501541272, - 1.4014710306019784, - 1.3801501245359784, - 1.3601547602572703, - 1.3411051084992238, - 1.3215910528221009, - 1.3026764192133602, - 1.2866139186831318, - 1.2722024671082144, - 1.2565320662620356, - 1.2414310369957964, - 1.2311700256393567, - 1.2213527862740867, - 1.2093082241212276, - 1.1969090949342447, - 1.1851479470795403, - 1.1723523889071306, - 1.1594818583852462, - 1.149040842458844, - 1.1394352427517207, - 1.1293323224703484, - 1.1196684826726095, - 1.1119463567236894, - 1.1060400046222776, - 1.1014200148442235, - 1.097570378843061, - 1.0938231972078165, - 1.0905843554740964, - 1.0887761163563459, - 1.088359425160939, - 1.0891707905114902, - 1.0921411487014399, - 1.0983756502801343, - 1.107198723931102, - 1.116533367905296, - 1.1258282650516882, - 1.1360197735829731, - 1.147955375093151, - 1.1615141988838753, - 1.1768593518267003, - 1.1933737997011786, - 1.2111244854368728, - 1.2306679670360097, - 1.2514781669850599, - 1.27292851294567, - 1.2961474906009822, - 1.321308953786758, - 1.3475197296548707, - 1.3742805085706848, - 1.4024462193438143, - 1.4321416568982295, - 1.461066040399488, - 1.4889443865886585, - 1.5175345215315084, - 1.5470178502341199, - 1.5752148082321409, - 1.6014483939366533, - 1.6315254938196095, - 1.6614934952679457, - 1.6853545741904274, - 1.705995559101811, - 1.728864503442031, - 1.7512510846206595, - 1.7726188204029107, - 1.7934325042667014, - 1.813406290332155, - 1.8312534842090284, - 1.8474662275195473, - 1.8621073699250656, - 1.8752468844869852, - 1.8868438458092867, - 1.8963083917174233, - 1.9034989936023503, - 1.9093232891738932, - 1.9142572196867318, - 1.9178251340709693, - 1.9195378069417222, - 1.9193369570351964, - 1.91755274216768, - 1.9143579261183268, - 1.9092931263930242, - 1.9017220265090389, - 1.8916631114234281, - 1.8794844806194475, - 1.8655417363658184, - 1.8508268452787966, - 1.8364614263117374, - 1.8221139258420438, - 1.8067456240463637, - 1.789758691291367, - 1.7711614723533153, - 1.7512077418956091, - 1.7304077839889571, - 1.7090110949670068, - 1.6867138424139312, - 1.6639823503956641, - 1.641402139323357, - 1.6178306501977135, - 1.5929526341180718, - 1.5682900434111176, - 1.5447018914252284, - 1.5213619721200322, - 1.497390904269588, - 1.4728935541080799, - 1.4491964072432255, - 1.4250706999826082, - 1.3997550834213883, - 1.3785315740203936, - 1.3620424157422284, - 1.345899176286713, - 1.3292154218364765, - 1.3136678474480745, - 1.3008132026745758, - 1.2906525901491972, - 1.2837576098985406, - 1.2784088902822373, - 1.2738198483799612, - 1.2707971585541182, - 1.2700740816591394, - 1.2716676278346049, - 1.2751964508091649, - 1.2813045711624844, - 1.2895941128651336, - 1.2982372406643587, - 1.3061656462910882, - 1.3159505621861578, - 1.3295759019657676, - 1.346128095931874, - 1.3649842307210838, - 1.3865132971344605, - 1.4108752114569458, - 1.4361708494187895, - 1.4608363233105561, - 1.4856017595390991, - 1.5120765416165436, - 1.5409830212554527, - 1.5715403589561678, - 1.6015879070148353, - 1.6310672769055838, - 1.660554581571887, - 1.6903602991944888, - 1.7206355767091868, - 1.7510116385418213, - 1.7807089104389928, - 1.8094548849485723, - 1.8374224649830686, - 1.8657164316195696, - 1.8940135838764542, - 1.9204719047989247, - 1.945088778933372, - 1.9693970163560055, - 1.9933023586862497, - 2.014178553560694, - 2.036984606042513, - 2.0614696344796126, - 2.081585656948719, - 2.096576770290106, - 2.111804596789067, - 2.1295049399539487, - 2.148131849896835, - 2.165636980195288, - 2.182768113732481, - 2.1972861010080407, - 2.21140926342126, - 2.2249085116147618, - 2.2368383333243376, - 2.246725421269048, - 2.254455006386323, - 2.260656791199163, - 2.2658395495045713, - 2.270104356208585, - 2.272603387661532, - 2.273377301404515, - 2.272897744206064, - 2.2703495484065503, - 2.2650837953907224, - 2.2596247520279995, - 2.2535367962503368, - 2.2442775477712584, - 2.23747274233516, - 2.226692378283314, - 2.20976589120587, - 2.19352256269191, - 2.178404438957964, - 2.1635480049154334, - 2.147557527781311, - 2.129759395655744, - 2.1109003709704552, - 2.091549891461502, - 2.0713242214046415, - 2.049357045073522, - 2.0263093281505373, - 2.0043962553876424, - 1.9821922766453606, - 1.959599720995962, - 1.9366156379590083, - 1.9127621267391801, - 1.890339218796078, - 1.8679416036837668, - 1.841914514904021, - 1.8148480842487968, - 1.7900733828846171, - 1.7650731255748315, - 1.738877505145705, - 1.7141230859769976, - 1.6895121953107357, - 1.663250496638498, - 1.6362075505196019, - 1.6106772528235358, - 1.586687074005006, - 1.5635573744248734, - 1.5434315064318735, - 1.5241511986428267, - 1.505010150339721, - 1.4904049311575827, - 1.4798371503982177, - 1.4708474401454878, - 1.4651840506882585, - 1.46169212611242, - 1.4608113736070305, - 1.4646330876289375, - 1.4717830769806999, - 1.4812387339173791, - 1.4934517176798445, - 1.5081903048344554, - 1.525453044606201, - 1.546302269255778, - 1.5699039147652454, - 1.594572642730485, - 1.6190905931729545, - 1.6433370471208137, - 1.6719017706891652, - 1.7051302524608232, - 1.7383279182436409, - 1.7698447809165114, - 1.8007146566919587, - 1.83201135107173, - 1.8643691030909615, - 1.8979585537227612, - 1.9323288730731019, - 1.9664149890054154, - 1.9991066757415774, - 2.0305397500156324, - 2.061738896873446, - 2.093002702084395, - 2.124424063620666, - 2.155344756476646, - 2.185387649912942, - 2.2157473846164555, - 2.2476515239288357, - 2.2746411936255115, - 2.2950893918119077, - 2.3157132669064326, - 2.334672107724702, - 2.351476148055924, - 2.366713241104009, - 2.38012420132057, - 2.3902950315958886, - 2.3992902055462753, - 2.4043797381398804, - 2.405888970299497, - 2.4079352694850273, - 2.408359591504511, - 2.4069553857018695, - 2.405810174860381, - 2.4046431968012265, - 2.4026120066798398, - 2.4006218528650103, - 2.3978506348081403, - 2.395302940532436, - 2.3928402186738467, - 2.3897055810341983, - 2.385653836334167, - 2.38127390341094, - 2.377394275089033, - 2.3744062932154475, - 2.3714410690584455, - 2.3663503175178384, - 2.3589114330688616, - 2.3506925544730817, - 2.342320146796516, - 2.3343764961523883, - 2.326306089118813, - 2.3177524901788225, - 2.307894995765066, - 2.2965255405581733, - 2.2836650496416264, - 2.26949383602097, - 2.255372020318363, - 2.240749916790578, - 2.224189242106747, - 2.2061335642496065, - 2.187330417800898, - 2.1680662215396316, - 2.148904819068775, - 2.130148268904666, - 2.111850984156508, - 2.093613364068419, - 2.075916622452223, - 2.058775949401915, - 2.0427522891927987, - 2.0297041338179707, - 2.017997460801604, - 2.0065716465884034, - 1.995776754169017, - 1.9873059129741135, - 1.979584447946412, - 1.9724159660293554, - 1.970363011350837, - 1.9708832692763587, - 1.9720619495111888, - 1.9746101931354116, - 1.977904110173721, - 1.98369718709535, - 1.9908362771848502, - 1.9987016595192793, - 2.009014446868003, - 2.021094013461587, - 2.0355897484119048, - 2.0516843165075778, - 2.067354091563124, - 2.0862027439023447, - 2.1084145190276944, - 2.131721756873607, - 2.154379636492042, - 2.1767310589974773, - 2.199875464640981, - 2.2247547090947832, - 2.251734711608998, - 2.280735833708913, - 2.3109002264823135, - 2.340968479251615, - 2.3702699747047857, - 2.398987943284345, - 2.4276742254910118, - 2.4568677609543754, - 2.4866491201534693, - 2.5164651947303796, - 2.545280550838235, - 2.5726678182592893, - 2.5998472165668107, - 2.626354326273426, - 2.650045231523, - 2.6713120576660687, - 2.691318474665363, - 2.709381782203296, - 2.724661770032626, - 2.739964476356275, - 2.753275050406107, - 2.7640434219829877, - 2.771907957089052, - 2.780079296293686, - 2.789602439029718, - 2.7992137304528795, - 2.805183233301092, - 2.812528529172081, - 2.8215535395916014, - 2.8301552134016212, - 2.8374930993097305, - 2.844747622448795, - 2.8521860651991715, - 2.859119790807034, - 2.8654960845815536, - 2.871643420161143, - 2.8775210841807417, - 2.882915643089019, - 2.8872433746241155, - 2.8898062820849355, - 2.8902803359234963, - 2.889177614292396, - 2.8873429373104638, - 2.8851203912611036, - 2.882289374573432, - 2.8783285765865894, - 2.8728536630791996, - 2.8658527987158866, - 2.856956824353244, - 2.845463587397292, - 2.8316067293868477, - 2.816087792836488, - 2.7995574939272694, - 2.7827542578561837, - 2.7656023021150666, - 2.7473571035738455, - 2.727525736819891, - 2.707007478124359, - 2.6868517862128303, - 2.6649651444892144, - 2.6407750471699605, - 2.617301787317359, - 2.5959678166598668, - 2.5730055866968935, - 2.548157314150541, - 2.5234441841184014, - 2.4997037488029554, - 2.4753604266251696, - 2.4514996986376545, - 2.428672924769579, - 2.407182544992662, - 2.3852647839584145, - 2.3635740528471816, - 2.341714624910212, - 2.323030703068913, - 2.3061164988164715, - 2.2888525154440185, - 2.2730278784812508, - 2.2579268201138696, - 2.244018810542042, - 2.233874690964956, - 2.2276682164440857, - 2.2242069873062773, - 2.222744080554667, - 2.2222028833951444, - 2.2224590009822514, - 2.225565306238401, - 2.2326024718494253, - 2.242533436157023, - 2.2534206118843803, - 2.2651151665011913, - 2.2778806937045495, - 2.2923842356484303, - 2.3078237859354678, - 2.3234412563972895, - 2.3389586189385128, - 2.3544781483778405, - 2.3703780782568638, - 2.3874496752171757, - 2.405862046045515, - 2.4245468169781987, - 2.44231389803132, - 2.4588233472152425, - 2.474572047930538, - 2.4904794937191155, - 2.506657575190295, - 2.5221109926918572, - 2.5362853993937806, - 2.5509184262437357, - 2.5666007850813592, - 2.5815109192455017, - 2.5961580995327025, - 2.611609145796374, - 2.6285235676538994, - 2.6470664730668894, - 2.666636603066174, - 2.6853946301996765, - 2.703088008063063, - 2.721487507989504, - 2.74142445083598, - 2.762863542138931, - 2.783726451834949, - 2.801319497683799, - 2.816105114343839, - 2.8310684537356594, - 2.846647870916926, - 2.861577635790684, - 2.874312857514296, - 2.88548983434844, - 2.8953745042827355, - 2.903217025731997, - 2.908795449953897, - 2.912960675673571, - 2.916256713608321, - 2.918397926953738, - 2.918858095464453, - 2.9178569445717173, - 2.9160527032612538, - 2.9137201872911427, - 2.9104939034977013, - 2.905967904439282, - 2.9002055562301297, - 2.8933626423502377, - 2.88561264436463, - 2.877198064219424, - 2.868035185194646, - 2.8574553127057554, - 2.84550588562056, - 2.8330264117320896, - 2.819455546039931, - 2.8036486620187553, - 2.7859242513328812, - 2.767336506002944, - 2.7484636074859314, - 2.7292101868373613, - 2.7092032659617398, - 2.68808177064309, - 2.6658821328856015, - 2.6426155543253453, - 2.618301149272099, - 2.5929488925324313, - 2.566547997255016, - 2.539714099860035, - 2.513072889819462, - 2.4874413394755837, - 2.4625920100303347, - 2.4376464430047937, - 2.4105273802291203, - 2.382826351722772, - 2.3560831649069014, - 2.3298933778887863, - 2.3055752019873657, - 2.279088655306067, - 2.251918559666362, - 2.2271823769885986, - 2.2032419884647196, - 2.1816912808790736, - 2.162152955942975, - 2.1436599424287506, - 2.1259918683950567, - 2.1099141298649244, - 2.0971343303125534, - 2.0872380763829876, - 2.0796624003763755, - 2.0712284620177077, - 2.063553529120718, - 2.06141899701861, - 2.062958001198661, - 2.0671881204462936, - 2.075086578251858, - 2.0869920120019905, - 2.1023112465298532, - 2.1200464987390837, - 2.138730645846713, - 2.1573675694016847, - 2.178545755366549, - 2.201479486095012, - 2.225052785086198, - 2.2520535565261968, - 2.283598327142498, - 2.3169866988429, - 2.3506693814461372, - 2.3845101571194007, - 2.4187732630020893, - 2.452671205069205, - 2.4866648017972124, - 2.521113688092786, - 2.5550346245762365, - 2.5888859456378066, - 2.622815850028952, - 2.655851116208619, - 2.687378534176889, - 2.7178714683651157, - 2.748635305716261, - 2.780437233210143, - 2.8101892692475654, - 2.8391055781276955, - 2.870378029403572, - 2.900845343353988, - 2.929144540075138, - 2.959426889231094, - 2.9929119078237774, - 3.027258208489219, - 3.0587080928672257, - 3.0871518092351877, - 3.1146673190952217, - 3.1429651320523666, - 3.172053156536001, - 3.200246388741901, - 3.22685121227151, - 3.253046355445827, - 3.2791268124079695, - 3.303959358449164, - 3.32711388937634, - 3.3489676765688037, - 3.369531934595094, - 3.3882645293743034, - 3.404837168565605, - 3.4197252725840985, - 3.433881742380701, - 3.4474664342108214, - 3.459758267021006, - 3.470240663006425, - 3.4787769319232544, - 3.485625948592142, - 3.491799434149875, - 3.496803636597228, - 3.4986424324457985, - 3.4970643457391826, - 3.493359952633285, - 3.4880734429323903, - 3.4811973056689345, - 3.4725973682272335, - 3.462165815042219, - 3.4499986030034884, - 3.4361612376338715, - 3.42072412373155, - 3.4037973335617946, - 3.3862053708962043, - 3.3688900737128926, - 3.350838391652302, - 3.3296277086041712, - 3.3062390835030424, - 3.282684703934503, - 3.2583059334918656, - 3.233436120405704, - 3.2074586849184645, - 3.181465625576105, - 3.1536552649838656, - 3.121951444363349, - 3.091467202110109, - 3.062497929409833, - 3.0319041488439464, - 3.0010557754502574, - 2.9705020047825457, - 2.9405522961473234, - 2.9119257360501476, - 2.882785726872944, - 2.852591078119372, - 2.824999851102961, - 2.799615415095708, - 2.7729782807501255, - 2.747083017196292, - 2.7227760907494156, - 2.6993438915812735, - 2.677623387312884, - 2.6587434133570262, - 2.6424634973816485, - 2.626228900556076, - 2.6091968562596564, - 2.5939945134114244, - 2.582895945440946, - 2.574775750711701, - 2.566317987269936, - 2.5575463649781565, - 2.5504823968579813, - 2.545819417135548, - 2.5437557940985855, - 2.544118152492985, - 2.546382997452776, - 2.5500629558146284, - 2.5553650009159887, - 2.5623551716530786, - 2.5702530094020566, - 2.579019517675582, - 2.5897282219623676, - 2.6022353948353802, - 2.6156069370572603, - 2.6298772548195926, - 2.64506035093197, - 2.6616727584203743, - 2.6804870450512106, - 2.7002983587375415, - 2.7222216228199945, - 2.745667984363845, - 2.7678649982152947, - 2.792875143448954, - 2.8230382880375706, - 2.854302605052507, - 2.883652419885535, - 2.9127797681207634, - 2.944391025371739, - 2.9776217566866534, - 3.011470656003055, - 3.0459195197863735, - 3.0810155943759097, - 3.1164220501754487, - 3.151691104694952, - 3.186964567506464, - 3.2225687185080876, - 3.258291340432747, - 3.2937793559032214, - 3.3286665474678325, - 3.362344859320921, - 3.39468202687817, - 3.4257453842339416, - 3.4557032580006535, - 3.485022607129529, - 3.5137023927936077, - 3.541261923338864, - 3.5670283954956608, - 3.59078045797093, - 3.6128280509643482, - 3.6329222172518154, - 3.649830057817041, - 3.66314659586428, - 3.6738872183537676, - 3.68247086947591, - 3.6885112739717156, - 3.69180028253344, - 3.692837132169825, - 3.691673290103667, - 3.688295678559602, - 3.6823444297380687, - 3.6730404529650875, - 3.660574885937794, - 3.6454378379656474, - 3.6281535308084885, - 3.608774193797238, - 3.587882054546306, - 3.565150762884469, - 3.5392700416951506, - 3.5107520737050306, - 3.4835415882767404, - 3.456099103247518, - 3.424851346245473, - 3.3915538088375548, - 3.359919568785945, - 3.329478672374742, - 3.2995449131501164, - 3.2694931372077707, - 3.2387050503572916, - 3.2073394031346942, - 3.1749046313615863, - 3.1429707603705865, - 3.1118700639808052, - 3.079822787566869, - 3.0472460511730306, - 3.0155866082007243, - 2.984172965418923, - 2.95244976660733, - 2.921049711164808, - 2.8895539172448226, - 2.8592761311701755, - 2.832070995847254, - 2.8057857744401833, - 2.7800867775940312, - 2.7544206433927987, - 2.728983524756199, - 2.70495944566893, - 2.6828491820300577, - 2.6626447884562543, - 2.6444827950417222, - 2.6283561354081404, - 2.614015403709378, - 2.6012982298734433, - 2.590335283758816, - 2.5813863331026736, - 2.5745655884148615, - 2.569562020939189, - 2.5655826276476468, - 2.5626735236407208, - 2.561746876212321, - 2.5632630915861623, - 2.5666810208635384, - 2.571828457879676, - 2.579104093119383, - 2.5884240182043152, - 2.598570710419769, - 2.6119733049853946, - 2.6302998855610937, - 2.6453667075537886, - 2.66034759880111, - 2.6813418253234924, - 2.706184946217873, - 2.729344751157724, - 2.75113279933098, - 2.7740459840059843, - 2.7974855639054734, - 2.821199691179805, - 2.8454998766016906, - 2.86898033671724, - 2.891285339310426, - 2.9127176326684494, - 2.933516995571989, - 2.9545705077595, - 2.9750652983684445, - 2.9932217957831577, - 3.0097645323989752, - 3.02513130509868, - 3.0390159864651682, - 3.0513159441599367, - 3.061924790507964, - 3.071077822848874, - 3.0792165468591643, - 3.0862213224677504, - 3.0916966222771887, - 3.095382720334191, - 3.097850799222166, - 3.1003664250629472, - 3.10331841630572, - 3.104796408808934, - 3.103122939327913, - 3.098854388671974 + "execution_count": 341, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[propagated_orbit_df_list[ind].head() for ind in range(0, len(orbit_list))]" + ] + }, + { + "cell_type": "code", + "execution_count": 342, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", + " 1436 2021-03-20 23:56:00 [UTC] 86160.0 6.069746e+06 -3.464214e+06 \n", + " 1437 2021-03-20 23:57:00 [UTC] 86220.0 5.992655e+06 -3.490139e+06 \n", + " 1438 2021-03-20 23:58:00 [UTC] 86280.0 5.890626e+06 -3.501541e+06 \n", + " 1439 2021-03-20 23:59:00 [UTC] 86340.0 5.764077e+06 -3.498368e+06 \n", + " 1440 2021-03-21 00:00:00 [UTC] 86400.0 5.613533e+06 -3.480632e+06 \n", + " \n", + " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", + " 1436 6.075027e+05 -1075.124079 -552.599779 7441.867643 \n", + " 1437 1.052437e+06 -1493.691431 -311.286987 7384.104632 \n", + " 1438 1.492979e+06 -1906.129737 -68.628218 7295.514250 \n", + " 1439 1.927289e+06 -2310.703179 174.357160 7176.458785 \n", + " 1440 2.353554e+06 -2705.708860 416.647785 7027.430444 ,\n", + " $Time^{UTC}$ Elapsed secs $x_{x}^{ECI}$ $x_{y}^{ECI}$ \\\n", + " 1436 2021-03-20 23:56:00 [UTC] 86160.0 6.069746e+06 -3.464214e+06 \n", + " 1437 2021-03-20 23:57:00 [UTC] 86220.0 5.992655e+06 -3.490139e+06 \n", + " 1438 2021-03-20 23:58:00 [UTC] 86280.0 5.890625e+06 -3.501541e+06 \n", + " 1439 2021-03-20 23:59:00 [UTC] 86340.0 5.764077e+06 -3.498368e+06 \n", + " 1440 2021-03-21 00:00:00 [UTC] 86400.0 5.613532e+06 -3.480632e+06 \n", + " \n", + " $x_{z}^{ECI}$ $v_{x}^{ECI}$ $v_{y}^{ECI}$ $v_{z}^{ECI}$ \n", + " 1436 6.075028e+05 -1075.124174 -552.599772 7441.867649 \n", + " 1437 1.052437e+06 -1493.691525 -311.286975 7384.104631 \n", + " 1438 1.492979e+06 -1906.129832 -68.628205 7295.514243 \n", + " 1439 1.927289e+06 -2310.703272 174.357183 7176.458770 \n", + " 1440 2.353554e+06 -2705.708948 416.647809 7027.430422 ]" ] - } - ], - "layout": { - "autosize": true, - "showlegend": true, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Position RMS error for STK with EGM2008 (without secular coeff update) vs OSTk" }, - "xaxis": { - "autorange": true, - "range": [ - 0, - 86400 - ], - "title": { - "text": "Time Elapsed (s)" - }, - "type": "linear" - }, - "yaxis": { - "autorange": true, - "range": [ - -0.21121280689550653, - 4.013043331014624 - ], - "title": { - "text": "Position Difference in RTN (m)" - }, - "type": "linear" - } + "execution_count": 342, + "metadata": {}, + "output_type": "execute_result" } + ], + "source": [ + "[propagated_orbit_df_list[ind].tail() for ind in range(0, len(orbit_list))]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] }, - "image/png": "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", - "text/html": [ - "
" + "source": [ + "#### Trajectory RMS error vs GMAT run in the GCRF frame " + ] + }, + { + "cell_type": "code", + "execution_count": 343, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def to_dataframe_RMS(ref_ind, list_ind):\n", + " return [\n", + " repr(propagated_state_array_list[list_ind][ref_ind].get_instant()),\n", + " float(\n", + " (\n", + " propagated_state_array_list[list_ind][ref_ind].get_instant()\n", + " - propagated_state_array_list[list_ind][0].get_instant()\n", + " ).in_seconds()\n", + " ),\n", + " (\n", + " np.linalg.norm(\n", + " (\n", + " propagated_state_array_list[list_ind][ref_ind]\n", + " .get_position()\n", + " .get_coordinates()\n", + " - reference_state_array[ref_ind].get_position().get_coordinates()\n", + " )\n", + " )\n", + " ),\n", + " # print(f'Prop:{(propagated_state_array[ref_ind].in_frame(frame_LVLH).get_position().get_coordinates())}'),\n", + " # print(f'Ref:{(reference_state_array[ref_ind].in_frame(frame_LVLH).get_position().get_coordinates())}'),\n", + " (\n", + " np.linalg.norm(\n", + " (\n", + " propagated_state_array_list[list_ind][ref_ind]\n", + " .get_velocity()\n", + " .get_coordinates()\n", + " - reference_state_array[ref_ind].get_velocity().get_coordinates()\n", + " )\n", + " )\n", + " ),\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 344, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "orbit_data_RMS_list = [\n", + " [\n", + " to_dataframe_RMS(ref_ind, list_ind)\n", + " for ref_ind in range(0, len(propagated_state_array_list[list_ind]))\n", + " ]\n", + " for list_ind in range(0, len(orbit_list))\n", + "]" ] }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "orbit_df_RMS_position_list = [\n", - " orbit_df_RMS_list[list_ind][[\"Elapsed secs\", \"${\\delta}x$\"]]\n", - " for list_ind in range(0, len(orbit_list))\n", - "]\n", - "\n", - "figure = go.Figure()\n", - "figure.update_layout(\n", - " title=f\"Position {plot_title_extension}\", showlegend=True, height=1000\n", - ")\n", - "figure.update_xaxes(title_text=\"Time Elapsed (s)\")\n", - "figure.update_yaxes(title_text=\"Position Difference in RTN (m)\")\n", - "\n", - "for list_ind, orbit_df_RMS_position in enumerate(orbit_df_RMS_position_list):\n", - " figure.add_trace(\n", - " go.Scatter(\n", - " x=orbit_df_RMS_position[\"Elapsed secs\"],\n", - " y=orbit_df_RMS_position[\"${\\delta}x$\"],\n", - " name=legend_name_list[list_ind],\n", - " mode=\"lines\",\n", - " )\n", - " )\n", - "\n", - "figure.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot velocity error" - ] - }, - { - "cell_type": "code", - "execution_count": 349, - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "mode": "lines", - "name": "OSTk EGM2008 100x100 minus STK EGM2008 70x70", - "type": "scatter", - "x": [ - 0, - 60, - 120, - 180, - 240, - 300, - 360, - 420, - 480, - 540, - 600, - 660, - 720, - 780, - 840, - 900, - 960, - 1020, - 1080, - 1140, - 1200, - 1260, - 1320, - 1380, - 1440, - 1500, - 1560, - 1620, - 1680, - 1740, - 1800, - 1860, - 1920, - 1980, - 2040, - 2100, - 2160, - 2220, - 2280, - 2340, - 2400, - 2460, - 2520, - 2580, - 2640, - 2700, - 2760, - 2820, - 2880, - 2940, - 3000, - 3060, - 3120, - 3180, - 3240, - 3300, - 3360, - 3420, - 3480, - 3540, - 3600, - 3660, - 3720, - 3780, - 3840, - 3900, - 3960, - 4020, - 4080, - 4140, - 4200, - 4260, - 4320, - 4380, - 4440, - 4500, - 4560, - 4620, - 4680, - 4740, - 4800, - 4860, - 4920, - 4980, - 5040, - 5100, - 5160, - 5220, - 5280, - 5340, - 5400, - 5460, - 5520, - 5580, - 5640, - 5700, - 5760, - 5820, - 5880, - 5940, - 6000, - 6060, - 6120, - 6180, - 6240, - 6300, - 6360, - 6420, - 6480, - 6540, - 6600, - 6660, - 6720, - 6780, - 6840, - 6900, - 6960, - 7020, - 7080, - 7140, - 7200, - 7260, - 7320, - 7380, - 7440, - 7500, - 7560, - 7620, - 7680, - 7740, - 7800, - 7860, - 7920, - 7980, - 8040, - 8100, - 8160, - 8220, - 8280, - 8340, - 8400, - 8460, - 8520, - 8580, - 8640, - 8700, - 8760, - 8820, - 8880, - 8940, - 9000, - 9060, - 9120, - 9180, - 9240, - 9300, - 9360, - 9420, - 9480, - 9540, - 9600, - 9660, - 9720, - 9780, - 9840, - 9900, - 9960, - 10020, - 10080, - 10140, - 10200, - 10260, - 10320, - 10380, - 10440, - 10500, - 10560, - 10620, - 10680, - 10740, - 10800, - 10860, - 10920, - 10980, - 11040, - 11100, - 11160, - 11220, - 11280, - 11340, - 11400, - 11460, - 11520, - 11580, - 11640, - 11700, - 11760, - 11820, - 11880, - 11940, - 12000, - 12060, - 12120, - 12180, - 12240, - 12300, - 12360, - 12420, - 12480, - 12540, - 12600, - 12660, - 12720, - 12780, - 12840, - 12900, - 12960, - 13020, - 13080, - 13140, - 13200, - 13260, - 13320, - 13380, - 13440, - 13500, - 13560, - 13620, - 13680, - 13740, - 13800, - 13860, - 13920, - 13980, - 14040, - 14100, - 14160, - 14220, - 14280, - 14340, - 14400, - 14460, - 14520, - 14580, - 14640, - 14700, - 14760, - 14820, - 14880, - 14940, - 15000, - 15060, - 15120, - 15180, - 15240, - 15300, - 15360, - 15420, - 15480, - 15540, - 15600, - 15660, - 15720, - 15780, - 15840, - 15900, - 15960, - 16020, - 16080, - 16140, - 16200, - 16260, - 16320, - 16380, - 16440, - 16500, - 16560, - 16620, - 16680, - 16740, - 16800, - 16860, - 16920, - 16980, - 17040, - 17100, - 17160, - 17220, - 17280, - 17340, - 17400, - 17460, - 17520, - 17580, - 17640, - 17700, - 17760, - 17820, - 17880, - 17940, - 18000, - 18060, - 18120, - 18180, - 18240, - 18300, - 18360, - 18420, - 18480, - 18540, - 18600, - 18660, - 18720, - 18780, - 18840, - 18900, - 18960, - 19020, - 19080, - 19140, - 19200, - 19260, - 19320, - 19380, - 19440, - 19500, - 19560, - 19620, - 19680, - 19740, - 19800, - 19860, - 19920, - 19980, - 20040, - 20100, - 20160, - 20220, - 20280, - 20340, - 20400, - 20460, - 20520, - 20580, - 20640, - 20700, - 20760, - 20820, - 20880, - 20940, - 21000, - 21060, - 21120, - 21180, - 21240, - 21300, - 21360, - 21420, - 21480, - 21540, - 21600, - 21660, - 21720, - 21780, - 21840, - 21900, - 21960, - 22020, - 22080, - 22140, - 22200, - 22260, - 22320, - 22380, - 22440, - 22500, - 22560, - 22620, - 22680, - 22740, - 22800, - 22860, - 22920, - 22980, - 23040, - 23100, - 23160, - 23220, - 23280, - 23340, - 23400, - 23460, - 23520, - 23580, - 23640, - 23700, - 23760, - 23820, - 23880, - 23940, - 24000, - 24060, - 24120, - 24180, - 24240, - 24300, - 24360, - 24420, - 24480, - 24540, - 24600, - 24660, - 24720, - 24780, - 24840, - 24900, - 24960, - 25020, - 25080, - 25140, - 25200, - 25260, - 25320, - 25380, - 25440, - 25500, - 25560, - 25620, - 25680, - 25740, - 25800, - 25860, - 25920, - 25980, - 26040, - 26100, - 26160, - 26220, - 26280, - 26340, - 26400, - 26460, - 26520, - 26580, - 26640, - 26700, - 26760, - 26820, - 26880, - 26940, - 27000, - 27060, - 27120, - 27180, - 27240, - 27300, - 27360, - 27420, - 27480, - 27540, - 27600, - 27660, - 27720, - 27780, - 27840, - 27900, - 27960, - 28020, - 28080, - 28140, - 28200, - 28260, - 28320, - 28380, - 28440, - 28500, - 28560, - 28620, - 28680, - 28740, - 28800, - 28860, - 28920, - 28980, - 29040, - 29100, - 29160, - 29220, - 29280, - 29340, - 29400, - 29460, - 29520, - 29580, - 29640, - 29700, - 29760, - 29820, - 29880, - 29940, - 30000, - 30060, - 30120, - 30180, - 30240, - 30300, - 30360, - 30420, - 30480, - 30540, - 30600, - 30660, - 30720, - 30780, - 30840, - 30900, - 30960, - 31020, - 31080, - 31140, - 31200, - 31260, - 31320, - 31380, - 31440, - 31500, - 31560, - 31620, - 31680, - 31740, - 31800, - 31860, - 31920, - 31980, - 32040, - 32100, - 32160, - 32220, - 32280, - 32340, - 32400, - 32460, - 32520, - 32580, - 32640, - 32700, - 32760, - 32820, - 32880, - 32940, - 33000, - 33060, - 33120, - 33180, - 33240, - 33300, - 33360, - 33420, - 33480, - 33540, - 33600, - 33660, - 33720, - 33780, - 33840, - 33900, - 33960, - 34020, - 34080, - 34140, - 34200, - 34260, - 34320, - 34380, - 34440, - 34500, - 34560, - 34620, - 34680, - 34740, - 34800, - 34860, - 34920, - 34980, - 35040, - 35100, - 35160, - 35220, - 35280, - 35340, - 35400, - 35460, - 35520, - 35580, - 35640, - 35700, - 35760, - 35820, - 35880, - 35940, - 36000, - 36060, - 36120, - 36180, - 36240, - 36300, - 36360, - 36420, - 36480, - 36540, - 36600, - 36660, - 36720, - 36780, - 36840, - 36900, - 36960, - 37020, - 37080, - 37140, - 37200, - 37260, - 37320, - 37380, - 37440, - 37500, - 37560, - 37620, - 37680, - 37740, - 37800, - 37860, - 37920, - 37980, - 38040, - 38100, - 38160, - 38220, - 38280, - 38340, - 38400, - 38460, - 38520, - 38580, - 38640, - 38700, - 38760, - 38820, - 38880, - 38940, - 39000, - 39060, - 39120, - 39180, - 39240, - 39300, - 39360, - 39420, - 39480, - 39540, - 39600, - 39660, - 39720, - 39780, - 39840, - 39900, - 39960, - 40020, - 40080, - 40140, - 40200, - 40260, - 40320, - 40380, - 40440, - 40500, - 40560, - 40620, - 40680, - 40740, - 40800, - 40860, - 40920, - 40980, - 41040, - 41100, - 41160, - 41220, - 41280, - 41340, - 41400, - 41460, - 41520, - 41580, - 41640, - 41700, - 41760, - 41820, - 41880, - 41940, - 42000, - 42060, - 42120, - 42180, - 42240, - 42300, - 42360, - 42420, - 42480, - 42540, - 42600, - 42660, - 42720, - 42780, - 42840, - 42900, - 42960, - 43020, - 43080, - 43140, - 43200, - 43260, - 43320, - 43380, - 43440, - 43500, - 43560, - 43620, - 43680, - 43740, - 43800, - 43860, - 43920, - 43980, - 44040, - 44100, - 44160, - 44220, - 44280, - 44340, - 44400, - 44460, - 44520, - 44580, - 44640, - 44700, - 44760, - 44820, - 44880, - 44940, - 45000, - 45060, - 45120, - 45180, - 45240, - 45300, - 45360, - 45420, - 45480, - 45540, - 45600, - 45660, - 45720, - 45780, - 45840, - 45900, - 45960, - 46020, - 46080, - 46140, - 46200, - 46260, - 46320, - 46380, - 46440, - 46500, - 46560, - 46620, - 46680, - 46740, - 46800, - 46860, - 46920, - 46980, - 47040, - 47100, - 47160, - 47220, - 47280, - 47340, - 47400, - 47460, - 47520, - 47580, - 47640, - 47700, - 47760, - 47820, - 47880, - 47940, - 48000, - 48060, - 48120, - 48180, - 48240, - 48300, - 48360, - 48420, - 48480, - 48540, - 48600, - 48660, - 48720, - 48780, - 48840, - 48900, - 48960, - 49020, - 49080, - 49140, - 49200, - 49260, - 49320, - 49380, - 49440, - 49500, - 49560, - 49620, - 49680, - 49740, - 49800, - 49860, - 49920, - 49980, - 50040, - 50100, - 50160, - 50220, - 50280, - 50340, - 50400, - 50460, - 50520, - 50580, - 50640, - 50700, - 50760, - 50820, - 50880, - 50940, - 51000, - 51060, - 51120, - 51180, - 51240, - 51300, - 51360, - 51420, - 51480, - 51540, - 51600, - 51660, - 51720, - 51780, - 51840, - 51900, - 51960, - 52020, - 52080, - 52140, - 52200, - 52260, - 52320, - 52380, - 52440, - 52500, - 52560, - 52620, - 52680, - 52740, - 52800, - 52860, - 52920, - 52980, - 53040, - 53100, - 53160, - 53220, - 53280, - 53340, - 53400, - 53460, - 53520, - 53580, - 53640, - 53700, - 53760, - 53820, - 53880, - 53940, - 54000, - 54060, - 54120, - 54180, - 54240, - 54300, - 54360, - 54420, - 54480, - 54540, - 54600, - 54660, - 54720, - 54780, - 54840, - 54900, - 54960, - 55020, - 55080, - 55140, - 55200, - 55260, - 55320, - 55380, - 55440, - 55500, - 55560, - 55620, - 55680, - 55740, - 55800, - 55860, - 55920, - 55980, - 56040, - 56100, - 56160, - 56220, - 56280, - 56340, - 56400, - 56460, - 56520, - 56580, - 56640, - 56700, - 56760, - 56820, - 56880, - 56940, - 57000, - 57060, - 57120, - 57180, - 57240, - 57300, - 57360, - 57420, - 57480, - 57540, - 57600, - 57660, - 57720, - 57780, - 57840, - 57900, - 57960, - 58020, - 58080, - 58140, - 58200, - 58260, - 58320, - 58380, - 58440, - 58500, - 58560, - 58620, - 58680, - 58740, - 58800, - 58860, - 58920, - 58980, - 59040, - 59100, - 59160, - 59220, - 59280, - 59340, - 59400, - 59460, - 59520, - 59580, - 59640, - 59700, - 59760, - 59820, - 59880, - 59940, - 60000, - 60060, - 60120, - 60180, - 60240, - 60300, - 60360, - 60420, - 60480, - 60540, - 60600, - 60660, - 60720, - 60780, - 60840, - 60900, - 60960, - 61020, - 61080, - 61140, - 61200, - 61260, - 61320, - 61380, - 61440, - 61500, - 61560, - 61620, - 61680, - 61740, - 61800, - 61860, - 61920, - 61980, - 62040, - 62100, - 62160, - 62220, - 62280, - 62340, - 62400, - 62460, - 62520, - 62580, - 62640, - 62700, - 62760, - 62820, - 62880, - 62940, - 63000, - 63060, - 63120, - 63180, - 63240, - 63300, - 63360, - 63420, - 63480, - 63540, - 63600, - 63660, - 63720, - 63780, - 63840, - 63900, - 63960, - 64020, - 64080, - 64140, - 64200, - 64260, - 64320, - 64380, - 64440, - 64500, - 64560, - 64620, - 64680, - 64740, - 64800, - 64860, - 64920, - 64980, - 65040, - 65100, - 65160, - 65220, - 65280, - 65340, - 65400, - 65460, - 65520, - 65580, - 65640, - 65700, - 65760, - 65820, - 65880, - 65940, - 66000, - 66060, - 66120, - 66180, - 66240, - 66300, - 66360, - 66420, - 66480, - 66540, - 66600, - 66660, - 66720, - 66780, - 66840, - 66900, - 66960, - 67020, - 67080, - 67140, - 67200, - 67260, - 67320, - 67380, - 67440, - 67500, - 67560, - 67620, - 67680, - 67740, - 67800, - 67860, - 67920, - 67980, - 68040, - 68100, - 68160, - 68220, - 68280, - 68340, - 68400, - 68460, - 68520, - 68580, - 68640, - 68700, - 68760, - 68820, - 68880, - 68940, - 69000, - 69060, - 69120, - 69180, - 69240, - 69300, - 69360, - 69420, - 69480, - 69540, - 69600, - 69660, - 69720, - 69780, - 69840, - 69900, - 69960, - 70020, - 70080, - 70140, - 70200, - 70260, - 70320, - 70380, - 70440, - 70500, - 70560, - 70620, - 70680, - 70740, - 70800, - 70860, - 70920, - 70980, - 71040, - 71100, - 71160, - 71220, - 71280, - 71340, - 71400, - 71460, - 71520, - 71580, - 71640, - 71700, - 71760, - 71820, - 71880, - 71940, - 72000, - 72060, - 72120, - 72180, - 72240, - 72300, - 72360, - 72420, - 72480, - 72540, - 72600, - 72660, - 72720, - 72780, - 72840, - 72900, - 72960, - 73020, - 73080, - 73140, - 73200, - 73260, - 73320, - 73380, - 73440, - 73500, - 73560, - 73620, - 73680, - 73740, - 73800, - 73860, - 73920, - 73980, - 74040, - 74100, - 74160, - 74220, - 74280, - 74340, - 74400, - 74460, - 74520, - 74580, - 74640, - 74700, - 74760, - 74820, - 74880, - 74940, - 75000, - 75060, - 75120, - 75180, - 75240, - 75300, - 75360, - 75420, - 75480, - 75540, - 75600, - 75660, - 75720, - 75780, - 75840, - 75900, - 75960, - 76020, - 76080, - 76140, - 76200, - 76260, - 76320, - 76380, - 76440, - 76500, - 76560, - 76620, - 76680, - 76740, - 76800, - 76860, - 76920, - 76980, - 77040, - 77100, - 77160, - 77220, - 77280, - 77340, - 77400, - 77460, - 77520, - 77580, - 77640, - 77700, - 77760, - 77820, - 77880, - 77940, - 78000, - 78060, - 78120, - 78180, - 78240, - 78300, - 78360, - 78420, - 78480, - 78540, - 78600, - 78660, - 78720, - 78780, - 78840, - 78900, - 78960, - 79020, - 79080, - 79140, - 79200, - 79260, - 79320, - 79380, - 79440, - 79500, - 79560, - 79620, - 79680, - 79740, - 79800, - 79860, - 79920, - 79980, - 80040, - 80100, - 80160, - 80220, - 80280, - 80340, - 80400, - 80460, - 80520, - 80580, - 80640, - 80700, - 80760, - 80820, - 80880, - 80940, - 81000, - 81060, - 81120, - 81180, - 81240, - 81300, - 81360, - 81420, - 81480, - 81540, - 81600, - 81660, - 81720, - 81780, - 81840, - 81900, - 81960, - 82020, - 82080, - 82140, - 82200, - 82260, - 82320, - 82380, - 82440, - 82500, - 82560, - 82620, - 82680, - 82740, - 82800, - 82860, - 82920, - 82980, - 83040, - 83100, - 83160, - 83220, - 83280, - 83340, - 83400, - 83460, - 83520, - 83580, - 83640, - 83700, - 83760, - 83820, - 83880, - 83940, - 84000, - 84060, - 84120, - 84180, - 84240, - 84300, - 84360, - 84420, - 84480, - 84540, - 84600, - 84660, - 84720, - 84780, - 84840, - 84900, - 84960, - 85020, - 85080, - 85140, - 85200, - 85260, - 85320, - 85380, - 85440, - 85500, - 85560, - 85620, - 85680, - 85740, - 85800, - 85860, - 85920, - 85980, - 86040, - 86100, - 86160, - 86220, - 86280, - 86340, - 86400 - ], - "y": [ - 0, - 4.8186621523931824e-05, - 9.398154449108292e-05, - 0.0001329855761234205, - 0.00015814015909143341, - 0.00016483162691581296, - 0.00015856337202277366, - 0.00015839456663288985, - 0.00016859660094083054, - 0.00018029284000882322, - 0.00019075988241861716, - 0.00020616975598592693, - 0.00022513433096488504, - 0.0002320923097322879, - 0.00022852662613468818, - 0.00022606825272050723, - 0.00023243036332729487, - 0.0002529199978271329, - 0.0002818778410142926, - 0.00030706525891618865, - 0.0003134304100862912, - 0.00030082034891009573, - 0.00028985797133233913, - 0.0002851014747833054, - 0.00029024953212472413, - 0.00030978659151907465, - 0.0003506399656279963, - 0.0003886345977219984, - 0.0004048088256937873, - 0.00042435595353943606, - 0.0004536103418056754, - 0.00048328711526186233, - 0.0005097593319507051, - 0.0005285766064257946, - 0.0005125596375420259, - 0.0004956495346000705, - 0.0004969738558192349, - 0.0004963985537382217, - 0.0005255701337805458, - 0.0005552286814216343, - 0.0005594030249514992, - 0.0005575908722470898, - 0.0005387380775134122, - 0.000532441451312561, - 0.0004550361146225499, - 0.0004721643202565901, - 0.000533525325492357, - 0.0005322132894944315, - 0.0005057701620628076, - 0.0005259324726844013, - 0.0005182298646762237, - 0.0004906415639673125, - 0.0005256397319026032, - 0.0005293775512455697, - 0.0005213905853719059, - 0.0005405569156976118, - 0.0005685379830670333, - 0.0005701036868581411, - 0.0005553192122396871, - 0.0005503529941688712, - 0.000554026999295653, - 0.0005539828213634593, - 0.000530090074296496, - 0.0004907534739801831, - 0.00047762714480953486, - 0.00045492860828568273, - 0.0004399293245713279, - 0.0004905579349094658, - 0.0005075386223638315, - 0.0004825234583188092, - 0.0004773498129735732, - 0.00044090274086682624, - 0.0004232953939450174, - 0.0004475726066305935, - 0.0004737099967505964, - 0.00048084181753337246, - 0.00048653905083204005, - 0.0004919638368635706, - 0.0004742737459869286, - 0.0004338691052355864, - 0.0003948014649337044, - 0.00037848519864765396, - 0.00035174535399434484, - 0.00033217683549836575, - 0.000316616803804802, - 0.00028118899758470753, - 0.0003148240942131225, - 0.0003273308202074536, - 0.00025970882556351066, - 0.00018500111708029025, - 0.00018999109778793, - 0.0002059371068973147, - 0.00022440548329513008, - 0.00024348651298013404, - 0.00023173002917460067, - 0.00020196245270103579, - 0.00018608169843923513, - 0.00019829241828257677, - 0.00020151162051593112, - 0.00019826886995988208, - 0.0001552400257243131, - 8.40520299524718e-05, - 6.755571278865151e-05, - 8.853721250118373e-05, - 0.0001049784177084238, - 0.00011227637625409119, - 0.00012081136879681075, - 0.00013381612015769335, - 0.00013565417687767, - 0.00013040672370807913, - 0.00014351043795453935, - 0.00016123573531782076, - 0.00017269344929804573, - 0.00018360608136101794, - 0.00020006294114275572, - 0.00022339606013438418, - 0.0002478040244891795, - 0.00026464483235952047, - 0.00029420130561274156, - 0.0002940991029281799, - 0.00025113163831482003, - 0.000380348634836491, - 0.0004143970503812272, - 0.0003701983924636888, - 0.0003872157970479292, - 0.00038450396052286905, - 0.0003899841040755511, - 0.00039544999177857444, - 0.00040658656753654626, - 0.0004388333885981297, - 0.0004292826882182896, - 0.0004497620105134684, - 0.0005170969551588604, - 0.000553471139218685, - 0.0005986477775480951, - 0.0006045667511012454, - 0.0005986656793122634, - 0.0006041145480379972, - 0.0006187950145029366, - 0.0006368885355281828, - 0.0006430973619773017, - 0.0006532487412706283, - 0.0007386577639150567, - 0.0007596558005016434, - 0.0007474034727135927, - 0.0007554581982170207, - 0.0008131863534291725, - 0.0008141914962987196, - 0.0008222032525306473, - 0.0008570984803515192, - 0.0008573145954129293, - 0.0008386135765737599, - 0.0008207406202694221, - 0.0008275343615255434, - 0.0008519360308930662, - 0.0008603665702166909, - 0.0008509452294976512, - 0.0008455723025697975, - 0.0008494247539876172, - 0.0008640768786086991, - 0.0008835600354495373, - 0.0008836564045486179, - 0.0008577136677061615, - 0.0008229611714546418, - 0.0007894097066254237, - 0.0007896486484074937, - 0.0008614160723068849, - 0.0009128910738122558, - 0.0008600766856014806, - 0.0008196638885511497, - 0.0008203313365635322, - 0.0008324072055853752, - 0.0008648131201618922, - 0.0008423838036388082, - 0.0008157114795170436, - 0.0008361723136451281, - 0.0008469196931566561, - 0.0008288402963933379, - 0.0008281272183582024, - 0.0008751952721321541, - 0.0008832670599287181, - 0.0008778941340262583, - 0.0009152265694143469, - 0.0009267632371077586, - 0.0008965995391891676, - 0.0009206215062845787, - 0.0009552836750292378, - 0.0009649528433679188, - 0.0009488527358717201, - 0.0008985207428097403, - 0.0008316233323151275, - 0.0007210410312265462, - 0.0006446722973281926, - 0.00067111740761524, - 0.000728493661573363, - 0.0007111424673399947, - 0.0006687876427198333, - 0.000646160056469395, - 0.0006540006963429415, - 0.0006848623443380188, - 0.0007213915713548974, - 0.000749440761316982, - 0.0007395437911990412, - 0.0007399950791526024, - 0.0007450862644143135, - 0.000726785876740204, - 0.0007359013255448715, - 0.0007472946204375001, - 0.0007315405120859768, - 0.0007074204428373306, - 0.0007161870173942277, - 0.0007504526066850272, - 0.0007624200807637292, - 0.0007952468796950993, - 0.0008392035168357468, - 0.0008524998853384487, - 0.0008606103024821649, - 0.0008467456247653619, - 0.0008221621073938171, - 0.0008526401666625024, - 0.0008932784061147341, - 0.0009207719334257606, - 0.0009316227731662509, - 0.0009353819892269776, - 0.0009442270472899451, - 0.0009654671808226341, - 0.0009976757981146522, - 0.0010299406384434758, - 0.0010566795171794803, - 0.0010728818981679015, - 0.0010801227923898456, - 0.0010752178751626627, - 0.0010662209198460382, - 0.0010721138404898175, - 0.0010834765808484643, - 0.0010894225061424498, - 0.0011331665932277257, - 0.0012410248890581126, - 0.0013552626414588822, - 0.001418561194898584, - 0.001411571778401148, - 0.001414395357412566, - 0.0014065618599124012, - 0.0013787388178150928, - 0.0013683823261788665, - 0.0012904519725905853, - 0.0012169985897391865, - 0.0012133834792133788, - 0.0012332610278265497, - 0.0012330544599679768, - 0.0012404354792715528, - 0.0012519578659065246, - 0.00125246694761779, - 0.0012420904239337815, - 0.0012263106008872323, - 0.0012267119529034475, - 0.0012431736641061427, - 0.0012597385559566915, - 0.0012678179514089072, - 0.0012643639937058746, - 0.001257699230492001, - 0.0012507629147280855, - 0.0012501205004848272, - 0.0012697708154666778, - 0.00129378140482542, - 0.0012974700022868838, - 0.0012808211363031408, - 0.0012526415346529977, - 0.001218940744505662, - 0.001188391409703447, - 0.0012041761317408413, - 0.0012606573108844706, - 0.0012441458238642699, - 0.0011951638754630412, - 0.00121526964097195, - 0.0012076421661949854, - 0.0011669825425746605, - 0.0011376061817380864, - 0.001100537348598541, - 0.0010692022770809192, - 0.001070908849887083, - 0.001072620847877073, - 0.0010488795863228587, - 0.00103617059386061, - 0.0010344542713046254, - 0.000998977908641287, - 0.0010498164473798, - 0.0010855615122591397, - 0.0010248890919685968, - 0.000974444985140263, - 0.0010325371216651673, - 0.0010515740732714178, - 0.001007066969977442, - 0.0009827277030391352, - 0.0010146571897694443, - 0.0009911811908455918, - 0.0008805717030391734, - 0.0008383831198179822, - 0.0008602278095602885, - 0.0008716934255931627, - 0.0008685179840101496, - 0.00087732973184347, - 0.0008927598022878083, - 0.0009118466420638581, - 0.0009510939762872853, - 0.0009936161935442424, - 0.0010051887790920241, - 0.0009962327177653815, - 0.0010141113138651837, - 0.0010514288142298295, - 0.001054584033552959, - 0.001038666938372499, - 0.0010337280822291953, - 0.0010351562555581323, - 0.00105877614029724, - 0.001099747181127772, - 0.001136766734886657, - 0.0011725351560329471, - 0.0012084546532607594, - 0.0012377212958465185, - 0.0012556850555101606, - 0.0012648650011144024, - 0.0012813174949679134, - 0.0013140022021265936, - 0.0013531802551467198, - 0.0013916532612690711, - 0.001428483270168278, - 0.0014630986025160422, - 0.001494995261496236, - 0.001522180204655822, - 0.001557482318300484, - 0.0015985826660208403, - 0.0016190187328099129, - 0.0016095869671759967, - 0.0015879403748492891, - 0.0015577478512678775, - 0.001535047417442641, - 0.0014949810897388791, - 0.0014894872293518251, - 0.0014650331737020362, - 0.0014678889051090841, - 0.001600801206569887, - 0.0017854730310290713, - 0.0019347569809634794, - 0.002064931469184538, - 0.002111608663595359, - 0.002104154638456688, - 0.0020877633653187348, - 0.0020718416333076256, - 0.002069251486044583, - 0.002086558620496619, - 0.0020765080605237955, - 0.0020542174775157666, - 0.0020543008129544956, - 0.002068469430602096, - 0.002077327908256671, - 0.0020690124307208573, - 0.002043185103852444, - 0.0020180752611755857, - 0.0020109389454126283, - 0.0020304611192537188, - 0.0020633522109597255, - 0.0020808107448907947, - 0.0020773393271155175, - 0.0020655687551500075, - 0.0020577578295803193, - 0.00205868013871058, - 0.002070054614097758, - 0.0020946652014520173, - 0.0020970419442317046, - 0.0020657108320281483, - 0.002057475115282406, - 0.0020849175789247184, - 0.0021400324597055046, - 0.0020774584448329074, - 0.0020325063915008984, - 0.0020682049017723162, - 0.002060443514249159, - 0.0020293062734893395, - 0.002017973325490829, - 0.0020264907238882928, - 0.002020481914811291, - 0.0019929777016391677, - 0.0019813251286667976, - 0.0019617944043992977, - 0.0019199212857658053, - 0.0019589068486382775, - 0.0020253015062266207, - 0.0020032707739589066, - 0.0018876571047496042, - 0.001781506095000772, - 0.0017681911867272451, - 0.0017821642367715567, - 0.0017734312175697875, - 0.001760443338175144, - 0.001731696124086455, - 0.001697687379248151, - 0.0016828044267320516, - 0.0017231828060077163, - 0.00171060910498987, - 0.001645215066785221, - 0.001628368671587291, - 0.0016353247812631703, - 0.0016252819591006482, - 0.0016079754745238904, - 0.0015944026034262174, - 0.0015801958713245877, - 0.0015624664131284694, - 0.0015513567174301743, - 0.001552173996032634, - 0.0015385316918843078, - 0.0015217110558613661, - 0.0015225626775630702, - 0.0015243088136279823, - 0.001516120578577238, - 0.0015047968143802278, - 0.0014920840027592638, - 0.0014788320997988127, - 0.0014738704205668823, - 0.0014811386026710417, - 0.0014875875570152836, - 0.0014780635096280526, - 0.0014576792459165665, - 0.001449108504595549, - 0.001451749427817146, - 0.0014386472494945098, - 0.0014165157700782541, - 0.0014318259799384033, - 0.0014722345116906903, - 0.0014839124463534835, - 0.0014931453766982357, - 0.0015398593003389238, - 0.001588751600274864, - 0.001581059562645533, - 0.0015802240691081214, - 0.0015966210594156973, - 0.001581696434219966, - 0.0016254782547739414, - 0.0017490273995201438, - 0.001775247981630149, - 0.0015060681426977982, - 0.0013509171075749918, - 0.0013290050952430143, - 0.0013154640897091638, - 0.001344967818725034, - 0.0013645451065902243, - 0.001367687330148616, - 0.0013759545618602048, - 0.0014148433733905447, - 0.0014661796454322452, - 0.001471184175670377, - 0.001466681299844875, - 0.001482689819218885, - 0.0015090464370637617, - 0.0015426011406107205, - 0.0015575137294485107, - 0.0015444114173443493, - 0.001566878798396181, - 0.0015854318684422508, - 0.0015778689521314777, - 0.0015450436257144298, - 0.0014815483560675683, - 0.0014666629404030053, - 0.0014800181794835496, - 0.0014870769149791937, - 0.0014990581296973559, - 0.001482206707554506, - 0.0014938768034542956, - 0.001544193482700275, - 0.0015371723683373036, - 0.0014878541774089936, - 0.0014554796343189185, - 0.0014600720645233825, - 0.0014848895730930536, - 0.0014395535432188227, - 0.0013882679860894723, - 0.0014062394727969295, - 0.0014298236629075487, - 0.0014230172355897217, - 0.0013965874154136017, - 0.0013863284930931384, - 0.0013956445000108597, - 0.0014287611898988225, - 0.0014959251944928953, - 0.001516998303194262, - 0.001450812775000316, - 0.0013266475208069724, - 0.001309166105399477, - 0.0013249280859856584, - 0.0012981924654972025, - 0.0012732197446249675, - 0.0012492218134779192, - 0.0012728990002766154, - 0.0013196783327613477, - 0.0013030445214179114, - 0.0012756508364508167, - 0.001261753222271262, - 0.00125804710333149, - 0.0012599268088356885, - 0.0012640131266892587, - 0.0012708547437773427, - 0.0012773328404075777, - 0.0012739956818738428, - 0.0012553093336001087, - 0.00123205817507032, - 0.0012364591207323023, - 0.0012773338995658546, - 0.0013106789990160299, - 0.0013100881341355404, - 0.0013100100156123024, - 0.0013244521399762618, - 0.0013442791846911908, - 0.0013679879956217161, - 0.0013813108207191332, - 0.0013778755473903134, - 0.0013726853474276093, - 0.001377437985295539, - 0.0013903996517663027, - 0.0014079136757118417, - 0.0014266152459335444, - 0.0014454767552275595, - 0.0014573730409376381, - 0.001457631881830665, - 0.0014619164058068863, - 0.0014704696719135299, - 0.001471757823310294, - 0.0014713865867183305, - 0.001469034514929652, - 0.0014529190423943031, - 0.0014662684953002472, - 0.0014832479097795553, - 0.0015394402588275837, - 0.0015412791057027278, - 0.0015388597015443888, - 0.0015716342719770738, - 0.0015720629983498322, - 0.0014853130206379723, - 0.0015665224151947118, - 0.0017465111126884994, - 0.0018177465511430707, - 0.0018610887281409858, - 0.001888553493933164, - 0.0018832699953814814, - 0.0018727880654922182, - 0.0018677722550557074, - 0.0018533437638590014, - 0.0018467156371261787, - 0.0018375871481442344, - 0.0018313906190600973, - 0.0018304830697237703, - 0.0018035391007681994, - 0.0018047925840836295, - 0.0018227378439012248, - 0.0018541106787786216, - 0.0018825650432462565, - 0.0018602210911414637, - 0.0017778153985910958, - 0.0017923524757594692, - 0.001867423139365495, - 0.0019057750815911522, - 0.0018662159513696812, - 0.0018214385888650974, - 0.0018604013149929972, - 0.0019051668811317704, - 0.0018998708784367907, - 0.0018484081186597235, - 0.0018451464408887073, - 0.001853431863568101, - 0.0018429015995220348, - 0.0018245243114329217, - 0.001814705458557562, - 0.0017896123095171971, - 0.0017863731600866917, - 0.001793550160135575, - 0.0017685115015826254, - 0.0017356225632420919, - 0.0017386063617444894, - 0.0017718276230084512, - 0.0018364538838185327, - 0.0018906595411050397, - 0.001886554147437627, - 0.0018548712843519833, - 0.0017550036272170077, - 0.0017376084609789018, - 0.0018212606617566756, - 0.0018387863599484292, - 0.0018120692131117907, - 0.0018252461090070308, - 0.0018454508876431194, - 0.0018410187669510017, - 0.001791858516037929, - 0.001777804988330153, - 0.0017958149197061807, - 0.0017993308702605446, - 0.0017971428336888916, - 0.0017944109978666343, - 0.0017897105531718722, - 0.0017845641649272576, - 0.0017853059833365544, - 0.0017960788752874538, - 0.0018072335458125955, - 0.0017992789637333892, - 0.0017724862868843602, - 0.001762362238399751, - 0.0017794175373451147, - 0.0017949256164092617, - 0.001801545792669971, - 0.0018116546389858419, - 0.001829715427729335, - 0.0018511974904033884, - 0.0018625758070481425, - 0.0018526809075102098, - 0.0018390003722171995, - 0.0018331113699745834, - 0.0018425448686191675, - 0.001856137231270586, - 0.0018708273296077055, - 0.0018733389614265126, - 0.0019112878437051097, - 0.00199185132543611, - 0.002010498664065757, - 0.001995500748027197, - 0.0019907667147357998, - 0.0020094261094495596, - 0.0020420926567677905, - 0.002098912835361225, - 0.0021125803245183464, - 0.00206704206279509, - 0.002064793903212541, - 0.0020530444173036595, - 0.0020842907759837993, - 0.002078746514666132, - 0.001989537339092769, - 0.001994485829284037, - 0.002001810740393316, - 0.0018990517124944624, - 0.0018966171288994492, - 0.0019306331774287214, - 0.0019214053268410288, - 0.0019226085753282537, - 0.0019399946543840214, - 0.0019547634503029082, - 0.0019555911879877573, - 0.0019400559259156274, - 0.0019250927403676372, - 0.0019341917520654798, - 0.0019469436033678377, - 0.0019511753648300953, - 0.0019561578575287603, - 0.0019558544371455237, - 0.0019485465355168824, - 0.0019435101520996353, - 0.0019410215691436938, - 0.0019350748995376698, - 0.001928364953508053, - 0.0019206235310283027, - 0.0018981970653278687, - 0.0018661967958692872, - 0.001854381661175911, - 0.001866237869141555, - 0.001887578751823502, - 0.001891141970821057, - 0.0018781445460574922, - 0.0018582085011210638, - 0.0018324201087919839, - 0.001815303538839129, - 0.0018067833675997063, - 0.0017992789233183817, - 0.0017926019222766194, - 0.0017922935180206883, - 0.0017959039557663996, - 0.001793906142115696, - 0.0017933791087211227, - 0.0017905605708275626, - 0.0017260014526072954, - 0.0016190097028684534, - 0.001553523478869607, - 0.0015210714005860603, - 0.0014454040863573223, - 0.0013372656164934347, - 0.0013854760379058677, - 0.0014551186778230954, - 0.0014636996897317946, - 0.0014615362545862094, - 0.0014896728247420052, - 0.001475053231182546, - 0.001419939485291118, - 0.001421777238965258, - 0.0014354434535217588, - 0.001418277518529377, - 0.001387418518237316, - 0.0013817627384586136, - 0.0013927353541621956, - 0.0014078155677984562, - 0.0014165214936523896, - 0.0014065758405200886, - 0.0013842405029731294, - 0.0013783868877165907, - 0.0013749968636912644, - 0.001359820201163023, - 0.001353582057942775, - 0.0013856132171112972, - 0.0014401073881370585, - 0.0014682037443167347, - 0.0014680011937151342, - 0.001469240942843551, - 0.0014848290482440728, - 0.001501677113530383, - 0.0015187622455390907, - 0.0015270423426656157, - 0.0015346160306441874, - 0.0015584229656159282, - 0.001578112279792454, - 0.001572395251481392, - 0.0015805486746942852, - 0.001603785028944173, - 0.0016174626988067272, - 0.0016193384572132394, - 0.0016438941556093285, - 0.0016897211541151787, - 0.0016893814737239797, - 0.001663105074537841, - 0.0016614788964474062, - 0.0016710347477439371, - 0.0016506230364240187, - 0.0015929904999061903, - 0.0017043127776691538, - 0.0018055837766325217, - 0.0017688413380375718, - 0.0017016421985399015, - 0.0017446190916599858, - 0.0017562210485461453, - 0.001756726719542311, - 0.0017689871247548446, - 0.0017997867507559063, - 0.0018029404835449847, - 0.0018087927750354113, - 0.0018121475941595725, - 0.0018174479316781466, - 0.0018300005532752102, - 0.0018345290775162607, - 0.001825944884805895, - 0.0018246513220770242, - 0.0018392149359035936, - 0.0018570204667340455, - 0.0018689301833193107, - 0.001876511045504734, - 0.001886717632630054, - 0.0019041115563920132, - 0.0019200370284939829, - 0.0019230018335714397, - 0.001910403004596114, - 0.0018926918961051425, - 0.0018676528178803071, - 0.0018427097197478025, - 0.001841352743795961, - 0.0018569376764060613, - 0.0018684835857031696, - 0.0018691792911434365, - 0.0018596505558130918, - 0.0018411071195556337, - 0.0018229790578127712, - 0.0018126283180589784, - 0.001796604645341707, - 0.0017742609342691227, - 0.0017780610820365462, - 0.0017726493690824992, - 0.0017361634227506812, - 0.0017022813947490463, - 0.0017006093399243379, - 0.001720402183271881, - 0.0017460743188088652, - 0.0017742633188670837, - 0.0018200824448325725, - 0.0018291953270440382, - 0.0017313666938266622, - 0.001699204539898449, - 0.0017823457559190655, - 0.0018169230003442095, - 0.0017779326567565813, - 0.0017102458096178144, - 0.00167253911611434, - 0.0016479805157704093, - 0.0016634654304147393, - 0.0016702141210960249, - 0.0016586139345510754, - 0.001645247562632114, - 0.0016429234055548034, - 0.0016473555819621094, - 0.0016500672771527967, - 0.001669037457424457, - 0.0017055645930099624, - 0.0017190262604251615, - 0.0016686235356828223, - 0.0016361110238886578, - 0.0016539646074802592, - 0.0016806669154180035, - 0.0017027576600922004, - 0.0017350489342161045, - 0.001789119119259712, - 0.001819794510308855, - 0.001800870925193698, - 0.0017703923194333788, - 0.0017645061233405187, - 0.0017900617430841466, - 0.001828081291124947, - 0.0018304908467159508, - 0.0018232112967386635, - 0.001822036062259228, - 0.001828520213234377, - 0.0018448058905282214, - 0.0018657730014557644, - 0.001877290420103483, - 0.0018797385660668155, - 0.0018782863543088033, - 0.001902755374451059, - 0.0019401718832245775, - 0.0019427577806381074, - 0.0019263528572443464, - 0.0019324516010749975, - 0.001955393471524504, - 0.0018984919786956898, - 0.0019936277450209768, - 0.002162639342842265, - 0.002223348999577521, - 0.0021414005363266176, - 0.0021112743810865007, - 0.002174208975359855, - 0.002238001436249964, - 0.0022412449264522143, - 0.002245129381466575, - 0.0021846672721861733, - 0.002182576086948972, - 0.0022000427995636208, - 0.0022072779899319295, - 0.0022064163808892126, - 0.002194971736015657, - 0.002185028196249078, - 0.00218310131373795, - 0.0021968792337379414, - 0.002204801794741567, - 0.002212798376259726, - 0.0022394566098817275, - 0.002257784450951906, - 0.0022260318972180723, - 0.002228869588554846, - 0.0022712766679463432, - 0.0022034765937758907, - 0.002293884487268424, - 0.0023300441837937084, - 0.0022126494000120453, - 0.002152234711704453, - 0.002147352125187172, - 0.002177030984821663, - 0.00219670602291256, - 0.002188700496662797, - 0.002178497035673657, - 0.002181299713263305, - 0.002187786032973176, - 0.0021693960998335608, - 0.002120540166482781, - 0.0021174329430126734, - 0.002106179469133099, - 0.002087192447067302, - 0.002075805137794763, - 0.002028799666039221, - 0.0020298403521879496, - 0.0020562225194686755, - 0.0019742248432576535, - 0.0018581062725403072, - 0.001844955727290279, - 0.001857203536439412, - 0.0018525453802479457, - 0.0019163427798351348, - 0.00198417859608605, - 0.001991825746558103, - 0.001962241163503322, - 0.0019537634026267343, - 0.0019639740635959057, - 0.0019467461897686822, - 0.0019753640826485398, - 0.0019871109563279793, - 0.0019294968698541865, - 0.001938063840031947, - 0.0019906081268213044, - 0.001981774606003653, - 0.0019951625369268506, - 0.0019801628320657585, - 0.0019478946997933061, - 0.0019738595949000443, - 0.001991247065913908, - 0.0019831326204332064, - 0.0019813595243494435, - 0.0019724875176168797, - 0.001953776687741091, - 0.001961397415061677, - 0.001984537434718227, - 0.001999393519121928, - 0.0019798997176829125, - 0.0018997671165842797, - 0.0019114330989152227, - 0.0020000197573113872, - 0.002035678159417, - 0.002029358767051665, - 0.002016481541712985, - 0.002012670612041469, - 0.002022367311394606, - 0.002047823798165556, - 0.0020817751213363426, - 0.0021085005695713776, - 0.0021124131710851973, - 0.0021078359092234875, - 0.0021164024665538215, - 0.0021327495860665, - 0.0021651722015440817, - 0.0021967020443230756, - 0.0022182180360262316, - 0.002261094987368323, - 0.0023709726365764502, - 0.0023070921753900525, - 0.0020820650725378795, - 0.001968373555129602, - 0.0019142724992152304, - 0.0019273684851410463, - 0.0019829671955297248, - 0.0020629635869073605, - 0.002125795101643634, - 0.0022714614406630987, - 0.002356509382790741, - 0.0023635921215151142, - 0.0024236161029651533, - 0.0024529570327260267, - 0.0024472665124314432, - 0.0024672564380867064, - 0.0024903050303734108, - 0.0024833559119925934, - 0.0025027709140139115, - 0.0024953039270543534, - 0.0024956291489993013, - 0.0025028837437844954, - 0.0025013934927994477, - 0.0024871069886311823, - 0.002466444367861501, - 0.0024564693883981485, - 0.002465831730491347, - 0.0024864605775436147, - 0.002476211651544977, - 0.0024328974428140453, - 0.002391054111166735, - 0.0023529280345652485, - 0.0023383675156749663, - 0.002329237691989311, - 0.002326286207432255, - 0.0023102274420632295, - 0.0022893979524286363, - 0.0022655213099217193, - 0.0022305451396452207, - 0.002230049330898015, - 0.0022539428652683016, - 0.0022633930500602644, - 0.002267425587031995, - 0.0022712143136787875, - 0.002262011089198634, - 0.0022557252077816943, - 0.0022579612125316257, - 0.002270002308196999, - 0.0022712277265162185, - 0.002277374929965078, - 0.00227925568531618, - 0.0022684855386106966, - 0.0023029717119553055, - 0.0023300732732037185, - 0.0023302572879158956, - 0.0023057045083046046, - 0.002303257188216368, - 0.002249421870451649, - 0.00213485168236871, - 0.0021601887929201683, - 0.0022216604612428333, - 0.002255191269309018, - 0.002286163426919868, - 0.0022815401479313693, - 0.0023152401117741855, - 0.0023442302621490803, - 0.0023433696194971503, - 0.0023510194833129845, - 0.002345589912198349, - 0.00237567969016122, - 0.0024002475348275944, - 0.002336387944177546, - 0.002345629487584494, - 0.002398601030152897, - 0.0024317129081654777, - 0.0024302143928028952, - 0.002415042903431751, - 0.0024020196613700707, - 0.0024020100496300015, - 0.0024186133304893585, - 0.002453520926549107, - 0.0024923310160432023, - 0.0025157562356055052, - 0.002520043159603612, - 0.002515106178318013, - 0.0025125008243680968, - 0.00251908116609932, - 0.0025367516441121138, - 0.0025585889586829777, - 0.002567290295053409, - 0.002555648697117122, - 0.002566016575911972, - 0.002584664168337567, - 0.002556887502374276, - 0.0025128540804417528, - 0.0024906932983195505, - 0.0024743172637557227, - 0.002446394118661045, - 0.002545095651797487, - 0.002675026548982608, - 0.002806383327620788, - 0.002855920128648964, - 0.002915350460900188, - 0.0029889590280922926, - 0.0030415968325485498, - 0.002933865787259736, - 0.0029158884253567947, - 0.0029478124186290986, - 0.0029594771030695497, - 0.0029319439383186717, - 0.002907692382663851, - 0.0028970626251174744, - 0.002881684167808144, - 0.0028676892792323964, - 0.0028646287880118478, - 0.0028708140248533617, - 0.002882990796594221, - 0.002893802474457655, - 0.0028930851173818014, - 0.0028754275717491153, - 0.0028511426688687803, - 0.002837190285950092, - 0.002836652142475134, - 0.002845031730407909, - 0.0028545754642562552, - 0.002859626097529697, - 0.002867571514292456, - 0.002873718514746369, - 0.002860219442993794, - 0.002833053293439108, - 0.0028032460616558602, - 0.002777200508802176, - 0.0027695477220826916, - 0.002778823513857612, - 0.002790322130585038, - 0.0027843205197708313, - 0.002778121747214894, - 0.002816761663955925, - 0.0028285624851415673, - 0.002774746615813076, - 0.0027392778096258685, - 0.0027902521989576555, - 0.002799597194336491, - 0.002766194370012168, - 0.002733702303974896, - 0.002735612849878764, - 0.002699196530392464, - 0.0026614760166809768, - 0.0026283119386036956, - 0.002630237957906413, - 0.002597942720882764, - 0.002575954427648258, - 0.00253431873518823, - 0.002607827008018042, - 0.0027152870997919657, - 0.0027444214590599085, - 0.002763176818233795, - 0.0027429301774771963, - 0.0026708207655749597, - 0.002633759588378513, - 0.0026447760044422796, - 0.0026591844475339207, - 0.002665698299585826, - 0.002644579667885909, - 0.0025981221850831264, - 0.002573210642953341, - 0.0025762823613368247, - 0.0026020646652543896, - 0.002613123859193412, - 0.0026048355611148198, - 0.0025814549905643813, - 0.002572191707003841, - 0.002564310076411165, - 0.0025517213319470704, - 0.0025348405993194946, - 0.0025161777530420633, - 0.002499665901704155, - 0.002499416851821522, - 0.0025209581252429876, - 0.002541328811685936, - 0.0025449994639344703, - 0.0025379591710845326, - 0.0025278390992428106, - 0.002541498644612487, - 0.00257757460545324, - 0.002608445528458373, - 0.0026125831470763163, - 0.002643477142055177, - 0.0027033655487183955, - 0.0027291205927219343, - 0.0027510823306326464, - 0.0027844507037878908, - 0.002827703889408058, - 0.002886008610747633, - 0.002936108259386548, - 0.0028879123591445165, - 0.0027558090602297315, - 0.0026613873282797587, - 0.0026707485993402833, - 0.0027620625376402305, - 0.0028529312547923183, - 0.0028306425101046998, - 0.002726527598344382, - 0.002664000231213206, - 0.002670836142839886, - 0.0027208625161578926, - 0.0027576377240719806, - 0.0027983688007725735, - 0.0028473420572854313, - 0.0028823334559195473, - 0.0028970395870458977, - 0.002909976267408747, - 0.0029285929957192096, - 0.0029440808230371553, - 0.002944365035698445, - 0.0029342367041316018, - 0.0029276154142666736, - 0.002929817905139358, - 0.002932846437961859, - 0.002929706748418655, - 0.0029225573814588195, - 0.0029132166547683083, - 0.0029027221142517985, - 0.0028993141723639023, - 0.00290397118358407, - 0.002900156688891057, - 0.0028854511679859245, - 0.002887535750722283, - 0.0028937760209094797, - 0.0028735975769020434, - 0.0028367309709584707, - 0.002804986855810133, - 0.002787891768870839, - 0.002782528715652789, - 0.0027801474409926666, - 0.002773601810663171, - 0.0027637178961042383, - 0.0027533334121435027, - 0.0027413882757852705, - 0.0027259159291980178, - 0.0026955378854838347, - 0.002650997245417293, - 0.0026102520847568443, - 0.0026087981850531497, - 0.002636359991244368, - 0.0026796633342256893, - 0.0026532038802128516, - 0.0025865665044377912, - 0.0025457591817102214, - 0.0025149756387353437, - 0.002590985449616244, - 0.0025970677980691626, - 0.0025446052650246625, - 0.0025317859884197726, - 0.0024915478926855624, - 0.0025005247361029486, - 0.0025272961947313513, - 0.0025345751794771045, - 0.002513258264806916, - 0.0024726878908776003, - 0.002474449645234094, - 0.002508985124701245, - 0.0025754971891488146, - 0.0025483693696706387, - 0.0024733512895919077, - 0.0024990610065078636, - 0.002525424167786509, - 0.002527178923957593, - 0.002541494492576037, - 0.002578591666437037, - 0.00261973399824569, - 0.0026417320621933394, - 0.0026369408585148763, - 0.0025898719342187996, - 0.002583665351151127, - 0.002575293488078255, - 0.002520768283892302, - 0.0025159820786082835, - 0.0025805336498027987, - 0.002624615183316583, - 0.0026418275084367318, - 0.002649891154126973, - 0.0026651533556355527, - 0.0026590924026897197, - 0.002656214513625199, - 0.002664668075408672, - 0.002659002650272572, - 0.0026660594582414775, - 0.0026895687458396863, - 0.002704894337140543, - 0.0027067850612197894, - 0.0027149279075087403, - 0.002772578303308425, - 0.002893506440318465, - 0.0029309449935947295, - 0.0029274335681787294, - 0.0030141944028101372, - 0.0030740571768121043, - 0.0030424251719880675, - 0.003057682935702903, - 0.003160702794152073, - 0.003274473259775974, - 0.0033093146556262953, - 0.0032813156123710748, - 0.003251334145307855, - 0.003257276462511269, - 0.0032925570278082342, - 0.003311614522660622, - 0.0033082885773992343, - 0.003324338854290944, - 0.0033633841620650485, - 0.003393049964828198, - 0.0034096546444891476, - 0.003427556602261165, - 0.003447916659663044, - 0.0034600347024374774, - 0.0034567665819270456, - 0.0034468253115185615, - 0.00345129247241694, - 0.003472945031958501, - 0.0034937261372494414, - 0.0035062683355495273, - 0.0035090656062723552, - 0.0035022425220873066, - 0.003520968686586917, - 0.0035584929168515386, - 0.0035695600838472714, - 0.003550867652770348, - 0.00353671702781532, - 0.003528367712685648, - 0.0035238632881040353, - 0.0035211087714826094, - 0.0035158540735308807, - 0.0035097360881084475, - 0.0035028620870730695, - 0.0034949554135325096, - 0.00348008557230819, - 0.0034736078821235596, - 0.0035061528154736923, - 0.0035562936205461963, - 0.0035331639883189273, - 0.003462268900221238, - 0.0034206537268556573, - 0.0033787954236026295, - 0.0033664570344555268, - 0.0033424867479976994, - 0.003366970716957193, - 0.0033954030847581644, - 0.0033073307643522597, - 0.0032722066317578237, - 0.0033116871174519035, - 0.003291230526953609, - 0.0032640698348923945, - 0.0032395747431352086, - 0.003212637155974112, - 0.0032194371109899554, - 0.0032070002017584947, - 0.003135141050285944, - 0.0031234999122591836, - 0.003183461993061261, - 0.003166943359663426, - 0.0031338031248406622, - 0.0031149416163691367, - 0.0030652199081788677, - 0.0030202677048407544, - 0.0030136802405382316, - 0.003040245002523481, - 0.0030350285476114913, - 0.002973948344079887, - 0.0029239023401261034, - 0.002947035362018768, - 0.0030151677021294588, - 0.003024695372465647, - 0.0029906863244779213, - 0.002961031433715584, - 0.0029396076303028107, - 0.002928964226997611, - 0.002927174663153877, - 0.0029268837743164863, - 0.0029212092020819845, - 0.0029230254197436596, - 0.0029377589185575702, - 0.002938553951217959, - 0.002924492367704123, - 0.0029307380957759575, - 0.002953131457454092, - 0.002963193489412932, - 0.002972034971662431, - 0.0029736348677446515, - 0.0029798810367060377, - 0.0030271976995447283, - 0.003067472566212418, - 0.003121444278640742, - 0.0031680267115916805, - 0.0031177120565266106, - 0.003117159635698769, - 0.0031994947395777413, - 0.003265724087755721, - 0.003263210142531412, - 0.003250383714726341, - 0.0032963273001828195, - 0.003348685018595423, - 0.003381345658696816, - 0.003405392235230741, - 0.003432517027830116, - 0.0034552161843658994, - 0.003462065852566041, - 0.003465589534086013, - 0.003483013055400348, - 0.003507654857296513, - 0.00353567968627366, - 0.0035600638393684207, - 0.003576793449100192, - 0.003582089527078195, - 0.0035853480174812863, - 0.0035873128587053387, - 0.0035978098896491503, - 0.003619249418035086, - 0.0036438664343971913, - 0.0036594020561774576, - 0.0036663140747160337, - 0.0036804517788998053, - 0.003705608508989627, - 0.003716308111609655, - 0.003704777729458606, - 0.003698819581891862, - 0.0037012049294393376, - 0.00370107255997264, - 0.003693504833671433, - 0.003692690544122175, - 0.003693525188222923, - 0.0037010375147994725, - 0.00371036717946078, - 0.0037041203659357686, - 0.0036824195239873576, - 0.0036660759511856276, - 0.003659609853371955, - 0.0036540732494971815, - 0.0036702253285203247, - 0.0037081147376403197, - 0.003723481148390284, - 0.0036904307792388247, - 0.00373827299173702, - 0.0038240007907955308, - 0.0038061739971829594, - 0.003693806287743187, - 0.003625538096664985, - 0.003586647654849848, - 0.003564045976162194, - 0.0035452193669407803, - 0.003515229693581124, - 0.0034920132544911733, - 0.0034410566244415107, - 0.003398269588204269, - 0.003390108674523863, - 0.003355459796458143, - 0.003305685061086387, - 0.003295825822597449, - 0.0033002567166008747, - 0.0032958073173796286, - 0.0032945510087741, - 0.003258843830068041, - 0.0032050523137906735, - 0.0032177267203370038, - 0.0032190463654044365, - 0.0032168989100864816, - 0.0031981697114590894, - 0.003159002753488041, - 0.003125346225253489, - 0.0031007254515313504, - 0.0030780797813321397, - 0.0030608902032136652, - 0.0030499180268398676, - 0.003039213601589848, - 0.0030251335365807526, - 0.0030094948086856854, - 0.0029991447367511527, - 0.002998878148028766, - 0.003007241694709693, - 0.0030020934216718168, - 0.0029836635686909343, - 0.002976254204412928, - 0.0029857737467231284, - 0.002995741221008969, - 0.003000005096570612, - 0.0030140985671497224, - 0.003033907433702473, - 0.0030118608350932136, - 0.003042012294633635, - 0.0031884709927003222, - 0.003109840738786722, - 0.002994905762282627, - 0.0030330478575899735, - 0.003102967574065624, - 0.003089686242920575, - 0.0030510589106330513, - 0.0030511731180943497, - 0.003048560876496002, - 0.0030406797443334596, - 0.0030584127906002484, - 0.0030635234215694996, - 0.003055656420644423, - 0.0030456280103675942, - 0.003039643804421546, - 0.0030689224512653115, - 0.003106092203757528, - 0.0031076392942226295, - 0.0031119412886640523, - 0.0031265730565199035, - 0.0031400980791590487, - 0.0031497540432271856, - 0.0031514970714564723, - 0.0031524101293998554, - 0.0031651608331365456, - 0.0031860916274661986, - 0.003202081133140791, - 0.003203795072903735, - 0.003197332648784982, - 0.003211692352082989, - 0.0032612168601596587, - 0.003303942398389726, - 0.0033072081740675332, - 0.0032904729093808436 + { + "cell_type": "code", + "execution_count": 345, + "metadata": {}, + "outputs": [], + "source": [ + "orbit_df_RMS_list = [\n", + " pd.DataFrame(\n", + " orbit_data_RMS_list[list_ind],\n", + " columns=[\"$Time^{UTC}$\", \"Elapsed secs\", \"${\\delta}x$\", \"${\\delta}v$\"],\n", + " )\n", + " for list_ind in range(0, len(orbit_list))\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 346, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", + " 0 2021-03-20 00:00:00 [UTC] 0.0 0.000000 0.000000\n", + " 1 2021-03-20 00:01:00 [UTC] 60.0 0.001491 0.000048\n", + " 2 2021-03-20 00:02:00 [UTC] 120.0 0.005670 0.000094\n", + " 3 2021-03-20 00:03:00 [UTC] 180.0 0.012266 0.000133\n", + " 4 2021-03-20 00:04:00 [UTC] 240.0 0.020615 0.000158,\n", + " $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", + " 0 2021-03-20 00:00:00 [UTC] 0.0 0.000000 0.000000\n", + " 1 2021-03-20 00:01:00 [UTC] 60.0 0.001432 0.000046\n", + " 2 2021-03-20 00:02:00 [UTC] 120.0 0.005489 0.000092\n", + " 3 2021-03-20 00:03:00 [UTC] 180.0 0.011969 0.000131\n", + " 4 2021-03-20 00:04:00 [UTC] 240.0 0.020217 0.000156]" ] }, - { - "mode": "lines", - "name": "OSTk EGM2008 70x70 minus STK EGM2008 70x70", - "type": "scatter", - "x": [ - 0, - 60, - 120, - 180, - 240, - 300, - 360, - 420, - 480, - 540, - 600, - 660, - 720, - 780, - 840, - 900, - 960, - 1020, - 1080, - 1140, - 1200, - 1260, - 1320, - 1380, - 1440, - 1500, - 1560, - 1620, - 1680, - 1740, - 1800, - 1860, - 1920, - 1980, - 2040, - 2100, - 2160, - 2220, - 2280, - 2340, - 2400, - 2460, - 2520, - 2580, - 2640, - 2700, - 2760, - 2820, - 2880, - 2940, - 3000, - 3060, - 3120, - 3180, - 3240, - 3300, - 3360, - 3420, - 3480, - 3540, - 3600, - 3660, - 3720, - 3780, - 3840, - 3900, - 3960, - 4020, - 4080, - 4140, - 4200, - 4260, - 4320, - 4380, - 4440, - 4500, - 4560, - 4620, - 4680, - 4740, - 4800, - 4860, - 4920, - 4980, - 5040, - 5100, - 5160, - 5220, - 5280, - 5340, - 5400, - 5460, - 5520, - 5580, - 5640, - 5700, - 5760, - 5820, - 5880, - 5940, - 6000, - 6060, - 6120, - 6180, - 6240, - 6300, - 6360, - 6420, - 6480, - 6540, - 6600, - 6660, - 6720, - 6780, - 6840, - 6900, - 6960, - 7020, - 7080, - 7140, - 7200, - 7260, - 7320, - 7380, - 7440, - 7500, - 7560, - 7620, - 7680, - 7740, - 7800, - 7860, - 7920, - 7980, - 8040, - 8100, - 8160, - 8220, - 8280, - 8340, - 8400, - 8460, - 8520, - 8580, - 8640, - 8700, - 8760, - 8820, - 8880, - 8940, - 9000, - 9060, - 9120, - 9180, - 9240, - 9300, - 9360, - 9420, - 9480, - 9540, - 9600, - 9660, - 9720, - 9780, - 9840, - 9900, - 9960, - 10020, - 10080, - 10140, - 10200, - 10260, - 10320, - 10380, - 10440, - 10500, - 10560, - 10620, - 10680, - 10740, - 10800, - 10860, - 10920, - 10980, - 11040, - 11100, - 11160, - 11220, - 11280, - 11340, - 11400, - 11460, - 11520, - 11580, - 11640, - 11700, - 11760, - 11820, - 11880, - 11940, - 12000, - 12060, - 12120, - 12180, - 12240, - 12300, - 12360, - 12420, - 12480, - 12540, - 12600, - 12660, - 12720, - 12780, - 12840, - 12900, - 12960, - 13020, - 13080, - 13140, - 13200, - 13260, - 13320, - 13380, - 13440, - 13500, - 13560, - 13620, - 13680, - 13740, - 13800, - 13860, - 13920, - 13980, - 14040, - 14100, - 14160, - 14220, - 14280, - 14340, - 14400, - 14460, - 14520, - 14580, - 14640, - 14700, - 14760, - 14820, - 14880, - 14940, - 15000, - 15060, - 15120, - 15180, - 15240, - 15300, - 15360, - 15420, - 15480, - 15540, - 15600, - 15660, - 15720, - 15780, - 15840, - 15900, - 15960, - 16020, - 16080, - 16140, - 16200, - 16260, - 16320, - 16380, - 16440, - 16500, - 16560, - 16620, - 16680, - 16740, - 16800, - 16860, - 16920, - 16980, - 17040, - 17100, - 17160, - 17220, - 17280, - 17340, - 17400, - 17460, - 17520, - 17580, - 17640, - 17700, - 17760, - 17820, - 17880, - 17940, - 18000, - 18060, - 18120, - 18180, - 18240, - 18300, - 18360, - 18420, - 18480, - 18540, - 18600, - 18660, - 18720, - 18780, - 18840, - 18900, - 18960, - 19020, - 19080, - 19140, - 19200, - 19260, - 19320, - 19380, - 19440, - 19500, - 19560, - 19620, - 19680, - 19740, - 19800, - 19860, - 19920, - 19980, - 20040, - 20100, - 20160, - 20220, - 20280, - 20340, - 20400, - 20460, - 20520, - 20580, - 20640, - 20700, - 20760, - 20820, - 20880, - 20940, - 21000, - 21060, - 21120, - 21180, - 21240, - 21300, - 21360, - 21420, - 21480, - 21540, - 21600, - 21660, - 21720, - 21780, - 21840, - 21900, - 21960, - 22020, - 22080, - 22140, - 22200, - 22260, - 22320, - 22380, - 22440, - 22500, - 22560, - 22620, - 22680, - 22740, - 22800, - 22860, - 22920, - 22980, - 23040, - 23100, - 23160, - 23220, - 23280, - 23340, - 23400, - 23460, - 23520, - 23580, - 23640, - 23700, - 23760, - 23820, - 23880, - 23940, - 24000, - 24060, - 24120, - 24180, - 24240, - 24300, - 24360, - 24420, - 24480, - 24540, - 24600, - 24660, - 24720, - 24780, - 24840, - 24900, - 24960, - 25020, - 25080, - 25140, - 25200, - 25260, - 25320, - 25380, - 25440, - 25500, - 25560, - 25620, - 25680, - 25740, - 25800, - 25860, - 25920, - 25980, - 26040, - 26100, - 26160, - 26220, - 26280, - 26340, - 26400, - 26460, - 26520, - 26580, - 26640, - 26700, - 26760, - 26820, - 26880, - 26940, - 27000, - 27060, - 27120, - 27180, - 27240, - 27300, - 27360, - 27420, - 27480, - 27540, - 27600, - 27660, - 27720, - 27780, - 27840, - 27900, - 27960, - 28020, - 28080, - 28140, - 28200, - 28260, - 28320, - 28380, - 28440, - 28500, - 28560, - 28620, - 28680, - 28740, - 28800, - 28860, - 28920, - 28980, - 29040, - 29100, - 29160, - 29220, - 29280, - 29340, - 29400, - 29460, - 29520, - 29580, - 29640, - 29700, - 29760, - 29820, - 29880, - 29940, - 30000, - 30060, - 30120, - 30180, - 30240, - 30300, - 30360, - 30420, - 30480, - 30540, - 30600, - 30660, - 30720, - 30780, - 30840, - 30900, - 30960, - 31020, - 31080, - 31140, - 31200, - 31260, - 31320, - 31380, - 31440, - 31500, - 31560, - 31620, - 31680, - 31740, - 31800, - 31860, - 31920, - 31980, - 32040, - 32100, - 32160, - 32220, - 32280, - 32340, - 32400, - 32460, - 32520, - 32580, - 32640, - 32700, - 32760, - 32820, - 32880, - 32940, - 33000, - 33060, - 33120, - 33180, - 33240, - 33300, - 33360, - 33420, - 33480, - 33540, - 33600, - 33660, - 33720, - 33780, - 33840, - 33900, - 33960, - 34020, - 34080, - 34140, - 34200, - 34260, - 34320, - 34380, - 34440, - 34500, - 34560, - 34620, - 34680, - 34740, - 34800, - 34860, - 34920, - 34980, - 35040, - 35100, - 35160, - 35220, - 35280, - 35340, - 35400, - 35460, - 35520, - 35580, - 35640, - 35700, - 35760, - 35820, - 35880, - 35940, - 36000, - 36060, - 36120, - 36180, - 36240, - 36300, - 36360, - 36420, - 36480, - 36540, - 36600, - 36660, - 36720, - 36780, - 36840, - 36900, - 36960, - 37020, - 37080, - 37140, - 37200, - 37260, - 37320, - 37380, - 37440, - 37500, - 37560, - 37620, - 37680, - 37740, - 37800, - 37860, - 37920, - 37980, - 38040, - 38100, - 38160, - 38220, - 38280, - 38340, - 38400, - 38460, - 38520, - 38580, - 38640, - 38700, - 38760, - 38820, - 38880, - 38940, - 39000, - 39060, - 39120, - 39180, - 39240, - 39300, - 39360, - 39420, - 39480, - 39540, - 39600, - 39660, - 39720, - 39780, - 39840, - 39900, - 39960, - 40020, - 40080, - 40140, - 40200, - 40260, - 40320, - 40380, - 40440, - 40500, - 40560, - 40620, - 40680, - 40740, - 40800, - 40860, - 40920, - 40980, - 41040, - 41100, - 41160, - 41220, - 41280, - 41340, - 41400, - 41460, - 41520, - 41580, - 41640, - 41700, - 41760, - 41820, - 41880, - 41940, - 42000, - 42060, - 42120, - 42180, - 42240, - 42300, - 42360, - 42420, - 42480, - 42540, - 42600, - 42660, - 42720, - 42780, - 42840, - 42900, - 42960, - 43020, - 43080, - 43140, - 43200, - 43260, - 43320, - 43380, - 43440, - 43500, - 43560, - 43620, - 43680, - 43740, - 43800, - 43860, - 43920, - 43980, - 44040, - 44100, - 44160, - 44220, - 44280, - 44340, - 44400, - 44460, - 44520, - 44580, - 44640, - 44700, - 44760, - 44820, - 44880, - 44940, - 45000, - 45060, - 45120, - 45180, - 45240, - 45300, - 45360, - 45420, - 45480, - 45540, - 45600, - 45660, - 45720, - 45780, - 45840, - 45900, - 45960, - 46020, - 46080, - 46140, - 46200, - 46260, - 46320, - 46380, - 46440, - 46500, - 46560, - 46620, - 46680, - 46740, - 46800, - 46860, - 46920, - 46980, - 47040, - 47100, - 47160, - 47220, - 47280, - 47340, - 47400, - 47460, - 47520, - 47580, - 47640, - 47700, - 47760, - 47820, - 47880, - 47940, - 48000, - 48060, - 48120, - 48180, - 48240, - 48300, - 48360, - 48420, - 48480, - 48540, - 48600, - 48660, - 48720, - 48780, - 48840, - 48900, - 48960, - 49020, - 49080, - 49140, - 49200, - 49260, - 49320, - 49380, - 49440, - 49500, - 49560, - 49620, - 49680, - 49740, - 49800, - 49860, - 49920, - 49980, - 50040, - 50100, - 50160, - 50220, - 50280, - 50340, - 50400, - 50460, - 50520, - 50580, - 50640, - 50700, - 50760, - 50820, - 50880, - 50940, - 51000, - 51060, - 51120, - 51180, - 51240, - 51300, - 51360, - 51420, - 51480, - 51540, - 51600, - 51660, - 51720, - 51780, - 51840, - 51900, - 51960, - 52020, - 52080, - 52140, - 52200, - 52260, - 52320, - 52380, - 52440, - 52500, - 52560, - 52620, - 52680, - 52740, - 52800, - 52860, - 52920, - 52980, - 53040, - 53100, - 53160, - 53220, - 53280, - 53340, - 53400, - 53460, - 53520, - 53580, - 53640, - 53700, - 53760, - 53820, - 53880, - 53940, - 54000, - 54060, - 54120, - 54180, - 54240, - 54300, - 54360, - 54420, - 54480, - 54540, - 54600, - 54660, - 54720, - 54780, - 54840, - 54900, - 54960, - 55020, - 55080, - 55140, - 55200, - 55260, - 55320, - 55380, - 55440, - 55500, - 55560, - 55620, - 55680, - 55740, - 55800, - 55860, - 55920, - 55980, - 56040, - 56100, - 56160, - 56220, - 56280, - 56340, - 56400, - 56460, - 56520, - 56580, - 56640, - 56700, - 56760, - 56820, - 56880, - 56940, - 57000, - 57060, - 57120, - 57180, - 57240, - 57300, - 57360, - 57420, - 57480, - 57540, - 57600, - 57660, - 57720, - 57780, - 57840, - 57900, - 57960, - 58020, - 58080, - 58140, - 58200, - 58260, - 58320, - 58380, - 58440, - 58500, - 58560, - 58620, - 58680, - 58740, - 58800, - 58860, - 58920, - 58980, - 59040, - 59100, - 59160, - 59220, - 59280, - 59340, - 59400, - 59460, - 59520, - 59580, - 59640, - 59700, - 59760, - 59820, - 59880, - 59940, - 60000, - 60060, - 60120, - 60180, - 60240, - 60300, - 60360, - 60420, - 60480, - 60540, - 60600, - 60660, - 60720, - 60780, - 60840, - 60900, - 60960, - 61020, - 61080, - 61140, - 61200, - 61260, - 61320, - 61380, - 61440, - 61500, - 61560, - 61620, - 61680, - 61740, - 61800, - 61860, - 61920, - 61980, - 62040, - 62100, - 62160, - 62220, - 62280, - 62340, - 62400, - 62460, - 62520, - 62580, - 62640, - 62700, - 62760, - 62820, - 62880, - 62940, - 63000, - 63060, - 63120, - 63180, - 63240, - 63300, - 63360, - 63420, - 63480, - 63540, - 63600, - 63660, - 63720, - 63780, - 63840, - 63900, - 63960, - 64020, - 64080, - 64140, - 64200, - 64260, - 64320, - 64380, - 64440, - 64500, - 64560, - 64620, - 64680, - 64740, - 64800, - 64860, - 64920, - 64980, - 65040, - 65100, - 65160, - 65220, - 65280, - 65340, - 65400, - 65460, - 65520, - 65580, - 65640, - 65700, - 65760, - 65820, - 65880, - 65940, - 66000, - 66060, - 66120, - 66180, - 66240, - 66300, - 66360, - 66420, - 66480, - 66540, - 66600, - 66660, - 66720, - 66780, - 66840, - 66900, - 66960, - 67020, - 67080, - 67140, - 67200, - 67260, - 67320, - 67380, - 67440, - 67500, - 67560, - 67620, - 67680, - 67740, - 67800, - 67860, - 67920, - 67980, - 68040, - 68100, - 68160, - 68220, - 68280, - 68340, - 68400, - 68460, - 68520, - 68580, - 68640, - 68700, - 68760, - 68820, - 68880, - 68940, - 69000, - 69060, - 69120, - 69180, - 69240, - 69300, - 69360, - 69420, - 69480, - 69540, - 69600, - 69660, - 69720, - 69780, - 69840, - 69900, - 69960, - 70020, - 70080, - 70140, - 70200, - 70260, - 70320, - 70380, - 70440, - 70500, - 70560, - 70620, - 70680, - 70740, - 70800, - 70860, - 70920, - 70980, - 71040, - 71100, - 71160, - 71220, - 71280, - 71340, - 71400, - 71460, - 71520, - 71580, - 71640, - 71700, - 71760, - 71820, - 71880, - 71940, - 72000, - 72060, - 72120, - 72180, - 72240, - 72300, - 72360, - 72420, - 72480, - 72540, - 72600, - 72660, - 72720, - 72780, - 72840, - 72900, - 72960, - 73020, - 73080, - 73140, - 73200, - 73260, - 73320, - 73380, - 73440, - 73500, - 73560, - 73620, - 73680, - 73740, - 73800, - 73860, - 73920, - 73980, - 74040, - 74100, - 74160, - 74220, - 74280, - 74340, - 74400, - 74460, - 74520, - 74580, - 74640, - 74700, - 74760, - 74820, - 74880, - 74940, - 75000, - 75060, - 75120, - 75180, - 75240, - 75300, - 75360, - 75420, - 75480, - 75540, - 75600, - 75660, - 75720, - 75780, - 75840, - 75900, - 75960, - 76020, - 76080, - 76140, - 76200, - 76260, - 76320, - 76380, - 76440, - 76500, - 76560, - 76620, - 76680, - 76740, - 76800, - 76860, - 76920, - 76980, - 77040, - 77100, - 77160, - 77220, - 77280, - 77340, - 77400, - 77460, - 77520, - 77580, - 77640, - 77700, - 77760, - 77820, - 77880, - 77940, - 78000, - 78060, - 78120, - 78180, - 78240, - 78300, - 78360, - 78420, - 78480, - 78540, - 78600, - 78660, - 78720, - 78780, - 78840, - 78900, - 78960, - 79020, - 79080, - 79140, - 79200, - 79260, - 79320, - 79380, - 79440, - 79500, - 79560, - 79620, - 79680, - 79740, - 79800, - 79860, - 79920, - 79980, - 80040, - 80100, - 80160, - 80220, - 80280, - 80340, - 80400, - 80460, - 80520, - 80580, - 80640, - 80700, - 80760, - 80820, - 80880, - 80940, - 81000, - 81060, - 81120, - 81180, - 81240, - 81300, - 81360, - 81420, - 81480, - 81540, - 81600, - 81660, - 81720, - 81780, - 81840, - 81900, - 81960, - 82020, - 82080, - 82140, - 82200, - 82260, - 82320, - 82380, - 82440, - 82500, - 82560, - 82620, - 82680, - 82740, - 82800, - 82860, - 82920, - 82980, - 83040, - 83100, - 83160, - 83220, - 83280, - 83340, - 83400, - 83460, - 83520, - 83580, - 83640, - 83700, - 83760, - 83820, - 83880, - 83940, - 84000, - 84060, - 84120, - 84180, - 84240, - 84300, - 84360, - 84420, - 84480, - 84540, - 84600, - 84660, - 84720, - 84780, - 84840, - 84900, - 84960, - 85020, - 85080, - 85140, - 85200, - 85260, - 85320, - 85380, - 85440, - 85500, - 85560, - 85620, - 85680, - 85740, - 85800, - 85860, - 85920, - 85980, - 86040, - 86100, - 86160, - 86220, - 86280, - 86340, - 86400 - ], - "y": [ - 0, - 4.607996206132318e-05, - 9.228699685169574e-05, - 0.00013109556525489998, - 0.00015623816877902334, - 0.0001615806948247258, - 0.00015547648249197588, - 0.00015675789892355464, - 0.0001674665341304603, - 0.00018001614556040178, - 0.00019080245481540794, - 0.00020774063430092782, - 0.00022605947689455577, - 0.00023387254667636906, - 0.00023027153633720088, - 0.000229645792871229, - 0.0002369062291638911, - 0.00025889559919593504, - 0.00028941872550466557, - 0.0003151516789027434, - 0.00032266419972431495, - 0.00031049438524963945, - 0.00030044888899323946, - 0.00029647426866142283, - 0.00030233742441344576, - 0.0003219769236636452, - 0.00036180935445905433, - 0.0003999450162138907, - 0.00041510496105755696, - 0.00043400868063583203, - 0.00046152678553066, - 0.0004931913871033772, - 0.0005199172527227554, - 0.0005400859966128649, - 0.0005230297254518582, - 0.0005047718002576109, - 0.0005041600822247112, - 0.000504177943108959, - 0.0005336297755488401, - 0.0005623158943049887, - 0.0005657737407198209, - 0.0005639728455962489, - 0.0005411195059046008, - 0.0005358842652433215, - 0.0004572144762128685, - 0.0004750838187533342, - 0.0005359135187777468, - 0.0005346864193555164, - 0.0005068658365614061, - 0.0005276019550994524, - 0.0005183368738799978, - 0.0004950681412843518, - 0.0005316479366885078, - 0.0005358573242274349, - 0.0005281441246179515, - 0.0005488446662264703, - 0.0005772167201625624, - 0.000578083850318425, - 0.000564340172427972, - 0.0005581718267205642, - 0.0005627026209784416, - 0.0005644460507239495, - 0.0005422095490468658, - 0.0005032963508523769, - 0.0004901238806342833, - 0.00046940543752509525, - 0.0004544199657313866, - 0.000506542866310198, - 0.0005239347190374602, - 0.0004977592138878689, - 0.0004894492288920847, - 0.0004512610701378519, - 0.00043591136388159226, - 0.00046421113802470014, - 0.0004893789354865827, - 0.0004947954781628939, - 0.0005005697626910704, - 0.0005054769500950893, - 0.0004870660115305113, - 0.0004501671268022907, - 0.00041018849225187714, - 0.00039493743510368116, - 0.0003664453002478257, - 0.00034391142575086584, - 0.0003260724386999992, - 0.00029079524364342005, - 0.0003242626544089163, - 0.0003292465734661857, - 0.0002555895660323399, - 0.00018141073042675658, - 0.00019350678978322358, - 0.00021459322096135247, - 0.00023321362689303658, - 0.0002451029333662563, - 0.00022183307041730686, - 0.00018125276796920084, - 0.00016044173529203924, - 0.00018476091820387932, - 0.0001959016992394064, - 0.00020183065829230452, - 0.00016587397001077944, - 0.00010545619799157912, - 0.00010826881737000985, - 0.0001331861498356664, - 0.0001487330239152922, - 0.00015555108936275448, - 0.00016594386633097405, - 0.00017924992407757716, - 0.00018128536158598337, - 0.00017641999536694577, - 0.00018700167013859336, - 0.00020316386270965154, - 0.0002142460916315267, - 0.00022314417639023864, - 0.00023797368504966808, - 0.0002607610493226915, - 0.00028558118162359185, - 0.0003018270478161039, - 0.0003319723428069425, - 0.00033377277287661706, - 0.0002866402278038387, - 0.0004094338249510302, - 0.00044370143938809634, - 0.00039792468860428033, - 0.0004161354260754953, - 0.00041216005166959716, - 0.00041727389115257915, - 0.0004228562619036723, - 0.00043704548317719677, - 0.00047107476939721834, - 0.0004643547383415804, - 0.00048254684397330285, - 0.0005507230838776482, - 0.0005873893947577384, - 0.0006313206654400084, - 0.0006373116512269598, - 0.0006317659175662152, - 0.0006365499384656424, - 0.0006489707478237653, - 0.0006665930756117904, - 0.0006728784551452096, - 0.0006827164762622604, - 0.0007685556452848972, - 0.0007905976051130393, - 0.0007778992589377323, - 0.0007847188679828783, - 0.000843589979114346, - 0.0008451573560180096, - 0.0008557618446618834, - 0.0008921865232478678, - 0.0008933610904712329, - 0.0008747730279300295, - 0.0008562629573873519, - 0.0008642771868275522, - 0.0008893810262641961, - 0.000897882637963262, - 0.0008881150347674075, - 0.0008835024237400397, - 0.0008882181983879375, - 0.0009036409193467059, - 0.000922058474329566, - 0.0009222641855289485, - 0.0008958544123508003, - 0.0008602493362636637, - 0.000825155122059302, - 0.0008248509080698018, - 0.0008960329746178039, - 0.0009466939171281207, - 0.0008921294298762585, - 0.0008552064490988039, - 0.0008575850028261033, - 0.0008697061934836567, - 0.0009029546108329578, - 0.000879235088010047, - 0.0008515402567498228, - 0.0008680334413419574, - 0.0008779768126417554, - 0.00086312508576877, - 0.0008621426077311502, - 0.0009103965615957981, - 0.0009216906069423398, - 0.0009151122281599339, - 0.0009500783570682386, - 0.0009611454627493749, - 0.000934620336572393, - 0.0009586007146305457, - 0.0009924876411058184, - 0.0009964068350322396, - 0.0009765843490706382, - 0.0009243125410557018, - 0.0008592706036938416, - 0.0007477929002224714, - 0.0006697071875253195, - 0.0006998105837339723, - 0.0007623171188967963, - 0.0007467207257982962, - 0.0007029250416403075, - 0.0006773556091041932, - 0.0006852577364232256, - 0.0007187754104667628, - 0.0007610386199967618, - 0.0007920752555831167, - 0.0007864437594944562, - 0.0007928118911760855, - 0.0008009997428487163, - 0.0007862626557565198, - 0.0007980882887160052, - 0.0008104287034816558, - 0.0007941491266003784, - 0.0007721667363743336, - 0.0007795039958612145, - 0.0008172138608080522, - 0.000832820807971064, - 0.0008662840200530323, - 0.0009094109676809916, - 0.0009247690882586844, - 0.0009394504145107964, - 0.0009211055219503281, - 0.000892397932364935, - 0.0009242705376204066, - 0.0009617772732716515, - 0.0009904114700995483, - 0.0009977665473111935, - 0.0010005637743883576, - 0.0010071629119409854, - 0.0010277201893464092, - 0.0010607087188494453, - 0.0010911019466421756, - 0.0011190417209612261, - 0.0011351636586377184, - 0.001140235195018781, - 0.0011347281434635342, - 0.0011248807962695214, - 0.0011303262371343667, - 0.0011421521763715803, - 0.0011495595738836887, - 0.0011929850022913662, - 0.0012990411826690842, - 0.0014100903979508634, - 0.0014711489826525822, - 0.0014621227491066308, - 0.0014628133859293532, - 0.0014552537942892033, - 0.0014283074397651884, - 0.001418348712535757, - 0.0013397887445919052, - 0.0012692732995956944, - 0.001266339222234704, - 0.0012846487939144951, - 0.001283527995867085, - 0.0012905579511324648, - 0.001301117955829593, - 0.0013022248383923996, - 0.0012917654987214676, - 0.001275147439601881, - 0.001275853791636491, - 0.0012917554945363597, - 0.0013094318115375821, - 0.0013172930648231184, - 0.0013151228912330368, - 0.0013081797392425667, - 0.0013007192239091942, - 0.0012978482614836918, - 0.001317003150597264, - 0.0013422070339287853, - 0.0013460592102813205, - 0.0013271644663562278, - 0.0013003332307027164, - 0.0012663633040455285, - 0.0012359876635257751, - 0.0012492908441848402, - 0.0013062006803631536, - 0.0012847861172744848, - 0.001234783575764254, - 0.0012589426587840138, - 0.0012507716787608157, - 0.0012065243366775004, - 0.0011760513219402603, - 0.0011331950564013292, - 0.0011008393883748726, - 0.0010994909090793518, - 0.001096125268509955, - 0.0010708661406254461, - 0.001056617949471703, - 0.001054478959467061, - 0.001018348558089895, - 0.0010683841053206317, - 0.0011035847280778841, - 0.0010433145216105426, - 0.0009963246207652912, - 0.0010558777470763084, - 0.001076467239465077, - 0.0010358495914464172, - 0.0010165198411631496, - 0.001050172042463505, - 0.0010266249003871573, - 0.000915131422002888, - 0.000869696143392418, - 0.0008927400395389518, - 0.0009068216039585655, - 0.0009050805736141185, - 0.0009153070053774229, - 0.0009331700268637121, - 0.0009552253481113378, - 0.000996378237534118, - 0.0010425034256080713, - 0.0010558893062715064, - 0.0010475677125891534, - 0.001067087173395387, - 0.001105491011682944, - 0.0011110646547953637, - 0.0010948047308371749, - 0.0010915339705292, - 0.0010927644616580074, - 0.0011165938242430782, - 0.0011574928309982468, - 0.0011937803857568125, - 0.0012312334369359806, - 0.0012681577647378935, - 0.001297349214586415, - 0.0013141106253206957, - 0.0013235503458194791, - 0.0013384227955669434, - 0.001371433955872629, - 0.0014097200487510617, - 0.00144751242194945, - 0.001483118420380581, - 0.0015175992875557636, - 0.0015488800344699372, - 0.0015751752973579508, - 0.0016084027617040456, - 0.0016476443244724953, - 0.001665801855076973, - 0.0016544776286839705, - 0.0016296944723264875, - 0.001597243795699723, - 0.001574606430783788, - 0.0015312500273300762, - 0.001524216708024069, - 0.0015012181814190002, - 0.0015007651647028562, - 0.0016332467465595278, - 0.0018159242370723715, - 0.001966851327498199, - 0.002094710640006521, - 0.002140128535014072, - 0.0021317150183115135, - 0.0021160850149996887, - 0.002101583951689724, - 0.0020987272192672215, - 0.0021144054302556893, - 0.0021042774689635545, - 0.00208177564665945, - 0.002081359051075228, - 0.0020954472651825364, - 0.0021037502738916448, - 0.002095033871435228, - 0.0020688542480411763, - 0.0020430441547092427, - 0.0020344549774841017, - 0.002052275947815344, - 0.002083383063174002, - 0.0021005962363230455, - 0.0020958685387676306, - 0.002082560974761319, - 0.002072181150104548, - 0.0020715928878916197, - 0.002080297524397433, - 0.002105034098603335, - 0.002105515310650405, - 0.0020747555841611823, - 0.002065904035183659, - 0.0020904909285990514, - 0.0021459778173062967, - 0.0020836922712973963, - 0.0020368655960865977, - 0.0020665890977167043, - 0.002056671848415667, - 0.002022932785495128, - 0.002009749024264147, - 0.0020164484620422917, - 0.0020103210306546, - 0.0019833974763606653, - 0.001970557990150467, - 0.0019521433089774542, - 0.0019083164206143708, - 0.0019465009848216087, - 0.002012038792592535, - 0.0019886971998564346, - 0.001871611798614373, - 0.0017669216869691383, - 0.0017545891223735384, - 0.0017684141361950776, - 0.001758885246796725, - 0.0017459419868432714, - 0.0017167254719429694, - 0.0016850064230850288, - 0.001672647362785511, - 0.0017146364715280422, - 0.0017022293958492665, - 0.001636790514965326, - 0.0016217427612465537, - 0.0016295085898039429, - 0.0016211342660482492, - 0.0016041704196191303, - 0.0015924596718766618, - 0.00157941567237855, - 0.0015627895378784874, - 0.0015526852427576463, - 0.0015541198113059483, - 0.001541218228100843, - 0.001525379246820713, - 0.0015268794402842438, - 0.0015285013249444806, - 0.0015187549470600111, - 0.0015070085767847448, - 0.0014954920340667223, - 0.0014812300662124752, - 0.0014759314009375989, - 0.0014810584154836793, - 0.0014848236322276968, - 0.0014740247723735533, - 0.0014528767360016865, - 0.0014427432386443623, - 0.0014446703998074574, - 0.0014301086364149026, - 0.0014056369524857383, - 0.0014191652551897047, - 0.0014578000660754686, - 0.0014687092776885244, - 0.001476472223362025, - 0.0015207440832474724, - 0.0015706575367308248, - 0.0015613215626204418, - 0.0015594986670959766, - 0.0015738606235713912, - 0.0015564283917266122, - 0.0016007748038115528, - 0.0017258804637021764, - 0.001756308500356998, - 0.0014903399330941538, - 0.0013354732549386657, - 0.0013104364780532013, - 0.0012958285086467566, - 0.0013229408613355722, - 0.0013394156800160997, - 0.0013406589046340807, - 0.0013469084228237627, - 0.0013833283607736632, - 0.0014330464502366302, - 0.0014368284720850865, - 0.0014324525536792776, - 0.0014487640823475233, - 0.0014734957487631945, - 0.0015019707688555886, - 0.0015184892003868363, - 0.0015041882830518045, - 0.0015275356622937537, - 0.0015463140391603488, - 0.0015384909334274575, - 0.001503501890629905, - 0.0014403604816726637, - 0.0014211015907796512, - 0.001433302988728729, - 0.0014413410848994619, - 0.0014537290910174576, - 0.001434236887518363, - 0.0014426825477940812, - 0.0014941506566103168, - 0.0014877052211754401, - 0.0014360992860412525, - 0.0014020752332556117, - 0.0014109400874614485, - 0.0014352928592261788, - 0.0013883621703120407, - 0.0013376321245948532, - 0.0013539082573395956, - 0.0013781757806339988, - 0.001373106723731882, - 0.0013466903745017866, - 0.0013394350006182144, - 0.0013492922864642772, - 0.0013839988145365708, - 0.0014533324069566321, - 0.0014762067107757847, - 0.0014106308490771647, - 0.0012902833854395613, - 0.0012734310388997268, - 0.0012867178249528959, - 0.001262661433318375, - 0.0012397106607807088, - 0.0012177640056462206, - 0.0012415151561238574, - 0.0012919668464952412, - 0.001275024697800474, - 0.001248925224253993, - 0.0012354618999599516, - 0.0012323570743321642, - 0.0012350480123037098, - 0.0012401088664406765, - 0.0012474301865421913, - 0.0012546523470976505, - 0.0012524527904400197, - 0.0012336118380609177, - 0.0012121896773554294, - 0.0012203899829449879, - 0.0012625104388790317, - 0.0012953521148996408, - 0.0012948959367501932, - 0.0012957901675483359, - 0.0013107883130507381, - 0.0013305678672769737, - 0.0013547490481207922, - 0.0013668364827311367, - 0.0013625747987168438, - 0.0013581823602525425, - 0.0013633955605944735, - 0.0013748156707405824, - 0.0013932464367572516, - 0.0014125710352891193, - 0.0014311008424444716, - 0.001441694650920808, - 0.0014397427060795411, - 0.0014422378579230003, - 0.00144966550448713, - 0.0014491871004837487, - 0.001446338662436825, - 0.0014433658043048658, - 0.0014266126158700271, - 0.0014384789048764825, - 0.0014512958489282938, - 0.0015060780421340897, - 0.0015060108657110396, - 0.0015017039625680093, - 0.0015340275602641847, - 0.0015371506518320696, - 0.0014486343745361246, - 0.0015230769309187266, - 0.0017026362022765655, - 0.0017766494585420179, - 0.0018180216539728713, - 0.0018452401420634762, - 0.0018384362759194363, - 0.0018264585373728842, - 0.0018184321443460657, - 0.0018020623669426257, - 0.0017937735386676598, - 0.001782056334482187, - 0.0017739356972374116, - 0.0017707518534757012, - 0.0017416952134543654, - 0.0017403923305863613, - 0.0017556760840183709, - 0.0017832059007089848, - 0.0018092481275860514, - 0.0017867860749075164, - 0.0017023188332774702, - 0.0017129567711601894, - 0.0017863953142983765, - 0.0018242846880922748, - 0.0017827014817866716, - 0.001734106665815198, - 0.0017735566825560114, - 0.0018178577589631542, - 0.0018111019536756162, - 0.0017581117247184887, - 0.001751744370521963, - 0.0017573268338408156, - 0.0017447141614849637, - 0.0017276770530240367, - 0.0017192538321547308, - 0.001692707816189251, - 0.0016885926146354034, - 0.0016945268659368004, - 0.0016701681070591071, - 0.001636182460418888, - 0.0016378721673070637, - 0.0016713047131878254, - 0.0017375366790238881, - 0.0017916077801277794, - 0.001789296823432762, - 0.0017564481537894003, - 0.001659376339458263, - 0.001640116017602133, - 0.0017226564715194282, - 0.0017404855535971561, - 0.0017175422967777014, - 0.0017288166081510347, - 0.0017505608700920984, - 0.0017465504318598909, - 0.0016989310924234184, - 0.0016842881333091384, - 0.001704776309015153, - 0.00171015866088106, - 0.0017078634770689247, - 0.0017082184087891014, - 0.001706121324579994, - 0.001703062078247527, - 0.0017061384029709353, - 0.0017196745261196598, - 0.0017333941608867944, - 0.0017257461106492567, - 0.0017015562540984566, - 0.0016934638413771657, - 0.0017116101110278654, - 0.0017293480742335034, - 0.0017364899338090422, - 0.001748636437242179, - 0.0017676009478824423, - 0.0017895828662279167, - 0.0018028807127705945, - 0.0017884649548214854, - 0.001773176944432964, - 0.0017671109285107294, - 0.0017763777444676503, - 0.0017964762212839456, - 0.001813956813353226, - 0.0018152926434633191, - 0.0018539076119771574, - 0.0019345447227262058, - 0.001952620720241301, - 0.0019376434085116828, - 0.0019327741433871183, - 0.0019504708580336003, - 0.001982020170609288, - 0.002037373702284257, - 0.0020507983642981055, - 0.0020038407919036, - 0.001999056843828473, - 0.0019881937773077573, - 0.002020733776164206, - 0.002014235527175212, - 0.0019258585872719166, - 0.0019280816260000273, - 0.001938079785770536, - 0.001833039959719157, - 0.0018256651962675267, - 0.001859125220277306, - 0.0018475867814953474, - 0.0018481348863913474, - 0.0018641002855511147, - 0.0018778489870675678, - 0.001877937846369903, - 0.0018613233482992308, - 0.0018451680711646294, - 0.001853810258673979, - 0.0018660211732008179, - 0.0018697819632645097, - 0.0018743721582130035, - 0.0018732463793403296, - 0.0018650768779501909, - 0.0018594293881059952, - 0.0018561076981139645, - 0.0018503237676219138, - 0.0018425835093499952, - 0.0018332170871723495, - 0.0018109321342581722, - 0.0017768269008587912, - 0.0017651621680009023, - 0.0017742008041082805, - 0.0017955876868952021, - 0.0017985065172862183, - 0.0017863193737497217, - 0.0017645600242787757, - 0.0017369409296030475, - 0.0017183339054851567, - 0.0017101512328649303, - 0.0017021558514334126, - 0.0016939100408656816, - 0.00169167993279823, - 0.0016948757962254486, - 0.001693980829302604, - 0.001692779941905024, - 0.001688093164440395, - 0.0016252845386091443, - 0.001514325333859132, - 0.0014498118067036282, - 0.001421349994732635, - 0.001344723691882978, - 0.0012382565435921785, - 0.0012858344968695427, - 0.0013575308012885637, - 0.001367044963736276, - 0.0013696506469090051, - 0.0014006867861603768, - 0.0013889162371287075, - 0.0013369655302398465, - 0.0013417027528915542, - 0.0013565008046849613, - 0.0013397205052659746, - 0.0013061826504046092, - 0.0013038300861956285, - 0.0013191020893269778, - 0.0013334234104865389, - 0.001344344990170925, - 0.0013346622428038887, - 0.0013178938755524546, - 0.0013120122565396493, - 0.0013086765548828898, - 0.001295799162928057, - 0.0012926176137512853, - 0.0013282414989383138, - 0.0013845344104408792, - 0.0014116677278578449, - 0.0014125616166628264, - 0.0014152179917358294, - 0.0014373957021027515, - 0.0014533935108347168, - 0.0014758895670900793, - 0.001482190785983666, - 0.0014884852445201193, - 0.0015153009946800684, - 0.0015349843169358425, - 0.0015291949451902867, - 0.0015416669562562792, - 0.0015643640686370413, - 0.0015792452917402786, - 0.0015822461939620646, - 0.0016071079552448003, - 0.0016527087857036477, - 0.0016522847957999422, - 0.0016263074218414197, - 0.0016243915924085712, - 0.0016328138739521506, - 0.001613472171866856, - 0.0015564927795090658, - 0.0016688687991787458, - 0.0017707350928636953, - 0.0017369030161915606, - 0.0016689498785587066, - 0.00171228047811368, - 0.0017229807492062502, - 0.00172139556600504, - 0.0017344790394900305, - 0.0017636825907415105, - 0.001767242947433785, - 0.0017705975858334135, - 0.0017756147559589537, - 0.0017830175891856094, - 0.0017928268772691598, - 0.0017973084620220524, - 0.0017882043211523144, - 0.0017854717188186637, - 0.0018000282292651554, - 0.0018175871204900774, - 0.0018302213056178899, - 0.001837528561687768, - 0.0018466764685047485, - 0.0018613813550550007, - 0.0018760211153379153, - 0.0018775571915285935, - 0.0018632016310185884, - 0.0018439354614542918, - 0.001818318035109361, - 0.0017919911715925363, - 0.001789344070810138, - 0.00180347231788897, - 0.001814986350977331, - 0.0018134257584823635, - 0.0018020792993704742, - 0.0017817757997020867, - 0.0017618831755131779, - 0.0017508368783848013, - 0.0017326251118735783, - 0.0017099624551258185, - 0.001710064481029384, - 0.0017052242151644915, - 0.0016668400011012352, - 0.001631556724323247, - 0.001630542389207145, - 0.0016512020926023072, - 0.0016823390432779116, - 0.0017103192190039574, - 0.0017573513346973077, - 0.0017674919154535684, - 0.001672304161328473, - 0.0016403821473387073, - 0.001721777585558662, - 0.0017576093357357687, - 0.0017180555759527733, - 0.0016515460805979934, - 0.0016120381997860131, - 0.0015874423683329062, - 0.0016016199472537313, - 0.0016073983479068217, - 0.0015955370778681023, - 0.001579752940049332, - 0.0015735167947165149, - 0.0015844589747678434, - 0.00158440958650368, - 0.001607000253172416, - 0.001653590932174857, - 0.0016706974354649487, - 0.001628963483092028, - 0.0015961045391004363, - 0.0016185371688944895, - 0.001647200581750163, - 0.0016705690182540265, - 0.0017051026353506098, - 0.0017656486114631929, - 0.0017987942399099008, - 0.0017836741505807795, - 0.0017562722309598057, - 0.0017491175639498342, - 0.0017768151669549973, - 0.0018148270900005192, - 0.0018189665652987813, - 0.0018131168313958858, - 0.0018124077116757889, - 0.0018198475805621445, - 0.0018381880769922602, - 0.001862192816851736, - 0.0018752979173528757, - 0.0018790319726624397, - 0.0018782560038355916, - 0.0019056274277370136, - 0.001943740585923559, - 0.001947697581147841, - 0.0019325406101322717, - 0.0019406338610455343, - 0.0019637651846985326, - 0.0019083501301842074, - 0.002007094255876716, - 0.0021754769528184443, - 0.0022359649369825185, - 0.0021544275898065174, - 0.002128286472081261, - 0.002191671535633191, - 0.002253386649418629, - 0.002256901207425596, - 0.0022616173805816413, - 0.0022011773272318136, - 0.0021989291770272102, - 0.002213837652956631, - 0.002220141766664976, - 0.002217873226364196, - 0.00220531551477825, - 0.0021942294268059805, - 0.0021897319078281493, - 0.0022024766639932324, - 0.00220926718277157, - 0.0022186199549792695, - 0.002247091854137881, - 0.0022640067952995773, - 0.0022305742776312903, - 0.0022322398123992737, - 0.002272219303334956, - 0.002204581080064807, - 0.002291924783862304, - 0.0023282344990708513, - 0.0022100380123659677, - 0.00215022009957402, - 0.002141596894932236, - 0.002167003456998207, - 0.0021866099179843864, - 0.0021794734670133272, - 0.0021660371710124707, - 0.002163708191298736, - 0.002168606964454112, - 0.002148843245377301, - 0.0020964411943167048, - 0.002091073873354884, - 0.00207697787829322, - 0.002057543573330774, - 0.002043681162275409, - 0.0019952003760359584, - 0.001992865536908367, - 0.002016879236618394, - 0.0019367265419612458, - 0.0018211306813980493, - 0.0018064277427607524, - 0.0018173341379995349, - 0.001812710474802712, - 0.0018769413503913828, - 0.0019436798802656618, - 0.0019501276642159863, - 0.0019188900851519223, - 0.0019077853556176004, - 0.0019178014276678484, - 0.0019012794544707176, - 0.0019328785555266983, - 0.0019466565042226868, - 0.0018897442148027984, - 0.0019024411054657834, - 0.001953751243066098, - 0.0019464516791358058, - 0.001960694573185423, - 0.0019431224622620882, - 0.001912129146677833, - 0.0019390470114110134, - 0.001957489108009406, - 0.001951351831424534, - 0.0019529830905902982, - 0.001947329046330925, - 0.0019327652627338474, - 0.001943400940391342, - 0.001969379068143504, - 0.001988401193995219, - 0.0019693156905635075, - 0.0018910242447711262, - 0.0019077943775285555, - 0.0019992467294444216, - 0.0020397934127871845, - 0.0020330502881242916, - 0.002021605562816838, - 0.0020204106506089563, - 0.0020338527321330305, - 0.0020615706115204168, - 0.0020974953323543884, - 0.0021272118709332395, - 0.0021333677239935996, - 0.0021309701000483813, - 0.0021419003966153703, - 0.002160196716039982, - 0.0021937499190601488, - 0.002227639285986815, - 0.002250285075264659, - 0.002296257716482154, - 0.002407042630833304, - 0.0023452957384372587, - 0.0021207305223187025, - 0.0020086523638199365, - 0.0019560277569036933, - 0.001972623240633963, - 0.0020314518297299615, - 0.002112767994760004, - 0.002177474361687919, - 0.002326964824165508, - 0.002412300875473401, - 0.0024184812315724566, - 0.002479436841067762, - 0.0025094065485137614, - 0.0025040954374780217, - 0.0025243459353569506, - 0.0025467068801025452, - 0.0025407651677263497, - 0.002559655640063368, - 0.0025508894211741266, - 0.0025525668336434065, - 0.002558598268394631, - 0.0025546239183052415, - 0.002539465665070069, - 0.002519999128807989, - 0.0025060503178839484, - 0.002515103666253543, - 0.002539893774203948, - 0.002529938617493994, - 0.002487454159183058, - 0.0024452182220865847, - 0.0024060417139216625, - 0.0023889709408911066, - 0.00237487888327292, - 0.0023710164678212285, - 0.0023564209303064245, - 0.0023321266689964276, - 0.0023068524623259764, - 0.0022710836960701244, - 0.002269398545814595, - 0.0022943136005219075, - 0.002302138667671945, - 0.0023058473650479543, - 0.0023085396739619085, - 0.0022983853727830393, - 0.0022921939581051934, - 0.00229356925644213, - 0.0023061948650532505, - 0.002307224956676829, - 0.0023142874709193707, - 0.002319114060943792, - 0.0023085256906316886, - 0.002345219855254672, - 0.0023738651780258217, - 0.002373295489849566, - 0.002350179646003298, - 0.002349027696357746, - 0.0022952678827444536, - 0.0021790191064043336, - 0.00220574883221697, - 0.002269604427726468, - 0.0023048948155258895, - 0.0023386121727517616, - 0.0023329938153205674, - 0.0023688948489893015, - 0.002400118957798886, - 0.0024006251012753453, - 0.0024112258055011414, - 0.002405385472191814, - 0.002439821003891615, - 0.002463783850050053, - 0.002399284554008912, - 0.0024124023462498254, - 0.0024666892127208997, - 0.002503271961574107, - 0.002502672563359103, - 0.0024913843850023075, - 0.0024815665598228406, - 0.002484075344399387, - 0.0025038506214468672, - 0.0025415768124179483, - 0.0025821774681875935, - 0.0026071326209712075, - 0.002611867192367415, - 0.0026092805862653113, - 0.0026083154210362535, - 0.0026172626046848495, - 0.0026359647736952964, - 0.0026584951881715667, - 0.0026674956034414637, - 0.002655594072051707, - 0.002666414439708039, - 0.002685213142143271, - 0.0026575740370749514, - 0.0026136412016422757, - 0.00259182292257851, - 0.002577052432934891, - 0.002546566491435115, - 0.0026434865581069604, - 0.0027748236841679324, - 0.002905740855567171, - 0.0029539245377450127, - 0.0030117967284974977, - 0.0030880688718957936, - 0.003138963611449656, - 0.0030305808456053828, - 0.003012641906152183, - 0.003042647974018622, - 0.0030544509100549795, - 0.003025184811039072, - 0.0029996177078685637, - 0.002986094909143217, - 0.00296916386142055, - 0.002953496249130192, - 0.0029490280093406357, - 0.002952080113273117, - 0.002963180466602765, - 0.0029717255877211588, - 0.0029684315032273596, - 0.0029478335171634605, - 0.002922077165648117, - 0.0029049088590984273, - 0.002900252160172451, - 0.0029049811672666502, - 0.0029111633639069823, - 0.0029140895809580385, - 0.0029182434602705812, - 0.002921469601786903, - 0.0029053754496071297, - 0.002874612853590956, - 0.002843037892264142, - 0.002814248144864157, - 0.0028030991658754426, - 0.002809656949704735, - 0.0028172778308316873, - 0.002809897399356054, - 0.0028023150720740734, - 0.002839879600957377, - 0.002849646152256426, - 0.0027938221136090905, - 0.0027551263266430274, - 0.0028036991788042026, - 0.0028112492684203676, - 0.00277941739805498, - 0.002747929283659924, - 0.0027502784136263754, - 0.002708895308059521, - 0.0026717888264605988, - 0.002642126051136089, - 0.00264356375820977, - 0.0026102051027664624, - 0.002588403379832246, - 0.0025492864053814845, - 0.002622534016677195, - 0.002730295039471575, - 0.0027612275345659286, - 0.0027810404481221074, - 0.0027622840358474555, - 0.0026940369102153015, - 0.0026598038294527093, - 0.002674041422857233, - 0.0026927452055508084, - 0.002699795962185473, - 0.002678833668748435, - 0.0026369172055023694, - 0.0026178273148031875, - 0.002618091975946964, - 0.002641912675106164, - 0.0026544948750631624, - 0.0026491161186069792, - 0.002627232274868948, - 0.0026210788531541816, - 0.002616949310798314, - 0.002606013959474168, - 0.002590039128942498, - 0.0025746205256565982, - 0.0025604925576372946, - 0.0025638768797425376, - 0.0025874450230711403, - 0.0026104937888269536, - 0.0026166917753379843, - 0.0026088091939411953, - 0.0025994643420099426, - 0.0026123162518392165, - 0.00265071491557699, - 0.0026834081057688732, - 0.002690609925925227, - 0.0027232404512425095, - 0.0027842998319956695, - 0.0028110966788012725, - 0.0028358474392749357, - 0.0028697143186421268, - 0.0029141605288250157, - 0.0029729191565770335, - 0.003022469190993137, - 0.0029752252352385033, - 0.002842489483091852, - 0.002746530806781363, - 0.002757128514337322, - 0.0028504543163360638, - 0.002940996880370232, - 0.0029176775499304454, - 0.002813193169868654, - 0.002750341109364678, - 0.002755262313605897, - 0.002804486954647326, - 0.002839293611947367, - 0.0028781122111244226, - 0.0029257167242114123, - 0.002959194313899947, - 0.0029716279097839553, - 0.0029820530978385035, - 0.002997183282110782, - 0.0030100653480437775, - 0.0030078829096870873, - 0.0029959163952935027, - 0.0029871350359158074, - 0.0029880425153599242, - 0.0029899829864124938, - 0.0029838698937387238, - 0.0029739447310950223, - 0.0029608942162642083, - 0.0029474387518709606, - 0.002940317930243873, - 0.002943141351803188, - 0.002936155276674373, - 0.002919273479724939, - 0.002918034347820446, - 0.0029211649765582505, - 0.0029000271976948547, - 0.0028609998942186947, - 0.0028253698060892872, - 0.0028058205885631983, - 0.0027981265694645204, - 0.0027936450349807917, - 0.0027838171124306855, - 0.002773848714015379, - 0.002761717841699958, - 0.002748212787630635, - 0.002732552460355951, - 0.0026991961188837605, - 0.00265370051492763, - 0.002610746105412261, - 0.0026091612724420676, - 0.0026370069762159444, - 0.002681823299124584, - 0.0026526913017120356, - 0.0025856904551668806, - 0.0025450533743512365, - 0.002516545796436044, - 0.0025941260630327014, - 0.0026030273626860573, - 0.0025516182687458084, - 0.002539412759443742, - 0.0025009550109799813, - 0.002509839497525519, - 0.0025366045225619924, - 0.002544978635341401, - 0.0025266389911462726, - 0.0024858317915704823, - 0.0024888791108163945, - 0.002524102844884075, - 0.0025893257071330595, - 0.0025614985158869054, - 0.002490604475751152, - 0.0025202638574052393, - 0.002550466023233912, - 0.0025535932704228888, - 0.0025689773824456243, - 0.002609792739475236, - 0.0026516897635184213, - 0.002674751684677126, - 0.0026689640441327463, - 0.002622885259467624, - 0.0026184419139686555, - 0.002610207492222263, - 0.0025568453570002764, - 0.0025517826024617626, - 0.002620755848924401, - 0.002665105868972628, - 0.002684057369208432, - 0.0026930151624449104, - 0.002709905942981138, - 0.002705193489231178, - 0.0027028044368309014, - 0.002712349428670153, - 0.002706428426547647, - 0.002713678775609254, - 0.0027364842412328986, - 0.0027524158296372953, - 0.002753856199703925, - 0.002762823644557041, - 0.0028214290732242486, - 0.0029421786549365756, - 0.0029785469198163974, - 0.0029745982830465256, - 0.003057913702287346, - 0.0031157743678912548, - 0.003081530118687608, - 0.0030932791740060027, - 0.003193441253444192, - 0.0033061387748714987, - 0.0033420415580759947, - 0.0033140694918487954, - 0.0032825466431167837, - 0.0032860820870559302, - 0.0033200712996539106, - 0.0033362937153943355, - 0.00333024472012647, - 0.003344045477332253, - 0.003381313179105657, - 0.003408551118898643, - 0.003422549446431545, - 0.0034387445008704043, - 0.0034596762858154907, - 0.0034705791466947762, - 0.0034638490029252154, - 0.0034516837311925905, - 0.0034554669549103803, - 0.0034750117701191196, - 0.0034933879064165127, - 0.0035040296401796364, - 0.003504696038765679, - 0.0034963288517522364, - 0.003512280270384119, - 0.0035495189155946264, - 0.0035565863753951737, - 0.003537403800221564, - 0.0035218826403617333, - 0.0035122357395294818, - 0.0035068597232125955, - 0.0035020404364893135, - 0.003494575525284787, - 0.0034879075577591476, - 0.0034804869049359895, - 0.0034711627573081666, - 0.0034556893589065473, - 0.0034486885010581287, - 0.0034827373797594804, - 0.003532066749466058, - 0.0035078108460148538, - 0.003439390457563967, - 0.003396315698129863, - 0.0033533524776022294, - 0.00334242512258225, - 0.003320810073799306, - 0.0033477371299052835, - 0.0033769894125079522, - 0.0032891012469464503, - 0.0032554486937681312, - 0.0032963730514021213, - 0.003277458975232085, - 0.003251376420275284, - 0.0032272655923302617, - 0.003202346580993748, - 0.0032111630566631537, - 0.003200589423140282, - 0.003128240679716457, - 0.003120527565773545, - 0.003181730626043369, - 0.0031643523386022045, - 0.0031372059856614397, - 0.0031145788789386604, - 0.003065407773439916, - 0.003024619395855419, - 0.0030178003207381406, - 0.003047852234435352, - 0.0030421816409971986, - 0.002982889701589188, - 0.0029342060439397346, - 0.002957741600865361, - 0.0030261599764276276, - 0.003037508693212698, - 0.003001636652606469, - 0.0029728426036683343, - 0.0029519964429758697, - 0.0029400568198453035, - 0.0029376870254667854, - 0.0029381074017297065, - 0.00293174664242272, - 0.0029337894837201737, - 0.0029477462460838094, - 0.002947957909093202, - 0.002932943993057142, - 0.0029386351800234412, - 0.002959799797585127, - 0.002968658223676699, - 0.00297510780179946, - 0.002976385690905733, - 0.0029817498560489736, - 0.0030264842703265193, - 0.00306573478255825, - 0.0031171530843457835, - 0.0031637323392017212, - 0.0031099690918894086, - 0.0031029033931903173, - 0.0031827422613444198, - 0.0032484543617006274, - 0.0032451313101644255, - 0.0032281651755174654, - 0.003270729903815679, - 0.0033210656309406307, - 0.0033513379393058903, - 0.003372235052989338, - 0.0033978512751620146, - 0.0034188731320769663, - 0.0034235092351766233, - 0.0034246963210200873, - 0.003439276651219583, - 0.003461586517992875, - 0.0034864775343532656, - 0.0035149817081838613, - 0.0035246996385666324, - 0.003529052707162134, - 0.0035293062217311042, - 0.0035269928652094788, - 0.0035355230889791726, - 0.003553587382921951, - 0.003576389878816074, - 0.003590038484198021, - 0.0035936893955925667, - 0.0036056226696335038, - 0.003629316415890077, - 0.003639036204382005, - 0.003627039714726555, - 0.003619995177476071, - 0.003621107175428778, - 0.003619717302923245, - 0.0036087538849794774, - 0.0036066163759055814, - 0.0036072803059062856, - 0.0036143017386513886, - 0.0036272055175166607, - 0.00361792040728726, - 0.0036003554445723034, - 0.003581262023610405, - 0.003575811259329534, - 0.0035709080764747677, - 0.0035890075668453887, - 0.003630139037672243, - 0.003646619140045806, - 0.0036151531766519, - 0.0036634492021847113, - 0.003750210835750151, - 0.0037329435560509014, - 0.0036244932655000064, - 0.0035586535698905577, - 0.0035213030172613485, - 0.0034995872915056267, - 0.0034873240941804117, - 0.003462003528580083, - 0.003439396821611399, - 0.0033876030523406885, - 0.0033498294914709563, - 0.003343307903629782, - 0.003309943914955364, - 0.0032624325247637663, - 0.0032546146751338246, - 0.0032588151496045726, - 0.003253164283051417, - 0.0032552747750954174, - 0.00322323543168973, - 0.003171286571288868, - 0.003187068410421739, - 0.0031873966999965454, - 0.0031878429994447546, - 0.003171581625988439, - 0.0031338159290159014, - 0.0031010499242056437, - 0.0030772188688656843, - 0.0030558313373999254, - 0.0030400181063272537, - 0.0030297701981080983, - 0.0030204357442752063, - 0.0030066359837816197, - 0.002991996409126032, - 0.002981322469948321, - 0.0029807030043824474, - 0.0029891469346215865, - 0.002984033596734449, - 0.0029662345797019938, - 0.00295781506905421, - 0.002967149921892854, - 0.0029761906350550937, - 0.0029840842269905727, - 0.002996600904183767, - 0.0030157215693697886, - 0.0029923369561336063, - 0.0030202930297677046, - 0.003167836319129804, - 0.0030882159489805457, - 0.002972913165124031, - 0.0030076098024288695, - 0.0030751891602678553, - 0.003060764010548278, - 0.0030215623793460288, - 0.0030197133454343086, - 0.0030152012540701606, - 0.003004785126281113, - 0.0030189247172962073, - 0.0030227723929248797, - 0.00301320175824734, - 0.0030014505237670763, - 0.0029942155462264657, - 0.003020453550791074, - 0.0030562255069718053, - 0.003055183096348632, - 0.0030579117413203484, - 0.0030734380002801595, - 0.003083491387361984, - 0.0030877610798354656, - 0.0030851480036407307, - 0.0030822643745197246, - 0.003089679302048565, - 0.003106097540979791, - 0.003124239018332084, - 0.0031241758732818313, - 0.0031168118360035213, - 0.003130160475504448, - 0.0031779304420275437, - 0.0032187424672515037, - 0.003217585188745042, - 0.0032033443297982875 + "execution_count": 346, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[orbit_df_RMS_list[list_ind].head() for list_ind in range(0, len(orbit_list))]" + ] + }, + { + "cell_type": "code", + "execution_count": 347, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", + " 1436 2021-03-20 23:56:00 [UTC] 86160.0 3.196223 0.003212\n", + " 1437 2021-03-20 23:57:00 [UTC] 86220.0 3.201085 0.003261\n", + " 1438 2021-03-20 23:58:00 [UTC] 86280.0 3.204328 0.003304\n", + " 1439 2021-03-20 23:59:00 [UTC] 86340.0 3.204297 0.003307\n", + " 1440 2021-03-21 00:00:00 [UTC] 86400.0 3.201469 0.003290,\n", + " $Time^{UTC}$ Elapsed secs ${\\delta}x$ ${\\delta}v$\n", + " 1436 2021-03-20 23:56:00 [UTC] 86160.0 3.100366 0.003130\n", + " 1437 2021-03-20 23:57:00 [UTC] 86220.0 3.103318 0.003178\n", + " 1438 2021-03-20 23:58:00 [UTC] 86280.0 3.104796 0.003219\n", + " 1439 2021-03-20 23:59:00 [UTC] 86340.0 3.103123 0.003218\n", + " 1440 2021-03-21 00:00:00 [UTC] 86400.0 3.098854 0.003203]" ] - } - ], - "layout": { - "autosize": true, - "showlegend": true, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ + }, + "execution_count": 347, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[orbit_df_RMS_list[list_ind].tail() for list_ind in range(0, len(orbit_list))]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "tags": [] + }, + "source": [ + "# Validation Plots " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot position error " + ] + }, + { + "cell_type": "code", + "execution_count": 348, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" + "mode": "lines", + "name": "OSTk EGM2008 100x100 minus STK EGM2008 70x70", + "type": "scatter", + "x": [ + 0, + 60, + 120, + 180, + 240, + 300, + 360, + 420, + 480, + 540, + 600, + 660, + 720, + 780, + 840, + 900, + 960, + 1020, + 1080, + 1140, + 1200, + 1260, + 1320, + 1380, + 1440, + 1500, + 1560, + 1620, + 1680, + 1740, + 1800, + 1860, + 1920, + 1980, + 2040, + 2100, + 2160, + 2220, + 2280, + 2340, + 2400, + 2460, + 2520, + 2580, + 2640, + 2700, + 2760, + 2820, + 2880, + 2940, + 3000, + 3060, + 3120, + 3180, + 3240, + 3300, + 3360, + 3420, + 3480, + 3540, + 3600, + 3660, + 3720, + 3780, + 3840, + 3900, + 3960, + 4020, + 4080, + 4140, + 4200, + 4260, + 4320, + 4380, + 4440, + 4500, + 4560, + 4620, + 4680, + 4740, + 4800, + 4860, + 4920, + 4980, + 5040, + 5100, + 5160, + 5220, + 5280, + 5340, + 5400, + 5460, + 5520, + 5580, + 5640, + 5700, + 5760, + 5820, + 5880, + 5940, + 6000, + 6060, + 6120, + 6180, + 6240, + 6300, + 6360, + 6420, + 6480, + 6540, + 6600, + 6660, + 6720, + 6780, + 6840, + 6900, + 6960, + 7020, + 7080, + 7140, + 7200, + 7260, + 7320, + 7380, + 7440, + 7500, + 7560, + 7620, + 7680, + 7740, + 7800, + 7860, + 7920, + 7980, + 8040, + 8100, + 8160, + 8220, + 8280, + 8340, + 8400, + 8460, + 8520, + 8580, + 8640, + 8700, + 8760, + 8820, + 8880, + 8940, + 9000, + 9060, + 9120, + 9180, + 9240, + 9300, + 9360, + 9420, + 9480, + 9540, + 9600, + 9660, + 9720, + 9780, + 9840, + 9900, + 9960, + 10020, + 10080, + 10140, + 10200, + 10260, + 10320, + 10380, + 10440, + 10500, + 10560, + 10620, + 10680, + 10740, + 10800, + 10860, + 10920, + 10980, + 11040, + 11100, + 11160, + 11220, + 11280, + 11340, + 11400, + 11460, + 11520, + 11580, + 11640, + 11700, + 11760, + 11820, + 11880, + 11940, + 12000, + 12060, + 12120, + 12180, + 12240, + 12300, + 12360, + 12420, + 12480, + 12540, + 12600, + 12660, + 12720, + 12780, + 12840, + 12900, + 12960, + 13020, + 13080, + 13140, + 13200, + 13260, + 13320, + 13380, + 13440, + 13500, + 13560, + 13620, + 13680, + 13740, + 13800, + 13860, + 13920, + 13980, + 14040, + 14100, + 14160, + 14220, + 14280, + 14340, + 14400, + 14460, + 14520, + 14580, + 14640, + 14700, + 14760, + 14820, + 14880, + 14940, + 15000, + 15060, + 15120, + 15180, + 15240, + 15300, + 15360, + 15420, + 15480, + 15540, + 15600, + 15660, + 15720, + 15780, + 15840, + 15900, + 15960, + 16020, + 16080, + 16140, + 16200, + 16260, + 16320, + 16380, + 16440, + 16500, + 16560, + 16620, + 16680, + 16740, + 16800, + 16860, + 16920, + 16980, + 17040, + 17100, + 17160, + 17220, + 17280, + 17340, + 17400, + 17460, + 17520, + 17580, + 17640, + 17700, + 17760, + 17820, + 17880, + 17940, + 18000, + 18060, + 18120, + 18180, + 18240, + 18300, + 18360, + 18420, + 18480, + 18540, + 18600, + 18660, + 18720, + 18780, + 18840, + 18900, + 18960, + 19020, + 19080, + 19140, + 19200, + 19260, + 19320, + 19380, + 19440, + 19500, + 19560, + 19620, + 19680, + 19740, + 19800, + 19860, + 19920, + 19980, + 20040, + 20100, + 20160, + 20220, + 20280, + 20340, + 20400, + 20460, + 20520, + 20580, + 20640, + 20700, + 20760, + 20820, + 20880, + 20940, + 21000, + 21060, + 21120, + 21180, + 21240, + 21300, + 21360, + 21420, + 21480, + 21540, + 21600, + 21660, + 21720, + 21780, + 21840, + 21900, + 21960, + 22020, + 22080, + 22140, + 22200, + 22260, + 22320, + 22380, + 22440, + 22500, + 22560, + 22620, + 22680, + 22740, + 22800, + 22860, + 22920, + 22980, + 23040, + 23100, + 23160, + 23220, + 23280, + 23340, + 23400, + 23460, + 23520, + 23580, + 23640, + 23700, + 23760, + 23820, + 23880, + 23940, + 24000, + 24060, + 24120, + 24180, + 24240, + 24300, + 24360, + 24420, + 24480, + 24540, + 24600, + 24660, + 24720, + 24780, + 24840, + 24900, + 24960, + 25020, + 25080, + 25140, + 25200, + 25260, + 25320, + 25380, + 25440, + 25500, + 25560, + 25620, + 25680, + 25740, + 25800, + 25860, + 25920, + 25980, + 26040, + 26100, + 26160, + 26220, + 26280, + 26340, + 26400, + 26460, + 26520, + 26580, + 26640, + 26700, + 26760, + 26820, + 26880, + 26940, + 27000, + 27060, + 27120, + 27180, + 27240, + 27300, + 27360, + 27420, + 27480, + 27540, + 27600, + 27660, + 27720, + 27780, + 27840, + 27900, + 27960, + 28020, + 28080, + 28140, + 28200, + 28260, + 28320, + 28380, + 28440, + 28500, + 28560, + 28620, + 28680, + 28740, + 28800, + 28860, + 28920, + 28980, + 29040, + 29100, + 29160, + 29220, + 29280, + 29340, + 29400, + 29460, + 29520, + 29580, + 29640, + 29700, + 29760, + 29820, + 29880, + 29940, + 30000, + 30060, + 30120, + 30180, + 30240, + 30300, + 30360, + 30420, + 30480, + 30540, + 30600, + 30660, + 30720, + 30780, + 30840, + 30900, + 30960, + 31020, + 31080, + 31140, + 31200, + 31260, + 31320, + 31380, + 31440, + 31500, + 31560, + 31620, + 31680, + 31740, + 31800, + 31860, + 31920, + 31980, + 32040, + 32100, + 32160, + 32220, + 32280, + 32340, + 32400, + 32460, + 32520, + 32580, + 32640, + 32700, + 32760, + 32820, + 32880, + 32940, + 33000, + 33060, + 33120, + 33180, + 33240, + 33300, + 33360, + 33420, + 33480, + 33540, + 33600, + 33660, + 33720, + 33780, + 33840, + 33900, + 33960, + 34020, + 34080, + 34140, + 34200, + 34260, + 34320, + 34380, + 34440, + 34500, + 34560, + 34620, + 34680, + 34740, + 34800, + 34860, + 34920, + 34980, + 35040, + 35100, + 35160, + 35220, + 35280, + 35340, + 35400, + 35460, + 35520, + 35580, + 35640, + 35700, + 35760, + 35820, + 35880, + 35940, + 36000, + 36060, + 36120, + 36180, + 36240, + 36300, + 36360, + 36420, + 36480, + 36540, + 36600, + 36660, + 36720, + 36780, + 36840, + 36900, + 36960, + 37020, + 37080, + 37140, + 37200, + 37260, + 37320, + 37380, + 37440, + 37500, + 37560, + 37620, + 37680, + 37740, + 37800, + 37860, + 37920, + 37980, + 38040, + 38100, + 38160, + 38220, + 38280, + 38340, + 38400, + 38460, + 38520, + 38580, + 38640, + 38700, + 38760, + 38820, + 38880, + 38940, + 39000, + 39060, + 39120, + 39180, + 39240, + 39300, + 39360, + 39420, + 39480, + 39540, + 39600, + 39660, + 39720, + 39780, + 39840, + 39900, + 39960, + 40020, + 40080, + 40140, + 40200, + 40260, + 40320, + 40380, + 40440, + 40500, + 40560, + 40620, + 40680, + 40740, + 40800, + 40860, + 40920, + 40980, + 41040, + 41100, + 41160, + 41220, + 41280, + 41340, + 41400, + 41460, + 41520, + 41580, + 41640, + 41700, + 41760, + 41820, + 41880, + 41940, + 42000, + 42060, + 42120, + 42180, + 42240, + 42300, + 42360, + 42420, + 42480, + 42540, + 42600, + 42660, + 42720, + 42780, + 42840, + 42900, + 42960, + 43020, + 43080, + 43140, + 43200, + 43260, + 43320, + 43380, + 43440, + 43500, + 43560, + 43620, + 43680, + 43740, + 43800, + 43860, + 43920, + 43980, + 44040, + 44100, + 44160, + 44220, + 44280, + 44340, + 44400, + 44460, + 44520, + 44580, + 44640, + 44700, + 44760, + 44820, + 44880, + 44940, + 45000, + 45060, + 45120, + 45180, + 45240, + 45300, + 45360, + 45420, + 45480, + 45540, + 45600, + 45660, + 45720, + 45780, + 45840, + 45900, + 45960, + 46020, + 46080, + 46140, + 46200, + 46260, + 46320, + 46380, + 46440, + 46500, + 46560, + 46620, + 46680, + 46740, + 46800, + 46860, + 46920, + 46980, + 47040, + 47100, + 47160, + 47220, + 47280, + 47340, + 47400, + 47460, + 47520, + 47580, + 47640, + 47700, + 47760, + 47820, + 47880, + 47940, + 48000, + 48060, + 48120, + 48180, + 48240, + 48300, + 48360, + 48420, + 48480, + 48540, + 48600, + 48660, + 48720, + 48780, + 48840, + 48900, + 48960, + 49020, + 49080, + 49140, + 49200, + 49260, + 49320, + 49380, + 49440, + 49500, + 49560, + 49620, + 49680, + 49740, + 49800, + 49860, + 49920, + 49980, + 50040, + 50100, + 50160, + 50220, + 50280, + 50340, + 50400, + 50460, + 50520, + 50580, + 50640, + 50700, + 50760, + 50820, + 50880, + 50940, + 51000, + 51060, + 51120, + 51180, + 51240, + 51300, + 51360, + 51420, + 51480, + 51540, + 51600, + 51660, + 51720, + 51780, + 51840, + 51900, + 51960, + 52020, + 52080, + 52140, + 52200, + 52260, + 52320, + 52380, + 52440, + 52500, + 52560, + 52620, + 52680, + 52740, + 52800, + 52860, + 52920, + 52980, + 53040, + 53100, + 53160, + 53220, + 53280, + 53340, + 53400, + 53460, + 53520, + 53580, + 53640, + 53700, + 53760, + 53820, + 53880, + 53940, + 54000, + 54060, + 54120, + 54180, + 54240, + 54300, + 54360, + 54420, + 54480, + 54540, + 54600, + 54660, + 54720, + 54780, + 54840, + 54900, + 54960, + 55020, + 55080, + 55140, + 55200, + 55260, + 55320, + 55380, + 55440, + 55500, + 55560, + 55620, + 55680, + 55740, + 55800, + 55860, + 55920, + 55980, + 56040, + 56100, + 56160, + 56220, + 56280, + 56340, + 56400, + 56460, + 56520, + 56580, + 56640, + 56700, + 56760, + 56820, + 56880, + 56940, + 57000, + 57060, + 57120, + 57180, + 57240, + 57300, + 57360, + 57420, + 57480, + 57540, + 57600, + 57660, + 57720, + 57780, + 57840, + 57900, + 57960, + 58020, + 58080, + 58140, + 58200, + 58260, + 58320, + 58380, + 58440, + 58500, + 58560, + 58620, + 58680, + 58740, + 58800, + 58860, + 58920, + 58980, + 59040, + 59100, + 59160, + 59220, + 59280, + 59340, + 59400, + 59460, + 59520, + 59580, + 59640, + 59700, + 59760, + 59820, + 59880, + 59940, + 60000, + 60060, + 60120, + 60180, + 60240, + 60300, + 60360, + 60420, + 60480, + 60540, + 60600, + 60660, + 60720, + 60780, + 60840, + 60900, + 60960, + 61020, + 61080, + 61140, + 61200, + 61260, + 61320, + 61380, + 61440, + 61500, + 61560, + 61620, + 61680, + 61740, + 61800, + 61860, + 61920, + 61980, + 62040, + 62100, + 62160, + 62220, + 62280, + 62340, + 62400, + 62460, + 62520, + 62580, + 62640, + 62700, + 62760, + 62820, + 62880, + 62940, + 63000, + 63060, + 63120, + 63180, + 63240, + 63300, + 63360, + 63420, + 63480, + 63540, + 63600, + 63660, + 63720, + 63780, + 63840, + 63900, + 63960, + 64020, + 64080, + 64140, + 64200, + 64260, + 64320, + 64380, + 64440, + 64500, + 64560, + 64620, + 64680, + 64740, + 64800, + 64860, + 64920, + 64980, + 65040, + 65100, + 65160, + 65220, + 65280, + 65340, + 65400, + 65460, + 65520, + 65580, + 65640, + 65700, + 65760, + 65820, + 65880, + 65940, + 66000, + 66060, + 66120, + 66180, + 66240, + 66300, + 66360, + 66420, + 66480, + 66540, + 66600, + 66660, + 66720, + 66780, + 66840, + 66900, + 66960, + 67020, + 67080, + 67140, + 67200, + 67260, + 67320, + 67380, + 67440, + 67500, + 67560, + 67620, + 67680, + 67740, + 67800, + 67860, + 67920, + 67980, + 68040, + 68100, + 68160, + 68220, + 68280, + 68340, + 68400, + 68460, + 68520, + 68580, + 68640, + 68700, + 68760, + 68820, + 68880, + 68940, + 69000, + 69060, + 69120, + 69180, + 69240, + 69300, + 69360, + 69420, + 69480, + 69540, + 69600, + 69660, + 69720, + 69780, + 69840, + 69900, + 69960, + 70020, + 70080, + 70140, + 70200, + 70260, + 70320, + 70380, + 70440, + 70500, + 70560, + 70620, + 70680, + 70740, + 70800, + 70860, + 70920, + 70980, + 71040, + 71100, + 71160, + 71220, + 71280, + 71340, + 71400, + 71460, + 71520, + 71580, + 71640, + 71700, + 71760, + 71820, + 71880, + 71940, + 72000, + 72060, + 72120, + 72180, + 72240, + 72300, + 72360, + 72420, + 72480, + 72540, + 72600, + 72660, + 72720, + 72780, + 72840, + 72900, + 72960, + 73020, + 73080, + 73140, + 73200, + 73260, + 73320, + 73380, + 73440, + 73500, + 73560, + 73620, + 73680, + 73740, + 73800, + 73860, + 73920, + 73980, + 74040, + 74100, + 74160, + 74220, + 74280, + 74340, + 74400, + 74460, + 74520, + 74580, + 74640, + 74700, + 74760, + 74820, + 74880, + 74940, + 75000, + 75060, + 75120, + 75180, + 75240, + 75300, + 75360, + 75420, + 75480, + 75540, + 75600, + 75660, + 75720, + 75780, + 75840, + 75900, + 75960, + 76020, + 76080, + 76140, + 76200, + 76260, + 76320, + 76380, + 76440, + 76500, + 76560, + 76620, + 76680, + 76740, + 76800, + 76860, + 76920, + 76980, + 77040, + 77100, + 77160, + 77220, + 77280, + 77340, + 77400, + 77460, + 77520, + 77580, + 77640, + 77700, + 77760, + 77820, + 77880, + 77940, + 78000, + 78060, + 78120, + 78180, + 78240, + 78300, + 78360, + 78420, + 78480, + 78540, + 78600, + 78660, + 78720, + 78780, + 78840, + 78900, + 78960, + 79020, + 79080, + 79140, + 79200, + 79260, + 79320, + 79380, + 79440, + 79500, + 79560, + 79620, + 79680, + 79740, + 79800, + 79860, + 79920, + 79980, + 80040, + 80100, + 80160, + 80220, + 80280, + 80340, + 80400, + 80460, + 80520, + 80580, + 80640, + 80700, + 80760, + 80820, + 80880, + 80940, + 81000, + 81060, + 81120, + 81180, + 81240, + 81300, + 81360, + 81420, + 81480, + 81540, + 81600, + 81660, + 81720, + 81780, + 81840, + 81900, + 81960, + 82020, + 82080, + 82140, + 82200, + 82260, + 82320, + 82380, + 82440, + 82500, + 82560, + 82620, + 82680, + 82740, + 82800, + 82860, + 82920, + 82980, + 83040, + 83100, + 83160, + 83220, + 83280, + 83340, + 83400, + 83460, + 83520, + 83580, + 83640, + 83700, + 83760, + 83820, + 83880, + 83940, + 84000, + 84060, + 84120, + 84180, + 84240, + 84300, + 84360, + 84420, + 84480, + 84540, + 84600, + 84660, + 84720, + 84780, + 84840, + 84900, + 84960, + 85020, + 85080, + 85140, + 85200, + 85260, + 85320, + 85380, + 85440, + 85500, + 85560, + 85620, + 85680, + 85740, + 85800, + 85860, + 85920, + 85980, + 86040, + 86100, + 86160, + 86220, + 86280, + 86340, + 86400 + ], + "y": [ + 0, + 0.0014914935461166879, + 0.005670308686545031, + 0.01226622495801877, + 0.020615166502155582, + 0.029935635320678708, + 0.03933513178377657, + 0.04865767988115584, + 0.05839603009965911, + 0.06883859273264774, + 0.07989746864004298, + 0.09166093719257047, + 0.10438145030615914, + 0.11772131525559242, + 0.13098187383486906, + 0.14405305965255935, + 0.15728151116023817, + 0.1712343442693403, + 0.18634524966905908, + 0.20252370968998948, + 0.21897141480040905, + 0.234610552037688, + 0.24926841159492164, + 0.26336911806686886, + 0.27753504268501733, + 0.29229211738263655, + 0.30830767961282346, + 0.32584549615205083, + 0.3434995049871606, + 0.3609362349894917, + 0.3788539177151479, + 0.3975047177411702, + 0.41681388770780553, + 0.43663958707467004, + 0.4559591778704751, + 0.4745561398558467, + 0.49319661057761716, + 0.5112706337528056, + 0.5299834990789527, + 0.5498194535778391, + 0.5694823835853953, + 0.5883275463659875, + 0.6040229983295451, + 0.618488366445963, + 0.6306774699072405, + 0.6437782459166733, + 0.6591675305999847, + 0.6711992499189302, + 0.67921118532771, + 0.6864703403907219, + 0.6926354028729962, + 0.6976918658590038, + 0.7026723093568791, + 0.7047154033472287, + 0.704287953944647, + 0.7028182158988938, + 0.7000269796107684, + 0.695076763540856, + 0.6883724101198733, + 0.6806465180327615, + 0.6717401696451691, + 0.6610670501522479, + 0.648316308564139, + 0.6344701238099382, + 0.620365261638601, + 0.6052880935062728, + 0.5904101348911741, + 0.5754691529814859, + 0.5574106727129926, + 0.5374491467676878, + 0.5167692869705901, + 0.49538733940757895, + 0.47500757529871634, + 0.4548849444066921, + 0.4331990634633052, + 0.409789658895299, + 0.38527748063749506, + 0.3596422388675038, + 0.3334111198913585, + 0.3083596124478273, + 0.28557939878866245, + 0.26448038751564634, + 0.2444896945832276, + 0.22632384886954, + 0.20876418839127503, + 0.19317641425702747, + 0.17806889336696977, + 0.16234643190413028, + 0.1518722693232648, + 0.14754807029442935, + 0.1424411357643169, + 0.13490990898167332, + 0.1271308670395014, + 0.12223260739697225, + 0.12460067128983526, + 0.13330389770333942, + 0.14329055393502219, + 0.15092788951664873, + 0.15633280923009382, + 0.15990122909367016, + 0.16369648268916048, + 0.16696013865443265, + 0.1673183713995203, + 0.16546946576187124, + 0.16284887041980367, + 0.16009053511494595, + 0.15661196089593288, + 0.1523018164119752, + 0.1488363957441424, + 0.14678155705409385, + 0.14415271342699126, + 0.14084474171177036, + 0.1379904705902316, + 0.13619248983830154, + 0.13587273611694087, + 0.13767694380916362, + 0.14245004310544895, + 0.15072281313959973, + 0.16234190820452377, + 0.17732012930774932, + 0.1895457452266452, + 0.20253575214034816, + 0.22444962672337143, + 0.2465377645411616, + 0.2688001196482003, + 0.29153606327117226, + 0.31452126876334213, + 0.33786978394428874, + 0.3615259458085421, + 0.3861768598741849, + 0.4109116332812791, + 0.43500608614875985, + 0.4617954818123938, + 0.48961677398903525, + 0.5182581209980803, + 0.5464309753452211, + 0.5735102695150046, + 0.6003832599799588, + 0.6273419645737212, + 0.6544318938503983, + 0.6820255418892961, + 0.7089903940130879, + 0.7373108308000551, + 0.7650227091111007, + 0.790938550952286, + 0.8159453096752554, + 0.8411983503050968, + 0.8644862287999712, + 0.8868613314738876, + 0.9091792158676738, + 0.9295402771432679, + 0.9476532164813196, + 0.9641528115249416, + 0.9800445979825632, + 0.9954291529666603, + 1.0090146615349904, + 1.0201268199832734, + 1.02943382320039, + 1.0375775652756152, + 1.0447093671517267, + 1.0502416126903498, + 1.0529980674889534, + 1.0525900912341037, + 1.0497520338776405, + 1.0455826427211692, + 1.041814021629151, + 1.0388663311116715, + 1.0323633491698405, + 1.019555087433137, + 1.0052209677039752, + 0.9913390474083423, + 0.9773609766367793, + 0.9624509051661485, + 0.9445153779991523, + 0.9254852658718691, + 0.9061119170397484, + 0.8849159731945326, + 0.861802970116812, + 0.8392857084284754, + 0.8168846669101628, + 0.7926109318936562, + 0.7679494142444134, + 0.7441120247128374, + 0.7196061726638445, + 0.6956674049345843, + 0.67433330278159, + 0.6539849050910564, + 0.6347628618111637, + 0.618148137625582, + 0.605138464892897, + 0.5940388099544378, + 0.5825889496750777, + 0.5736667014059674, + 0.5690804007371805, + 0.5650050817618231, + 0.5580555655104327, + 0.5501961859236454, + 0.5445569808452354, + 0.5425238224835176, + 0.5429824125396725, + 0.5445599662408221, + 0.5469290910004644, + 0.5495066954769214, + 0.5526768015156732, + 0.556436552317988, + 0.5602196261980954, + 0.5647450657269646, + 0.5706999901913885, + 0.5779953285691293, + 0.5860115665020222, + 0.5953287420594079, + 0.6063430185698053, + 0.6179876991111971, + 0.6310924550117332, + 0.6459284940116066, + 0.6613100658867823, + 0.6767308411534743, + 0.6916401605797015, + 0.707212928872319, + 0.7256919259591531, + 0.746345828388076, + 0.767967324688603, + 0.7898176657504339, + 0.8117475997591915, + 0.8340513322694331, + 0.8571687176255752, + 0.8814313671906204, + 0.9067015328215877, + 0.9325782002373216, + 0.9584743577100802, + 0.9839748925736933, + 1.0087461890480092, + 1.0329603968419896, + 1.057419435819357, + 1.0820250792258246, + 1.1061255232776048, + 1.1307454017132106, + 1.1575058830072193, + 1.1855886573195138, + 1.2132995009941148, + 1.239799392533056, + 1.266663172987255, + 1.2938322502437032, + 1.3197987257885149, + 1.3450840234029944, + 1.3679854578590003, + 1.3888826705079245, + 1.4087921823824567, + 1.4272130071822524, + 1.4431136612707036, + 1.4572394024911985, + 1.4694327276914032, + 1.478806160674864, + 1.4852286343069847, + 1.4894521966617398, + 1.4924230886482581, + 1.49396101270621, + 1.493158133199078, + 1.4893820475446662, + 1.4825671446455404, + 1.4732170031974008, + 1.461822496167369, + 1.4489405004777756, + 1.434830865275513, + 1.4185235247886057, + 1.398985036975777, + 1.3763500353173506, + 1.3513230717756095, + 1.324579989939638, + 1.2971829553560876, + 1.2706547640449328, + 1.243417770205399, + 1.212259122529216, + 1.1796201913016062, + 1.148706921176548, + 1.1171083215645072, + 1.084089865043868, + 1.0499894685662734, + 1.0152765061043987, + 0.9815693842751662, + 0.9490360275708505, + 0.9161272832001623, + 0.8827370017223001, + 0.8503735592380712, + 0.8182725741081365, + 0.7863173788733728, + 0.7571804546900145, + 0.727723806576889, + 0.6980400545690123, + 0.6725439013219019, + 0.6516736439943125, + 0.6305748187676027, + 0.6097678203999872, + 0.5926911839436325, + 0.5799905898918958, + 0.568880207270158, + 0.5597438895308557, + 0.5564751357508548, + 0.5580246031810999, + 0.5616381870629078, + 0.5669895608421647, + 0.5748831095503006, + 0.585546831766691, + 0.5989876320028319, + 0.6156036434577046, + 0.6349605307864113, + 0.6559206344810935, + 0.6782120986337264, + 0.7028836183772033, + 0.7302321226877628, + 0.7585629963313237, + 0.7870337635237097, + 0.8162875086898884, + 0.8466520297071884, + 0.8788091954236328, + 0.9131170461499182, + 0.9488845494263418, + 0.9856540160787051, + 1.0232238265647837, + 1.0611915458339345, + 1.099102645882153, + 1.1367448903985837, + 1.1745525848394274, + 1.2130918362219054, + 1.2522718562094592, + 1.2917289996109445, + 1.3312704987792328, + 1.3707398452601538, + 1.4099067875754134, + 1.4486218864415097, + 1.487318296084638, + 1.5261047046903442, + 1.5637265065912493, + 1.5991024594780385, + 1.6324350098410263, + 1.6643010603077588, + 1.6946749800105823, + 1.7224294964407632, + 1.7488211385448145, + 1.772080007773659, + 1.792708819231931, + 1.814566450626475, + 1.8369486018837147, + 1.8580040679958645, + 1.8781264148266863, + 1.8960825376813872, + 1.912364303879215, + 1.9280006362748863, + 1.943210613691, + 1.9582149463710499, + 1.973108960511674, + 1.9866604827089283, + 1.998973992169231, + 2.0110278896963787, + 2.0227138298953737, + 2.033203589717091, + 2.041781033748887, + 2.0484079466005065, + 2.053925096545211, + 2.0592694228045354, + 2.0647962717537776, + 2.0697337627771626, + 2.072661693504911, + 2.073123231357988, + 2.071774455451873, + 2.069531888843781, + 2.066966618595888, + 2.064332318469985, + 2.0613527871351875, + 2.0564271085661354, + 2.049369930442159, + 2.041958410085135, + 2.034995518477095, + 2.027238204589531, + 2.0153020220328397, + 2.003682740705033, + 1.9939637384709752, + 1.9825629180350828, + 1.9696800891929223, + 1.9565661213574344, + 1.9432475754771774, + 1.9289051954385639, + 1.9136855587527422, + 1.8986004077824576, + 1.8830469180318583, + 1.867187677193029, + 1.8533869866305803, + 1.839176568525975, + 1.8213206195835432, + 1.8007962311606056, + 1.781080377380452, + 1.7636187303838458, + 1.7461146411754942, + 1.727426492433426, + 1.7077379552225749, + 1.6865035876982064, + 1.6642359434621585, + 1.6421551454730976, + 1.620793933516945, + 1.5973152710631264, + 1.5722939101710944, + 1.5485828994341726, + 1.525098476542629, + 1.5005547425361279, + 1.4754302705778317, + 1.450146557776906, + 1.424661141762306, + 1.3991892407200892, + 1.3744086868642604, + 1.3505124960791997, + 1.3269290690127962, + 1.3041711353076564, + 1.2828069428099498, + 1.2623797611111982, + 1.2426564030870344, + 1.2239032439219464, + 1.206286417664022, + 1.1900474784809616, + 1.1756758976182877, + 1.1634147671697583, + 1.1528956915986004, + 1.1437324836691678, + 1.1363249689608974, + 1.131545944313799, + 1.1293395868935676, + 1.1287568181013694, + 1.1299710987428973, + 1.1343685119314963, + 1.1415340463094348, + 1.1497499697063684, + 1.1595530988844673, + 1.172305962790093, + 1.1876453692221258, + 1.2042999518912318, + 1.2234200417619854, + 1.2453463317549982, + 1.2683049355013378, + 1.29460722753083, + 1.3251930639235001, + 1.3545650580724036, + 1.375381905833632, + 1.3962027940332846, + 1.4200499533514472, + 1.4428785783496403, + 1.4658461088319272, + 1.4874397886736277, + 1.5069655815343435, + 1.525084327912436, + 1.5427634111246342, + 1.55945874017482, + 1.5731761924132839, + 1.5846570904139063, + 1.595302919267747, + 1.605187385938712, + 1.6140076330567679, + 1.6207194079960463, + 1.6249630676394717, + 1.6281951995215052, + 1.62928999766094, + 1.6277729440041668, + 1.6238872109923486, + 1.6181007929353661, + 1.6133074339551805, + 1.6089750152976319, + 1.603177177049531, + 1.5952498161112139, + 1.5846698567812756, + 1.5731900896611468, + 1.5603479852237638, + 1.5436631389751705, + 1.5244711593525084, + 1.5055231152179565, + 1.4874526810949613, + 1.4680506791842607, + 1.4452518619377415, + 1.4219732099324516, + 1.3999430510118576, + 1.3770364519163658, + 1.3523888633145078, + 1.3269370376829404, + 1.3020619754553533, + 1.277850743784566, + 1.2544913054508198, + 1.2317193807299331, + 1.2073112846331209, + 1.1810619921224241, + 1.1559839838039248, + 1.1356907871010369, + 1.1169671360401485, + 1.0975014841018975, + 1.078412427294966, + 1.060197660802731, + 1.044201568950765, + 1.0295440345068139, + 1.0143878817020289, + 1.000420888215064, + 0.988610261314526, + 0.9789856714416646, + 0.9714280888692464, + 0.9658249233296853, + 0.9620964127672073, + 0.9599928889896213, + 0.959145719339975, + 0.9595219972263344, + 0.9618878105273201, + 0.967684157200881, + 0.9772948883218027, + 0.9890377951096451, + 1.0014594873788234, + 1.0152613816300642, + 1.0311372501509628, + 1.048925678364492, + 1.06836893761132, + 1.0887778532386285, + 1.1096412035924588, + 1.1313063314695522, + 1.154320949653611, + 1.1788166232980926, + 1.2046640316518107, + 1.2316256774275027, + 1.2594578008480035, + 1.2876889718917486, + 1.3158614258752122, + 1.3442189000839775, + 1.3727462202485974, + 1.4008896827077864, + 1.4285564349692697, + 1.455778196833319, + 1.4821423807630394, + 1.5080184937678291, + 1.5325472250071734, + 1.5568554471402989, + 1.5796466856176257, + 1.6012194813242773, + 1.6220882583700091, + 1.6388248505993208, + 1.650536667311976, + 1.6656856606270762, + 1.684462296393315, + 1.7000837617307898, + 1.7145383838784305, + 1.7287763606950621, + 1.7420085407250538, + 1.754819587112685, + 1.7674747337209056, + 1.7794818679268716, + 1.7911787542130786, + 1.802357940582157, + 1.8130520964562815, + 1.8231890885422166, + 1.8319014835068894, + 1.8403302128161165, + 1.8482365176657156, + 1.8548597926548742, + 1.8591735591572878, + 1.8599606446454957, + 1.8583637881519035, + 1.859244745263352, + 1.8613020631188002, + 1.8609548393225386, + 1.857123054193722, + 1.852485466779851, + 1.8497965893287562, + 1.846822948917184, + 1.8409070389615012, + 1.8323783328298016, + 1.8239878315338607, + 1.8150077296056306, + 1.80484655387112, + 1.7940593043695676, + 1.7831339207322539, + 1.7715433390715947, + 1.7597878055403269, + 1.7470469168083778, + 1.7322010831811097, + 1.7166025841003274, + 1.7019294752528356, + 1.6881395852813508, + 1.6749219244477285, + 1.6612413950778608, + 1.646448608765475, + 1.6309612394093655, + 1.614601859979593, + 1.6020991031785852, + 1.5933540128265495, + 1.5835300052299015, + 1.5733566998485395, + 1.5652717068872317, + 1.5586163718543102, + 1.5523438724287673, + 1.5463253568176893, + 1.5427708840351402, + 1.541555470184452, + 1.541070978791728, + 1.541256694262145, + 1.5422772883039968, + 1.544087749443292, + 1.5467803195891128, + 1.5506343777660645, + 1.5557749053372611, + 1.5617715836339068, + 1.5679028075549863, + 1.5742361521638157, + 1.5818871203470382, + 1.5912487311548982, + 1.6013835575519861, + 1.61171699677706, + 1.6224619427508542, + 1.6338134568635259, + 1.6456146666570977, + 1.6572469517831052, + 1.668137111238828, + 1.6787681059574635, + 1.6898927502209855, + 1.702001492717919, + 1.714820747590784, + 1.7280145756616094, + 1.7412080162412757, + 1.7558127029313049, + 1.772508993728059, + 1.7883535482439985, + 1.8033305349020032, + 1.8189986290645175, + 1.8360552869289775, + 1.8542695463737544, + 1.8737750447381312, + 1.8928565702494462, + 1.9102286677845781, + 1.9281216553018978, + 1.9464792537844187, + 1.9662723910439683, + 1.9835836889411622, + 1.9961648940081096, + 2.010089764890499, + 2.023996907638618, + 2.0329508502537106, + 2.0423385694457528, + 2.051759711348932, + 2.058454349599995, + 2.063608610603813, + 2.067590877584345, + 2.069685877563211, + 2.0693464039130682, + 2.0664487336401005, + 2.061672373391244, + 2.05576854455888, + 2.04819196988383, + 2.0385206170415286, + 2.026922099436978, + 2.0132635197669915, + 1.997628055135855, + 1.9804227913618262, + 1.9617380097080708, + 1.9414617694405971, + 1.9196941329476536, + 1.896438939828354, + 1.871633113675155, + 1.8460910408992692, + 1.820996311510839, + 1.7962825665219402, + 1.7711944283209033, + 1.7446860661664776, + 1.7169763729439198, + 1.6888902996733186, + 1.6610071347807225, + 1.6340181340347595, + 1.607912925096796, + 1.5824135285573186, + 1.5576197996797647, + 1.5338441545654768, + 1.5111203800348472, + 1.4893249555941444, + 1.4687490844139366, + 1.4489839552277075, + 1.4285773033730345, + 1.4086467560970957, + 1.3913891634906632, + 1.375708724309238, + 1.3587664711424836, + 1.3422476012085491, + 1.3305398724146966, + 1.3191710707580802, + 1.3055352106409719, + 1.29148263870699, + 1.2780493731755327, + 1.2634938302220444, + 1.2488069397651538, + 1.2364592354891522, + 1.2248361632954046, + 1.2126051634043553, + 1.200766686741734, + 1.190750566625063, + 1.1824464390805884, + 1.1754035519496404, + 1.1690321674385866, + 1.1627468914687062, + 1.1568789276472415, + 1.1524804688514843, + 1.149441747982005, + 1.1476125867286084, + 1.1479608001114712, + 1.1515644681944681, + 1.1577467366936305, + 1.1644786915865335, + 1.1712004041392852, + 1.1788885962510989, + 1.1882967654609817, + 1.1994209994178726, + 1.2122844887553101, + 1.2264921329244913, + 1.2420644663868905, + 1.2595011635230762, + 1.278333396126418, + 1.2979617905776537, + 1.319441868522746, + 1.3430506374161493, + 1.3678209474167353, + 1.393292018247759, + 1.4203378547511478, + 1.4490589511377936, + 1.4771402003169063, + 1.5043349488392723, + 1.5324208429249184, + 1.5615606948430862, + 1.5895629496667028, + 1.6157621682894077, + 1.6460051756345853, + 1.6763447919184395, + 1.7007162869803059, + 1.722028683719179, + 1.745652697606966, + 1.7688517665948231, + 1.7911479499799237, + 1.8129876039812243, + 1.8340988810190488, + 1.8531433718633485, + 1.8706687409284268, + 1.8866486405245126, + 1.901169681103043, + 1.9142525191148498, + 1.9252156366864097, + 1.9339512402620613, + 1.9413558787299985, + 1.9478774130919085, + 1.9530578048617915, + 1.9563863838073574, + 1.957814351677836, + 1.957662275561731, + 1.9561098377303214, + 1.9526666348956605, + 1.9467188779118718, + 1.938266248413389, + 1.9276746217658383, + 1.9152716974765076, + 1.9020502879103556, + 1.889126112544849, + 1.8761900099123787, + 1.8621819613914887, + 1.846540921337111, + 1.829239394957887, + 1.8105333600329991, + 1.7909348518398702, + 1.770692295243767, + 1.7495241363067668, + 1.727847904570484, + 1.706364334714192, + 1.6838372268461756, + 1.6600094461921615, + 1.6363562571385915, + 1.6137294512400813, + 1.591383157294466, + 1.5683939464220145, + 1.5449303385146977, + 1.5221616282619328, + 1.4989013903905974, + 1.4743417574569464, + 1.4537800090385764, + 1.4378725667022232, + 1.4221122281659246, + 1.4056209789830132, + 1.3900317489028515, + 1.3769547702533005, + 1.3663317566863569, + 1.3587666102203455, + 1.3525535528378954, + 1.3469331729485812, + 1.3427603617693797, + 1.3407904150368077, + 1.340926937998757, + 1.3430247367392076, + 1.347538905878976, + 1.35404072190865, + 1.3607835853550814, + 1.366593916714179, + 1.3741753041755729, + 1.3853530268461254, + 1.3992821198583931, + 1.4153544042472919, + 1.433911558188882, + 1.455068215147186, + 1.4769395082725079, + 1.4979392176325526, + 1.518928269074345, + 1.5415537752774326, + 1.566559469351156, + 1.5931299727541928, + 1.6191306206194194, + 1.6445742516711779, + 1.6700555119754967, + 1.6959176704671923, + 1.7223125530478998, + 1.7488500369982312, + 1.7747975286262214, + 1.799887903151658, + 1.824325853374703, + 1.849183251700029, + 1.8741793945185414, + 1.897468232509565, + 1.9190980081508624, + 1.940595321447748, + 1.9618745213426128, + 1.9803404548437145, + 2.0009816270608676, + 2.0234512153285866, + 2.041640972031995, + 2.0549110055211655, + 2.068666618286251, + 2.08516699796271, + 2.1028216267091637, + 2.119551255459656, + 2.136135195932485, + 2.1503694143065184, + 2.1644611635710165, + 2.1782032607624267, + 2.1906185101564613, + 2.2012668555041426, + 2.2100154508597947, + 2.2174917078020737, + 2.2242224010447713, + 2.2302869743753435, + 2.2348549463446776, + 2.2379224586825353, + 2.239970771150961, + 2.2402068086739653, + 2.2379147530414927, + 2.235585494777743, + 2.232827014472289, + 2.2269865356308554, + 2.2237567446027597, + 2.2167378166201916, + 2.2036265258584056, + 2.191185702657193, + 2.179982553848964, + 2.169107140910802, + 2.15711699204601, + 2.1432965730859492, + 2.1284321500023937, + 2.1130750915568353, + 2.0967741251274177, + 2.0786863964732403, + 2.059442596411127, + 2.04122939488402, + 2.022642182361569, + 2.0035071567429936, + 1.983885519048381, + 1.9632294875578775, + 1.9438572909413692, + 1.9243527934805764, + 1.9010104314479759, + 1.8764259328016344, + 1.8539451580585602, + 1.8310771040311202, + 1.8068572247863681, + 1.783922140945144, + 1.7609419978951322, + 1.7360529169862977, + 1.710063751014645, + 1.6852929034075879, + 1.6617747457454177, + 1.6388819233348686, + 1.6187177022647794, + 1.5990967867484174, + 1.5792754771894706, + 1.5636006752987404, + 1.5516305447382133, + 1.5407773507126636, + 1.5328743321180593, + 1.5267988883245127, + 1.5229808829223819, + 1.523578924269106, + 1.5272074757806358, + 1.5328713120322117, + 1.5410599292961247, + 1.5515818095007536, + 1.5644610531839462, + 1.5808009624588781, + 1.599773549905579, + 1.6196813724334036, + 1.6393725481680634, + 1.6588229838095851, + 1.6826342447680462, + 1.7110502013059712, + 1.7393202676181994, + 1.765993857621043, + 1.7920860054956118, + 1.818701220061254, + 1.8464781414987321, + 1.8756001683532215, + 1.9056073976766106, + 1.935433903099259, + 1.9640191071744504, + 1.9915228608822473, + 2.018970785853659, + 2.046655952465579, + 2.074676318163538, + 2.102368952041324, + 2.129393385717216, + 2.1568993621735606, + 2.1861406152831444, + 2.2105672900134987, + 2.228673736090526, + 2.2471991887369054, + 2.2643469065103825, + 2.279556587477242, + 2.2934226837664706, + 2.305656631716242, + 2.3148322355380415, + 2.3230088518309313, + 2.3275104279333005, + 2.328650425254182, + 2.330498521694609, + 2.3309323646735196, + 2.329744094737778, + 2.329003522693982, + 2.3284400905875, + 2.3272004222356855, + 2.326201718980624, + 2.3246020990672456, + 2.3233740296462635, + 2.322417771898569, + 2.320923339779715, + 2.3186779640187294, + 2.3162028740127756, + 2.314404419781956, + 2.3135691024096694, + 2.3127861401422734, + 2.310027325205592, + 2.3050029499633697, + 2.299197770779385, + 2.2932338799443825, + 2.287733613492451, + 2.2821240742781237, + 2.2759759443678527, + 2.268488267235982, + 2.259474516873697, + 2.248881324729228, + 2.2369332097198775, + 2.2250050120620397, + 2.2125345523787074, + 2.198122014826857, + 2.1821332370193245, + 2.165342962363614, + 2.1479907695090814, + 2.13064881244587, + 2.113602559552651, + 2.096870835357089, + 2.08006056073498, + 2.0636152180910847, + 2.0475408050051684, + 2.03241425637175, + 2.0200074293947714, + 2.008653162657497, + 1.997266625423857, + 1.9861827784395165, + 1.9771404970419133, + 1.9685216941957715, + 1.9601771581335556, + 1.9566582020142151, + 1.9553941589383488, + 1.9544975287233037, + 1.9546684099115124, + 1.955382875093588, + 1.9583272361404442, + 1.9623754960533057, + 1.9669614525310144, + 1.9737696824503568, + 1.982226803677434, + 1.992905467435663, + 2.0050411598561304, + 2.0167097419228273, + 2.0315006783737797, + 2.04960890597358, + 2.068732177386891, + 2.087216872624162, + 2.1053959862504765, + 2.124414767366772, + 2.145207325518663, + 2.1681458307697556, + 2.193168811440622, + 2.219415442154331, + 2.2456578361940975, + 2.2712664484413234, + 2.296412466019256, + 2.32168254466806, + 2.3476024593255342, + 2.374280812059046, + 2.40117568629671, + 2.427267995251544, + 2.4521504676639045, + 2.477045659154042, + 2.5015113308325856, + 2.523408491943036, + 2.543143745197709, + 2.561877568075421, + 2.5789169515980555, + 2.593492092632696, + 2.608412164174231, + 2.6216778503317446, + 2.6327802131423987, + 2.641321740568077, + 2.6505098719819467, + 2.6613562686499423, + 2.672692394476319, + 2.680671230570265, + 2.690273064069159, + 2.7018358344548634, + 2.713206538236985, + 2.723569279969327, + 2.734035494940303, + 2.7448907878914777, + 2.7554000849214515, + 2.7655127160254684, + 2.7755329204086725, + 2.7854381162473274, + 2.7949560688260107, + 2.8035198902138236, + 2.8104167717436392, + 2.8152870706496578, + 2.8185981625887386, + 2.8212199945070884, + 2.823494855100921, + 2.825186960790028, + 2.825758158783719, + 2.824809703215466, + 2.8223550560325688, + 2.817990401081555, + 2.810981166850548, + 2.8015381404709387, + 2.790331759960398, + 2.778028895236918, + 2.7653698656307237, + 2.752288003516032, + 2.7380315903399444, + 2.7220239327368696, + 2.7051735359980333, + 2.688571467823237, + 2.6701332953193955, + 2.6491641897509464, + 2.6286803624172146, + 2.610162869337408, + 2.589857542578745, + 2.5674012406474054, + 2.5448556222450796, + 2.5230390501595696, + 2.5003766855529515, + 2.477806872684962, + 2.4559925144520625, + 2.435284633567389, + 2.413825077130249, + 2.3922200595133774, + 2.3700940836182522, + 2.3508419574822357, + 2.3329544034690297, + 2.314314776977396, + 2.2967622434919353, + 2.279558017384641, + 2.2631812435988046, + 2.2502374598154886, + 2.2408560057951257, + 2.2338098610979884, + 2.2284081523947465, + 2.223578445492215, + 2.219211168515296, + 2.2174083909427575, + 2.2194363744980916, + 2.2241137810315825, + 2.229511423873532, + 2.235588467180117, + 2.2427366172117282, + 2.251600863248265, + 2.2613829303762016, + 2.2713861273740155, + 2.281363564764453, + 2.291430191451984, + 2.302026985127513, + 2.3139135155918344, + 2.327291818753558, + 2.341080580462989, + 2.3541243787015373, + 2.3661820349877054, + 2.3777023265259944, + 2.389669514700838, + 2.4021514607274836, + 2.4142079761146222, + 2.425299144809848, + 2.4371852210674017, + 2.4504354383878577, + 2.463257214067407, + 2.4761354290492155, + 2.490194002963089, + 2.506055449532712, + 2.5239217334127138, + 2.5431819709731585, + 2.561939370904357, + 2.5799695057941787, + 2.5990247660893786, + 2.61988959683505, + 2.642565944831649, + 2.665001048105034, + 2.684475114389538, + 2.7013688923518435, + 2.718632172536584, + 2.736743374571317, + 2.754431009569295, + 2.7701769073049864, + 2.784593002037167, + 2.7979294787906417, + 2.809434330937717, + 2.8188626197576507, + 2.8270407922763288, + 2.834512840191768, + 2.840966026372461, + 2.8458645384354964, + 2.849389735402548, + 2.852189407228559, + 2.8545152184165272, + 2.855989296183291, + 2.8562035726373782, + 2.8551685650713536, + 2.85302921543386, + 2.8499297835333492, + 2.8461200685186485, + 2.8414857099451183, + 2.835383443218697, + 2.8278110382300197, + 2.8196107895502425, + 2.810211632897736, + 2.798426717241321, + 2.7845716888997734, + 2.7696739388499436, + 2.7542931892585787, + 2.7383619404141206, + 2.721495653611842, + 2.7033588402856683, + 2.6839163319907144, + 2.663229929139915, + 2.641293473206632, + 2.618097456898278, + 2.593654512321565, + 2.568483058295271, + 2.543228323027488, + 2.518719826746726, + 2.494746303069284, + 2.4704068881240984, + 2.443647922338087, + 2.4159697862644958, + 2.3889677040757196, + 2.362268730753148, + 2.337210696264018, + 2.309697942628101, + 2.2812368150914337, + 2.25486949146063, + 2.2289511171279974, + 2.2051338332216086, + 2.1830171676323062, + 2.161628008077529, + 2.1407721071504957, + 2.121306769884557, + 2.104893760955783, + 2.091138478673871, + 2.0794574770820615, + 2.066738984415126, + 2.0547161875454405, + 2.048173552597297, + 2.045180246211168, + 2.044862841892955, + 2.0481821245765746, + 2.05549585642058, + 2.0662643074347566, + 2.079519080950713, + 2.093883802060966, + 2.1084073048372303, + 2.1257038674979176, + 2.1450092493476087, + 2.1652217676960257, + 2.1891699821461805, + 2.2178726154945148, + 2.2487101385759125, + 2.2801049995893075, + 2.311944428141592, + 2.344460379906632, + 2.3769005961736607, + 2.4097270405077724, + 2.443274769917426, + 2.4765838082422738, + 2.510094314565381, + 2.5439772228133073, + 2.577231471159663, + 2.6092627377383666, + 2.6404917062943314, + 2.672236631992321, + 2.705292589230671, + 2.736565780090662, + 2.7672136623694654, + 2.800496765274029, + 2.833216075500781, + 2.8639573879890476, + 2.896875147496708, + 2.9332144704827496, + 2.9706699593193915, + 3.0054486649470777, + 3.0373964987594486, + 3.0685430269398446, + 3.1005822601102953, + 3.133502161656523, + 3.165647534578091, + 3.196273935012341, + 3.226538742282009, + 3.256738460673168, + 3.2857455804804863, + 3.3131028945837295, + 3.3391500446267477, + 3.3638652338774264, + 3.38672088950072, + 3.4073688548914425, + 3.4262308759867084, + 3.4442428234709404, + 3.461589963230666, + 3.4775276160826576, + 3.491513016874025, + 3.503400488516676, + 3.513426556069907, + 3.5226223405689456, + 3.530451114892201, + 3.5349768256874206, + 3.535842704486042, + 3.534383666875362, + 3.5311372832846843, + 3.5260820086316476, + 3.519095933650937, + 3.5100538352711066, + 3.4990276238644955, + 3.4861041362411407, + 3.4713707439724817, + 3.454913807363588, + 3.437551462906104, + 3.4202145566238022, + 3.4019319535114194, + 3.3802650984171185, + 3.3561463559907083, + 3.331666531464254, + 3.30614133913946, + 3.2799088497230997, + 3.25236993597726, + 3.224647277821929, + 3.194939956374219, + 3.1611606254118145, + 3.1284398095684014, + 3.0970618973491346, + 3.063877808474027, + 3.0302806304749748, + 2.9968259620975104, + 2.9638184818464204, + 2.9319906440055186, + 2.899519172076318, + 2.865933934262139, + 2.834834013769196, + 2.8058656108006246, + 2.7755776377982033, + 2.7459187659247126, + 2.717921875291763, + 2.6907664033857626, + 2.665348720196767, + 2.6428856433403953, + 2.6230377841864216, + 2.6033607630537863, + 2.5830098225493456, + 2.564649959872361, + 2.550567250150256, + 2.5395960805372875, + 2.528459916042324, + 2.5173091785103936, + 2.508121312341425, + 2.501628122997618, + 2.4980519393362277, + 2.4972009497926466, + 2.498562784183134, + 2.501697576542037, + 2.5068009934912134, + 2.513965200887514, + 2.5223812273954205, + 2.5320145716150013, + 2.5439361418174604, + 2.558009628685021, + 2.5732752989849725, + 2.5897641428644462, + 2.607457375291068, + 2.62688558442504, + 2.648828894671746, + 2.672039668836638, + 2.697667254792122, + 2.7250429598845733, + 2.7513509231609494, + 2.7806005836959167, + 2.815120325292122, + 2.8509380736045924, + 2.8850147407500715, + 2.918980870909844, + 2.9554857512796606, + 2.9936967006719537, + 3.032595042995829, + 3.0721403648336, + 3.112321164466938, + 3.152800405343199, + 3.1930922445712655, + 3.2332996814675825, + 3.273750337050028, + 3.3142016844337165, + 3.354309165639771, + 3.393579182274906, + 3.431571415637073, + 3.467980960766077, + 3.5029259496143133, + 3.53658346177401, + 3.5693787043396217, + 3.6013514680552507, + 3.6319778469564366, + 3.660594930718126, + 3.6869893876605815, + 3.7114355774545795, + 3.7336910002213983, + 3.7525328909861844, + 3.7675326634421706, + 3.7797004737063253, + 3.789449376695745, + 3.7964060142212572, + 3.800373055419111, + 3.8018305241191177, + 3.8008470443705153, + 3.797446692998657, + 3.7912248972775284, + 3.7815108583129438, + 3.7683413194041115, + 3.7523505386292073, + 3.733950241740933, + 3.713234446986264, + 3.690785641341613, + 3.6663088540122892, + 3.638486196314863, + 3.6077660300687224, + 3.578140631856687, + 3.548060378774928, + 3.513982934715917, + 3.4776459185974518, + 3.4428400812398925, + 3.409080899646202, + 3.37567378230301, + 3.341925437803199, + 3.307311971911659, + 3.272008435097711, + 3.2355183441250484, + 3.1993554767562857, + 3.163952691509527, + 3.1275096732535737, + 3.0904859373378, + 3.0543378332046744, + 3.0183939922448557, + 2.9821374102374842, + 2.946192504191045, + 2.910223371887499, + 2.875599598279446, + 2.844134203162375, + 2.8137382248853124, + 2.7840323231457638, + 2.7545321093462585, + 2.725488044612874, + 2.6980897631647385, + 2.67284085203017, + 2.649747766813316, + 2.62897824132639, + 2.6105461209786474, + 2.594219451542196, + 2.5798601707225353, + 2.567593250913805, + 2.557696178792652, + 2.5502818944390113, + 2.5450581717693455, + 2.5412281883213566, + 2.538826236186444, + 2.538781815740412, + 2.541517164268801, + 2.5465162393062193, + 2.5535146881391313, + 2.562977639276439, + 2.5747656621272768, + 2.5876464094132876, + 2.6040350151791234, + 2.625622126163099, + 2.644189562624587, + 2.662740852047989, + 2.6874456412884147, + 2.7161320256772252, + 2.743240147750979, + 2.769043247240974, + 2.7960393180230922, + 2.8235914426245645, + 2.851415894187, + 2.879828393515754, + 2.907378614623495, + 2.9337248348948277, + 2.959147434893677, + 2.983860506034883, + 3.0087768468679363, + 3.033056860404415, + 3.0549113244362363, + 3.0750216224666143, + 3.093798935691419, + 3.110991890799751, + 3.1264827427728594, + 3.140137953672017, + 3.152203871453168, + 3.163158441857288, + 3.1728636661887855, + 3.1808544633691023, + 3.186945998117003, + 3.1916388550336907, + 3.196222556939668, + 3.2010847806772675, + 3.204328299838681, + 3.204296779739295, + 3.2014686034100737 + ] + }, + { + "mode": "lines", + "name": "OSTk EGM2008 70x70 minus STK EGM2008 70x70", + "type": "scatter", + "x": [ + 0, + 60, + 120, + 180, + 240, + 300, + 360, + 420, + 480, + 540, + 600, + 660, + 720, + 780, + 840, + 900, + 960, + 1020, + 1080, + 1140, + 1200, + 1260, + 1320, + 1380, + 1440, + 1500, + 1560, + 1620, + 1680, + 1740, + 1800, + 1860, + 1920, + 1980, + 2040, + 2100, + 2160, + 2220, + 2280, + 2340, + 2400, + 2460, + 2520, + 2580, + 2640, + 2700, + 2760, + 2820, + 2880, + 2940, + 3000, + 3060, + 3120, + 3180, + 3240, + 3300, + 3360, + 3420, + 3480, + 3540, + 3600, + 3660, + 3720, + 3780, + 3840, + 3900, + 3960, + 4020, + 4080, + 4140, + 4200, + 4260, + 4320, + 4380, + 4440, + 4500, + 4560, + 4620, + 4680, + 4740, + 4800, + 4860, + 4920, + 4980, + 5040, + 5100, + 5160, + 5220, + 5280, + 5340, + 5400, + 5460, + 5520, + 5580, + 5640, + 5700, + 5760, + 5820, + 5880, + 5940, + 6000, + 6060, + 6120, + 6180, + 6240, + 6300, + 6360, + 6420, + 6480, + 6540, + 6600, + 6660, + 6720, + 6780, + 6840, + 6900, + 6960, + 7020, + 7080, + 7140, + 7200, + 7260, + 7320, + 7380, + 7440, + 7500, + 7560, + 7620, + 7680, + 7740, + 7800, + 7860, + 7920, + 7980, + 8040, + 8100, + 8160, + 8220, + 8280, + 8340, + 8400, + 8460, + 8520, + 8580, + 8640, + 8700, + 8760, + 8820, + 8880, + 8940, + 9000, + 9060, + 9120, + 9180, + 9240, + 9300, + 9360, + 9420, + 9480, + 9540, + 9600, + 9660, + 9720, + 9780, + 9840, + 9900, + 9960, + 10020, + 10080, + 10140, + 10200, + 10260, + 10320, + 10380, + 10440, + 10500, + 10560, + 10620, + 10680, + 10740, + 10800, + 10860, + 10920, + 10980, + 11040, + 11100, + 11160, + 11220, + 11280, + 11340, + 11400, + 11460, + 11520, + 11580, + 11640, + 11700, + 11760, + 11820, + 11880, + 11940, + 12000, + 12060, + 12120, + 12180, + 12240, + 12300, + 12360, + 12420, + 12480, + 12540, + 12600, + 12660, + 12720, + 12780, + 12840, + 12900, + 12960, + 13020, + 13080, + 13140, + 13200, + 13260, + 13320, + 13380, + 13440, + 13500, + 13560, + 13620, + 13680, + 13740, + 13800, + 13860, + 13920, + 13980, + 14040, + 14100, + 14160, + 14220, + 14280, + 14340, + 14400, + 14460, + 14520, + 14580, + 14640, + 14700, + 14760, + 14820, + 14880, + 14940, + 15000, + 15060, + 15120, + 15180, + 15240, + 15300, + 15360, + 15420, + 15480, + 15540, + 15600, + 15660, + 15720, + 15780, + 15840, + 15900, + 15960, + 16020, + 16080, + 16140, + 16200, + 16260, + 16320, + 16380, + 16440, + 16500, + 16560, + 16620, + 16680, + 16740, + 16800, + 16860, + 16920, + 16980, + 17040, + 17100, + 17160, + 17220, + 17280, + 17340, + 17400, + 17460, + 17520, + 17580, + 17640, + 17700, + 17760, + 17820, + 17880, + 17940, + 18000, + 18060, + 18120, + 18180, + 18240, + 18300, + 18360, + 18420, + 18480, + 18540, + 18600, + 18660, + 18720, + 18780, + 18840, + 18900, + 18960, + 19020, + 19080, + 19140, + 19200, + 19260, + 19320, + 19380, + 19440, + 19500, + 19560, + 19620, + 19680, + 19740, + 19800, + 19860, + 19920, + 19980, + 20040, + 20100, + 20160, + 20220, + 20280, + 20340, + 20400, + 20460, + 20520, + 20580, + 20640, + 20700, + 20760, + 20820, + 20880, + 20940, + 21000, + 21060, + 21120, + 21180, + 21240, + 21300, + 21360, + 21420, + 21480, + 21540, + 21600, + 21660, + 21720, + 21780, + 21840, + 21900, + 21960, + 22020, + 22080, + 22140, + 22200, + 22260, + 22320, + 22380, + 22440, + 22500, + 22560, + 22620, + 22680, + 22740, + 22800, + 22860, + 22920, + 22980, + 23040, + 23100, + 23160, + 23220, + 23280, + 23340, + 23400, + 23460, + 23520, + 23580, + 23640, + 23700, + 23760, + 23820, + 23880, + 23940, + 24000, + 24060, + 24120, + 24180, + 24240, + 24300, + 24360, + 24420, + 24480, + 24540, + 24600, + 24660, + 24720, + 24780, + 24840, + 24900, + 24960, + 25020, + 25080, + 25140, + 25200, + 25260, + 25320, + 25380, + 25440, + 25500, + 25560, + 25620, + 25680, + 25740, + 25800, + 25860, + 25920, + 25980, + 26040, + 26100, + 26160, + 26220, + 26280, + 26340, + 26400, + 26460, + 26520, + 26580, + 26640, + 26700, + 26760, + 26820, + 26880, + 26940, + 27000, + 27060, + 27120, + 27180, + 27240, + 27300, + 27360, + 27420, + 27480, + 27540, + 27600, + 27660, + 27720, + 27780, + 27840, + 27900, + 27960, + 28020, + 28080, + 28140, + 28200, + 28260, + 28320, + 28380, + 28440, + 28500, + 28560, + 28620, + 28680, + 28740, + 28800, + 28860, + 28920, + 28980, + 29040, + 29100, + 29160, + 29220, + 29280, + 29340, + 29400, + 29460, + 29520, + 29580, + 29640, + 29700, + 29760, + 29820, + 29880, + 29940, + 30000, + 30060, + 30120, + 30180, + 30240, + 30300, + 30360, + 30420, + 30480, + 30540, + 30600, + 30660, + 30720, + 30780, + 30840, + 30900, + 30960, + 31020, + 31080, + 31140, + 31200, + 31260, + 31320, + 31380, + 31440, + 31500, + 31560, + 31620, + 31680, + 31740, + 31800, + 31860, + 31920, + 31980, + 32040, + 32100, + 32160, + 32220, + 32280, + 32340, + 32400, + 32460, + 32520, + 32580, + 32640, + 32700, + 32760, + 32820, + 32880, + 32940, + 33000, + 33060, + 33120, + 33180, + 33240, + 33300, + 33360, + 33420, + 33480, + 33540, + 33600, + 33660, + 33720, + 33780, + 33840, + 33900, + 33960, + 34020, + 34080, + 34140, + 34200, + 34260, + 34320, + 34380, + 34440, + 34500, + 34560, + 34620, + 34680, + 34740, + 34800, + 34860, + 34920, + 34980, + 35040, + 35100, + 35160, + 35220, + 35280, + 35340, + 35400, + 35460, + 35520, + 35580, + 35640, + 35700, + 35760, + 35820, + 35880, + 35940, + 36000, + 36060, + 36120, + 36180, + 36240, + 36300, + 36360, + 36420, + 36480, + 36540, + 36600, + 36660, + 36720, + 36780, + 36840, + 36900, + 36960, + 37020, + 37080, + 37140, + 37200, + 37260, + 37320, + 37380, + 37440, + 37500, + 37560, + 37620, + 37680, + 37740, + 37800, + 37860, + 37920, + 37980, + 38040, + 38100, + 38160, + 38220, + 38280, + 38340, + 38400, + 38460, + 38520, + 38580, + 38640, + 38700, + 38760, + 38820, + 38880, + 38940, + 39000, + 39060, + 39120, + 39180, + 39240, + 39300, + 39360, + 39420, + 39480, + 39540, + 39600, + 39660, + 39720, + 39780, + 39840, + 39900, + 39960, + 40020, + 40080, + 40140, + 40200, + 40260, + 40320, + 40380, + 40440, + 40500, + 40560, + 40620, + 40680, + 40740, + 40800, + 40860, + 40920, + 40980, + 41040, + 41100, + 41160, + 41220, + 41280, + 41340, + 41400, + 41460, + 41520, + 41580, + 41640, + 41700, + 41760, + 41820, + 41880, + 41940, + 42000, + 42060, + 42120, + 42180, + 42240, + 42300, + 42360, + 42420, + 42480, + 42540, + 42600, + 42660, + 42720, + 42780, + 42840, + 42900, + 42960, + 43020, + 43080, + 43140, + 43200, + 43260, + 43320, + 43380, + 43440, + 43500, + 43560, + 43620, + 43680, + 43740, + 43800, + 43860, + 43920, + 43980, + 44040, + 44100, + 44160, + 44220, + 44280, + 44340, + 44400, + 44460, + 44520, + 44580, + 44640, + 44700, + 44760, + 44820, + 44880, + 44940, + 45000, + 45060, + 45120, + 45180, + 45240, + 45300, + 45360, + 45420, + 45480, + 45540, + 45600, + 45660, + 45720, + 45780, + 45840, + 45900, + 45960, + 46020, + 46080, + 46140, + 46200, + 46260, + 46320, + 46380, + 46440, + 46500, + 46560, + 46620, + 46680, + 46740, + 46800, + 46860, + 46920, + 46980, + 47040, + 47100, + 47160, + 47220, + 47280, + 47340, + 47400, + 47460, + 47520, + 47580, + 47640, + 47700, + 47760, + 47820, + 47880, + 47940, + 48000, + 48060, + 48120, + 48180, + 48240, + 48300, + 48360, + 48420, + 48480, + 48540, + 48600, + 48660, + 48720, + 48780, + 48840, + 48900, + 48960, + 49020, + 49080, + 49140, + 49200, + 49260, + 49320, + 49380, + 49440, + 49500, + 49560, + 49620, + 49680, + 49740, + 49800, + 49860, + 49920, + 49980, + 50040, + 50100, + 50160, + 50220, + 50280, + 50340, + 50400, + 50460, + 50520, + 50580, + 50640, + 50700, + 50760, + 50820, + 50880, + 50940, + 51000, + 51060, + 51120, + 51180, + 51240, + 51300, + 51360, + 51420, + 51480, + 51540, + 51600, + 51660, + 51720, + 51780, + 51840, + 51900, + 51960, + 52020, + 52080, + 52140, + 52200, + 52260, + 52320, + 52380, + 52440, + 52500, + 52560, + 52620, + 52680, + 52740, + 52800, + 52860, + 52920, + 52980, + 53040, + 53100, + 53160, + 53220, + 53280, + 53340, + 53400, + 53460, + 53520, + 53580, + 53640, + 53700, + 53760, + 53820, + 53880, + 53940, + 54000, + 54060, + 54120, + 54180, + 54240, + 54300, + 54360, + 54420, + 54480, + 54540, + 54600, + 54660, + 54720, + 54780, + 54840, + 54900, + 54960, + 55020, + 55080, + 55140, + 55200, + 55260, + 55320, + 55380, + 55440, + 55500, + 55560, + 55620, + 55680, + 55740, + 55800, + 55860, + 55920, + 55980, + 56040, + 56100, + 56160, + 56220, + 56280, + 56340, + 56400, + 56460, + 56520, + 56580, + 56640, + 56700, + 56760, + 56820, + 56880, + 56940, + 57000, + 57060, + 57120, + 57180, + 57240, + 57300, + 57360, + 57420, + 57480, + 57540, + 57600, + 57660, + 57720, + 57780, + 57840, + 57900, + 57960, + 58020, + 58080, + 58140, + 58200, + 58260, + 58320, + 58380, + 58440, + 58500, + 58560, + 58620, + 58680, + 58740, + 58800, + 58860, + 58920, + 58980, + 59040, + 59100, + 59160, + 59220, + 59280, + 59340, + 59400, + 59460, + 59520, + 59580, + 59640, + 59700, + 59760, + 59820, + 59880, + 59940, + 60000, + 60060, + 60120, + 60180, + 60240, + 60300, + 60360, + 60420, + 60480, + 60540, + 60600, + 60660, + 60720, + 60780, + 60840, + 60900, + 60960, + 61020, + 61080, + 61140, + 61200, + 61260, + 61320, + 61380, + 61440, + 61500, + 61560, + 61620, + 61680, + 61740, + 61800, + 61860, + 61920, + 61980, + 62040, + 62100, + 62160, + 62220, + 62280, + 62340, + 62400, + 62460, + 62520, + 62580, + 62640, + 62700, + 62760, + 62820, + 62880, + 62940, + 63000, + 63060, + 63120, + 63180, + 63240, + 63300, + 63360, + 63420, + 63480, + 63540, + 63600, + 63660, + 63720, + 63780, + 63840, + 63900, + 63960, + 64020, + 64080, + 64140, + 64200, + 64260, + 64320, + 64380, + 64440, + 64500, + 64560, + 64620, + 64680, + 64740, + 64800, + 64860, + 64920, + 64980, + 65040, + 65100, + 65160, + 65220, + 65280, + 65340, + 65400, + 65460, + 65520, + 65580, + 65640, + 65700, + 65760, + 65820, + 65880, + 65940, + 66000, + 66060, + 66120, + 66180, + 66240, + 66300, + 66360, + 66420, + 66480, + 66540, + 66600, + 66660, + 66720, + 66780, + 66840, + 66900, + 66960, + 67020, + 67080, + 67140, + 67200, + 67260, + 67320, + 67380, + 67440, + 67500, + 67560, + 67620, + 67680, + 67740, + 67800, + 67860, + 67920, + 67980, + 68040, + 68100, + 68160, + 68220, + 68280, + 68340, + 68400, + 68460, + 68520, + 68580, + 68640, + 68700, + 68760, + 68820, + 68880, + 68940, + 69000, + 69060, + 69120, + 69180, + 69240, + 69300, + 69360, + 69420, + 69480, + 69540, + 69600, + 69660, + 69720, + 69780, + 69840, + 69900, + 69960, + 70020, + 70080, + 70140, + 70200, + 70260, + 70320, + 70380, + 70440, + 70500, + 70560, + 70620, + 70680, + 70740, + 70800, + 70860, + 70920, + 70980, + 71040, + 71100, + 71160, + 71220, + 71280, + 71340, + 71400, + 71460, + 71520, + 71580, + 71640, + 71700, + 71760, + 71820, + 71880, + 71940, + 72000, + 72060, + 72120, + 72180, + 72240, + 72300, + 72360, + 72420, + 72480, + 72540, + 72600, + 72660, + 72720, + 72780, + 72840, + 72900, + 72960, + 73020, + 73080, + 73140, + 73200, + 73260, + 73320, + 73380, + 73440, + 73500, + 73560, + 73620, + 73680, + 73740, + 73800, + 73860, + 73920, + 73980, + 74040, + 74100, + 74160, + 74220, + 74280, + 74340, + 74400, + 74460, + 74520, + 74580, + 74640, + 74700, + 74760, + 74820, + 74880, + 74940, + 75000, + 75060, + 75120, + 75180, + 75240, + 75300, + 75360, + 75420, + 75480, + 75540, + 75600, + 75660, + 75720, + 75780, + 75840, + 75900, + 75960, + 76020, + 76080, + 76140, + 76200, + 76260, + 76320, + 76380, + 76440, + 76500, + 76560, + 76620, + 76680, + 76740, + 76800, + 76860, + 76920, + 76980, + 77040, + 77100, + 77160, + 77220, + 77280, + 77340, + 77400, + 77460, + 77520, + 77580, + 77640, + 77700, + 77760, + 77820, + 77880, + 77940, + 78000, + 78060, + 78120, + 78180, + 78240, + 78300, + 78360, + 78420, + 78480, + 78540, + 78600, + 78660, + 78720, + 78780, + 78840, + 78900, + 78960, + 79020, + 79080, + 79140, + 79200, + 79260, + 79320, + 79380, + 79440, + 79500, + 79560, + 79620, + 79680, + 79740, + 79800, + 79860, + 79920, + 79980, + 80040, + 80100, + 80160, + 80220, + 80280, + 80340, + 80400, + 80460, + 80520, + 80580, + 80640, + 80700, + 80760, + 80820, + 80880, + 80940, + 81000, + 81060, + 81120, + 81180, + 81240, + 81300, + 81360, + 81420, + 81480, + 81540, + 81600, + 81660, + 81720, + 81780, + 81840, + 81900, + 81960, + 82020, + 82080, + 82140, + 82200, + 82260, + 82320, + 82380, + 82440, + 82500, + 82560, + 82620, + 82680, + 82740, + 82800, + 82860, + 82920, + 82980, + 83040, + 83100, + 83160, + 83220, + 83280, + 83340, + 83400, + 83460, + 83520, + 83580, + 83640, + 83700, + 83760, + 83820, + 83880, + 83940, + 84000, + 84060, + 84120, + 84180, + 84240, + 84300, + 84360, + 84420, + 84480, + 84540, + 84600, + 84660, + 84720, + 84780, + 84840, + 84900, + 84960, + 85020, + 85080, + 85140, + 85200, + 85260, + 85320, + 85380, + 85440, + 85500, + 85560, + 85620, + 85680, + 85740, + 85800, + 85860, + 85920, + 85980, + 86040, + 86100, + 86160, + 86220, + 86280, + 86340, + 86400 + ], + "y": [ + 0, + 0.001431647111845201, + 0.005489238621648387, + 0.011968526302890579, + 0.020216684081311213, + 0.029377216347485052, + 0.03858657325727611, + 0.047772784628765066, + 0.05741107035988838, + 0.06781894357830387, + 0.07886012103418846, + 0.09067960625025259, + 0.10346547155644108, + 0.11691459891219509, + 0.1302765495867531, + 0.14349994161040028, + 0.15694183341105505, + 0.17122909157351593, + 0.18678573774075363, + 0.20350468666703708, + 0.2205495619696852, + 0.23680096305582948, + 0.25210893042783994, + 0.266956130343609, + 0.28191106043268693, + 0.29755347755384376, + 0.31450424208242655, + 0.3329850399445557, + 0.3515197232634602, + 0.3698432679716884, + 0.3885999593868697, + 0.40814676710407155, + 0.4283388127258699, + 0.4490122522360689, + 0.4690636805464653, + 0.4883071422919621, + 0.5074688717348541, + 0.5260039630274728, + 0.5451347056872953, + 0.5652956224531096, + 0.5851768485552785, + 0.6041564848650489, + 0.6199820610469859, + 0.6345898393488892, + 0.6467398709623295, + 0.659799754195538, + 0.6750109883416842, + 0.6867976704855547, + 0.6944778074645557, + 0.7013445843686253, + 0.7069875098635159, + 0.7115140442785534, + 0.7158816266562833, + 0.7172696418045863, + 0.7161594225838128, + 0.7139968463065195, + 0.7104664323842871, + 0.7047276177426198, + 0.6972444081367709, + 0.6887050810511877, + 0.6789834117850675, + 0.6674776343562006, + 0.6538842161548911, + 0.639225793260512, + 0.6243167841952318, + 0.6084823415613122, + 0.5928391303764444, + 0.5771747962912427, + 0.5583900258008467, + 0.5377497872496795, + 0.5164943777593696, + 0.4946727878018723, + 0.47398159282128083, + 0.45357710258376954, + 0.4315818822812526, + 0.4079952159795666, + 0.38346138562278365, + 0.35790929157814694, + 0.33181041690058566, + 0.3069712740198972, + 0.2842894770015339, + 0.2633364835889971, + 0.24360508479369236, + 0.22575787668373062, + 0.2084241484448799, + 0.19296192814748378, + 0.17810038864981861, + 0.1625769723856315, + 0.1517421002937394, + 0.14660625338295186, + 0.1406340643754812, + 0.1315185469565204, + 0.12173747644169974, + 0.11489580122600454, + 0.1152198706904754, + 0.12200803755493939, + 0.1306289312526458, + 0.1377025552952363, + 0.14265871167518968, + 0.14532676907696893, + 0.14738453869078974, + 0.148427590954472, + 0.14654557351433692, + 0.14256378167153685, + 0.1380952450328448, + 0.1337056236039655, + 0.1288188388400156, + 0.12371065761616662, + 0.1203057560504389, + 0.11892733821859505, + 0.11751688310730096, + 0.11635098042639758, + 0.11672030905594258, + 0.11916378224621557, + 0.12391533827580421, + 0.1315358043037045, + 0.14226040787209257, + 0.15608215721548518, + 0.17253950247452998, + 0.19145819576909195, + 0.20717872965263548, + 0.22457228781366498, + 0.2500505017954107, + 0.27434293179904135, + 0.2984969953488317, + 0.3227700643287379, + 0.3469811685903973, + 0.37136105834741884, + 0.3958190756507726, + 0.4210185427633477, + 0.44613211694633265, + 0.47065406156503975, + 0.49764190795262386, + 0.5254642321627202, + 0.5538721596670597, + 0.5816620554848873, + 0.608387094080136, + 0.6350042518974156, + 0.6617547950999026, + 0.6887137721241027, + 0.7161918089690383, + 0.7428908159281751, + 0.770684928882877, + 0.797809359536534, + 0.8232697731070476, + 0.8478827197798873, + 0.8726480707526089, + 0.895436045051705, + 0.9173667914466572, + 0.9391937302640385, + 0.959083464004356, + 0.9767785966152712, + 0.9928903832248237, + 1.0084499342194935, + 1.0235562460224013, + 1.0369054440516112, + 1.0478188662561054, + 1.0569964772771878, + 1.0650830649555956, + 1.0722191437749855, + 1.077787105318459, + 1.0806539527197176, + 1.08037895293404, + 1.0777031887341326, + 1.0737282968473412, + 1.0702149808847983, + 1.0675514346541426, + 1.0613015659995992, + 1.048698965849348, + 1.0346363201891458, + 1.0210766854386608, + 1.0074495136630308, + 0.9929229199451581, + 0.9753281999182355, + 0.9565526268825172, + 0.937395863551402, + 0.9164250439616745, + 0.8936050322288364, + 0.8714302022928218, + 0.8494027076066801, + 0.8255769268881152, + 0.8013721930065623, + 0.7781094076595974, + 0.7543727818989171, + 0.7312950296212593, + 0.7108349525678079, + 0.6915691709741106, + 0.6736532556249629, + 0.6584901994580898, + 0.6467806620040728, + 0.6366550118144879, + 0.6257927103491507, + 0.6171048228642172, + 0.612494707088132, + 0.6082856924207372, + 0.6010576630594097, + 0.5926514064597367, + 0.586237870060288, + 0.5833044592352595, + 0.5826883082326338, + 0.583093009227392, + 0.5842108682493844, + 0.585468702678132, + 0.5874123429980602, + 0.5901269191224635, + 0.5931144199822944, + 0.5971840071858527, + 0.6029554828752635, + 0.6101659219717165, + 0.6182781239937568, + 0.62796804756914, + 0.6397377601326198, + 0.6524155388344043, + 0.6667973106207543, + 0.6831473845174667, + 0.7001944083725532, + 0.7176767789250552, + 0.7349032864901538, + 0.7529293096258205, + 0.774125909216423, + 0.7975748319464177, + 0.8220367240819813, + 0.8466161468114758, + 0.871158807869721, + 0.8959194592937672, + 0.9214262066734507, + 0.9479879899431333, + 0.975402705220759, + 1.0032732054245195, + 1.0309590044006214, + 1.0580367893592806, + 1.0841999955119326, + 1.1095946375018584, + 1.134999118872705, + 1.160285104070404, + 1.184799565655919, + 1.2095510430333938, + 1.2361944763959014, + 1.2639163640083515, + 1.2910952664901165, + 1.3169233519759183, + 1.3430026055596493, + 1.3691774975175448, + 1.3939688323257289, + 1.4179430965945725, + 1.439394639773153, + 1.4587452210741838, + 1.4770099166910948, + 1.4936488531379633, + 1.5076536840069823, + 1.5197757349292969, + 1.529847173596721, + 1.5370207783627974, + 1.5411656366540551, + 1.5430350116851799, + 1.5435900977173893, + 1.5426559846758408, + 1.5393518777286728, + 1.5330251142510545, + 1.5236668083050295, + 1.5117794628287997, + 1.4978784113062056, + 1.4825406164495483, + 1.4660535111994155, + 1.447432448209319, + 1.425626231194725, + 1.4007760857394502, + 1.3736806147292873, + 1.3449468855595226, + 1.3157376657938877, + 1.287585162615098, + 1.2589191366088244, + 1.2264444518260558, + 1.1927378606049674, + 1.1610469187467984, + 1.1286137180154723, + 1.0948333914118262, + 1.0603882153998252, + 1.0255781145918947, + 0.9920814666259052, + 0.9599379550792287, + 0.9276302917731025, + 0.8951121101381723, + 0.8637042073056768, + 0.8325914570823134, + 0.8016588390227446, + 0.7736573973599402, + 0.7455107589806959, + 0.7171473406475106, + 0.6928988511445979, + 0.6732046884063846, + 0.6533167820019006, + 0.6336843316899875, + 0.6176264035341809, + 0.6059325204004288, + 0.5959486949211121, + 0.5879672232327743, + 0.5857064922174722, + 0.5882742657971675, + 0.5929306859920185, + 0.5992904979978142, + 0.6081800544011575, + 0.6198649230790296, + 0.6343627980772031, + 0.6521206191341331, + 0.672774510999796, + 0.6950753858302108, + 0.7187882451248193, + 0.7450274400074572, + 0.7740137443607573, + 0.8040135493383067, + 0.834129309806186, + 0.8651090575425512, + 0.8972102527462336, + 0.9311261180628827, + 0.9671917951732063, + 1.0046568860114393, + 1.0431147487611467, + 1.082323428310358, + 1.1218658017702245, + 1.1612267783425452, + 1.2002152173791485, + 1.2392035521402185, + 1.2788146671008873, + 1.3189329441952677, + 1.3591930536810795, + 1.3993827199118962, + 1.439343633940307, + 1.4788360021256786, + 1.517727944348752, + 1.5564671656826319, + 1.5951411790401409, + 1.632470521587859, + 1.66740472545225, + 1.7001903908981273, + 1.7313705396536314, + 1.7609334505611212, + 1.787673859302018, + 1.8128875498525123, + 1.83481018675373, + 1.853883394968273, + 1.874000071219391, + 1.894351633227174, + 1.9131204054348185, + 1.9306256377654873, + 1.9457364967436066, + 1.9589893170234784, + 1.9714712091479076, + 1.983428480084066, + 1.9951075297792669, + 2.006617729387055, + 2.0167497430048162, + 2.0256464040069537, + 2.0343078381796222, + 2.042640209241337, + 2.0498241819901986, + 2.0551662760572578, + 2.058647698581388, + 2.061133565611177, + 2.0635890343164065, + 2.066358112019841, + 2.0686557840712716, + 2.069091281595744, + 2.0671960565130614, + 2.0636599996442855, + 2.0594049172797058, + 2.0550191660146293, + 2.0507176743218, + 2.0462506000028973, + 2.0399610308636533, + 2.0317455355789122, + 2.023368862351025, + 2.0156203550083776, + 2.0073057238347265, + 1.9950239589548981, + 1.983289162903736, + 1.9736410197105276, + 1.9624982003083657, + 1.950009990403774, + 1.93741839000461, + 1.9247435313036063, + 1.911169431053533, + 1.8967766708547702, + 1.8825530591277648, + 1.8679403262034746, + 1.8530061193847158, + 1.840119332656586, + 1.8268300455717048, + 1.8098924733541002, + 1.7902717362672944, + 1.7714592367521858, + 1.7548169446417716, + 1.73809220638855, + 1.7201319684819527, + 1.7011217268288876, + 1.6804864308252654, + 1.658775536724671, + 1.6371969461421974, + 1.6162836396654057, + 1.5931952562816982, + 1.5685074487613548, + 1.5451015595284208, + 1.5218971961575725, + 1.4976402577098409, + 1.4727730351276327, + 1.4477445640168374, + 1.4224948677048255, + 1.3972480087490062, + 1.3726956594952042, + 1.3490357747745223, + 1.3256945708403012, + 1.3031997272966869, + 1.2821307747512913, + 1.2620465522013622, + 1.2426881930032572, + 1.2243436646670594, + 1.207179361847253, + 1.1913977323123532, + 1.1775340294388845, + 1.1657862613334178, + 1.155773057103068, + 1.1470753154152986, + 1.1400529878260912, + 1.1355441548477374, + 1.1334807347867017, + 1.1328708051934904, + 1.1338786184034533, + 1.1378986894965597, + 1.1444720715442693, + 1.1518936194224252, + 1.1606686743853627, + 1.172140445055636, + 1.1860246006990858, + 1.2010393328608393, + 1.2183463005446276, + 1.2382383607544134, + 1.2590718143814674, + 1.2831488244087936, + 1.3112332572209353, + 1.3378751802984135, + 1.3559240147399627, + 1.3742001249218074, + 1.3956343859245632, + 1.4161425327557005, + 1.4368762374314592, + 1.4563008561851802, + 1.4737456606839086, + 1.4898469456773422, + 1.5055550892134413, + 1.5203302440352657, + 1.5321738451913827, + 1.5418640716385072, + 1.5508123851343285, + 1.5590777643191687, + 1.5663197251929553, + 1.5716023764037415, + 1.5744858828602795, + 1.5765011844519339, + 1.576461810603254, + 1.5739673160727108, + 1.569232258307546, + 1.562760056488026, + 1.5573599777898701, + 1.552545419364429, + 1.5463821395350361, + 1.538187418575082, + 1.5274285777683536, + 1.515825436101315, + 1.5029420734463692, + 1.4863574126074783, + 1.467369527324373, + 1.4487846582103097, + 1.4312262551855337, + 1.4122393069775039, + 1.3898337350879635, + 1.3670744714610654, + 1.345578414720847, + 1.3232934037328177, + 1.2992962156899897, + 1.2744906451337996, + 1.2502990044754931, + 1.226731759350024, + 1.2040110790108713, + 1.18193673669577, + 1.1583935489571247, + 1.133164231427871, + 1.1092879308772494, + 1.0903979611360828, + 1.0732266311469676, + 1.0554542285450526, + 1.0381018647776288, + 1.021643685392353, + 1.0074802260314, + 0.9948758322894456, + 0.9818648306178394, + 0.970131760689458, + 0.9606173457526833, + 0.9533576385181532, + 0.9482111379507127, + 0.9450472253085127, + 0.9437571480024196, + 0.9440800764133325, + 0.945621335627875, + 0.9482924518216078, + 0.9528619218720451, + 0.9607942868144901, + 0.9724381403218539, + 0.9861192111332288, + 1.0003442922091927, + 1.0158006129359292, + 1.033170971601024, + 1.052291281882717, + 1.0729100232360376, + 1.0942979323850335, + 1.1159281154098495, + 1.1381587466682674, + 1.1615304794243946, + 1.1861568148843702, + 1.2119573564090032, + 1.2386871743086507, + 1.2661099605009218, + 1.293752573026576, + 1.3211649937936676, + 1.3486054110747348, + 1.3760907933310873, + 1.4030439418153828, + 1.4293538657474245, + 1.455080848778359, + 1.4797661699518943, + 1.50374658400355, + 1.5261878010817103, + 1.5483072392364048, + 1.5687448892363813, + 1.5878129488679438, + 1.605971306450211, + 1.6198099831783659, + 1.6285452657145065, + 1.6406968199052039, + 1.6563090873803004, + 1.6685755509510616, + 1.6795377722751348, + 1.6902496933104667, + 1.6999349019922045, + 1.7092346209647933, + 1.7183934065613296, + 1.7269582292508692, + 1.735272033770655, + 1.7431242175842971, + 1.7505791517059615, + 1.757537735030854, + 1.7631677808577986, + 1.7686003851223018, + 1.7735825227093742, + 1.777330797193862, + 1.7788530570873298, + 1.7769720948120544, + 1.7728442061597578, + 1.7713367972234368, + 1.7710920848381146, + 1.7684845098337862, + 1.7625172020902338, + 1.7559257198822849, + 1.7514585198201558, + 1.7467651047156545, + 1.7392174893269141, + 1.7291889836633607, + 1.7194366209778524, + 1.7092839535383149, + 1.6981266027240391, + 1.6865011578210871, + 1.6748779530102633, + 1.662764299795983, + 1.6506774511599993, + 1.6377053227731087, + 1.6227696218787255, + 1.6071826941007024, + 1.5926229166502843, + 1.5790817987965327, + 1.5662702590528874, + 1.5531854522335589, + 1.5392237211743471, + 1.5247651701603593, + 1.5096780093511477, + 1.4985487509276607, + 1.4913303400734788, + 1.4832020974850522, + 1.4748828873467943, + 1.468709557684606, + 1.4641237940030167, + 1.4599935082018634, + 1.456181547804637, + 1.4548273423266322, + 1.455871861227261, + 1.457671419052356, + 1.4601111843718086, + 1.463412645750628, + 1.4674892495504468, + 1.472419467983841, + 1.4784996805422506, + 1.485880160859632, + 1.4941268170763067, + 1.5024784074313808, + 1.51099644376051, + 1.5207713773727043, + 1.5322332354285817, + 1.5444683132393722, + 1.5568437054316415, + 1.5696017899902404, + 1.58290901872995, + 1.5966097983582048, + 1.6100758860682958, + 1.6226181973994218, + 1.6347938961435804, + 1.6473053083563773, + 1.6606216469284447, + 1.674568642863041, + 1.688749408986401, + 1.702757820792847, + 1.7180863584360422, + 1.7353606433940794, + 1.7516233269691306, + 1.7668547796015956, + 1.7826046473399637, + 1.799551598811272, + 1.8174788638346107, + 1.8365571242553524, + 1.855081862874609, + 1.871675515849386, + 1.8885823614830566, + 1.905814959831425, + 1.9242706525319588, + 1.9399819607720008, + 1.950849060834391, + 1.962926081782335, + 1.9748783441488575, + 1.9817673108825185, + 1.98907926708531, + 1.9963906133667702, + 2.0008721393032594, + 2.003762560388778, + 2.0053953737206305, + 2.005079966859719, + 2.002284148956596, + 1.9968951279908191, + 1.9896081446049447, + 1.9811877800099398, + 1.9710814237448895, + 1.9588822053620774, + 1.9447754628908975, + 1.9286396840513635, + 1.9105818028263242, + 1.891018107376095, + 1.8700374202767276, + 1.847557900678717, + 1.8236719804820443, + 1.7984083171526428, + 1.7717410993647948, + 1.7444653617043628, + 1.7178132561850248, + 1.6916582288626154, + 1.665290311266658, + 1.6376353369480936, + 1.608963735579105, + 1.5800916055543528, + 1.5516029028744518, + 1.524179836058752, + 1.4978245167106177, + 1.4722149380461558, + 1.4474490820744303, + 1.4238555501541272, + 1.4014710306019784, + 1.3801501245359784, + 1.3601547602572703, + 1.3411051084992238, + 1.3215910528221009, + 1.3026764192133602, + 1.2866139186831318, + 1.2722024671082144, + 1.2565320662620356, + 1.2414310369957964, + 1.2311700256393567, + 1.2213527862740867, + 1.2093082241212276, + 1.1969090949342447, + 1.1851479470795403, + 1.1723523889071306, + 1.1594818583852462, + 1.149040842458844, + 1.1394352427517207, + 1.1293323224703484, + 1.1196684826726095, + 1.1119463567236894, + 1.1060400046222776, + 1.1014200148442235, + 1.097570378843061, + 1.0938231972078165, + 1.0905843554740964, + 1.0887761163563459, + 1.088359425160939, + 1.0891707905114902, + 1.0921411487014399, + 1.0983756502801343, + 1.107198723931102, + 1.116533367905296, + 1.1258282650516882, + 1.1360197735829731, + 1.147955375093151, + 1.1615141988838753, + 1.1768593518267003, + 1.1933737997011786, + 1.2111244854368728, + 1.2306679670360097, + 1.2514781669850599, + 1.27292851294567, + 1.2961474906009822, + 1.321308953786758, + 1.3475197296548707, + 1.3742805085706848, + 1.4024462193438143, + 1.4321416568982295, + 1.461066040399488, + 1.4889443865886585, + 1.5175345215315084, + 1.5470178502341199, + 1.5752148082321409, + 1.6014483939366533, + 1.6315254938196095, + 1.6614934952679457, + 1.6853545741904274, + 1.705995559101811, + 1.728864503442031, + 1.7512510846206595, + 1.7726188204029107, + 1.7934325042667014, + 1.813406290332155, + 1.8312534842090284, + 1.8474662275195473, + 1.8621073699250656, + 1.8752468844869852, + 1.8868438458092867, + 1.8963083917174233, + 1.9034989936023503, + 1.9093232891738932, + 1.9142572196867318, + 1.9178251340709693, + 1.9195378069417222, + 1.9193369570351964, + 1.91755274216768, + 1.9143579261183268, + 1.9092931263930242, + 1.9017220265090389, + 1.8916631114234281, + 1.8794844806194475, + 1.8655417363658184, + 1.8508268452787966, + 1.8364614263117374, + 1.8221139258420438, + 1.8067456240463637, + 1.789758691291367, + 1.7711614723533153, + 1.7512077418956091, + 1.7304077839889571, + 1.7090110949670068, + 1.6867138424139312, + 1.6639823503956641, + 1.641402139323357, + 1.6178306501977135, + 1.5929526341180718, + 1.5682900434111176, + 1.5447018914252284, + 1.5213619721200322, + 1.497390904269588, + 1.4728935541080799, + 1.4491964072432255, + 1.4250706999826082, + 1.3997550834213883, + 1.3785315740203936, + 1.3620424157422284, + 1.345899176286713, + 1.3292154218364765, + 1.3136678474480745, + 1.3008132026745758, + 1.2906525901491972, + 1.2837576098985406, + 1.2784088902822373, + 1.2738198483799612, + 1.2707971585541182, + 1.2700740816591394, + 1.2716676278346049, + 1.2751964508091649, + 1.2813045711624844, + 1.2895941128651336, + 1.2982372406643587, + 1.3061656462910882, + 1.3159505621861578, + 1.3295759019657676, + 1.346128095931874, + 1.3649842307210838, + 1.3865132971344605, + 1.4108752114569458, + 1.4361708494187895, + 1.4608363233105561, + 1.4856017595390991, + 1.5120765416165436, + 1.5409830212554527, + 1.5715403589561678, + 1.6015879070148353, + 1.6310672769055838, + 1.660554581571887, + 1.6903602991944888, + 1.7206355767091868, + 1.7510116385418213, + 1.7807089104389928, + 1.8094548849485723, + 1.8374224649830686, + 1.8657164316195696, + 1.8940135838764542, + 1.9204719047989247, + 1.945088778933372, + 1.9693970163560055, + 1.9933023586862497, + 2.014178553560694, + 2.036984606042513, + 2.0614696344796126, + 2.081585656948719, + 2.096576770290106, + 2.111804596789067, + 2.1295049399539487, + 2.148131849896835, + 2.165636980195288, + 2.182768113732481, + 2.1972861010080407, + 2.21140926342126, + 2.2249085116147618, + 2.2368383333243376, + 2.246725421269048, + 2.254455006386323, + 2.260656791199163, + 2.2658395495045713, + 2.270104356208585, + 2.272603387661532, + 2.273377301404515, + 2.272897744206064, + 2.2703495484065503, + 2.2650837953907224, + 2.2596247520279995, + 2.2535367962503368, + 2.2442775477712584, + 2.23747274233516, + 2.226692378283314, + 2.20976589120587, + 2.19352256269191, + 2.178404438957964, + 2.1635480049154334, + 2.147557527781311, + 2.129759395655744, + 2.1109003709704552, + 2.091549891461502, + 2.0713242214046415, + 2.049357045073522, + 2.0263093281505373, + 2.0043962553876424, + 1.9821922766453606, + 1.959599720995962, + 1.9366156379590083, + 1.9127621267391801, + 1.890339218796078, + 1.8679416036837668, + 1.841914514904021, + 1.8148480842487968, + 1.7900733828846171, + 1.7650731255748315, + 1.738877505145705, + 1.7141230859769976, + 1.6895121953107357, + 1.663250496638498, + 1.6362075505196019, + 1.6106772528235358, + 1.586687074005006, + 1.5635573744248734, + 1.5434315064318735, + 1.5241511986428267, + 1.505010150339721, + 1.4904049311575827, + 1.4798371503982177, + 1.4708474401454878, + 1.4651840506882585, + 1.46169212611242, + 1.4608113736070305, + 1.4646330876289375, + 1.4717830769806999, + 1.4812387339173791, + 1.4934517176798445, + 1.5081903048344554, + 1.525453044606201, + 1.546302269255778, + 1.5699039147652454, + 1.594572642730485, + 1.6190905931729545, + 1.6433370471208137, + 1.6719017706891652, + 1.7051302524608232, + 1.7383279182436409, + 1.7698447809165114, + 1.8007146566919587, + 1.83201135107173, + 1.8643691030909615, + 1.8979585537227612, + 1.9323288730731019, + 1.9664149890054154, + 1.9991066757415774, + 2.0305397500156324, + 2.061738896873446, + 2.093002702084395, + 2.124424063620666, + 2.155344756476646, + 2.185387649912942, + 2.2157473846164555, + 2.2476515239288357, + 2.2746411936255115, + 2.2950893918119077, + 2.3157132669064326, + 2.334672107724702, + 2.351476148055924, + 2.366713241104009, + 2.38012420132057, + 2.3902950315958886, + 2.3992902055462753, + 2.4043797381398804, + 2.405888970299497, + 2.4079352694850273, + 2.408359591504511, + 2.4069553857018695, + 2.405810174860381, + 2.4046431968012265, + 2.4026120066798398, + 2.4006218528650103, + 2.3978506348081403, + 2.395302940532436, + 2.3928402186738467, + 2.3897055810341983, + 2.385653836334167, + 2.38127390341094, + 2.377394275089033, + 2.3744062932154475, + 2.3714410690584455, + 2.3663503175178384, + 2.3589114330688616, + 2.3506925544730817, + 2.342320146796516, + 2.3343764961523883, + 2.326306089118813, + 2.3177524901788225, + 2.307894995765066, + 2.2965255405581733, + 2.2836650496416264, + 2.26949383602097, + 2.255372020318363, + 2.240749916790578, + 2.224189242106747, + 2.2061335642496065, + 2.187330417800898, + 2.1680662215396316, + 2.148904819068775, + 2.130148268904666, + 2.111850984156508, + 2.093613364068419, + 2.075916622452223, + 2.058775949401915, + 2.0427522891927987, + 2.0297041338179707, + 2.017997460801604, + 2.0065716465884034, + 1.995776754169017, + 1.9873059129741135, + 1.979584447946412, + 1.9724159660293554, + 1.970363011350837, + 1.9708832692763587, + 1.9720619495111888, + 1.9746101931354116, + 1.977904110173721, + 1.98369718709535, + 1.9908362771848502, + 1.9987016595192793, + 2.009014446868003, + 2.021094013461587, + 2.0355897484119048, + 2.0516843165075778, + 2.067354091563124, + 2.0862027439023447, + 2.1084145190276944, + 2.131721756873607, + 2.154379636492042, + 2.1767310589974773, + 2.199875464640981, + 2.2247547090947832, + 2.251734711608998, + 2.280735833708913, + 2.3109002264823135, + 2.340968479251615, + 2.3702699747047857, + 2.398987943284345, + 2.4276742254910118, + 2.4568677609543754, + 2.4866491201534693, + 2.5164651947303796, + 2.545280550838235, + 2.5726678182592893, + 2.5998472165668107, + 2.626354326273426, + 2.650045231523, + 2.6713120576660687, + 2.691318474665363, + 2.709381782203296, + 2.724661770032626, + 2.739964476356275, + 2.753275050406107, + 2.7640434219829877, + 2.771907957089052, + 2.780079296293686, + 2.789602439029718, + 2.7992137304528795, + 2.805183233301092, + 2.812528529172081, + 2.8215535395916014, + 2.8301552134016212, + 2.8374930993097305, + 2.844747622448795, + 2.8521860651991715, + 2.859119790807034, + 2.8654960845815536, + 2.871643420161143, + 2.8775210841807417, + 2.882915643089019, + 2.8872433746241155, + 2.8898062820849355, + 2.8902803359234963, + 2.889177614292396, + 2.8873429373104638, + 2.8851203912611036, + 2.882289374573432, + 2.8783285765865894, + 2.8728536630791996, + 2.8658527987158866, + 2.856956824353244, + 2.845463587397292, + 2.8316067293868477, + 2.816087792836488, + 2.7995574939272694, + 2.7827542578561837, + 2.7656023021150666, + 2.7473571035738455, + 2.727525736819891, + 2.707007478124359, + 2.6868517862128303, + 2.6649651444892144, + 2.6407750471699605, + 2.617301787317359, + 2.5959678166598668, + 2.5730055866968935, + 2.548157314150541, + 2.5234441841184014, + 2.4997037488029554, + 2.4753604266251696, + 2.4514996986376545, + 2.428672924769579, + 2.407182544992662, + 2.3852647839584145, + 2.3635740528471816, + 2.341714624910212, + 2.323030703068913, + 2.3061164988164715, + 2.2888525154440185, + 2.2730278784812508, + 2.2579268201138696, + 2.244018810542042, + 2.233874690964956, + 2.2276682164440857, + 2.2242069873062773, + 2.222744080554667, + 2.2222028833951444, + 2.2224590009822514, + 2.225565306238401, + 2.2326024718494253, + 2.242533436157023, + 2.2534206118843803, + 2.2651151665011913, + 2.2778806937045495, + 2.2923842356484303, + 2.3078237859354678, + 2.3234412563972895, + 2.3389586189385128, + 2.3544781483778405, + 2.3703780782568638, + 2.3874496752171757, + 2.405862046045515, + 2.4245468169781987, + 2.44231389803132, + 2.4588233472152425, + 2.474572047930538, + 2.4904794937191155, + 2.506657575190295, + 2.5221109926918572, + 2.5362853993937806, + 2.5509184262437357, + 2.5666007850813592, + 2.5815109192455017, + 2.5961580995327025, + 2.611609145796374, + 2.6285235676538994, + 2.6470664730668894, + 2.666636603066174, + 2.6853946301996765, + 2.703088008063063, + 2.721487507989504, + 2.74142445083598, + 2.762863542138931, + 2.783726451834949, + 2.801319497683799, + 2.816105114343839, + 2.8310684537356594, + 2.846647870916926, + 2.861577635790684, + 2.874312857514296, + 2.88548983434844, + 2.8953745042827355, + 2.903217025731997, + 2.908795449953897, + 2.912960675673571, + 2.916256713608321, + 2.918397926953738, + 2.918858095464453, + 2.9178569445717173, + 2.9160527032612538, + 2.9137201872911427, + 2.9104939034977013, + 2.905967904439282, + 2.9002055562301297, + 2.8933626423502377, + 2.88561264436463, + 2.877198064219424, + 2.868035185194646, + 2.8574553127057554, + 2.84550588562056, + 2.8330264117320896, + 2.819455546039931, + 2.8036486620187553, + 2.7859242513328812, + 2.767336506002944, + 2.7484636074859314, + 2.7292101868373613, + 2.7092032659617398, + 2.68808177064309, + 2.6658821328856015, + 2.6426155543253453, + 2.618301149272099, + 2.5929488925324313, + 2.566547997255016, + 2.539714099860035, + 2.513072889819462, + 2.4874413394755837, + 2.4625920100303347, + 2.4376464430047937, + 2.4105273802291203, + 2.382826351722772, + 2.3560831649069014, + 2.3298933778887863, + 2.3055752019873657, + 2.279088655306067, + 2.251918559666362, + 2.2271823769885986, + 2.2032419884647196, + 2.1816912808790736, + 2.162152955942975, + 2.1436599424287506, + 2.1259918683950567, + 2.1099141298649244, + 2.0971343303125534, + 2.0872380763829876, + 2.0796624003763755, + 2.0712284620177077, + 2.063553529120718, + 2.06141899701861, + 2.062958001198661, + 2.0671881204462936, + 2.075086578251858, + 2.0869920120019905, + 2.1023112465298532, + 2.1200464987390837, + 2.138730645846713, + 2.1573675694016847, + 2.178545755366549, + 2.201479486095012, + 2.225052785086198, + 2.2520535565261968, + 2.283598327142498, + 2.3169866988429, + 2.3506693814461372, + 2.3845101571194007, + 2.4187732630020893, + 2.452671205069205, + 2.4866648017972124, + 2.521113688092786, + 2.5550346245762365, + 2.5888859456378066, + 2.622815850028952, + 2.655851116208619, + 2.687378534176889, + 2.7178714683651157, + 2.748635305716261, + 2.780437233210143, + 2.8101892692475654, + 2.8391055781276955, + 2.870378029403572, + 2.900845343353988, + 2.929144540075138, + 2.959426889231094, + 2.9929119078237774, + 3.027258208489219, + 3.0587080928672257, + 3.0871518092351877, + 3.1146673190952217, + 3.1429651320523666, + 3.172053156536001, + 3.200246388741901, + 3.22685121227151, + 3.253046355445827, + 3.2791268124079695, + 3.303959358449164, + 3.32711388937634, + 3.3489676765688037, + 3.369531934595094, + 3.3882645293743034, + 3.404837168565605, + 3.4197252725840985, + 3.433881742380701, + 3.4474664342108214, + 3.459758267021006, + 3.470240663006425, + 3.4787769319232544, + 3.485625948592142, + 3.491799434149875, + 3.496803636597228, + 3.4986424324457985, + 3.4970643457391826, + 3.493359952633285, + 3.4880734429323903, + 3.4811973056689345, + 3.4725973682272335, + 3.462165815042219, + 3.4499986030034884, + 3.4361612376338715, + 3.42072412373155, + 3.4037973335617946, + 3.3862053708962043, + 3.3688900737128926, + 3.350838391652302, + 3.3296277086041712, + 3.3062390835030424, + 3.282684703934503, + 3.2583059334918656, + 3.233436120405704, + 3.2074586849184645, + 3.181465625576105, + 3.1536552649838656, + 3.121951444363349, + 3.091467202110109, + 3.062497929409833, + 3.0319041488439464, + 3.0010557754502574, + 2.9705020047825457, + 2.9405522961473234, + 2.9119257360501476, + 2.882785726872944, + 2.852591078119372, + 2.824999851102961, + 2.799615415095708, + 2.7729782807501255, + 2.747083017196292, + 2.7227760907494156, + 2.6993438915812735, + 2.677623387312884, + 2.6587434133570262, + 2.6424634973816485, + 2.626228900556076, + 2.6091968562596564, + 2.5939945134114244, + 2.582895945440946, + 2.574775750711701, + 2.566317987269936, + 2.5575463649781565, + 2.5504823968579813, + 2.545819417135548, + 2.5437557940985855, + 2.544118152492985, + 2.546382997452776, + 2.5500629558146284, + 2.5553650009159887, + 2.5623551716530786, + 2.5702530094020566, + 2.579019517675582, + 2.5897282219623676, + 2.6022353948353802, + 2.6156069370572603, + 2.6298772548195926, + 2.64506035093197, + 2.6616727584203743, + 2.6804870450512106, + 2.7002983587375415, + 2.7222216228199945, + 2.745667984363845, + 2.7678649982152947, + 2.792875143448954, + 2.8230382880375706, + 2.854302605052507, + 2.883652419885535, + 2.9127797681207634, + 2.944391025371739, + 2.9776217566866534, + 3.011470656003055, + 3.0459195197863735, + 3.0810155943759097, + 3.1164220501754487, + 3.151691104694952, + 3.186964567506464, + 3.2225687185080876, + 3.258291340432747, + 3.2937793559032214, + 3.3286665474678325, + 3.362344859320921, + 3.39468202687817, + 3.4257453842339416, + 3.4557032580006535, + 3.485022607129529, + 3.5137023927936077, + 3.541261923338864, + 3.5670283954956608, + 3.59078045797093, + 3.6128280509643482, + 3.6329222172518154, + 3.649830057817041, + 3.66314659586428, + 3.6738872183537676, + 3.68247086947591, + 3.6885112739717156, + 3.69180028253344, + 3.692837132169825, + 3.691673290103667, + 3.688295678559602, + 3.6823444297380687, + 3.6730404529650875, + 3.660574885937794, + 3.6454378379656474, + 3.6281535308084885, + 3.608774193797238, + 3.587882054546306, + 3.565150762884469, + 3.5392700416951506, + 3.5107520737050306, + 3.4835415882767404, + 3.456099103247518, + 3.424851346245473, + 3.3915538088375548, + 3.359919568785945, + 3.329478672374742, + 3.2995449131501164, + 3.2694931372077707, + 3.2387050503572916, + 3.2073394031346942, + 3.1749046313615863, + 3.1429707603705865, + 3.1118700639808052, + 3.079822787566869, + 3.0472460511730306, + 3.0155866082007243, + 2.984172965418923, + 2.95244976660733, + 2.921049711164808, + 2.8895539172448226, + 2.8592761311701755, + 2.832070995847254, + 2.8057857744401833, + 2.7800867775940312, + 2.7544206433927987, + 2.728983524756199, + 2.70495944566893, + 2.6828491820300577, + 2.6626447884562543, + 2.6444827950417222, + 2.6283561354081404, + 2.614015403709378, + 2.6012982298734433, + 2.590335283758816, + 2.5813863331026736, + 2.5745655884148615, + 2.569562020939189, + 2.5655826276476468, + 2.5626735236407208, + 2.561746876212321, + 2.5632630915861623, + 2.5666810208635384, + 2.571828457879676, + 2.579104093119383, + 2.5884240182043152, + 2.598570710419769, + 2.6119733049853946, + 2.6302998855610937, + 2.6453667075537886, + 2.66034759880111, + 2.6813418253234924, + 2.706184946217873, + 2.729344751157724, + 2.75113279933098, + 2.7740459840059843, + 2.7974855639054734, + 2.821199691179805, + 2.8454998766016906, + 2.86898033671724, + 2.891285339310426, + 2.9127176326684494, + 2.933516995571989, + 2.9545705077595, + 2.9750652983684445, + 2.9932217957831577, + 3.0097645323989752, + 3.02513130509868, + 3.0390159864651682, + 3.0513159441599367, + 3.061924790507964, + 3.071077822848874, + 3.0792165468591643, + 3.0862213224677504, + 3.0916966222771887, + 3.095382720334191, + 3.097850799222166, + 3.1003664250629472, + 3.10331841630572, + 3.104796408808934, + 3.103122939327913, + 3.098854388671974 + ] } ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" + "layout": { + "autosize": true, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } ], - [ - 0.3333333333333333, - "#9c179e" + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } ], - [ - 0.4444444444444444, - "#bd3786" + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } ], - [ - 0.5555555555555556, - "#d8576b" + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } ], - [ - 0.6666666666666666, - "#ed7953" + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } ], - [ - 0.8888888888888888, - "#fdca26" + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } ], - [ - 0.1111111111111111, - "#46039f" + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } ], - [ - 0.2222222222222222, - "#7201a8" + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } ], - [ - 0.3333333333333333, - "#9c179e" + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } ], - [ - 0.4444444444444444, - "#bd3786" + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } ], - [ - 0.5555555555555556, - "#d8576b" + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } ], - [ - 0.6666666666666666, - "#ed7953" + "pie": [ + { + "automargin": true, + "type": "pie" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } ], - [ - 0.1111111111111111, - "#46039f" + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } ], - [ - 0.2222222222222222, - "#7201a8" + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } ], - [ - 0.3333333333333333, - "#9c179e" + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } ], - [ - 0.4444444444444444, - "#bd3786" + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } ], - [ - 0.5555555555555556, - "#d8576b" + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } ], - [ - 0.6666666666666666, - "#ed7953" + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } ], - [ - 0.8888888888888888, - "#fdca26" + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } ], - [ - 1, - "#f0f921" + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Position RMS error for STK with EGM2008 (without secular coeff update) vs OSTk" + }, + "xaxis": { + "autorange": true, + "range": [ + 0, + 86400 + ], + "title": { + "text": "Time Elapsed (s)" + }, + "type": "linear" + }, + "yaxis": { + "autorange": true, + "range": [ + -0.21121280689550653, + 4.013043331014624 ], - "type": "heatmapgl" + "title": { + "text": "Position Difference in RTN (m)" + }, + "type": "linear" } - ], - "histogram": [ + } + }, + "image/png": "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", + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "orbit_df_RMS_position_list = [\n", + " orbit_df_RMS_list[list_ind][[\"Elapsed secs\", \"${\\delta}x$\"]]\n", + " for list_ind in range(0, len(orbit_list))\n", + "]\n", + "\n", + "figure = go.Figure()\n", + "figure.update_layout(\n", + " title=f\"Position {plot_title_extension}\", showlegend=True, height=1000\n", + ")\n", + "figure.update_xaxes(title_text=\"Time Elapsed (s)\")\n", + "figure.update_yaxes(title_text=\"Position Difference in RTN (m)\")\n", + "\n", + "for list_ind, orbit_df_RMS_position in enumerate(orbit_df_RMS_position_list):\n", + " figure.add_trace(\n", + " go.Scatter(\n", + " x=orbit_df_RMS_position[\"Elapsed secs\"],\n", + " y=orbit_df_RMS_position[\"${\\delta}x$\"],\n", + " name=legend_name_list[list_ind],\n", + " mode=\"lines\",\n", + " )\n", + " )\n", + "\n", + "figure.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot velocity error" + ] + }, + { + "cell_type": "code", + "execution_count": 349, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" + "mode": "lines", + "name": "OSTk EGM2008 100x100 minus STK EGM2008 70x70", + "type": "scatter", + "x": [ + 0, + 60, + 120, + 180, + 240, + 300, + 360, + 420, + 480, + 540, + 600, + 660, + 720, + 780, + 840, + 900, + 960, + 1020, + 1080, + 1140, + 1200, + 1260, + 1320, + 1380, + 1440, + 1500, + 1560, + 1620, + 1680, + 1740, + 1800, + 1860, + 1920, + 1980, + 2040, + 2100, + 2160, + 2220, + 2280, + 2340, + 2400, + 2460, + 2520, + 2580, + 2640, + 2700, + 2760, + 2820, + 2880, + 2940, + 3000, + 3060, + 3120, + 3180, + 3240, + 3300, + 3360, + 3420, + 3480, + 3540, + 3600, + 3660, + 3720, + 3780, + 3840, + 3900, + 3960, + 4020, + 4080, + 4140, + 4200, + 4260, + 4320, + 4380, + 4440, + 4500, + 4560, + 4620, + 4680, + 4740, + 4800, + 4860, + 4920, + 4980, + 5040, + 5100, + 5160, + 5220, + 5280, + 5340, + 5400, + 5460, + 5520, + 5580, + 5640, + 5700, + 5760, + 5820, + 5880, + 5940, + 6000, + 6060, + 6120, + 6180, + 6240, + 6300, + 6360, + 6420, + 6480, + 6540, + 6600, + 6660, + 6720, + 6780, + 6840, + 6900, + 6960, + 7020, + 7080, + 7140, + 7200, + 7260, + 7320, + 7380, + 7440, + 7500, + 7560, + 7620, + 7680, + 7740, + 7800, + 7860, + 7920, + 7980, + 8040, + 8100, + 8160, + 8220, + 8280, + 8340, + 8400, + 8460, + 8520, + 8580, + 8640, + 8700, + 8760, + 8820, + 8880, + 8940, + 9000, + 9060, + 9120, + 9180, + 9240, + 9300, + 9360, + 9420, + 9480, + 9540, + 9600, + 9660, + 9720, + 9780, + 9840, + 9900, + 9960, + 10020, + 10080, + 10140, + 10200, + 10260, + 10320, + 10380, + 10440, + 10500, + 10560, + 10620, + 10680, + 10740, + 10800, + 10860, + 10920, + 10980, + 11040, + 11100, + 11160, + 11220, + 11280, + 11340, + 11400, + 11460, + 11520, + 11580, + 11640, + 11700, + 11760, + 11820, + 11880, + 11940, + 12000, + 12060, + 12120, + 12180, + 12240, + 12300, + 12360, + 12420, + 12480, + 12540, + 12600, + 12660, + 12720, + 12780, + 12840, + 12900, + 12960, + 13020, + 13080, + 13140, + 13200, + 13260, + 13320, + 13380, + 13440, + 13500, + 13560, + 13620, + 13680, + 13740, + 13800, + 13860, + 13920, + 13980, + 14040, + 14100, + 14160, + 14220, + 14280, + 14340, + 14400, + 14460, + 14520, + 14580, + 14640, + 14700, + 14760, + 14820, + 14880, + 14940, + 15000, + 15060, + 15120, + 15180, + 15240, + 15300, + 15360, + 15420, + 15480, + 15540, + 15600, + 15660, + 15720, + 15780, + 15840, + 15900, + 15960, + 16020, + 16080, + 16140, + 16200, + 16260, + 16320, + 16380, + 16440, + 16500, + 16560, + 16620, + 16680, + 16740, + 16800, + 16860, + 16920, + 16980, + 17040, + 17100, + 17160, + 17220, + 17280, + 17340, + 17400, + 17460, + 17520, + 17580, + 17640, + 17700, + 17760, + 17820, + 17880, + 17940, + 18000, + 18060, + 18120, + 18180, + 18240, + 18300, + 18360, + 18420, + 18480, + 18540, + 18600, + 18660, + 18720, + 18780, + 18840, + 18900, + 18960, + 19020, + 19080, + 19140, + 19200, + 19260, + 19320, + 19380, + 19440, + 19500, + 19560, + 19620, + 19680, + 19740, + 19800, + 19860, + 19920, + 19980, + 20040, + 20100, + 20160, + 20220, + 20280, + 20340, + 20400, + 20460, + 20520, + 20580, + 20640, + 20700, + 20760, + 20820, + 20880, + 20940, + 21000, + 21060, + 21120, + 21180, + 21240, + 21300, + 21360, + 21420, + 21480, + 21540, + 21600, + 21660, + 21720, + 21780, + 21840, + 21900, + 21960, + 22020, + 22080, + 22140, + 22200, + 22260, + 22320, + 22380, + 22440, + 22500, + 22560, + 22620, + 22680, + 22740, + 22800, + 22860, + 22920, + 22980, + 23040, + 23100, + 23160, + 23220, + 23280, + 23340, + 23400, + 23460, + 23520, + 23580, + 23640, + 23700, + 23760, + 23820, + 23880, + 23940, + 24000, + 24060, + 24120, + 24180, + 24240, + 24300, + 24360, + 24420, + 24480, + 24540, + 24600, + 24660, + 24720, + 24780, + 24840, + 24900, + 24960, + 25020, + 25080, + 25140, + 25200, + 25260, + 25320, + 25380, + 25440, + 25500, + 25560, + 25620, + 25680, + 25740, + 25800, + 25860, + 25920, + 25980, + 26040, + 26100, + 26160, + 26220, + 26280, + 26340, + 26400, + 26460, + 26520, + 26580, + 26640, + 26700, + 26760, + 26820, + 26880, + 26940, + 27000, + 27060, + 27120, + 27180, + 27240, + 27300, + 27360, + 27420, + 27480, + 27540, + 27600, + 27660, + 27720, + 27780, + 27840, + 27900, + 27960, + 28020, + 28080, + 28140, + 28200, + 28260, + 28320, + 28380, + 28440, + 28500, + 28560, + 28620, + 28680, + 28740, + 28800, + 28860, + 28920, + 28980, + 29040, + 29100, + 29160, + 29220, + 29280, + 29340, + 29400, + 29460, + 29520, + 29580, + 29640, + 29700, + 29760, + 29820, + 29880, + 29940, + 30000, + 30060, + 30120, + 30180, + 30240, + 30300, + 30360, + 30420, + 30480, + 30540, + 30600, + 30660, + 30720, + 30780, + 30840, + 30900, + 30960, + 31020, + 31080, + 31140, + 31200, + 31260, + 31320, + 31380, + 31440, + 31500, + 31560, + 31620, + 31680, + 31740, + 31800, + 31860, + 31920, + 31980, + 32040, + 32100, + 32160, + 32220, + 32280, + 32340, + 32400, + 32460, + 32520, + 32580, + 32640, + 32700, + 32760, + 32820, + 32880, + 32940, + 33000, + 33060, + 33120, + 33180, + 33240, + 33300, + 33360, + 33420, + 33480, + 33540, + 33600, + 33660, + 33720, + 33780, + 33840, + 33900, + 33960, + 34020, + 34080, + 34140, + 34200, + 34260, + 34320, + 34380, + 34440, + 34500, + 34560, + 34620, + 34680, + 34740, + 34800, + 34860, + 34920, + 34980, + 35040, + 35100, + 35160, + 35220, + 35280, + 35340, + 35400, + 35460, + 35520, + 35580, + 35640, + 35700, + 35760, + 35820, + 35880, + 35940, + 36000, + 36060, + 36120, + 36180, + 36240, + 36300, + 36360, + 36420, + 36480, + 36540, + 36600, + 36660, + 36720, + 36780, + 36840, + 36900, + 36960, + 37020, + 37080, + 37140, + 37200, + 37260, + 37320, + 37380, + 37440, + 37500, + 37560, + 37620, + 37680, + 37740, + 37800, + 37860, + 37920, + 37980, + 38040, + 38100, + 38160, + 38220, + 38280, + 38340, + 38400, + 38460, + 38520, + 38580, + 38640, + 38700, + 38760, + 38820, + 38880, + 38940, + 39000, + 39060, + 39120, + 39180, + 39240, + 39300, + 39360, + 39420, + 39480, + 39540, + 39600, + 39660, + 39720, + 39780, + 39840, + 39900, + 39960, + 40020, + 40080, + 40140, + 40200, + 40260, + 40320, + 40380, + 40440, + 40500, + 40560, + 40620, + 40680, + 40740, + 40800, + 40860, + 40920, + 40980, + 41040, + 41100, + 41160, + 41220, + 41280, + 41340, + 41400, + 41460, + 41520, + 41580, + 41640, + 41700, + 41760, + 41820, + 41880, + 41940, + 42000, + 42060, + 42120, + 42180, + 42240, + 42300, + 42360, + 42420, + 42480, + 42540, + 42600, + 42660, + 42720, + 42780, + 42840, + 42900, + 42960, + 43020, + 43080, + 43140, + 43200, + 43260, + 43320, + 43380, + 43440, + 43500, + 43560, + 43620, + 43680, + 43740, + 43800, + 43860, + 43920, + 43980, + 44040, + 44100, + 44160, + 44220, + 44280, + 44340, + 44400, + 44460, + 44520, + 44580, + 44640, + 44700, + 44760, + 44820, + 44880, + 44940, + 45000, + 45060, + 45120, + 45180, + 45240, + 45300, + 45360, + 45420, + 45480, + 45540, + 45600, + 45660, + 45720, + 45780, + 45840, + 45900, + 45960, + 46020, + 46080, + 46140, + 46200, + 46260, + 46320, + 46380, + 46440, + 46500, + 46560, + 46620, + 46680, + 46740, + 46800, + 46860, + 46920, + 46980, + 47040, + 47100, + 47160, + 47220, + 47280, + 47340, + 47400, + 47460, + 47520, + 47580, + 47640, + 47700, + 47760, + 47820, + 47880, + 47940, + 48000, + 48060, + 48120, + 48180, + 48240, + 48300, + 48360, + 48420, + 48480, + 48540, + 48600, + 48660, + 48720, + 48780, + 48840, + 48900, + 48960, + 49020, + 49080, + 49140, + 49200, + 49260, + 49320, + 49380, + 49440, + 49500, + 49560, + 49620, + 49680, + 49740, + 49800, + 49860, + 49920, + 49980, + 50040, + 50100, + 50160, + 50220, + 50280, + 50340, + 50400, + 50460, + 50520, + 50580, + 50640, + 50700, + 50760, + 50820, + 50880, + 50940, + 51000, + 51060, + 51120, + 51180, + 51240, + 51300, + 51360, + 51420, + 51480, + 51540, + 51600, + 51660, + 51720, + 51780, + 51840, + 51900, + 51960, + 52020, + 52080, + 52140, + 52200, + 52260, + 52320, + 52380, + 52440, + 52500, + 52560, + 52620, + 52680, + 52740, + 52800, + 52860, + 52920, + 52980, + 53040, + 53100, + 53160, + 53220, + 53280, + 53340, + 53400, + 53460, + 53520, + 53580, + 53640, + 53700, + 53760, + 53820, + 53880, + 53940, + 54000, + 54060, + 54120, + 54180, + 54240, + 54300, + 54360, + 54420, + 54480, + 54540, + 54600, + 54660, + 54720, + 54780, + 54840, + 54900, + 54960, + 55020, + 55080, + 55140, + 55200, + 55260, + 55320, + 55380, + 55440, + 55500, + 55560, + 55620, + 55680, + 55740, + 55800, + 55860, + 55920, + 55980, + 56040, + 56100, + 56160, + 56220, + 56280, + 56340, + 56400, + 56460, + 56520, + 56580, + 56640, + 56700, + 56760, + 56820, + 56880, + 56940, + 57000, + 57060, + 57120, + 57180, + 57240, + 57300, + 57360, + 57420, + 57480, + 57540, + 57600, + 57660, + 57720, + 57780, + 57840, + 57900, + 57960, + 58020, + 58080, + 58140, + 58200, + 58260, + 58320, + 58380, + 58440, + 58500, + 58560, + 58620, + 58680, + 58740, + 58800, + 58860, + 58920, + 58980, + 59040, + 59100, + 59160, + 59220, + 59280, + 59340, + 59400, + 59460, + 59520, + 59580, + 59640, + 59700, + 59760, + 59820, + 59880, + 59940, + 60000, + 60060, + 60120, + 60180, + 60240, + 60300, + 60360, + 60420, + 60480, + 60540, + 60600, + 60660, + 60720, + 60780, + 60840, + 60900, + 60960, + 61020, + 61080, + 61140, + 61200, + 61260, + 61320, + 61380, + 61440, + 61500, + 61560, + 61620, + 61680, + 61740, + 61800, + 61860, + 61920, + 61980, + 62040, + 62100, + 62160, + 62220, + 62280, + 62340, + 62400, + 62460, + 62520, + 62580, + 62640, + 62700, + 62760, + 62820, + 62880, + 62940, + 63000, + 63060, + 63120, + 63180, + 63240, + 63300, + 63360, + 63420, + 63480, + 63540, + 63600, + 63660, + 63720, + 63780, + 63840, + 63900, + 63960, + 64020, + 64080, + 64140, + 64200, + 64260, + 64320, + 64380, + 64440, + 64500, + 64560, + 64620, + 64680, + 64740, + 64800, + 64860, + 64920, + 64980, + 65040, + 65100, + 65160, + 65220, + 65280, + 65340, + 65400, + 65460, + 65520, + 65580, + 65640, + 65700, + 65760, + 65820, + 65880, + 65940, + 66000, + 66060, + 66120, + 66180, + 66240, + 66300, + 66360, + 66420, + 66480, + 66540, + 66600, + 66660, + 66720, + 66780, + 66840, + 66900, + 66960, + 67020, + 67080, + 67140, + 67200, + 67260, + 67320, + 67380, + 67440, + 67500, + 67560, + 67620, + 67680, + 67740, + 67800, + 67860, + 67920, + 67980, + 68040, + 68100, + 68160, + 68220, + 68280, + 68340, + 68400, + 68460, + 68520, + 68580, + 68640, + 68700, + 68760, + 68820, + 68880, + 68940, + 69000, + 69060, + 69120, + 69180, + 69240, + 69300, + 69360, + 69420, + 69480, + 69540, + 69600, + 69660, + 69720, + 69780, + 69840, + 69900, + 69960, + 70020, + 70080, + 70140, + 70200, + 70260, + 70320, + 70380, + 70440, + 70500, + 70560, + 70620, + 70680, + 70740, + 70800, + 70860, + 70920, + 70980, + 71040, + 71100, + 71160, + 71220, + 71280, + 71340, + 71400, + 71460, + 71520, + 71580, + 71640, + 71700, + 71760, + 71820, + 71880, + 71940, + 72000, + 72060, + 72120, + 72180, + 72240, + 72300, + 72360, + 72420, + 72480, + 72540, + 72600, + 72660, + 72720, + 72780, + 72840, + 72900, + 72960, + 73020, + 73080, + 73140, + 73200, + 73260, + 73320, + 73380, + 73440, + 73500, + 73560, + 73620, + 73680, + 73740, + 73800, + 73860, + 73920, + 73980, + 74040, + 74100, + 74160, + 74220, + 74280, + 74340, + 74400, + 74460, + 74520, + 74580, + 74640, + 74700, + 74760, + 74820, + 74880, + 74940, + 75000, + 75060, + 75120, + 75180, + 75240, + 75300, + 75360, + 75420, + 75480, + 75540, + 75600, + 75660, + 75720, + 75780, + 75840, + 75900, + 75960, + 76020, + 76080, + 76140, + 76200, + 76260, + 76320, + 76380, + 76440, + 76500, + 76560, + 76620, + 76680, + 76740, + 76800, + 76860, + 76920, + 76980, + 77040, + 77100, + 77160, + 77220, + 77280, + 77340, + 77400, + 77460, + 77520, + 77580, + 77640, + 77700, + 77760, + 77820, + 77880, + 77940, + 78000, + 78060, + 78120, + 78180, + 78240, + 78300, + 78360, + 78420, + 78480, + 78540, + 78600, + 78660, + 78720, + 78780, + 78840, + 78900, + 78960, + 79020, + 79080, + 79140, + 79200, + 79260, + 79320, + 79380, + 79440, + 79500, + 79560, + 79620, + 79680, + 79740, + 79800, + 79860, + 79920, + 79980, + 80040, + 80100, + 80160, + 80220, + 80280, + 80340, + 80400, + 80460, + 80520, + 80580, + 80640, + 80700, + 80760, + 80820, + 80880, + 80940, + 81000, + 81060, + 81120, + 81180, + 81240, + 81300, + 81360, + 81420, + 81480, + 81540, + 81600, + 81660, + 81720, + 81780, + 81840, + 81900, + 81960, + 82020, + 82080, + 82140, + 82200, + 82260, + 82320, + 82380, + 82440, + 82500, + 82560, + 82620, + 82680, + 82740, + 82800, + 82860, + 82920, + 82980, + 83040, + 83100, + 83160, + 83220, + 83280, + 83340, + 83400, + 83460, + 83520, + 83580, + 83640, + 83700, + 83760, + 83820, + 83880, + 83940, + 84000, + 84060, + 84120, + 84180, + 84240, + 84300, + 84360, + 84420, + 84480, + 84540, + 84600, + 84660, + 84720, + 84780, + 84840, + 84900, + 84960, + 85020, + 85080, + 85140, + 85200, + 85260, + 85320, + 85380, + 85440, + 85500, + 85560, + 85620, + 85680, + 85740, + 85800, + 85860, + 85920, + 85980, + 86040, + 86100, + 86160, + 86220, + 86280, + 86340, + 86400 + ], + "y": [ + 0, + 4.8186621523931824e-05, + 9.398154449108292e-05, + 0.0001329855761234205, + 0.00015814015909143341, + 0.00016483162691581296, + 0.00015856337202277366, + 0.00015839456663288985, + 0.00016859660094083054, + 0.00018029284000882322, + 0.00019075988241861716, + 0.00020616975598592693, + 0.00022513433096488504, + 0.0002320923097322879, + 0.00022852662613468818, + 0.00022606825272050723, + 0.00023243036332729487, + 0.0002529199978271329, + 0.0002818778410142926, + 0.00030706525891618865, + 0.0003134304100862912, + 0.00030082034891009573, + 0.00028985797133233913, + 0.0002851014747833054, + 0.00029024953212472413, + 0.00030978659151907465, + 0.0003506399656279963, + 0.0003886345977219984, + 0.0004048088256937873, + 0.00042435595353943606, + 0.0004536103418056754, + 0.00048328711526186233, + 0.0005097593319507051, + 0.0005285766064257946, + 0.0005125596375420259, + 0.0004956495346000705, + 0.0004969738558192349, + 0.0004963985537382217, + 0.0005255701337805458, + 0.0005552286814216343, + 0.0005594030249514992, + 0.0005575908722470898, + 0.0005387380775134122, + 0.000532441451312561, + 0.0004550361146225499, + 0.0004721643202565901, + 0.000533525325492357, + 0.0005322132894944315, + 0.0005057701620628076, + 0.0005259324726844013, + 0.0005182298646762237, + 0.0004906415639673125, + 0.0005256397319026032, + 0.0005293775512455697, + 0.0005213905853719059, + 0.0005405569156976118, + 0.0005685379830670333, + 0.0005701036868581411, + 0.0005553192122396871, + 0.0005503529941688712, + 0.000554026999295653, + 0.0005539828213634593, + 0.000530090074296496, + 0.0004907534739801831, + 0.00047762714480953486, + 0.00045492860828568273, + 0.0004399293245713279, + 0.0004905579349094658, + 0.0005075386223638315, + 0.0004825234583188092, + 0.0004773498129735732, + 0.00044090274086682624, + 0.0004232953939450174, + 0.0004475726066305935, + 0.0004737099967505964, + 0.00048084181753337246, + 0.00048653905083204005, + 0.0004919638368635706, + 0.0004742737459869286, + 0.0004338691052355864, + 0.0003948014649337044, + 0.00037848519864765396, + 0.00035174535399434484, + 0.00033217683549836575, + 0.000316616803804802, + 0.00028118899758470753, + 0.0003148240942131225, + 0.0003273308202074536, + 0.00025970882556351066, + 0.00018500111708029025, + 0.00018999109778793, + 0.0002059371068973147, + 0.00022440548329513008, + 0.00024348651298013404, + 0.00023173002917460067, + 0.00020196245270103579, + 0.00018608169843923513, + 0.00019829241828257677, + 0.00020151162051593112, + 0.00019826886995988208, + 0.0001552400257243131, + 8.40520299524718e-05, + 6.755571278865151e-05, + 8.853721250118373e-05, + 0.0001049784177084238, + 0.00011227637625409119, + 0.00012081136879681075, + 0.00013381612015769335, + 0.00013565417687767, + 0.00013040672370807913, + 0.00014351043795453935, + 0.00016123573531782076, + 0.00017269344929804573, + 0.00018360608136101794, + 0.00020006294114275572, + 0.00022339606013438418, + 0.0002478040244891795, + 0.00026464483235952047, + 0.00029420130561274156, + 0.0002940991029281799, + 0.00025113163831482003, + 0.000380348634836491, + 0.0004143970503812272, + 0.0003701983924636888, + 0.0003872157970479292, + 0.00038450396052286905, + 0.0003899841040755511, + 0.00039544999177857444, + 0.00040658656753654626, + 0.0004388333885981297, + 0.0004292826882182896, + 0.0004497620105134684, + 0.0005170969551588604, + 0.000553471139218685, + 0.0005986477775480951, + 0.0006045667511012454, + 0.0005986656793122634, + 0.0006041145480379972, + 0.0006187950145029366, + 0.0006368885355281828, + 0.0006430973619773017, + 0.0006532487412706283, + 0.0007386577639150567, + 0.0007596558005016434, + 0.0007474034727135927, + 0.0007554581982170207, + 0.0008131863534291725, + 0.0008141914962987196, + 0.0008222032525306473, + 0.0008570984803515192, + 0.0008573145954129293, + 0.0008386135765737599, + 0.0008207406202694221, + 0.0008275343615255434, + 0.0008519360308930662, + 0.0008603665702166909, + 0.0008509452294976512, + 0.0008455723025697975, + 0.0008494247539876172, + 0.0008640768786086991, + 0.0008835600354495373, + 0.0008836564045486179, + 0.0008577136677061615, + 0.0008229611714546418, + 0.0007894097066254237, + 0.0007896486484074937, + 0.0008614160723068849, + 0.0009128910738122558, + 0.0008600766856014806, + 0.0008196638885511497, + 0.0008203313365635322, + 0.0008324072055853752, + 0.0008648131201618922, + 0.0008423838036388082, + 0.0008157114795170436, + 0.0008361723136451281, + 0.0008469196931566561, + 0.0008288402963933379, + 0.0008281272183582024, + 0.0008751952721321541, + 0.0008832670599287181, + 0.0008778941340262583, + 0.0009152265694143469, + 0.0009267632371077586, + 0.0008965995391891676, + 0.0009206215062845787, + 0.0009552836750292378, + 0.0009649528433679188, + 0.0009488527358717201, + 0.0008985207428097403, + 0.0008316233323151275, + 0.0007210410312265462, + 0.0006446722973281926, + 0.00067111740761524, + 0.000728493661573363, + 0.0007111424673399947, + 0.0006687876427198333, + 0.000646160056469395, + 0.0006540006963429415, + 0.0006848623443380188, + 0.0007213915713548974, + 0.000749440761316982, + 0.0007395437911990412, + 0.0007399950791526024, + 0.0007450862644143135, + 0.000726785876740204, + 0.0007359013255448715, + 0.0007472946204375001, + 0.0007315405120859768, + 0.0007074204428373306, + 0.0007161870173942277, + 0.0007504526066850272, + 0.0007624200807637292, + 0.0007952468796950993, + 0.0008392035168357468, + 0.0008524998853384487, + 0.0008606103024821649, + 0.0008467456247653619, + 0.0008221621073938171, + 0.0008526401666625024, + 0.0008932784061147341, + 0.0009207719334257606, + 0.0009316227731662509, + 0.0009353819892269776, + 0.0009442270472899451, + 0.0009654671808226341, + 0.0009976757981146522, + 0.0010299406384434758, + 0.0010566795171794803, + 0.0010728818981679015, + 0.0010801227923898456, + 0.0010752178751626627, + 0.0010662209198460382, + 0.0010721138404898175, + 0.0010834765808484643, + 0.0010894225061424498, + 0.0011331665932277257, + 0.0012410248890581126, + 0.0013552626414588822, + 0.001418561194898584, + 0.001411571778401148, + 0.001414395357412566, + 0.0014065618599124012, + 0.0013787388178150928, + 0.0013683823261788665, + 0.0012904519725905853, + 0.0012169985897391865, + 0.0012133834792133788, + 0.0012332610278265497, + 0.0012330544599679768, + 0.0012404354792715528, + 0.0012519578659065246, + 0.00125246694761779, + 0.0012420904239337815, + 0.0012263106008872323, + 0.0012267119529034475, + 0.0012431736641061427, + 0.0012597385559566915, + 0.0012678179514089072, + 0.0012643639937058746, + 0.001257699230492001, + 0.0012507629147280855, + 0.0012501205004848272, + 0.0012697708154666778, + 0.00129378140482542, + 0.0012974700022868838, + 0.0012808211363031408, + 0.0012526415346529977, + 0.001218940744505662, + 0.001188391409703447, + 0.0012041761317408413, + 0.0012606573108844706, + 0.0012441458238642699, + 0.0011951638754630412, + 0.00121526964097195, + 0.0012076421661949854, + 0.0011669825425746605, + 0.0011376061817380864, + 0.001100537348598541, + 0.0010692022770809192, + 0.001070908849887083, + 0.001072620847877073, + 0.0010488795863228587, + 0.00103617059386061, + 0.0010344542713046254, + 0.000998977908641287, + 0.0010498164473798, + 0.0010855615122591397, + 0.0010248890919685968, + 0.000974444985140263, + 0.0010325371216651673, + 0.0010515740732714178, + 0.001007066969977442, + 0.0009827277030391352, + 0.0010146571897694443, + 0.0009911811908455918, + 0.0008805717030391734, + 0.0008383831198179822, + 0.0008602278095602885, + 0.0008716934255931627, + 0.0008685179840101496, + 0.00087732973184347, + 0.0008927598022878083, + 0.0009118466420638581, + 0.0009510939762872853, + 0.0009936161935442424, + 0.0010051887790920241, + 0.0009962327177653815, + 0.0010141113138651837, + 0.0010514288142298295, + 0.001054584033552959, + 0.001038666938372499, + 0.0010337280822291953, + 0.0010351562555581323, + 0.00105877614029724, + 0.001099747181127772, + 0.001136766734886657, + 0.0011725351560329471, + 0.0012084546532607594, + 0.0012377212958465185, + 0.0012556850555101606, + 0.0012648650011144024, + 0.0012813174949679134, + 0.0013140022021265936, + 0.0013531802551467198, + 0.0013916532612690711, + 0.001428483270168278, + 0.0014630986025160422, + 0.001494995261496236, + 0.001522180204655822, + 0.001557482318300484, + 0.0015985826660208403, + 0.0016190187328099129, + 0.0016095869671759967, + 0.0015879403748492891, + 0.0015577478512678775, + 0.001535047417442641, + 0.0014949810897388791, + 0.0014894872293518251, + 0.0014650331737020362, + 0.0014678889051090841, + 0.001600801206569887, + 0.0017854730310290713, + 0.0019347569809634794, + 0.002064931469184538, + 0.002111608663595359, + 0.002104154638456688, + 0.0020877633653187348, + 0.0020718416333076256, + 0.002069251486044583, + 0.002086558620496619, + 0.0020765080605237955, + 0.0020542174775157666, + 0.0020543008129544956, + 0.002068469430602096, + 0.002077327908256671, + 0.0020690124307208573, + 0.002043185103852444, + 0.0020180752611755857, + 0.0020109389454126283, + 0.0020304611192537188, + 0.0020633522109597255, + 0.0020808107448907947, + 0.0020773393271155175, + 0.0020655687551500075, + 0.0020577578295803193, + 0.00205868013871058, + 0.002070054614097758, + 0.0020946652014520173, + 0.0020970419442317046, + 0.0020657108320281483, + 0.002057475115282406, + 0.0020849175789247184, + 0.0021400324597055046, + 0.0020774584448329074, + 0.0020325063915008984, + 0.0020682049017723162, + 0.002060443514249159, + 0.0020293062734893395, + 0.002017973325490829, + 0.0020264907238882928, + 0.002020481914811291, + 0.0019929777016391677, + 0.0019813251286667976, + 0.0019617944043992977, + 0.0019199212857658053, + 0.0019589068486382775, + 0.0020253015062266207, + 0.0020032707739589066, + 0.0018876571047496042, + 0.001781506095000772, + 0.0017681911867272451, + 0.0017821642367715567, + 0.0017734312175697875, + 0.001760443338175144, + 0.001731696124086455, + 0.001697687379248151, + 0.0016828044267320516, + 0.0017231828060077163, + 0.00171060910498987, + 0.001645215066785221, + 0.001628368671587291, + 0.0016353247812631703, + 0.0016252819591006482, + 0.0016079754745238904, + 0.0015944026034262174, + 0.0015801958713245877, + 0.0015624664131284694, + 0.0015513567174301743, + 0.001552173996032634, + 0.0015385316918843078, + 0.0015217110558613661, + 0.0015225626775630702, + 0.0015243088136279823, + 0.001516120578577238, + 0.0015047968143802278, + 0.0014920840027592638, + 0.0014788320997988127, + 0.0014738704205668823, + 0.0014811386026710417, + 0.0014875875570152836, + 0.0014780635096280526, + 0.0014576792459165665, + 0.001449108504595549, + 0.001451749427817146, + 0.0014386472494945098, + 0.0014165157700782541, + 0.0014318259799384033, + 0.0014722345116906903, + 0.0014839124463534835, + 0.0014931453766982357, + 0.0015398593003389238, + 0.001588751600274864, + 0.001581059562645533, + 0.0015802240691081214, + 0.0015966210594156973, + 0.001581696434219966, + 0.0016254782547739414, + 0.0017490273995201438, + 0.001775247981630149, + 0.0015060681426977982, + 0.0013509171075749918, + 0.0013290050952430143, + 0.0013154640897091638, + 0.001344967818725034, + 0.0013645451065902243, + 0.001367687330148616, + 0.0013759545618602048, + 0.0014148433733905447, + 0.0014661796454322452, + 0.001471184175670377, + 0.001466681299844875, + 0.001482689819218885, + 0.0015090464370637617, + 0.0015426011406107205, + 0.0015575137294485107, + 0.0015444114173443493, + 0.001566878798396181, + 0.0015854318684422508, + 0.0015778689521314777, + 0.0015450436257144298, + 0.0014815483560675683, + 0.0014666629404030053, + 0.0014800181794835496, + 0.0014870769149791937, + 0.0014990581296973559, + 0.001482206707554506, + 0.0014938768034542956, + 0.001544193482700275, + 0.0015371723683373036, + 0.0014878541774089936, + 0.0014554796343189185, + 0.0014600720645233825, + 0.0014848895730930536, + 0.0014395535432188227, + 0.0013882679860894723, + 0.0014062394727969295, + 0.0014298236629075487, + 0.0014230172355897217, + 0.0013965874154136017, + 0.0013863284930931384, + 0.0013956445000108597, + 0.0014287611898988225, + 0.0014959251944928953, + 0.001516998303194262, + 0.001450812775000316, + 0.0013266475208069724, + 0.001309166105399477, + 0.0013249280859856584, + 0.0012981924654972025, + 0.0012732197446249675, + 0.0012492218134779192, + 0.0012728990002766154, + 0.0013196783327613477, + 0.0013030445214179114, + 0.0012756508364508167, + 0.001261753222271262, + 0.00125804710333149, + 0.0012599268088356885, + 0.0012640131266892587, + 0.0012708547437773427, + 0.0012773328404075777, + 0.0012739956818738428, + 0.0012553093336001087, + 0.00123205817507032, + 0.0012364591207323023, + 0.0012773338995658546, + 0.0013106789990160299, + 0.0013100881341355404, + 0.0013100100156123024, + 0.0013244521399762618, + 0.0013442791846911908, + 0.0013679879956217161, + 0.0013813108207191332, + 0.0013778755473903134, + 0.0013726853474276093, + 0.001377437985295539, + 0.0013903996517663027, + 0.0014079136757118417, + 0.0014266152459335444, + 0.0014454767552275595, + 0.0014573730409376381, + 0.001457631881830665, + 0.0014619164058068863, + 0.0014704696719135299, + 0.001471757823310294, + 0.0014713865867183305, + 0.001469034514929652, + 0.0014529190423943031, + 0.0014662684953002472, + 0.0014832479097795553, + 0.0015394402588275837, + 0.0015412791057027278, + 0.0015388597015443888, + 0.0015716342719770738, + 0.0015720629983498322, + 0.0014853130206379723, + 0.0015665224151947118, + 0.0017465111126884994, + 0.0018177465511430707, + 0.0018610887281409858, + 0.001888553493933164, + 0.0018832699953814814, + 0.0018727880654922182, + 0.0018677722550557074, + 0.0018533437638590014, + 0.0018467156371261787, + 0.0018375871481442344, + 0.0018313906190600973, + 0.0018304830697237703, + 0.0018035391007681994, + 0.0018047925840836295, + 0.0018227378439012248, + 0.0018541106787786216, + 0.0018825650432462565, + 0.0018602210911414637, + 0.0017778153985910958, + 0.0017923524757594692, + 0.001867423139365495, + 0.0019057750815911522, + 0.0018662159513696812, + 0.0018214385888650974, + 0.0018604013149929972, + 0.0019051668811317704, + 0.0018998708784367907, + 0.0018484081186597235, + 0.0018451464408887073, + 0.001853431863568101, + 0.0018429015995220348, + 0.0018245243114329217, + 0.001814705458557562, + 0.0017896123095171971, + 0.0017863731600866917, + 0.001793550160135575, + 0.0017685115015826254, + 0.0017356225632420919, + 0.0017386063617444894, + 0.0017718276230084512, + 0.0018364538838185327, + 0.0018906595411050397, + 0.001886554147437627, + 0.0018548712843519833, + 0.0017550036272170077, + 0.0017376084609789018, + 0.0018212606617566756, + 0.0018387863599484292, + 0.0018120692131117907, + 0.0018252461090070308, + 0.0018454508876431194, + 0.0018410187669510017, + 0.001791858516037929, + 0.001777804988330153, + 0.0017958149197061807, + 0.0017993308702605446, + 0.0017971428336888916, + 0.0017944109978666343, + 0.0017897105531718722, + 0.0017845641649272576, + 0.0017853059833365544, + 0.0017960788752874538, + 0.0018072335458125955, + 0.0017992789637333892, + 0.0017724862868843602, + 0.001762362238399751, + 0.0017794175373451147, + 0.0017949256164092617, + 0.001801545792669971, + 0.0018116546389858419, + 0.001829715427729335, + 0.0018511974904033884, + 0.0018625758070481425, + 0.0018526809075102098, + 0.0018390003722171995, + 0.0018331113699745834, + 0.0018425448686191675, + 0.001856137231270586, + 0.0018708273296077055, + 0.0018733389614265126, + 0.0019112878437051097, + 0.00199185132543611, + 0.002010498664065757, + 0.001995500748027197, + 0.0019907667147357998, + 0.0020094261094495596, + 0.0020420926567677905, + 0.002098912835361225, + 0.0021125803245183464, + 0.00206704206279509, + 0.002064793903212541, + 0.0020530444173036595, + 0.0020842907759837993, + 0.002078746514666132, + 0.001989537339092769, + 0.001994485829284037, + 0.002001810740393316, + 0.0018990517124944624, + 0.0018966171288994492, + 0.0019306331774287214, + 0.0019214053268410288, + 0.0019226085753282537, + 0.0019399946543840214, + 0.0019547634503029082, + 0.0019555911879877573, + 0.0019400559259156274, + 0.0019250927403676372, + 0.0019341917520654798, + 0.0019469436033678377, + 0.0019511753648300953, + 0.0019561578575287603, + 0.0019558544371455237, + 0.0019485465355168824, + 0.0019435101520996353, + 0.0019410215691436938, + 0.0019350748995376698, + 0.001928364953508053, + 0.0019206235310283027, + 0.0018981970653278687, + 0.0018661967958692872, + 0.001854381661175911, + 0.001866237869141555, + 0.001887578751823502, + 0.001891141970821057, + 0.0018781445460574922, + 0.0018582085011210638, + 0.0018324201087919839, + 0.001815303538839129, + 0.0018067833675997063, + 0.0017992789233183817, + 0.0017926019222766194, + 0.0017922935180206883, + 0.0017959039557663996, + 0.001793906142115696, + 0.0017933791087211227, + 0.0017905605708275626, + 0.0017260014526072954, + 0.0016190097028684534, + 0.001553523478869607, + 0.0015210714005860603, + 0.0014454040863573223, + 0.0013372656164934347, + 0.0013854760379058677, + 0.0014551186778230954, + 0.0014636996897317946, + 0.0014615362545862094, + 0.0014896728247420052, + 0.001475053231182546, + 0.001419939485291118, + 0.001421777238965258, + 0.0014354434535217588, + 0.001418277518529377, + 0.001387418518237316, + 0.0013817627384586136, + 0.0013927353541621956, + 0.0014078155677984562, + 0.0014165214936523896, + 0.0014065758405200886, + 0.0013842405029731294, + 0.0013783868877165907, + 0.0013749968636912644, + 0.001359820201163023, + 0.001353582057942775, + 0.0013856132171112972, + 0.0014401073881370585, + 0.0014682037443167347, + 0.0014680011937151342, + 0.001469240942843551, + 0.0014848290482440728, + 0.001501677113530383, + 0.0015187622455390907, + 0.0015270423426656157, + 0.0015346160306441874, + 0.0015584229656159282, + 0.001578112279792454, + 0.001572395251481392, + 0.0015805486746942852, + 0.001603785028944173, + 0.0016174626988067272, + 0.0016193384572132394, + 0.0016438941556093285, + 0.0016897211541151787, + 0.0016893814737239797, + 0.001663105074537841, + 0.0016614788964474062, + 0.0016710347477439371, + 0.0016506230364240187, + 0.0015929904999061903, + 0.0017043127776691538, + 0.0018055837766325217, + 0.0017688413380375718, + 0.0017016421985399015, + 0.0017446190916599858, + 0.0017562210485461453, + 0.001756726719542311, + 0.0017689871247548446, + 0.0017997867507559063, + 0.0018029404835449847, + 0.0018087927750354113, + 0.0018121475941595725, + 0.0018174479316781466, + 0.0018300005532752102, + 0.0018345290775162607, + 0.001825944884805895, + 0.0018246513220770242, + 0.0018392149359035936, + 0.0018570204667340455, + 0.0018689301833193107, + 0.001876511045504734, + 0.001886717632630054, + 0.0019041115563920132, + 0.0019200370284939829, + 0.0019230018335714397, + 0.001910403004596114, + 0.0018926918961051425, + 0.0018676528178803071, + 0.0018427097197478025, + 0.001841352743795961, + 0.0018569376764060613, + 0.0018684835857031696, + 0.0018691792911434365, + 0.0018596505558130918, + 0.0018411071195556337, + 0.0018229790578127712, + 0.0018126283180589784, + 0.001796604645341707, + 0.0017742609342691227, + 0.0017780610820365462, + 0.0017726493690824992, + 0.0017361634227506812, + 0.0017022813947490463, + 0.0017006093399243379, + 0.001720402183271881, + 0.0017460743188088652, + 0.0017742633188670837, + 0.0018200824448325725, + 0.0018291953270440382, + 0.0017313666938266622, + 0.001699204539898449, + 0.0017823457559190655, + 0.0018169230003442095, + 0.0017779326567565813, + 0.0017102458096178144, + 0.00167253911611434, + 0.0016479805157704093, + 0.0016634654304147393, + 0.0016702141210960249, + 0.0016586139345510754, + 0.001645247562632114, + 0.0016429234055548034, + 0.0016473555819621094, + 0.0016500672771527967, + 0.001669037457424457, + 0.0017055645930099624, + 0.0017190262604251615, + 0.0016686235356828223, + 0.0016361110238886578, + 0.0016539646074802592, + 0.0016806669154180035, + 0.0017027576600922004, + 0.0017350489342161045, + 0.001789119119259712, + 0.001819794510308855, + 0.001800870925193698, + 0.0017703923194333788, + 0.0017645061233405187, + 0.0017900617430841466, + 0.001828081291124947, + 0.0018304908467159508, + 0.0018232112967386635, + 0.001822036062259228, + 0.001828520213234377, + 0.0018448058905282214, + 0.0018657730014557644, + 0.001877290420103483, + 0.0018797385660668155, + 0.0018782863543088033, + 0.001902755374451059, + 0.0019401718832245775, + 0.0019427577806381074, + 0.0019263528572443464, + 0.0019324516010749975, + 0.001955393471524504, + 0.0018984919786956898, + 0.0019936277450209768, + 0.002162639342842265, + 0.002223348999577521, + 0.0021414005363266176, + 0.0021112743810865007, + 0.002174208975359855, + 0.002238001436249964, + 0.0022412449264522143, + 0.002245129381466575, + 0.0021846672721861733, + 0.002182576086948972, + 0.0022000427995636208, + 0.0022072779899319295, + 0.0022064163808892126, + 0.002194971736015657, + 0.002185028196249078, + 0.00218310131373795, + 0.0021968792337379414, + 0.002204801794741567, + 0.002212798376259726, + 0.0022394566098817275, + 0.002257784450951906, + 0.0022260318972180723, + 0.002228869588554846, + 0.0022712766679463432, + 0.0022034765937758907, + 0.002293884487268424, + 0.0023300441837937084, + 0.0022126494000120453, + 0.002152234711704453, + 0.002147352125187172, + 0.002177030984821663, + 0.00219670602291256, + 0.002188700496662797, + 0.002178497035673657, + 0.002181299713263305, + 0.002187786032973176, + 0.0021693960998335608, + 0.002120540166482781, + 0.0021174329430126734, + 0.002106179469133099, + 0.002087192447067302, + 0.002075805137794763, + 0.002028799666039221, + 0.0020298403521879496, + 0.0020562225194686755, + 0.0019742248432576535, + 0.0018581062725403072, + 0.001844955727290279, + 0.001857203536439412, + 0.0018525453802479457, + 0.0019163427798351348, + 0.00198417859608605, + 0.001991825746558103, + 0.001962241163503322, + 0.0019537634026267343, + 0.0019639740635959057, + 0.0019467461897686822, + 0.0019753640826485398, + 0.0019871109563279793, + 0.0019294968698541865, + 0.001938063840031947, + 0.0019906081268213044, + 0.001981774606003653, + 0.0019951625369268506, + 0.0019801628320657585, + 0.0019478946997933061, + 0.0019738595949000443, + 0.001991247065913908, + 0.0019831326204332064, + 0.0019813595243494435, + 0.0019724875176168797, + 0.001953776687741091, + 0.001961397415061677, + 0.001984537434718227, + 0.001999393519121928, + 0.0019798997176829125, + 0.0018997671165842797, + 0.0019114330989152227, + 0.0020000197573113872, + 0.002035678159417, + 0.002029358767051665, + 0.002016481541712985, + 0.002012670612041469, + 0.002022367311394606, + 0.002047823798165556, + 0.0020817751213363426, + 0.0021085005695713776, + 0.0021124131710851973, + 0.0021078359092234875, + 0.0021164024665538215, + 0.0021327495860665, + 0.0021651722015440817, + 0.0021967020443230756, + 0.0022182180360262316, + 0.002261094987368323, + 0.0023709726365764502, + 0.0023070921753900525, + 0.0020820650725378795, + 0.001968373555129602, + 0.0019142724992152304, + 0.0019273684851410463, + 0.0019829671955297248, + 0.0020629635869073605, + 0.002125795101643634, + 0.0022714614406630987, + 0.002356509382790741, + 0.0023635921215151142, + 0.0024236161029651533, + 0.0024529570327260267, + 0.0024472665124314432, + 0.0024672564380867064, + 0.0024903050303734108, + 0.0024833559119925934, + 0.0025027709140139115, + 0.0024953039270543534, + 0.0024956291489993013, + 0.0025028837437844954, + 0.0025013934927994477, + 0.0024871069886311823, + 0.002466444367861501, + 0.0024564693883981485, + 0.002465831730491347, + 0.0024864605775436147, + 0.002476211651544977, + 0.0024328974428140453, + 0.002391054111166735, + 0.0023529280345652485, + 0.0023383675156749663, + 0.002329237691989311, + 0.002326286207432255, + 0.0023102274420632295, + 0.0022893979524286363, + 0.0022655213099217193, + 0.0022305451396452207, + 0.002230049330898015, + 0.0022539428652683016, + 0.0022633930500602644, + 0.002267425587031995, + 0.0022712143136787875, + 0.002262011089198634, + 0.0022557252077816943, + 0.0022579612125316257, + 0.002270002308196999, + 0.0022712277265162185, + 0.002277374929965078, + 0.00227925568531618, + 0.0022684855386106966, + 0.0023029717119553055, + 0.0023300732732037185, + 0.0023302572879158956, + 0.0023057045083046046, + 0.002303257188216368, + 0.002249421870451649, + 0.00213485168236871, + 0.0021601887929201683, + 0.0022216604612428333, + 0.002255191269309018, + 0.002286163426919868, + 0.0022815401479313693, + 0.0023152401117741855, + 0.0023442302621490803, + 0.0023433696194971503, + 0.0023510194833129845, + 0.002345589912198349, + 0.00237567969016122, + 0.0024002475348275944, + 0.002336387944177546, + 0.002345629487584494, + 0.002398601030152897, + 0.0024317129081654777, + 0.0024302143928028952, + 0.002415042903431751, + 0.0024020196613700707, + 0.0024020100496300015, + 0.0024186133304893585, + 0.002453520926549107, + 0.0024923310160432023, + 0.0025157562356055052, + 0.002520043159603612, + 0.002515106178318013, + 0.0025125008243680968, + 0.00251908116609932, + 0.0025367516441121138, + 0.0025585889586829777, + 0.002567290295053409, + 0.002555648697117122, + 0.002566016575911972, + 0.002584664168337567, + 0.002556887502374276, + 0.0025128540804417528, + 0.0024906932983195505, + 0.0024743172637557227, + 0.002446394118661045, + 0.002545095651797487, + 0.002675026548982608, + 0.002806383327620788, + 0.002855920128648964, + 0.002915350460900188, + 0.0029889590280922926, + 0.0030415968325485498, + 0.002933865787259736, + 0.0029158884253567947, + 0.0029478124186290986, + 0.0029594771030695497, + 0.0029319439383186717, + 0.002907692382663851, + 0.0028970626251174744, + 0.002881684167808144, + 0.0028676892792323964, + 0.0028646287880118478, + 0.0028708140248533617, + 0.002882990796594221, + 0.002893802474457655, + 0.0028930851173818014, + 0.0028754275717491153, + 0.0028511426688687803, + 0.002837190285950092, + 0.002836652142475134, + 0.002845031730407909, + 0.0028545754642562552, + 0.002859626097529697, + 0.002867571514292456, + 0.002873718514746369, + 0.002860219442993794, + 0.002833053293439108, + 0.0028032460616558602, + 0.002777200508802176, + 0.0027695477220826916, + 0.002778823513857612, + 0.002790322130585038, + 0.0027843205197708313, + 0.002778121747214894, + 0.002816761663955925, + 0.0028285624851415673, + 0.002774746615813076, + 0.0027392778096258685, + 0.0027902521989576555, + 0.002799597194336491, + 0.002766194370012168, + 0.002733702303974896, + 0.002735612849878764, + 0.002699196530392464, + 0.0026614760166809768, + 0.0026283119386036956, + 0.002630237957906413, + 0.002597942720882764, + 0.002575954427648258, + 0.00253431873518823, + 0.002607827008018042, + 0.0027152870997919657, + 0.0027444214590599085, + 0.002763176818233795, + 0.0027429301774771963, + 0.0026708207655749597, + 0.002633759588378513, + 0.0026447760044422796, + 0.0026591844475339207, + 0.002665698299585826, + 0.002644579667885909, + 0.0025981221850831264, + 0.002573210642953341, + 0.0025762823613368247, + 0.0026020646652543896, + 0.002613123859193412, + 0.0026048355611148198, + 0.0025814549905643813, + 0.002572191707003841, + 0.002564310076411165, + 0.0025517213319470704, + 0.0025348405993194946, + 0.0025161777530420633, + 0.002499665901704155, + 0.002499416851821522, + 0.0025209581252429876, + 0.002541328811685936, + 0.0025449994639344703, + 0.0025379591710845326, + 0.0025278390992428106, + 0.002541498644612487, + 0.00257757460545324, + 0.002608445528458373, + 0.0026125831470763163, + 0.002643477142055177, + 0.0027033655487183955, + 0.0027291205927219343, + 0.0027510823306326464, + 0.0027844507037878908, + 0.002827703889408058, + 0.002886008610747633, + 0.002936108259386548, + 0.0028879123591445165, + 0.0027558090602297315, + 0.0026613873282797587, + 0.0026707485993402833, + 0.0027620625376402305, + 0.0028529312547923183, + 0.0028306425101046998, + 0.002726527598344382, + 0.002664000231213206, + 0.002670836142839886, + 0.0027208625161578926, + 0.0027576377240719806, + 0.0027983688007725735, + 0.0028473420572854313, + 0.0028823334559195473, + 0.0028970395870458977, + 0.002909976267408747, + 0.0029285929957192096, + 0.0029440808230371553, + 0.002944365035698445, + 0.0029342367041316018, + 0.0029276154142666736, + 0.002929817905139358, + 0.002932846437961859, + 0.002929706748418655, + 0.0029225573814588195, + 0.0029132166547683083, + 0.0029027221142517985, + 0.0028993141723639023, + 0.00290397118358407, + 0.002900156688891057, + 0.0028854511679859245, + 0.002887535750722283, + 0.0028937760209094797, + 0.0028735975769020434, + 0.0028367309709584707, + 0.002804986855810133, + 0.002787891768870839, + 0.002782528715652789, + 0.0027801474409926666, + 0.002773601810663171, + 0.0027637178961042383, + 0.0027533334121435027, + 0.0027413882757852705, + 0.0027259159291980178, + 0.0026955378854838347, + 0.002650997245417293, + 0.0026102520847568443, + 0.0026087981850531497, + 0.002636359991244368, + 0.0026796633342256893, + 0.0026532038802128516, + 0.0025865665044377912, + 0.0025457591817102214, + 0.0025149756387353437, + 0.002590985449616244, + 0.0025970677980691626, + 0.0025446052650246625, + 0.0025317859884197726, + 0.0024915478926855624, + 0.0025005247361029486, + 0.0025272961947313513, + 0.0025345751794771045, + 0.002513258264806916, + 0.0024726878908776003, + 0.002474449645234094, + 0.002508985124701245, + 0.0025754971891488146, + 0.0025483693696706387, + 0.0024733512895919077, + 0.0024990610065078636, + 0.002525424167786509, + 0.002527178923957593, + 0.002541494492576037, + 0.002578591666437037, + 0.00261973399824569, + 0.0026417320621933394, + 0.0026369408585148763, + 0.0025898719342187996, + 0.002583665351151127, + 0.002575293488078255, + 0.002520768283892302, + 0.0025159820786082835, + 0.0025805336498027987, + 0.002624615183316583, + 0.0026418275084367318, + 0.002649891154126973, + 0.0026651533556355527, + 0.0026590924026897197, + 0.002656214513625199, + 0.002664668075408672, + 0.002659002650272572, + 0.0026660594582414775, + 0.0026895687458396863, + 0.002704894337140543, + 0.0027067850612197894, + 0.0027149279075087403, + 0.002772578303308425, + 0.002893506440318465, + 0.0029309449935947295, + 0.0029274335681787294, + 0.0030141944028101372, + 0.0030740571768121043, + 0.0030424251719880675, + 0.003057682935702903, + 0.003160702794152073, + 0.003274473259775974, + 0.0033093146556262953, + 0.0032813156123710748, + 0.003251334145307855, + 0.003257276462511269, + 0.0032925570278082342, + 0.003311614522660622, + 0.0033082885773992343, + 0.003324338854290944, + 0.0033633841620650485, + 0.003393049964828198, + 0.0034096546444891476, + 0.003427556602261165, + 0.003447916659663044, + 0.0034600347024374774, + 0.0034567665819270456, + 0.0034468253115185615, + 0.00345129247241694, + 0.003472945031958501, + 0.0034937261372494414, + 0.0035062683355495273, + 0.0035090656062723552, + 0.0035022425220873066, + 0.003520968686586917, + 0.0035584929168515386, + 0.0035695600838472714, + 0.003550867652770348, + 0.00353671702781532, + 0.003528367712685648, + 0.0035238632881040353, + 0.0035211087714826094, + 0.0035158540735308807, + 0.0035097360881084475, + 0.0035028620870730695, + 0.0034949554135325096, + 0.00348008557230819, + 0.0034736078821235596, + 0.0035061528154736923, + 0.0035562936205461963, + 0.0035331639883189273, + 0.003462268900221238, + 0.0034206537268556573, + 0.0033787954236026295, + 0.0033664570344555268, + 0.0033424867479976994, + 0.003366970716957193, + 0.0033954030847581644, + 0.0033073307643522597, + 0.0032722066317578237, + 0.0033116871174519035, + 0.003291230526953609, + 0.0032640698348923945, + 0.0032395747431352086, + 0.003212637155974112, + 0.0032194371109899554, + 0.0032070002017584947, + 0.003135141050285944, + 0.0031234999122591836, + 0.003183461993061261, + 0.003166943359663426, + 0.0031338031248406622, + 0.0031149416163691367, + 0.0030652199081788677, + 0.0030202677048407544, + 0.0030136802405382316, + 0.003040245002523481, + 0.0030350285476114913, + 0.002973948344079887, + 0.0029239023401261034, + 0.002947035362018768, + 0.0030151677021294588, + 0.003024695372465647, + 0.0029906863244779213, + 0.002961031433715584, + 0.0029396076303028107, + 0.002928964226997611, + 0.002927174663153877, + 0.0029268837743164863, + 0.0029212092020819845, + 0.0029230254197436596, + 0.0029377589185575702, + 0.002938553951217959, + 0.002924492367704123, + 0.0029307380957759575, + 0.002953131457454092, + 0.002963193489412932, + 0.002972034971662431, + 0.0029736348677446515, + 0.0029798810367060377, + 0.0030271976995447283, + 0.003067472566212418, + 0.003121444278640742, + 0.0031680267115916805, + 0.0031177120565266106, + 0.003117159635698769, + 0.0031994947395777413, + 0.003265724087755721, + 0.003263210142531412, + 0.003250383714726341, + 0.0032963273001828195, + 0.003348685018595423, + 0.003381345658696816, + 0.003405392235230741, + 0.003432517027830116, + 0.0034552161843658994, + 0.003462065852566041, + 0.003465589534086013, + 0.003483013055400348, + 0.003507654857296513, + 0.00353567968627366, + 0.0035600638393684207, + 0.003576793449100192, + 0.003582089527078195, + 0.0035853480174812863, + 0.0035873128587053387, + 0.0035978098896491503, + 0.003619249418035086, + 0.0036438664343971913, + 0.0036594020561774576, + 0.0036663140747160337, + 0.0036804517788998053, + 0.003705608508989627, + 0.003716308111609655, + 0.003704777729458606, + 0.003698819581891862, + 0.0037012049294393376, + 0.00370107255997264, + 0.003693504833671433, + 0.003692690544122175, + 0.003693525188222923, + 0.0037010375147994725, + 0.00371036717946078, + 0.0037041203659357686, + 0.0036824195239873576, + 0.0036660759511856276, + 0.003659609853371955, + 0.0036540732494971815, + 0.0036702253285203247, + 0.0037081147376403197, + 0.003723481148390284, + 0.0036904307792388247, + 0.00373827299173702, + 0.0038240007907955308, + 0.0038061739971829594, + 0.003693806287743187, + 0.003625538096664985, + 0.003586647654849848, + 0.003564045976162194, + 0.0035452193669407803, + 0.003515229693581124, + 0.0034920132544911733, + 0.0034410566244415107, + 0.003398269588204269, + 0.003390108674523863, + 0.003355459796458143, + 0.003305685061086387, + 0.003295825822597449, + 0.0033002567166008747, + 0.0032958073173796286, + 0.0032945510087741, + 0.003258843830068041, + 0.0032050523137906735, + 0.0032177267203370038, + 0.0032190463654044365, + 0.0032168989100864816, + 0.0031981697114590894, + 0.003159002753488041, + 0.003125346225253489, + 0.0031007254515313504, + 0.0030780797813321397, + 0.0030608902032136652, + 0.0030499180268398676, + 0.003039213601589848, + 0.0030251335365807526, + 0.0030094948086856854, + 0.0029991447367511527, + 0.002998878148028766, + 0.003007241694709693, + 0.0030020934216718168, + 0.0029836635686909343, + 0.002976254204412928, + 0.0029857737467231284, + 0.002995741221008969, + 0.003000005096570612, + 0.0030140985671497224, + 0.003033907433702473, + 0.0030118608350932136, + 0.003042012294633635, + 0.0031884709927003222, + 0.003109840738786722, + 0.002994905762282627, + 0.0030330478575899735, + 0.003102967574065624, + 0.003089686242920575, + 0.0030510589106330513, + 0.0030511731180943497, + 0.003048560876496002, + 0.0030406797443334596, + 0.0030584127906002484, + 0.0030635234215694996, + 0.003055656420644423, + 0.0030456280103675942, + 0.003039643804421546, + 0.0030689224512653115, + 0.003106092203757528, + 0.0031076392942226295, + 0.0031119412886640523, + 0.0031265730565199035, + 0.0031400980791590487, + 0.0031497540432271856, + 0.0031514970714564723, + 0.0031524101293998554, + 0.0031651608331365456, + 0.0031860916274661986, + 0.003202081133140791, + 0.003203795072903735, + 0.003197332648784982, + 0.003211692352082989, + 0.0032612168601596587, + 0.003303942398389726, + 0.0033072081740675332, + 0.0032904729093808436 + ] + }, + { + "mode": "lines", + "name": "OSTk EGM2008 70x70 minus STK EGM2008 70x70", + "type": "scatter", + "x": [ + 0, + 60, + 120, + 180, + 240, + 300, + 360, + 420, + 480, + 540, + 600, + 660, + 720, + 780, + 840, + 900, + 960, + 1020, + 1080, + 1140, + 1200, + 1260, + 1320, + 1380, + 1440, + 1500, + 1560, + 1620, + 1680, + 1740, + 1800, + 1860, + 1920, + 1980, + 2040, + 2100, + 2160, + 2220, + 2280, + 2340, + 2400, + 2460, + 2520, + 2580, + 2640, + 2700, + 2760, + 2820, + 2880, + 2940, + 3000, + 3060, + 3120, + 3180, + 3240, + 3300, + 3360, + 3420, + 3480, + 3540, + 3600, + 3660, + 3720, + 3780, + 3840, + 3900, + 3960, + 4020, + 4080, + 4140, + 4200, + 4260, + 4320, + 4380, + 4440, + 4500, + 4560, + 4620, + 4680, + 4740, + 4800, + 4860, + 4920, + 4980, + 5040, + 5100, + 5160, + 5220, + 5280, + 5340, + 5400, + 5460, + 5520, + 5580, + 5640, + 5700, + 5760, + 5820, + 5880, + 5940, + 6000, + 6060, + 6120, + 6180, + 6240, + 6300, + 6360, + 6420, + 6480, + 6540, + 6600, + 6660, + 6720, + 6780, + 6840, + 6900, + 6960, + 7020, + 7080, + 7140, + 7200, + 7260, + 7320, + 7380, + 7440, + 7500, + 7560, + 7620, + 7680, + 7740, + 7800, + 7860, + 7920, + 7980, + 8040, + 8100, + 8160, + 8220, + 8280, + 8340, + 8400, + 8460, + 8520, + 8580, + 8640, + 8700, + 8760, + 8820, + 8880, + 8940, + 9000, + 9060, + 9120, + 9180, + 9240, + 9300, + 9360, + 9420, + 9480, + 9540, + 9600, + 9660, + 9720, + 9780, + 9840, + 9900, + 9960, + 10020, + 10080, + 10140, + 10200, + 10260, + 10320, + 10380, + 10440, + 10500, + 10560, + 10620, + 10680, + 10740, + 10800, + 10860, + 10920, + 10980, + 11040, + 11100, + 11160, + 11220, + 11280, + 11340, + 11400, + 11460, + 11520, + 11580, + 11640, + 11700, + 11760, + 11820, + 11880, + 11940, + 12000, + 12060, + 12120, + 12180, + 12240, + 12300, + 12360, + 12420, + 12480, + 12540, + 12600, + 12660, + 12720, + 12780, + 12840, + 12900, + 12960, + 13020, + 13080, + 13140, + 13200, + 13260, + 13320, + 13380, + 13440, + 13500, + 13560, + 13620, + 13680, + 13740, + 13800, + 13860, + 13920, + 13980, + 14040, + 14100, + 14160, + 14220, + 14280, + 14340, + 14400, + 14460, + 14520, + 14580, + 14640, + 14700, + 14760, + 14820, + 14880, + 14940, + 15000, + 15060, + 15120, + 15180, + 15240, + 15300, + 15360, + 15420, + 15480, + 15540, + 15600, + 15660, + 15720, + 15780, + 15840, + 15900, + 15960, + 16020, + 16080, + 16140, + 16200, + 16260, + 16320, + 16380, + 16440, + 16500, + 16560, + 16620, + 16680, + 16740, + 16800, + 16860, + 16920, + 16980, + 17040, + 17100, + 17160, + 17220, + 17280, + 17340, + 17400, + 17460, + 17520, + 17580, + 17640, + 17700, + 17760, + 17820, + 17880, + 17940, + 18000, + 18060, + 18120, + 18180, + 18240, + 18300, + 18360, + 18420, + 18480, + 18540, + 18600, + 18660, + 18720, + 18780, + 18840, + 18900, + 18960, + 19020, + 19080, + 19140, + 19200, + 19260, + 19320, + 19380, + 19440, + 19500, + 19560, + 19620, + 19680, + 19740, + 19800, + 19860, + 19920, + 19980, + 20040, + 20100, + 20160, + 20220, + 20280, + 20340, + 20400, + 20460, + 20520, + 20580, + 20640, + 20700, + 20760, + 20820, + 20880, + 20940, + 21000, + 21060, + 21120, + 21180, + 21240, + 21300, + 21360, + 21420, + 21480, + 21540, + 21600, + 21660, + 21720, + 21780, + 21840, + 21900, + 21960, + 22020, + 22080, + 22140, + 22200, + 22260, + 22320, + 22380, + 22440, + 22500, + 22560, + 22620, + 22680, + 22740, + 22800, + 22860, + 22920, + 22980, + 23040, + 23100, + 23160, + 23220, + 23280, + 23340, + 23400, + 23460, + 23520, + 23580, + 23640, + 23700, + 23760, + 23820, + 23880, + 23940, + 24000, + 24060, + 24120, + 24180, + 24240, + 24300, + 24360, + 24420, + 24480, + 24540, + 24600, + 24660, + 24720, + 24780, + 24840, + 24900, + 24960, + 25020, + 25080, + 25140, + 25200, + 25260, + 25320, + 25380, + 25440, + 25500, + 25560, + 25620, + 25680, + 25740, + 25800, + 25860, + 25920, + 25980, + 26040, + 26100, + 26160, + 26220, + 26280, + 26340, + 26400, + 26460, + 26520, + 26580, + 26640, + 26700, + 26760, + 26820, + 26880, + 26940, + 27000, + 27060, + 27120, + 27180, + 27240, + 27300, + 27360, + 27420, + 27480, + 27540, + 27600, + 27660, + 27720, + 27780, + 27840, + 27900, + 27960, + 28020, + 28080, + 28140, + 28200, + 28260, + 28320, + 28380, + 28440, + 28500, + 28560, + 28620, + 28680, + 28740, + 28800, + 28860, + 28920, + 28980, + 29040, + 29100, + 29160, + 29220, + 29280, + 29340, + 29400, + 29460, + 29520, + 29580, + 29640, + 29700, + 29760, + 29820, + 29880, + 29940, + 30000, + 30060, + 30120, + 30180, + 30240, + 30300, + 30360, + 30420, + 30480, + 30540, + 30600, + 30660, + 30720, + 30780, + 30840, + 30900, + 30960, + 31020, + 31080, + 31140, + 31200, + 31260, + 31320, + 31380, + 31440, + 31500, + 31560, + 31620, + 31680, + 31740, + 31800, + 31860, + 31920, + 31980, + 32040, + 32100, + 32160, + 32220, + 32280, + 32340, + 32400, + 32460, + 32520, + 32580, + 32640, + 32700, + 32760, + 32820, + 32880, + 32940, + 33000, + 33060, + 33120, + 33180, + 33240, + 33300, + 33360, + 33420, + 33480, + 33540, + 33600, + 33660, + 33720, + 33780, + 33840, + 33900, + 33960, + 34020, + 34080, + 34140, + 34200, + 34260, + 34320, + 34380, + 34440, + 34500, + 34560, + 34620, + 34680, + 34740, + 34800, + 34860, + 34920, + 34980, + 35040, + 35100, + 35160, + 35220, + 35280, + 35340, + 35400, + 35460, + 35520, + 35580, + 35640, + 35700, + 35760, + 35820, + 35880, + 35940, + 36000, + 36060, + 36120, + 36180, + 36240, + 36300, + 36360, + 36420, + 36480, + 36540, + 36600, + 36660, + 36720, + 36780, + 36840, + 36900, + 36960, + 37020, + 37080, + 37140, + 37200, + 37260, + 37320, + 37380, + 37440, + 37500, + 37560, + 37620, + 37680, + 37740, + 37800, + 37860, + 37920, + 37980, + 38040, + 38100, + 38160, + 38220, + 38280, + 38340, + 38400, + 38460, + 38520, + 38580, + 38640, + 38700, + 38760, + 38820, + 38880, + 38940, + 39000, + 39060, + 39120, + 39180, + 39240, + 39300, + 39360, + 39420, + 39480, + 39540, + 39600, + 39660, + 39720, + 39780, + 39840, + 39900, + 39960, + 40020, + 40080, + 40140, + 40200, + 40260, + 40320, + 40380, + 40440, + 40500, + 40560, + 40620, + 40680, + 40740, + 40800, + 40860, + 40920, + 40980, + 41040, + 41100, + 41160, + 41220, + 41280, + 41340, + 41400, + 41460, + 41520, + 41580, + 41640, + 41700, + 41760, + 41820, + 41880, + 41940, + 42000, + 42060, + 42120, + 42180, + 42240, + 42300, + 42360, + 42420, + 42480, + 42540, + 42600, + 42660, + 42720, + 42780, + 42840, + 42900, + 42960, + 43020, + 43080, + 43140, + 43200, + 43260, + 43320, + 43380, + 43440, + 43500, + 43560, + 43620, + 43680, + 43740, + 43800, + 43860, + 43920, + 43980, + 44040, + 44100, + 44160, + 44220, + 44280, + 44340, + 44400, + 44460, + 44520, + 44580, + 44640, + 44700, + 44760, + 44820, + 44880, + 44940, + 45000, + 45060, + 45120, + 45180, + 45240, + 45300, + 45360, + 45420, + 45480, + 45540, + 45600, + 45660, + 45720, + 45780, + 45840, + 45900, + 45960, + 46020, + 46080, + 46140, + 46200, + 46260, + 46320, + 46380, + 46440, + 46500, + 46560, + 46620, + 46680, + 46740, + 46800, + 46860, + 46920, + 46980, + 47040, + 47100, + 47160, + 47220, + 47280, + 47340, + 47400, + 47460, + 47520, + 47580, + 47640, + 47700, + 47760, + 47820, + 47880, + 47940, + 48000, + 48060, + 48120, + 48180, + 48240, + 48300, + 48360, + 48420, + 48480, + 48540, + 48600, + 48660, + 48720, + 48780, + 48840, + 48900, + 48960, + 49020, + 49080, + 49140, + 49200, + 49260, + 49320, + 49380, + 49440, + 49500, + 49560, + 49620, + 49680, + 49740, + 49800, + 49860, + 49920, + 49980, + 50040, + 50100, + 50160, + 50220, + 50280, + 50340, + 50400, + 50460, + 50520, + 50580, + 50640, + 50700, + 50760, + 50820, + 50880, + 50940, + 51000, + 51060, + 51120, + 51180, + 51240, + 51300, + 51360, + 51420, + 51480, + 51540, + 51600, + 51660, + 51720, + 51780, + 51840, + 51900, + 51960, + 52020, + 52080, + 52140, + 52200, + 52260, + 52320, + 52380, + 52440, + 52500, + 52560, + 52620, + 52680, + 52740, + 52800, + 52860, + 52920, + 52980, + 53040, + 53100, + 53160, + 53220, + 53280, + 53340, + 53400, + 53460, + 53520, + 53580, + 53640, + 53700, + 53760, + 53820, + 53880, + 53940, + 54000, + 54060, + 54120, + 54180, + 54240, + 54300, + 54360, + 54420, + 54480, + 54540, + 54600, + 54660, + 54720, + 54780, + 54840, + 54900, + 54960, + 55020, + 55080, + 55140, + 55200, + 55260, + 55320, + 55380, + 55440, + 55500, + 55560, + 55620, + 55680, + 55740, + 55800, + 55860, + 55920, + 55980, + 56040, + 56100, + 56160, + 56220, + 56280, + 56340, + 56400, + 56460, + 56520, + 56580, + 56640, + 56700, + 56760, + 56820, + 56880, + 56940, + 57000, + 57060, + 57120, + 57180, + 57240, + 57300, + 57360, + 57420, + 57480, + 57540, + 57600, + 57660, + 57720, + 57780, + 57840, + 57900, + 57960, + 58020, + 58080, + 58140, + 58200, + 58260, + 58320, + 58380, + 58440, + 58500, + 58560, + 58620, + 58680, + 58740, + 58800, + 58860, + 58920, + 58980, + 59040, + 59100, + 59160, + 59220, + 59280, + 59340, + 59400, + 59460, + 59520, + 59580, + 59640, + 59700, + 59760, + 59820, + 59880, + 59940, + 60000, + 60060, + 60120, + 60180, + 60240, + 60300, + 60360, + 60420, + 60480, + 60540, + 60600, + 60660, + 60720, + 60780, + 60840, + 60900, + 60960, + 61020, + 61080, + 61140, + 61200, + 61260, + 61320, + 61380, + 61440, + 61500, + 61560, + 61620, + 61680, + 61740, + 61800, + 61860, + 61920, + 61980, + 62040, + 62100, + 62160, + 62220, + 62280, + 62340, + 62400, + 62460, + 62520, + 62580, + 62640, + 62700, + 62760, + 62820, + 62880, + 62940, + 63000, + 63060, + 63120, + 63180, + 63240, + 63300, + 63360, + 63420, + 63480, + 63540, + 63600, + 63660, + 63720, + 63780, + 63840, + 63900, + 63960, + 64020, + 64080, + 64140, + 64200, + 64260, + 64320, + 64380, + 64440, + 64500, + 64560, + 64620, + 64680, + 64740, + 64800, + 64860, + 64920, + 64980, + 65040, + 65100, + 65160, + 65220, + 65280, + 65340, + 65400, + 65460, + 65520, + 65580, + 65640, + 65700, + 65760, + 65820, + 65880, + 65940, + 66000, + 66060, + 66120, + 66180, + 66240, + 66300, + 66360, + 66420, + 66480, + 66540, + 66600, + 66660, + 66720, + 66780, + 66840, + 66900, + 66960, + 67020, + 67080, + 67140, + 67200, + 67260, + 67320, + 67380, + 67440, + 67500, + 67560, + 67620, + 67680, + 67740, + 67800, + 67860, + 67920, + 67980, + 68040, + 68100, + 68160, + 68220, + 68280, + 68340, + 68400, + 68460, + 68520, + 68580, + 68640, + 68700, + 68760, + 68820, + 68880, + 68940, + 69000, + 69060, + 69120, + 69180, + 69240, + 69300, + 69360, + 69420, + 69480, + 69540, + 69600, + 69660, + 69720, + 69780, + 69840, + 69900, + 69960, + 70020, + 70080, + 70140, + 70200, + 70260, + 70320, + 70380, + 70440, + 70500, + 70560, + 70620, + 70680, + 70740, + 70800, + 70860, + 70920, + 70980, + 71040, + 71100, + 71160, + 71220, + 71280, + 71340, + 71400, + 71460, + 71520, + 71580, + 71640, + 71700, + 71760, + 71820, + 71880, + 71940, + 72000, + 72060, + 72120, + 72180, + 72240, + 72300, + 72360, + 72420, + 72480, + 72540, + 72600, + 72660, + 72720, + 72780, + 72840, + 72900, + 72960, + 73020, + 73080, + 73140, + 73200, + 73260, + 73320, + 73380, + 73440, + 73500, + 73560, + 73620, + 73680, + 73740, + 73800, + 73860, + 73920, + 73980, + 74040, + 74100, + 74160, + 74220, + 74280, + 74340, + 74400, + 74460, + 74520, + 74580, + 74640, + 74700, + 74760, + 74820, + 74880, + 74940, + 75000, + 75060, + 75120, + 75180, + 75240, + 75300, + 75360, + 75420, + 75480, + 75540, + 75600, + 75660, + 75720, + 75780, + 75840, + 75900, + 75960, + 76020, + 76080, + 76140, + 76200, + 76260, + 76320, + 76380, + 76440, + 76500, + 76560, + 76620, + 76680, + 76740, + 76800, + 76860, + 76920, + 76980, + 77040, + 77100, + 77160, + 77220, + 77280, + 77340, + 77400, + 77460, + 77520, + 77580, + 77640, + 77700, + 77760, + 77820, + 77880, + 77940, + 78000, + 78060, + 78120, + 78180, + 78240, + 78300, + 78360, + 78420, + 78480, + 78540, + 78600, + 78660, + 78720, + 78780, + 78840, + 78900, + 78960, + 79020, + 79080, + 79140, + 79200, + 79260, + 79320, + 79380, + 79440, + 79500, + 79560, + 79620, + 79680, + 79740, + 79800, + 79860, + 79920, + 79980, + 80040, + 80100, + 80160, + 80220, + 80280, + 80340, + 80400, + 80460, + 80520, + 80580, + 80640, + 80700, + 80760, + 80820, + 80880, + 80940, + 81000, + 81060, + 81120, + 81180, + 81240, + 81300, + 81360, + 81420, + 81480, + 81540, + 81600, + 81660, + 81720, + 81780, + 81840, + 81900, + 81960, + 82020, + 82080, + 82140, + 82200, + 82260, + 82320, + 82380, + 82440, + 82500, + 82560, + 82620, + 82680, + 82740, + 82800, + 82860, + 82920, + 82980, + 83040, + 83100, + 83160, + 83220, + 83280, + 83340, + 83400, + 83460, + 83520, + 83580, + 83640, + 83700, + 83760, + 83820, + 83880, + 83940, + 84000, + 84060, + 84120, + 84180, + 84240, + 84300, + 84360, + 84420, + 84480, + 84540, + 84600, + 84660, + 84720, + 84780, + 84840, + 84900, + 84960, + 85020, + 85080, + 85140, + 85200, + 85260, + 85320, + 85380, + 85440, + 85500, + 85560, + 85620, + 85680, + 85740, + 85800, + 85860, + 85920, + 85980, + 86040, + 86100, + 86160, + 86220, + 86280, + 86340, + 86400 + ], + "y": [ + 0, + 4.607996206132318e-05, + 9.228699685169574e-05, + 0.00013109556525489998, + 0.00015623816877902334, + 0.0001615806948247258, + 0.00015547648249197588, + 0.00015675789892355464, + 0.0001674665341304603, + 0.00018001614556040178, + 0.00019080245481540794, + 0.00020774063430092782, + 0.00022605947689455577, + 0.00023387254667636906, + 0.00023027153633720088, + 0.000229645792871229, + 0.0002369062291638911, + 0.00025889559919593504, + 0.00028941872550466557, + 0.0003151516789027434, + 0.00032266419972431495, + 0.00031049438524963945, + 0.00030044888899323946, + 0.00029647426866142283, + 0.00030233742441344576, + 0.0003219769236636452, + 0.00036180935445905433, + 0.0003999450162138907, + 0.00041510496105755696, + 0.00043400868063583203, + 0.00046152678553066, + 0.0004931913871033772, + 0.0005199172527227554, + 0.0005400859966128649, + 0.0005230297254518582, + 0.0005047718002576109, + 0.0005041600822247112, + 0.000504177943108959, + 0.0005336297755488401, + 0.0005623158943049887, + 0.0005657737407198209, + 0.0005639728455962489, + 0.0005411195059046008, + 0.0005358842652433215, + 0.0004572144762128685, + 0.0004750838187533342, + 0.0005359135187777468, + 0.0005346864193555164, + 0.0005068658365614061, + 0.0005276019550994524, + 0.0005183368738799978, + 0.0004950681412843518, + 0.0005316479366885078, + 0.0005358573242274349, + 0.0005281441246179515, + 0.0005488446662264703, + 0.0005772167201625624, + 0.000578083850318425, + 0.000564340172427972, + 0.0005581718267205642, + 0.0005627026209784416, + 0.0005644460507239495, + 0.0005422095490468658, + 0.0005032963508523769, + 0.0004901238806342833, + 0.00046940543752509525, + 0.0004544199657313866, + 0.000506542866310198, + 0.0005239347190374602, + 0.0004977592138878689, + 0.0004894492288920847, + 0.0004512610701378519, + 0.00043591136388159226, + 0.00046421113802470014, + 0.0004893789354865827, + 0.0004947954781628939, + 0.0005005697626910704, + 0.0005054769500950893, + 0.0004870660115305113, + 0.0004501671268022907, + 0.00041018849225187714, + 0.00039493743510368116, + 0.0003664453002478257, + 0.00034391142575086584, + 0.0003260724386999992, + 0.00029079524364342005, + 0.0003242626544089163, + 0.0003292465734661857, + 0.0002555895660323399, + 0.00018141073042675658, + 0.00019350678978322358, + 0.00021459322096135247, + 0.00023321362689303658, + 0.0002451029333662563, + 0.00022183307041730686, + 0.00018125276796920084, + 0.00016044173529203924, + 0.00018476091820387932, + 0.0001959016992394064, + 0.00020183065829230452, + 0.00016587397001077944, + 0.00010545619799157912, + 0.00010826881737000985, + 0.0001331861498356664, + 0.0001487330239152922, + 0.00015555108936275448, + 0.00016594386633097405, + 0.00017924992407757716, + 0.00018128536158598337, + 0.00017641999536694577, + 0.00018700167013859336, + 0.00020316386270965154, + 0.0002142460916315267, + 0.00022314417639023864, + 0.00023797368504966808, + 0.0002607610493226915, + 0.00028558118162359185, + 0.0003018270478161039, + 0.0003319723428069425, + 0.00033377277287661706, + 0.0002866402278038387, + 0.0004094338249510302, + 0.00044370143938809634, + 0.00039792468860428033, + 0.0004161354260754953, + 0.00041216005166959716, + 0.00041727389115257915, + 0.0004228562619036723, + 0.00043704548317719677, + 0.00047107476939721834, + 0.0004643547383415804, + 0.00048254684397330285, + 0.0005507230838776482, + 0.0005873893947577384, + 0.0006313206654400084, + 0.0006373116512269598, + 0.0006317659175662152, + 0.0006365499384656424, + 0.0006489707478237653, + 0.0006665930756117904, + 0.0006728784551452096, + 0.0006827164762622604, + 0.0007685556452848972, + 0.0007905976051130393, + 0.0007778992589377323, + 0.0007847188679828783, + 0.000843589979114346, + 0.0008451573560180096, + 0.0008557618446618834, + 0.0008921865232478678, + 0.0008933610904712329, + 0.0008747730279300295, + 0.0008562629573873519, + 0.0008642771868275522, + 0.0008893810262641961, + 0.000897882637963262, + 0.0008881150347674075, + 0.0008835024237400397, + 0.0008882181983879375, + 0.0009036409193467059, + 0.000922058474329566, + 0.0009222641855289485, + 0.0008958544123508003, + 0.0008602493362636637, + 0.000825155122059302, + 0.0008248509080698018, + 0.0008960329746178039, + 0.0009466939171281207, + 0.0008921294298762585, + 0.0008552064490988039, + 0.0008575850028261033, + 0.0008697061934836567, + 0.0009029546108329578, + 0.000879235088010047, + 0.0008515402567498228, + 0.0008680334413419574, + 0.0008779768126417554, + 0.00086312508576877, + 0.0008621426077311502, + 0.0009103965615957981, + 0.0009216906069423398, + 0.0009151122281599339, + 0.0009500783570682386, + 0.0009611454627493749, + 0.000934620336572393, + 0.0009586007146305457, + 0.0009924876411058184, + 0.0009964068350322396, + 0.0009765843490706382, + 0.0009243125410557018, + 0.0008592706036938416, + 0.0007477929002224714, + 0.0006697071875253195, + 0.0006998105837339723, + 0.0007623171188967963, + 0.0007467207257982962, + 0.0007029250416403075, + 0.0006773556091041932, + 0.0006852577364232256, + 0.0007187754104667628, + 0.0007610386199967618, + 0.0007920752555831167, + 0.0007864437594944562, + 0.0007928118911760855, + 0.0008009997428487163, + 0.0007862626557565198, + 0.0007980882887160052, + 0.0008104287034816558, + 0.0007941491266003784, + 0.0007721667363743336, + 0.0007795039958612145, + 0.0008172138608080522, + 0.000832820807971064, + 0.0008662840200530323, + 0.0009094109676809916, + 0.0009247690882586844, + 0.0009394504145107964, + 0.0009211055219503281, + 0.000892397932364935, + 0.0009242705376204066, + 0.0009617772732716515, + 0.0009904114700995483, + 0.0009977665473111935, + 0.0010005637743883576, + 0.0010071629119409854, + 0.0010277201893464092, + 0.0010607087188494453, + 0.0010911019466421756, + 0.0011190417209612261, + 0.0011351636586377184, + 0.001140235195018781, + 0.0011347281434635342, + 0.0011248807962695214, + 0.0011303262371343667, + 0.0011421521763715803, + 0.0011495595738836887, + 0.0011929850022913662, + 0.0012990411826690842, + 0.0014100903979508634, + 0.0014711489826525822, + 0.0014621227491066308, + 0.0014628133859293532, + 0.0014552537942892033, + 0.0014283074397651884, + 0.001418348712535757, + 0.0013397887445919052, + 0.0012692732995956944, + 0.001266339222234704, + 0.0012846487939144951, + 0.001283527995867085, + 0.0012905579511324648, + 0.001301117955829593, + 0.0013022248383923996, + 0.0012917654987214676, + 0.001275147439601881, + 0.001275853791636491, + 0.0012917554945363597, + 0.0013094318115375821, + 0.0013172930648231184, + 0.0013151228912330368, + 0.0013081797392425667, + 0.0013007192239091942, + 0.0012978482614836918, + 0.001317003150597264, + 0.0013422070339287853, + 0.0013460592102813205, + 0.0013271644663562278, + 0.0013003332307027164, + 0.0012663633040455285, + 0.0012359876635257751, + 0.0012492908441848402, + 0.0013062006803631536, + 0.0012847861172744848, + 0.001234783575764254, + 0.0012589426587840138, + 0.0012507716787608157, + 0.0012065243366775004, + 0.0011760513219402603, + 0.0011331950564013292, + 0.0011008393883748726, + 0.0010994909090793518, + 0.001096125268509955, + 0.0010708661406254461, + 0.001056617949471703, + 0.001054478959467061, + 0.001018348558089895, + 0.0010683841053206317, + 0.0011035847280778841, + 0.0010433145216105426, + 0.0009963246207652912, + 0.0010558777470763084, + 0.001076467239465077, + 0.0010358495914464172, + 0.0010165198411631496, + 0.001050172042463505, + 0.0010266249003871573, + 0.000915131422002888, + 0.000869696143392418, + 0.0008927400395389518, + 0.0009068216039585655, + 0.0009050805736141185, + 0.0009153070053774229, + 0.0009331700268637121, + 0.0009552253481113378, + 0.000996378237534118, + 0.0010425034256080713, + 0.0010558893062715064, + 0.0010475677125891534, + 0.001067087173395387, + 0.001105491011682944, + 0.0011110646547953637, + 0.0010948047308371749, + 0.0010915339705292, + 0.0010927644616580074, + 0.0011165938242430782, + 0.0011574928309982468, + 0.0011937803857568125, + 0.0012312334369359806, + 0.0012681577647378935, + 0.001297349214586415, + 0.0013141106253206957, + 0.0013235503458194791, + 0.0013384227955669434, + 0.001371433955872629, + 0.0014097200487510617, + 0.00144751242194945, + 0.001483118420380581, + 0.0015175992875557636, + 0.0015488800344699372, + 0.0015751752973579508, + 0.0016084027617040456, + 0.0016476443244724953, + 0.001665801855076973, + 0.0016544776286839705, + 0.0016296944723264875, + 0.001597243795699723, + 0.001574606430783788, + 0.0015312500273300762, + 0.001524216708024069, + 0.0015012181814190002, + 0.0015007651647028562, + 0.0016332467465595278, + 0.0018159242370723715, + 0.001966851327498199, + 0.002094710640006521, + 0.002140128535014072, + 0.0021317150183115135, + 0.0021160850149996887, + 0.002101583951689724, + 0.0020987272192672215, + 0.0021144054302556893, + 0.0021042774689635545, + 0.00208177564665945, + 0.002081359051075228, + 0.0020954472651825364, + 0.0021037502738916448, + 0.002095033871435228, + 0.0020688542480411763, + 0.0020430441547092427, + 0.0020344549774841017, + 0.002052275947815344, + 0.002083383063174002, + 0.0021005962363230455, + 0.0020958685387676306, + 0.002082560974761319, + 0.002072181150104548, + 0.0020715928878916197, + 0.002080297524397433, + 0.002105034098603335, + 0.002105515310650405, + 0.0020747555841611823, + 0.002065904035183659, + 0.0020904909285990514, + 0.0021459778173062967, + 0.0020836922712973963, + 0.0020368655960865977, + 0.0020665890977167043, + 0.002056671848415667, + 0.002022932785495128, + 0.002009749024264147, + 0.0020164484620422917, + 0.0020103210306546, + 0.0019833974763606653, + 0.001970557990150467, + 0.0019521433089774542, + 0.0019083164206143708, + 0.0019465009848216087, + 0.002012038792592535, + 0.0019886971998564346, + 0.001871611798614373, + 0.0017669216869691383, + 0.0017545891223735384, + 0.0017684141361950776, + 0.001758885246796725, + 0.0017459419868432714, + 0.0017167254719429694, + 0.0016850064230850288, + 0.001672647362785511, + 0.0017146364715280422, + 0.0017022293958492665, + 0.001636790514965326, + 0.0016217427612465537, + 0.0016295085898039429, + 0.0016211342660482492, + 0.0016041704196191303, + 0.0015924596718766618, + 0.00157941567237855, + 0.0015627895378784874, + 0.0015526852427576463, + 0.0015541198113059483, + 0.001541218228100843, + 0.001525379246820713, + 0.0015268794402842438, + 0.0015285013249444806, + 0.0015187549470600111, + 0.0015070085767847448, + 0.0014954920340667223, + 0.0014812300662124752, + 0.0014759314009375989, + 0.0014810584154836793, + 0.0014848236322276968, + 0.0014740247723735533, + 0.0014528767360016865, + 0.0014427432386443623, + 0.0014446703998074574, + 0.0014301086364149026, + 0.0014056369524857383, + 0.0014191652551897047, + 0.0014578000660754686, + 0.0014687092776885244, + 0.001476472223362025, + 0.0015207440832474724, + 0.0015706575367308248, + 0.0015613215626204418, + 0.0015594986670959766, + 0.0015738606235713912, + 0.0015564283917266122, + 0.0016007748038115528, + 0.0017258804637021764, + 0.001756308500356998, + 0.0014903399330941538, + 0.0013354732549386657, + 0.0013104364780532013, + 0.0012958285086467566, + 0.0013229408613355722, + 0.0013394156800160997, + 0.0013406589046340807, + 0.0013469084228237627, + 0.0013833283607736632, + 0.0014330464502366302, + 0.0014368284720850865, + 0.0014324525536792776, + 0.0014487640823475233, + 0.0014734957487631945, + 0.0015019707688555886, + 0.0015184892003868363, + 0.0015041882830518045, + 0.0015275356622937537, + 0.0015463140391603488, + 0.0015384909334274575, + 0.001503501890629905, + 0.0014403604816726637, + 0.0014211015907796512, + 0.001433302988728729, + 0.0014413410848994619, + 0.0014537290910174576, + 0.001434236887518363, + 0.0014426825477940812, + 0.0014941506566103168, + 0.0014877052211754401, + 0.0014360992860412525, + 0.0014020752332556117, + 0.0014109400874614485, + 0.0014352928592261788, + 0.0013883621703120407, + 0.0013376321245948532, + 0.0013539082573395956, + 0.0013781757806339988, + 0.001373106723731882, + 0.0013466903745017866, + 0.0013394350006182144, + 0.0013492922864642772, + 0.0013839988145365708, + 0.0014533324069566321, + 0.0014762067107757847, + 0.0014106308490771647, + 0.0012902833854395613, + 0.0012734310388997268, + 0.0012867178249528959, + 0.001262661433318375, + 0.0012397106607807088, + 0.0012177640056462206, + 0.0012415151561238574, + 0.0012919668464952412, + 0.001275024697800474, + 0.001248925224253993, + 0.0012354618999599516, + 0.0012323570743321642, + 0.0012350480123037098, + 0.0012401088664406765, + 0.0012474301865421913, + 0.0012546523470976505, + 0.0012524527904400197, + 0.0012336118380609177, + 0.0012121896773554294, + 0.0012203899829449879, + 0.0012625104388790317, + 0.0012953521148996408, + 0.0012948959367501932, + 0.0012957901675483359, + 0.0013107883130507381, + 0.0013305678672769737, + 0.0013547490481207922, + 0.0013668364827311367, + 0.0013625747987168438, + 0.0013581823602525425, + 0.0013633955605944735, + 0.0013748156707405824, + 0.0013932464367572516, + 0.0014125710352891193, + 0.0014311008424444716, + 0.001441694650920808, + 0.0014397427060795411, + 0.0014422378579230003, + 0.00144966550448713, + 0.0014491871004837487, + 0.001446338662436825, + 0.0014433658043048658, + 0.0014266126158700271, + 0.0014384789048764825, + 0.0014512958489282938, + 0.0015060780421340897, + 0.0015060108657110396, + 0.0015017039625680093, + 0.0015340275602641847, + 0.0015371506518320696, + 0.0014486343745361246, + 0.0015230769309187266, + 0.0017026362022765655, + 0.0017766494585420179, + 0.0018180216539728713, + 0.0018452401420634762, + 0.0018384362759194363, + 0.0018264585373728842, + 0.0018184321443460657, + 0.0018020623669426257, + 0.0017937735386676598, + 0.001782056334482187, + 0.0017739356972374116, + 0.0017707518534757012, + 0.0017416952134543654, + 0.0017403923305863613, + 0.0017556760840183709, + 0.0017832059007089848, + 0.0018092481275860514, + 0.0017867860749075164, + 0.0017023188332774702, + 0.0017129567711601894, + 0.0017863953142983765, + 0.0018242846880922748, + 0.0017827014817866716, + 0.001734106665815198, + 0.0017735566825560114, + 0.0018178577589631542, + 0.0018111019536756162, + 0.0017581117247184887, + 0.001751744370521963, + 0.0017573268338408156, + 0.0017447141614849637, + 0.0017276770530240367, + 0.0017192538321547308, + 0.001692707816189251, + 0.0016885926146354034, + 0.0016945268659368004, + 0.0016701681070591071, + 0.001636182460418888, + 0.0016378721673070637, + 0.0016713047131878254, + 0.0017375366790238881, + 0.0017916077801277794, + 0.001789296823432762, + 0.0017564481537894003, + 0.001659376339458263, + 0.001640116017602133, + 0.0017226564715194282, + 0.0017404855535971561, + 0.0017175422967777014, + 0.0017288166081510347, + 0.0017505608700920984, + 0.0017465504318598909, + 0.0016989310924234184, + 0.0016842881333091384, + 0.001704776309015153, + 0.00171015866088106, + 0.0017078634770689247, + 0.0017082184087891014, + 0.001706121324579994, + 0.001703062078247527, + 0.0017061384029709353, + 0.0017196745261196598, + 0.0017333941608867944, + 0.0017257461106492567, + 0.0017015562540984566, + 0.0016934638413771657, + 0.0017116101110278654, + 0.0017293480742335034, + 0.0017364899338090422, + 0.001748636437242179, + 0.0017676009478824423, + 0.0017895828662279167, + 0.0018028807127705945, + 0.0017884649548214854, + 0.001773176944432964, + 0.0017671109285107294, + 0.0017763777444676503, + 0.0017964762212839456, + 0.001813956813353226, + 0.0018152926434633191, + 0.0018539076119771574, + 0.0019345447227262058, + 0.001952620720241301, + 0.0019376434085116828, + 0.0019327741433871183, + 0.0019504708580336003, + 0.001982020170609288, + 0.002037373702284257, + 0.0020507983642981055, + 0.0020038407919036, + 0.001999056843828473, + 0.0019881937773077573, + 0.002020733776164206, + 0.002014235527175212, + 0.0019258585872719166, + 0.0019280816260000273, + 0.001938079785770536, + 0.001833039959719157, + 0.0018256651962675267, + 0.001859125220277306, + 0.0018475867814953474, + 0.0018481348863913474, + 0.0018641002855511147, + 0.0018778489870675678, + 0.001877937846369903, + 0.0018613233482992308, + 0.0018451680711646294, + 0.001853810258673979, + 0.0018660211732008179, + 0.0018697819632645097, + 0.0018743721582130035, + 0.0018732463793403296, + 0.0018650768779501909, + 0.0018594293881059952, + 0.0018561076981139645, + 0.0018503237676219138, + 0.0018425835093499952, + 0.0018332170871723495, + 0.0018109321342581722, + 0.0017768269008587912, + 0.0017651621680009023, + 0.0017742008041082805, + 0.0017955876868952021, + 0.0017985065172862183, + 0.0017863193737497217, + 0.0017645600242787757, + 0.0017369409296030475, + 0.0017183339054851567, + 0.0017101512328649303, + 0.0017021558514334126, + 0.0016939100408656816, + 0.00169167993279823, + 0.0016948757962254486, + 0.001693980829302604, + 0.001692779941905024, + 0.001688093164440395, + 0.0016252845386091443, + 0.001514325333859132, + 0.0014498118067036282, + 0.001421349994732635, + 0.001344723691882978, + 0.0012382565435921785, + 0.0012858344968695427, + 0.0013575308012885637, + 0.001367044963736276, + 0.0013696506469090051, + 0.0014006867861603768, + 0.0013889162371287075, + 0.0013369655302398465, + 0.0013417027528915542, + 0.0013565008046849613, + 0.0013397205052659746, + 0.0013061826504046092, + 0.0013038300861956285, + 0.0013191020893269778, + 0.0013334234104865389, + 0.001344344990170925, + 0.0013346622428038887, + 0.0013178938755524546, + 0.0013120122565396493, + 0.0013086765548828898, + 0.001295799162928057, + 0.0012926176137512853, + 0.0013282414989383138, + 0.0013845344104408792, + 0.0014116677278578449, + 0.0014125616166628264, + 0.0014152179917358294, + 0.0014373957021027515, + 0.0014533935108347168, + 0.0014758895670900793, + 0.001482190785983666, + 0.0014884852445201193, + 0.0015153009946800684, + 0.0015349843169358425, + 0.0015291949451902867, + 0.0015416669562562792, + 0.0015643640686370413, + 0.0015792452917402786, + 0.0015822461939620646, + 0.0016071079552448003, + 0.0016527087857036477, + 0.0016522847957999422, + 0.0016263074218414197, + 0.0016243915924085712, + 0.0016328138739521506, + 0.001613472171866856, + 0.0015564927795090658, + 0.0016688687991787458, + 0.0017707350928636953, + 0.0017369030161915606, + 0.0016689498785587066, + 0.00171228047811368, + 0.0017229807492062502, + 0.00172139556600504, + 0.0017344790394900305, + 0.0017636825907415105, + 0.001767242947433785, + 0.0017705975858334135, + 0.0017756147559589537, + 0.0017830175891856094, + 0.0017928268772691598, + 0.0017973084620220524, + 0.0017882043211523144, + 0.0017854717188186637, + 0.0018000282292651554, + 0.0018175871204900774, + 0.0018302213056178899, + 0.001837528561687768, + 0.0018466764685047485, + 0.0018613813550550007, + 0.0018760211153379153, + 0.0018775571915285935, + 0.0018632016310185884, + 0.0018439354614542918, + 0.001818318035109361, + 0.0017919911715925363, + 0.001789344070810138, + 0.00180347231788897, + 0.001814986350977331, + 0.0018134257584823635, + 0.0018020792993704742, + 0.0017817757997020867, + 0.0017618831755131779, + 0.0017508368783848013, + 0.0017326251118735783, + 0.0017099624551258185, + 0.001710064481029384, + 0.0017052242151644915, + 0.0016668400011012352, + 0.001631556724323247, + 0.001630542389207145, + 0.0016512020926023072, + 0.0016823390432779116, + 0.0017103192190039574, + 0.0017573513346973077, + 0.0017674919154535684, + 0.001672304161328473, + 0.0016403821473387073, + 0.001721777585558662, + 0.0017576093357357687, + 0.0017180555759527733, + 0.0016515460805979934, + 0.0016120381997860131, + 0.0015874423683329062, + 0.0016016199472537313, + 0.0016073983479068217, + 0.0015955370778681023, + 0.001579752940049332, + 0.0015735167947165149, + 0.0015844589747678434, + 0.00158440958650368, + 0.001607000253172416, + 0.001653590932174857, + 0.0016706974354649487, + 0.001628963483092028, + 0.0015961045391004363, + 0.0016185371688944895, + 0.001647200581750163, + 0.0016705690182540265, + 0.0017051026353506098, + 0.0017656486114631929, + 0.0017987942399099008, + 0.0017836741505807795, + 0.0017562722309598057, + 0.0017491175639498342, + 0.0017768151669549973, + 0.0018148270900005192, + 0.0018189665652987813, + 0.0018131168313958858, + 0.0018124077116757889, + 0.0018198475805621445, + 0.0018381880769922602, + 0.001862192816851736, + 0.0018752979173528757, + 0.0018790319726624397, + 0.0018782560038355916, + 0.0019056274277370136, + 0.001943740585923559, + 0.001947697581147841, + 0.0019325406101322717, + 0.0019406338610455343, + 0.0019637651846985326, + 0.0019083501301842074, + 0.002007094255876716, + 0.0021754769528184443, + 0.0022359649369825185, + 0.0021544275898065174, + 0.002128286472081261, + 0.002191671535633191, + 0.002253386649418629, + 0.002256901207425596, + 0.0022616173805816413, + 0.0022011773272318136, + 0.0021989291770272102, + 0.002213837652956631, + 0.002220141766664976, + 0.002217873226364196, + 0.00220531551477825, + 0.0021942294268059805, + 0.0021897319078281493, + 0.0022024766639932324, + 0.00220926718277157, + 0.0022186199549792695, + 0.002247091854137881, + 0.0022640067952995773, + 0.0022305742776312903, + 0.0022322398123992737, + 0.002272219303334956, + 0.002204581080064807, + 0.002291924783862304, + 0.0023282344990708513, + 0.0022100380123659677, + 0.00215022009957402, + 0.002141596894932236, + 0.002167003456998207, + 0.0021866099179843864, + 0.0021794734670133272, + 0.0021660371710124707, + 0.002163708191298736, + 0.002168606964454112, + 0.002148843245377301, + 0.0020964411943167048, + 0.002091073873354884, + 0.00207697787829322, + 0.002057543573330774, + 0.002043681162275409, + 0.0019952003760359584, + 0.001992865536908367, + 0.002016879236618394, + 0.0019367265419612458, + 0.0018211306813980493, + 0.0018064277427607524, + 0.0018173341379995349, + 0.001812710474802712, + 0.0018769413503913828, + 0.0019436798802656618, + 0.0019501276642159863, + 0.0019188900851519223, + 0.0019077853556176004, + 0.0019178014276678484, + 0.0019012794544707176, + 0.0019328785555266983, + 0.0019466565042226868, + 0.0018897442148027984, + 0.0019024411054657834, + 0.001953751243066098, + 0.0019464516791358058, + 0.001960694573185423, + 0.0019431224622620882, + 0.001912129146677833, + 0.0019390470114110134, + 0.001957489108009406, + 0.001951351831424534, + 0.0019529830905902982, + 0.001947329046330925, + 0.0019327652627338474, + 0.001943400940391342, + 0.001969379068143504, + 0.001988401193995219, + 0.0019693156905635075, + 0.0018910242447711262, + 0.0019077943775285555, + 0.0019992467294444216, + 0.0020397934127871845, + 0.0020330502881242916, + 0.002021605562816838, + 0.0020204106506089563, + 0.0020338527321330305, + 0.0020615706115204168, + 0.0020974953323543884, + 0.0021272118709332395, + 0.0021333677239935996, + 0.0021309701000483813, + 0.0021419003966153703, + 0.002160196716039982, + 0.0021937499190601488, + 0.002227639285986815, + 0.002250285075264659, + 0.002296257716482154, + 0.002407042630833304, + 0.0023452957384372587, + 0.0021207305223187025, + 0.0020086523638199365, + 0.0019560277569036933, + 0.001972623240633963, + 0.0020314518297299615, + 0.002112767994760004, + 0.002177474361687919, + 0.002326964824165508, + 0.002412300875473401, + 0.0024184812315724566, + 0.002479436841067762, + 0.0025094065485137614, + 0.0025040954374780217, + 0.0025243459353569506, + 0.0025467068801025452, + 0.0025407651677263497, + 0.002559655640063368, + 0.0025508894211741266, + 0.0025525668336434065, + 0.002558598268394631, + 0.0025546239183052415, + 0.002539465665070069, + 0.002519999128807989, + 0.0025060503178839484, + 0.002515103666253543, + 0.002539893774203948, + 0.002529938617493994, + 0.002487454159183058, + 0.0024452182220865847, + 0.0024060417139216625, + 0.0023889709408911066, + 0.00237487888327292, + 0.0023710164678212285, + 0.0023564209303064245, + 0.0023321266689964276, + 0.0023068524623259764, + 0.0022710836960701244, + 0.002269398545814595, + 0.0022943136005219075, + 0.002302138667671945, + 0.0023058473650479543, + 0.0023085396739619085, + 0.0022983853727830393, + 0.0022921939581051934, + 0.00229356925644213, + 0.0023061948650532505, + 0.002307224956676829, + 0.0023142874709193707, + 0.002319114060943792, + 0.0023085256906316886, + 0.002345219855254672, + 0.0023738651780258217, + 0.002373295489849566, + 0.002350179646003298, + 0.002349027696357746, + 0.0022952678827444536, + 0.0021790191064043336, + 0.00220574883221697, + 0.002269604427726468, + 0.0023048948155258895, + 0.0023386121727517616, + 0.0023329938153205674, + 0.0023688948489893015, + 0.002400118957798886, + 0.0024006251012753453, + 0.0024112258055011414, + 0.002405385472191814, + 0.002439821003891615, + 0.002463783850050053, + 0.002399284554008912, + 0.0024124023462498254, + 0.0024666892127208997, + 0.002503271961574107, + 0.002502672563359103, + 0.0024913843850023075, + 0.0024815665598228406, + 0.002484075344399387, + 0.0025038506214468672, + 0.0025415768124179483, + 0.0025821774681875935, + 0.0026071326209712075, + 0.002611867192367415, + 0.0026092805862653113, + 0.0026083154210362535, + 0.0026172626046848495, + 0.0026359647736952964, + 0.0026584951881715667, + 0.0026674956034414637, + 0.002655594072051707, + 0.002666414439708039, + 0.002685213142143271, + 0.0026575740370749514, + 0.0026136412016422757, + 0.00259182292257851, + 0.002577052432934891, + 0.002546566491435115, + 0.0026434865581069604, + 0.0027748236841679324, + 0.002905740855567171, + 0.0029539245377450127, + 0.0030117967284974977, + 0.0030880688718957936, + 0.003138963611449656, + 0.0030305808456053828, + 0.003012641906152183, + 0.003042647974018622, + 0.0030544509100549795, + 0.003025184811039072, + 0.0029996177078685637, + 0.002986094909143217, + 0.00296916386142055, + 0.002953496249130192, + 0.0029490280093406357, + 0.002952080113273117, + 0.002963180466602765, + 0.0029717255877211588, + 0.0029684315032273596, + 0.0029478335171634605, + 0.002922077165648117, + 0.0029049088590984273, + 0.002900252160172451, + 0.0029049811672666502, + 0.0029111633639069823, + 0.0029140895809580385, + 0.0029182434602705812, + 0.002921469601786903, + 0.0029053754496071297, + 0.002874612853590956, + 0.002843037892264142, + 0.002814248144864157, + 0.0028030991658754426, + 0.002809656949704735, + 0.0028172778308316873, + 0.002809897399356054, + 0.0028023150720740734, + 0.002839879600957377, + 0.002849646152256426, + 0.0027938221136090905, + 0.0027551263266430274, + 0.0028036991788042026, + 0.0028112492684203676, + 0.00277941739805498, + 0.002747929283659924, + 0.0027502784136263754, + 0.002708895308059521, + 0.0026717888264605988, + 0.002642126051136089, + 0.00264356375820977, + 0.0026102051027664624, + 0.002588403379832246, + 0.0025492864053814845, + 0.002622534016677195, + 0.002730295039471575, + 0.0027612275345659286, + 0.0027810404481221074, + 0.0027622840358474555, + 0.0026940369102153015, + 0.0026598038294527093, + 0.002674041422857233, + 0.0026927452055508084, + 0.002699795962185473, + 0.002678833668748435, + 0.0026369172055023694, + 0.0026178273148031875, + 0.002618091975946964, + 0.002641912675106164, + 0.0026544948750631624, + 0.0026491161186069792, + 0.002627232274868948, + 0.0026210788531541816, + 0.002616949310798314, + 0.002606013959474168, + 0.002590039128942498, + 0.0025746205256565982, + 0.0025604925576372946, + 0.0025638768797425376, + 0.0025874450230711403, + 0.0026104937888269536, + 0.0026166917753379843, + 0.0026088091939411953, + 0.0025994643420099426, + 0.0026123162518392165, + 0.00265071491557699, + 0.0026834081057688732, + 0.002690609925925227, + 0.0027232404512425095, + 0.0027842998319956695, + 0.0028110966788012725, + 0.0028358474392749357, + 0.0028697143186421268, + 0.0029141605288250157, + 0.0029729191565770335, + 0.003022469190993137, + 0.0029752252352385033, + 0.002842489483091852, + 0.002746530806781363, + 0.002757128514337322, + 0.0028504543163360638, + 0.002940996880370232, + 0.0029176775499304454, + 0.002813193169868654, + 0.002750341109364678, + 0.002755262313605897, + 0.002804486954647326, + 0.002839293611947367, + 0.0028781122111244226, + 0.0029257167242114123, + 0.002959194313899947, + 0.0029716279097839553, + 0.0029820530978385035, + 0.002997183282110782, + 0.0030100653480437775, + 0.0030078829096870873, + 0.0029959163952935027, + 0.0029871350359158074, + 0.0029880425153599242, + 0.0029899829864124938, + 0.0029838698937387238, + 0.0029739447310950223, + 0.0029608942162642083, + 0.0029474387518709606, + 0.002940317930243873, + 0.002943141351803188, + 0.002936155276674373, + 0.002919273479724939, + 0.002918034347820446, + 0.0029211649765582505, + 0.0029000271976948547, + 0.0028609998942186947, + 0.0028253698060892872, + 0.0028058205885631983, + 0.0027981265694645204, + 0.0027936450349807917, + 0.0027838171124306855, + 0.002773848714015379, + 0.002761717841699958, + 0.002748212787630635, + 0.002732552460355951, + 0.0026991961188837605, + 0.00265370051492763, + 0.002610746105412261, + 0.0026091612724420676, + 0.0026370069762159444, + 0.002681823299124584, + 0.0026526913017120356, + 0.0025856904551668806, + 0.0025450533743512365, + 0.002516545796436044, + 0.0025941260630327014, + 0.0026030273626860573, + 0.0025516182687458084, + 0.002539412759443742, + 0.0025009550109799813, + 0.002509839497525519, + 0.0025366045225619924, + 0.002544978635341401, + 0.0025266389911462726, + 0.0024858317915704823, + 0.0024888791108163945, + 0.002524102844884075, + 0.0025893257071330595, + 0.0025614985158869054, + 0.002490604475751152, + 0.0025202638574052393, + 0.002550466023233912, + 0.0025535932704228888, + 0.0025689773824456243, + 0.002609792739475236, + 0.0026516897635184213, + 0.002674751684677126, + 0.0026689640441327463, + 0.002622885259467624, + 0.0026184419139686555, + 0.002610207492222263, + 0.0025568453570002764, + 0.0025517826024617626, + 0.002620755848924401, + 0.002665105868972628, + 0.002684057369208432, + 0.0026930151624449104, + 0.002709905942981138, + 0.002705193489231178, + 0.0027028044368309014, + 0.002712349428670153, + 0.002706428426547647, + 0.002713678775609254, + 0.0027364842412328986, + 0.0027524158296372953, + 0.002753856199703925, + 0.002762823644557041, + 0.0028214290732242486, + 0.0029421786549365756, + 0.0029785469198163974, + 0.0029745982830465256, + 0.003057913702287346, + 0.0031157743678912548, + 0.003081530118687608, + 0.0030932791740060027, + 0.003193441253444192, + 0.0033061387748714987, + 0.0033420415580759947, + 0.0033140694918487954, + 0.0032825466431167837, + 0.0032860820870559302, + 0.0033200712996539106, + 0.0033362937153943355, + 0.00333024472012647, + 0.003344045477332253, + 0.003381313179105657, + 0.003408551118898643, + 0.003422549446431545, + 0.0034387445008704043, + 0.0034596762858154907, + 0.0034705791466947762, + 0.0034638490029252154, + 0.0034516837311925905, + 0.0034554669549103803, + 0.0034750117701191196, + 0.0034933879064165127, + 0.0035040296401796364, + 0.003504696038765679, + 0.0034963288517522364, + 0.003512280270384119, + 0.0035495189155946264, + 0.0035565863753951737, + 0.003537403800221564, + 0.0035218826403617333, + 0.0035122357395294818, + 0.0035068597232125955, + 0.0035020404364893135, + 0.003494575525284787, + 0.0034879075577591476, + 0.0034804869049359895, + 0.0034711627573081666, + 0.0034556893589065473, + 0.0034486885010581287, + 0.0034827373797594804, + 0.003532066749466058, + 0.0035078108460148538, + 0.003439390457563967, + 0.003396315698129863, + 0.0033533524776022294, + 0.00334242512258225, + 0.003320810073799306, + 0.0033477371299052835, + 0.0033769894125079522, + 0.0032891012469464503, + 0.0032554486937681312, + 0.0032963730514021213, + 0.003277458975232085, + 0.003251376420275284, + 0.0032272655923302617, + 0.003202346580993748, + 0.0032111630566631537, + 0.003200589423140282, + 0.003128240679716457, + 0.003120527565773545, + 0.003181730626043369, + 0.0031643523386022045, + 0.0031372059856614397, + 0.0031145788789386604, + 0.003065407773439916, + 0.003024619395855419, + 0.0030178003207381406, + 0.003047852234435352, + 0.0030421816409971986, + 0.002982889701589188, + 0.0029342060439397346, + 0.002957741600865361, + 0.0030261599764276276, + 0.003037508693212698, + 0.003001636652606469, + 0.0029728426036683343, + 0.0029519964429758697, + 0.0029400568198453035, + 0.0029376870254667854, + 0.0029381074017297065, + 0.00293174664242272, + 0.0029337894837201737, + 0.0029477462460838094, + 0.002947957909093202, + 0.002932943993057142, + 0.0029386351800234412, + 0.002959799797585127, + 0.002968658223676699, + 0.00297510780179946, + 0.002976385690905733, + 0.0029817498560489736, + 0.0030264842703265193, + 0.00306573478255825, + 0.0031171530843457835, + 0.0031637323392017212, + 0.0031099690918894086, + 0.0031029033931903173, + 0.0031827422613444198, + 0.0032484543617006274, + 0.0032451313101644255, + 0.0032281651755174654, + 0.003270729903815679, + 0.0033210656309406307, + 0.0033513379393058903, + 0.003372235052989338, + 0.0033978512751620146, + 0.0034188731320769663, + 0.0034235092351766233, + 0.0034246963210200873, + 0.003439276651219583, + 0.003461586517992875, + 0.0034864775343532656, + 0.0035149817081838613, + 0.0035246996385666324, + 0.003529052707162134, + 0.0035293062217311042, + 0.0035269928652094788, + 0.0035355230889791726, + 0.003553587382921951, + 0.003576389878816074, + 0.003590038484198021, + 0.0035936893955925667, + 0.0036056226696335038, + 0.003629316415890077, + 0.003639036204382005, + 0.003627039714726555, + 0.003619995177476071, + 0.003621107175428778, + 0.003619717302923245, + 0.0036087538849794774, + 0.0036066163759055814, + 0.0036072803059062856, + 0.0036143017386513886, + 0.0036272055175166607, + 0.00361792040728726, + 0.0036003554445723034, + 0.003581262023610405, + 0.003575811259329534, + 0.0035709080764747677, + 0.0035890075668453887, + 0.003630139037672243, + 0.003646619140045806, + 0.0036151531766519, + 0.0036634492021847113, + 0.003750210835750151, + 0.0037329435560509014, + 0.0036244932655000064, + 0.0035586535698905577, + 0.0035213030172613485, + 0.0034995872915056267, + 0.0034873240941804117, + 0.003462003528580083, + 0.003439396821611399, + 0.0033876030523406885, + 0.0033498294914709563, + 0.003343307903629782, + 0.003309943914955364, + 0.0032624325247637663, + 0.0032546146751338246, + 0.0032588151496045726, + 0.003253164283051417, + 0.0032552747750954174, + 0.00322323543168973, + 0.003171286571288868, + 0.003187068410421739, + 0.0031873966999965454, + 0.0031878429994447546, + 0.003171581625988439, + 0.0031338159290159014, + 0.0031010499242056437, + 0.0030772188688656843, + 0.0030558313373999254, + 0.0030400181063272537, + 0.0030297701981080983, + 0.0030204357442752063, + 0.0030066359837816197, + 0.002991996409126032, + 0.002981322469948321, + 0.0029807030043824474, + 0.0029891469346215865, + 0.002984033596734449, + 0.0029662345797019938, + 0.00295781506905421, + 0.002967149921892854, + 0.0029761906350550937, + 0.0029840842269905727, + 0.002996600904183767, + 0.0030157215693697886, + 0.0029923369561336063, + 0.0030202930297677046, + 0.003167836319129804, + 0.0030882159489805457, + 0.002972913165124031, + 0.0030076098024288695, + 0.0030751891602678553, + 0.003060764010548278, + 0.0030215623793460288, + 0.0030197133454343086, + 0.0030152012540701606, + 0.003004785126281113, + 0.0030189247172962073, + 0.0030227723929248797, + 0.00301320175824734, + 0.0030014505237670763, + 0.0029942155462264657, + 0.003020453550791074, + 0.0030562255069718053, + 0.003055183096348632, + 0.0030579117413203484, + 0.0030734380002801595, + 0.003083491387361984, + 0.0030877610798354656, + 0.0030851480036407307, + 0.0030822643745197246, + 0.003089679302048565, + 0.003106097540979791, + 0.003124239018332084, + 0.0031241758732818313, + 0.0031168118360035213, + 0.003130160475504448, + 0.0031779304420275437, + 0.0032187424672515037, + 0.003217585188745042, + 0.0032033443297982875 + ] } ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" + "layout": { + "autosize": true, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } ], - [ - 0.1111111111111111, - "#46039f" + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } ], - [ - 0.2222222222222222, - "#7201a8" + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } ], - [ - 0.3333333333333333, - "#9c179e" + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } ], - [ - 0.4444444444444444, - "#bd3786" + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } ], - [ - 0.5555555555555556, - "#d8576b" + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } ], - [ - 0.1111111111111111, - "#46039f" + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } ], - [ - 0.2222222222222222, - "#7201a8" + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } ], - [ - 0.3333333333333333, - "#9c179e" + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } ], - [ - 0.4444444444444444, - "#bd3786" + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } ], - [ - 0.5555555555555556, - "#d8576b" + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } ], - [ - 0.6666666666666666, - "#ed7953" + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "pie": [ + { + "automargin": true, + "type": "pie" + } ], - [ - 0.8888888888888888, - "#fdca26" + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } ], - [ - 0.1111111111111111, - "#46039f" + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } ], - [ - 0.2222222222222222, - "#7201a8" + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } ], - [ - 0.3333333333333333, - "#9c179e" + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } ], - [ - 0.4444444444444444, - "#bd3786" + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } ], - [ - 0.5555555555555556, - "#d8576b" + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } ], - [ - 0.6666666666666666, - "#ed7953" + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } ], - [ - 0.8888888888888888, - "#fdca26" + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } ], - [ - 1, - "#f0f921" + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } }, - "header": { - "fill": { - "color": "#C8D4E3" + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } }, - "line": { - "color": "white" + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" + } + }, + "title": { + "text": "Velocity RMS error for STK with EGM2008 (without secular coeff update) vs OSTk" }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" + "autorange": true, + "range": [ + 0, + 86400 + ], + "title": { + "text": "Time Elapsed (s)" + }, + "type": "linear" }, "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" + "autorange": true, + "range": [ + -0.0002124444883775295, + 0.00403644527917306 + ], + "title": { + "text": "Velocity Difference in RTN (m/s)" + }, + "type": "linear" } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 } - } - }, - "title": { - "text": "Velocity RMS error for STK with EGM2008 (without secular coeff update) vs OSTk" - }, - "xaxis": { - "autorange": true, - "range": [ - 0, - 86400 - ], - "title": { - "text": "Time Elapsed (s)" }, - "type": "linear" + "image/png": "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tLg9AggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEHg/wMuURm8vvQWmAAAAABJRU5ErkJggg==", + "text/html": [ + "
" + ] }, - "yaxis": { - "autorange": true, - "range": [ - -0.0002124444883775295, - 0.00403644527917306 - ], - "title": { - "text": "Velocity Difference in RTN (m/s)" - }, - "type": "linear" - } + "metadata": {}, + "output_type": "display_data" } - }, - "image/png": "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tLg9AggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEGAuJyGKXFHBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAMwHismcD4ToIIIAAAggggAACCCCAAAIIIIAAAggggEAaBIjLaZgSd0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwTIC57NhCugwACCCCAAAIIIIAAAggggAACCCCAAAIIpEHg/wMuURm8vvQWmAAAAABJRU5ErkJggg==", - "text/html": [ - "
" + "figure.show()" ] + } + ], + "metadata": { + "interpreter": { + "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "orbit_df_RMS_velocity_list = [\n", - " orbit_df_RMS_list[list_ind][[\"Elapsed secs\", \"${\\delta}v$\"]]\n", - " for list_ind in range(0, len(orbit_list))\n", - "]\n", - "\n", - "figure = go.Figure()\n", - "figure.update_layout(\n", - " title=f\"Velocity {plot_title_extension}\", showlegend=True, height=1000\n", - ")\n", - "figure.update_xaxes(title_text=\"Time Elapsed (s)\")\n", - "figure.update_yaxes(title_text=\"Velocity Difference in RTN (m/s)\")\n", - "\n", - "for list_ind, orbit_df_RMS_velocity in enumerate(orbit_df_RMS_velocity_list):\n", - " figure.add_trace(\n", - " go.Scatter(\n", - " x=orbit_df_RMS_velocity[\"Elapsed secs\"],\n", - " y=orbit_df_RMS_velocity[\"${\\delta}v$\"],\n", - " name=legend_name_list[list_ind],\n", - " mode=\"lines\",\n", - " )\n", - " )\n", - "\n", - "figure.show()" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 + } + \ No newline at end of file diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy.cxx b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy.cxx index 0e138bca0..3e46233fc 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy.cxx +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy.cxx @@ -1,7 +1,7 @@ /// Apache License 2.0 -#include -#include +#include +#include #include #include #include diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access.cpp index cf17fe606..905b4484b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access.cpp @@ -11,7 +11,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Access(pybind11::module& aModule) using ostk::physics::time::Instant; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { class_ access_class( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access/Generator.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access/Generator.cpp index 2b80dec7b..59013694b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access/Generator.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Access/Generator.cpp @@ -16,9 +16,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Access_Generator(pybind11::module& a using ostk::physics::coordinate::spherical::AER; using ostk::physics::time::Duration; - using ostk::astro::Access; - using ostk::astro::access::Generator; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::Access; + using ostk::astrodynamics::access::Generator; + using ostk::astrodynamics::trajectory::State; class_>( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction.cpp index 5a6467d0c..d41863626 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction(pybind11::module& aModule) { @@ -8,5 +8,5 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction(pybind11::module& aModul auto conjunction = aModule.def_submodule("conjunction"); // Add objects to "conjunction" submodule - OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages(conjunction); + OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message(conjunction); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message.cpp new file mode 100644 index 000000000..0f50cef3b --- /dev/null +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message.cpp @@ -0,0 +1,12 @@ +/// Apache License 2.0 + +#include + +inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message(pybind11::module& aModule) +{ + // Create "message" python submodule + auto message = aModule.def_submodule("message"); + + // Add objects to "message" submodule + OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message_CCSDS(message); +} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS.cpp new file mode 100644 index 000000000..0f5575cc3 --- /dev/null +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS.cpp @@ -0,0 +1,12 @@ +/// Apache License 2.0 + +#include + +inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message_CCSDS(pybind11::module& aModule) +{ + // Create "ccsds" python submodule + auto ccsds = aModule.def_submodule("ccsds"); + + // Add objects to "ccsds" submodule + OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message_CCSDS_CDM(ccsds); +} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS/CDM.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS/CDM.cpp similarity index 99% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS/CDM.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS/CDM.cpp index cfe6c0c18..7fa1d127d 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS/CDM.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Message/CCSDS/CDM.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages_CCSDS_CDM(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Message_CCSDS_CDM(pybind11::module& aModule) { using namespace pybind11; @@ -23,8 +23,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages_CCSDS_CDM(pybin using ostk::physics::unit::Length; using ostk::physics::unit::Mass; - using ostk::astro::conjunction::messages::ccsds::CDM; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::conjunction::message::ccsds::CDM; + using ostk::astrodynamics::trajectory::State; class_ cdm( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages.cpp deleted file mode 100644 index 8ba6ee5f0..000000000 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/// Apache License 2.0 - -#include - -inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages(pybind11::module& aModule) -{ - // Create "messages" python submodule - auto messages = aModule.def_submodule("messages"); - - // Add objects to "messages" submodule - OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages_CCSDS(messages); -} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS.cpp deleted file mode 100644 index 6282bbfeb..000000000 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Conjunction/Messages/CCSDS.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/// Apache License 2.0 - -#include - -inline void OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages_CCSDS(pybind11::module& aModule) -{ - // Create "ccsds" python submodule - auto ccsds = aModule.def_submodule("ccsds"); - - // Add objects to "ccsds" submodule - OpenSpaceToolkitAstrodynamicsPy_Conjunction_Messages_CCSDS_CDM(ccsds); -} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics.cpp index 5e8badf44..4ee19f5eb 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics.cpp @@ -20,9 +20,9 @@ using ostk::physics::Environment; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::Dynamics; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; // Trampoline class for virtual member functions class PyDynamics : public Dynamics @@ -42,20 +42,20 @@ class PyDynamics : public Dynamics PYBIND11_OVERRIDE_PURE_NAME(bool, Dynamics, "is_defined", isDefined); } - Array> getReadCoordinatesSubsets() const override + Array> getReadCoordinateSubsets() const override { PYBIND11_OVERRIDE_PURE_NAME( - Array>, Dynamics, "get_read_coordinates_subsets", getReadCoordinatesSubsets + Array>, Dynamics, "get_read_coordinate_subsets", getReadCoordinateSubsets ); } - Array> getWriteCoordinatesSubsets() const override + Array> getWriteCoordinateSubsets() const override { PYBIND11_OVERRIDE_PURE_NAME( - Array>, + Array>, Dynamics, - "get_write_coordinates_subsets", - getWriteCoordinatesSubsets + "get_write_coordinate_subsets", + getWriteCoordinateSubsets ); } @@ -78,8 +78,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics(pybind11::module& aModule) Can inherit and provide the virtual methods: - is_defined - - get_read_coordinates_subsets - - get_write_coordinates_subsets + - get_read_coordinate_subsets + - get_write_coordinate_subsets - compute_contribution to create a custom dynamics class @@ -126,24 +126,24 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics(pybind11::module& aModule) ) .def( - "get_read_coordinates_subsets", - &Dynamics::getReadCoordinatesSubsets, + "get_read_coordinate_subsets", + &Dynamics::getReadCoordinateSubsets, R"doc( - Get the coordinates subsets that the dynamics reads. + Get the coordinate subsets that the dynamics reads. Returns: - read_coordinates_subsets (Array): The coordinates subsets that the dynamics reads. + read_coordinate_subsets (Array): The coordinate subsets that the dynamics reads. )doc" ) .def( - "get_write_coordinates_subsets", - &Dynamics::getWriteCoordinatesSubsets, + "get_write_coordinate_subsets", + &Dynamics::getWriteCoordinateSubsets, R"doc( - Get the coordinates subsets that the dynamics writes. + Get the coordinate subsets that the dynamics writes. Returns: - write_coordinates_subsets (Array): The coordinates subsets that the dynamics writes. + write_coordinate_subsets (Array): The coordinate subsets that the dynamics writes. )doc" ) diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/AtmosphericDrag.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/AtmosphericDrag.cpp index ff344152f..2eb12b54a 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/AtmosphericDrag.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/AtmosphericDrag.cpp @@ -10,8 +10,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_AtmosphericDrag(pybind11::m using ostk::physics::environment::object::Celestial; - using ostk::astro::Dynamics; - using ostk::astro::dynamics::AtmosphericDrag; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::dynamics::AtmosphericDrag; { class_>( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/CentralBodyGravity.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/CentralBodyGravity.cpp index 8eb76219b..526457860 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/CentralBodyGravity.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/CentralBodyGravity.cpp @@ -10,8 +10,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_CentralBodyGravity(pybind11 using ostk::physics::environment::object::Celestial; - using ostk::astro::Dynamics; - using ostk::astro::dynamics::CentralBodyGravity; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::dynamics::CentralBodyGravity; { class_>( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/PositionDerivative.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/PositionDerivative.cpp index 8b0752b13..4bcfc0956 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/PositionDerivative.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/PositionDerivative.cpp @@ -10,8 +10,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_PositionDerivative(pybind11 using ostk::physics::environment::object::Celestial; - using ostk::astro::Dynamics; - using ostk::astro::dynamics::PositionDerivative; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::dynamics::PositionDerivative; { class_>( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Tabulated.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Tabulated.cpp index 26970bc9f..94292227b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Tabulated.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Tabulated.cpp @@ -14,9 +14,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_Tabulated(pybind11::module& using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; - using ostk::astro::Dynamics; - using ostk::astro::dynamics::Tabulated; - using ostk::astro::trajectory::state::CoordinatesSubset; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::dynamics::Tabulated; + using ostk::astrodynamics::trajectory::state::CoordinateSubset; { class_>( @@ -31,11 +31,11 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_Tabulated(pybind11::module& init< const Array&, const MatrixXd&, - const Array>&, + const Array>&, const Shared>(), arg("instants"), arg("contribution_profile"), - arg("coordinates_subsets"), + arg("coordinate_subsets"), arg("frame"), R"doc( Constructor. @@ -43,7 +43,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_Tabulated(pybind11::module& Args: instants (list[Instant]): An array of instants. contribution_profile (numpy.ndarray): A contribution profile. - coordinates_subsets (list[CoordinatesSubset]): An array of coordinates subsets related to the contribution profile. + coordinate_subsets (list[CoordinateSubset]): An array of coordinate subsets related to the contribution profile. frame (Frame): A frame. )doc" diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/ThirdBodyGravity.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/ThirdBodyGravity.cpp index 60f323a0c..cac97977c 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/ThirdBodyGravity.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/ThirdBodyGravity.cpp @@ -10,8 +10,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Dynamics_ThirdBodyGravity(pybind11:: using ostk::physics::environment::object::Celestial; - using ostk::astro::Dynamics; - using ostk::astro::dynamics::ThirdBodyGravity; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::dynamics::ThirdBodyGravity; { class_>( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Thruster.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Thruster.cpp index 34535c9a2..3486e1bba 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Thruster.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Dynamics/Thruster.cpp @@ -13,12 +13,12 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::Thruster; -using ostk::astro::GuidanceLaw; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::GuidanceLaw; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; // Trampoline class for virtual member functions class PyThruster : public Thruster @@ -38,20 +38,20 @@ class PyThruster : public Thruster PYBIND11_OVERRIDE_PURE_NAME(bool, Thruster, "is_defined", isDefined); } - Array> getReadCoordinatesSubsets() const override + Array> getReadCoordinateSubsets() const override { PYBIND11_OVERRIDE_PURE_NAME( - Array>, Thruster, "get_read_coordinates_subsets", getReadCoordinatesSubsets + Array>, Thruster, "get_read_coordinate_subsets", getReadCoordinateSubsets ); } - Array> getWriteCoordinatesSubsets() const override + Array> getWriteCoordinateSubsets() const override { PYBIND11_OVERRIDE_PURE_NAME( - Array>, + Array>, Thruster, - "get_write_coordinates_subsets", - getWriteCoordinatesSubsets + "get_write_coordinate_subsets", + getWriteCoordinateSubsets ); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition.cpp index 9ec229834..1aa124ed0 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition.cpp @@ -20,8 +20,8 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::unit::Length; using ostk::physics::unit::Angle; -using ostk::astro::EventCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::trajectory::State; // Trampoline class for virtual member functions class PyEventCondition : public EventCondition diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/AngularCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/AngularCondition.cpp index f8fae41c4..c296dec91 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/AngularCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/AngularCondition.cpp @@ -14,9 +14,9 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::unit::Angle; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::AngularCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::AngularCondition; +using ostk::astrodynamics::trajectory::State; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_AngularCondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/BooleanCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/BooleanCondition.cpp index 694af37d2..ec9a2d7a1 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/BooleanCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/BooleanCondition.cpp @@ -12,9 +12,9 @@ using ostk::core::type::Shared; using ostk::mathematics::object::VectorXd; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::BooleanCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::BooleanCondition; +using ostk::astrodynamics::trajectory::State; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_BooleanCondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/COECondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/COECondition.cpp index 1fda388dd..fd4631baa 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/COECondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/COECondition.cpp @@ -11,9 +11,9 @@ using ostk::core::type::Shared; using ostk::physics::unit::Derived; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::COECondition; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::COECondition; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_COECondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/InstantCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/InstantCondition.cpp index 4dfe6b313..c866cd0d7 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/InstantCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/InstantCondition.cpp @@ -8,8 +8,8 @@ using ostk::core::type::Shared; using ostk::physics::time::Instant; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::InstantCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::InstantCondition; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_InstantCondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/LogicalCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/LogicalCondition.cpp index 7bccd480f..4a1f19c5b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/LogicalCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/LogicalCondition.cpp @@ -10,8 +10,8 @@ using ostk::core::container::Array; using ostk::core::type::Shared; using ostk::core::type::String; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::LogicalCondition; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::LogicalCondition; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_LogicalCondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/RealCondition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/RealCondition.cpp index eb68ee92c..e7636b1f5 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/RealCondition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/EventCondition/RealCondition.cpp @@ -12,9 +12,9 @@ using ostk::core::type::Shared; using ostk::mathematics::object::VectorXd; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::State; inline void OpenSpaceToolkitAstrodynamicsPy_EventCondition_RealCondition(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile.cpp index 45f0b89b6..2af2429e8 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile.cpp @@ -3,7 +3,6 @@ #include #include -#include inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile(pybind11::module& aModule) { @@ -14,9 +13,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile(pybind11::module& aMo using ostk::physics::coordinate::Frame; - using ostk::astro::flight::Profile; - using ostk::astro::flight::profile::Model; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::flight::Profile; + using ostk::astrodynamics::flight::profile::Model; + using ostk::astrodynamics::trajectory::State; class_( aModule, @@ -164,5 +163,4 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile(pybind11::module& aMo // Add objects to "profile" submodule OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model(profile); - OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models(profile); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model.cpp index 5b7b8ce4c..dadea4663 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model.cpp @@ -2,11 +2,14 @@ #include +#include +#include + inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model(pybind11::module &aModule) { using namespace pybind11; - using ostk::astro::flight::profile::Model; + using ostk::astrodynamics::flight::profile::Model; class_( aModule, @@ -105,4 +108,11 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model(pybind11::modul )doc", arg("frame_name") ); + + // Create "model" python submodule + auto model = aModule.def_submodule("model"); + + // add objects to "model" submodule + OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model_Transform(model); + OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model_Tabulated(model); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Tabulated.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Tabulated.cpp similarity index 91% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Tabulated.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Tabulated.cpp index 29c9e28ee..5fa611a4e 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Tabulated.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Tabulated.cpp @@ -1,16 +1,16 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models_Tabulated(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model_Tabulated(pybind11::module& aModule) { using namespace pybind11; using ostk::core::container::Array; - using ostk::astro::flight::profile::Model; - using ostk::astro::trajectory::State; - using ostk::astro::flight::profile::models::Tabulated; + using ostk::astrodynamics::flight::profile::Model; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::flight::profile::model::Tabulated; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Transform.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Transform.cpp similarity index 93% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Transform.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Transform.cpp index 44d970c40..470c1c116 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models/Transform.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Model/Transform.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models_Transform(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Model_Transform(pybind11::module& aModule) { using namespace pybind11; @@ -12,9 +12,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models_Transform(pybi using ostk::physics::coordinate::Frame; using DynamicProvider = ostk::physics::coordinate::frame::provider::Dynamic; - using ostk::astro::flight::profile::Model; - using ostk::astro::flight::profile::models::Transform; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::flight::profile::Model; + using ostk::astrodynamics::flight::profile::model::Transform; + using ostk::astrodynamics::trajectory::State; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models.cpp deleted file mode 100644 index 96e3c958d..000000000 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/Profile/Models.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/// Apache License 2.0 - -#include -#include - -inline void OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models(pybind11::module& aModule) -{ - // Create "models" python submodule - auto models = aModule.def_submodule("models"); - - // add objects to "models" submodule - OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models_Transform(models); - OpenSpaceToolkitAstrodynamicsPy_Flight_Profile_Models_Tabulated(models); -} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System.cpp index 2a8a20de0..9cacdb25f 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System.cpp @@ -14,7 +14,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_System(pybind11::module& aMod using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { class_( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/PropulsionSystem.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/PropulsionSystem.cpp index 875869e42..ca583b2f8 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/PropulsionSystem.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/PropulsionSystem.cpp @@ -14,7 +14,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_System_PropulsionSystem(pybin using ostk::physics::unit::Mass; using ostk::physics::data::Scalar; - using ostk::astro::flight::system::PropulsionSystem; + using ostk::astrodynamics::flight::system::PropulsionSystem; { class_( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystem.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystem.cpp index 557c70e52..90a53150c 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystem.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystem.cpp @@ -13,9 +13,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_System_SatelliteSystem(pybind using ostk::physics::unit::Mass; - using ostk::astro::flight::System; - using ostk::astro::flight::system::PropulsionSystem; - using ostk::astro::flight::system::SatelliteSystem; + using ostk::astrodynamics::flight::System; + using ostk::astrodynamics::flight::system::PropulsionSystem; + using ostk::astrodynamics::flight::system::SatelliteSystem; { class_( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystemBuilder.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystemBuilder.cpp index 0ecb4c61a..fc7f84bf5 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystemBuilder.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Flight/System/SatelliteSystemBuilder.cpp @@ -13,10 +13,10 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Flight_System_SatelliteSystemBuilder using ostk::physics::unit::Mass; - using ostk::astro::flight::System; - using ostk::astro::flight::system::PropulsionSystem; - using ostk::astro::flight::system::SatelliteSystem; - using ostk::astro::flight::system::SatelliteSystemBuilder; + using ostk::astrodynamics::flight::System; + using ostk::astrodynamics::flight::system::PropulsionSystem; + using ostk::astrodynamics::flight::system::SatelliteSystem; + using ostk::astrodynamics::flight::system::SatelliteSystemBuilder; { class_( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw.cpp index 6225b7766..82f41e571 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw.cpp @@ -16,7 +16,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::GuidanceLaw; +using ostk::astrodynamics::GuidanceLaw; // Trampoline class for virtual member functions class PyGuidanceLaw : public GuidanceLaw diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/ConstantThrust.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/ConstantThrust.cpp index 4c1dc74e5..d05bc2834 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/ConstantThrust.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/ConstantThrust.cpp @@ -9,9 +9,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_GuidanceLaw_ConstantThrust(pybind11: using ostk::core::type::String; using ostk::core::type::Shared; - using ostk::astro::trajectory::LocalOrbitalFrameDirection; - using ostk::astro::GuidanceLaw; - using ostk::astro::guidancelaw::ConstantThrust; + using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; + using ostk::astrodynamics::GuidanceLaw; + using ostk::astrodynamics::guidancelaw::ConstantThrust; { class_>( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/QLaw.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/QLaw.cpp index 76ae1e6cb..f313bbba7 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/QLaw.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/GuidanceLaw/QLaw.cpp @@ -16,9 +16,9 @@ using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; using ostk::physics::unit::Derived; -using ostk::astro::GuidanceLaw; -using ostk::astro::guidancelaw::QLaw; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::GuidanceLaw; +using ostk::astrodynamics::guidancelaw::QLaw; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; void OpenSpaceToolkitAstrodynamicsPy_GuidanceLaw_QLaw(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/RootSolver.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/RootSolver.cpp index 03a5525ac..01ca6ba65 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/RootSolver.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/RootSolver.cpp @@ -9,7 +9,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_RootSolver(pybind11::module& aModule using ostk::core::type::Real; using ostk::core::type::Size; - using ostk::astro::RootSolver; + using ostk::astrodynamics::RootSolver; typedef std::function pythonFunctionSignature; diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/FiniteDifferenceSolver.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/FiniteDifferenceSolver.cpp similarity index 92% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/FiniteDifferenceSolver.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/FiniteDifferenceSolver.cpp index 30ddf39b7..5f578144b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/FiniteDifferenceSolver.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/FiniteDifferenceSolver.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybind11::module& aModule) { @@ -15,8 +15,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybin using ostk::physics::time::Instant; using ostk::physics::time::Duration; - using ostk::astro::trajectory::State; - using ostk::astro::solvers::FiniteDifferenceSolver; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::solver::FiniteDifferenceSolver; class_ finiteDifferenceSolver( aModule, @@ -44,7 +44,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybin finiteDifferenceSolver .def( - init(), + init(), R"doc( Construct a FiniteDifferenceSolver. @@ -97,7 +97,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybin .def( "compute_jacobian", - +[](const ostk::astro::solvers::FiniteDifferenceSolver& solver, + +[](const ostk::astrodynamics::solver::FiniteDifferenceSolver& solver, const State& aState, const Array& anInstantArray, const std::function&)>& generateStateCoordinates, @@ -124,7 +124,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybin ) .def( "compute_jacobian", - +[](const ostk::astro::solvers::FiniteDifferenceSolver& solver, + +[](const ostk::astrodynamics::solver::FiniteDifferenceSolver& solver, const State& aState, const Instant& anInstant, const std::function& generateStateCoordinates, @@ -151,7 +151,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_FiniteDifferenceSolver(pybin ) .def( "compute_gradient", - [](const ostk::astro::solvers::FiniteDifferenceSolver& solver, + [](const ostk::astrodynamics::solver::FiniteDifferenceSolver& solver, const State& aState, std::function generateStateCoordinates) -> VectorXd { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/TemporalConditionSolver.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/TemporalConditionSolver.cpp similarity index 95% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/TemporalConditionSolver.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/TemporalConditionSolver.cpp index 228746773..d714daa15 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers/TemporalConditionSolver.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solver/TemporalConditionSolver.cpp @@ -2,7 +2,7 @@ #include // To pass anonymous functions directly -#include +#include inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_TemporalConditionSolver(pybind11::module& aModule) { @@ -14,7 +14,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Solvers_TemporalConditionSolver(pybi using ostk::physics::time::Duration; using ostk::physics::time::Interval; - using ostk::astro::solvers::TemporalConditionSolver; + using ostk::astrodynamics::solver::TemporalConditionSolver; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers.cpp index 989fef676..6b5f5b3f6 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Solvers.cpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#include -#include +#include +#include inline void OpenSpaceToolkitAstrodynamicsPy_Solvers(pybind11::module& aModule) { diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory.cpp index d54cf0ae6..c44e8ef76 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory.cpp @@ -19,8 +19,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory(pybind11::module& aModule using ostk::core::container::Array; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; class_( aModule, @@ -32,7 +32,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory(pybind11::module& aModule ) .def( - init(), + init(), R"doc( Construct a `Trajectory` object from a model. diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameDirection.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameDirection.cpp index 5b15c0242..47b8afd48 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameDirection.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameDirection.cpp @@ -6,8 +6,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_LocalOrbitalFrameDirectio { using namespace pybind11; - using ostk::astro::trajectory::LocalOrbitalFrameDirection; - using ostk::astro::trajectory::LocalOrbitalFrameFactory; + using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; + using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameFactory.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameFactory.cpp index a9bc06d30..ecef85013 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameFactory.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameFactory.cpp @@ -12,7 +12,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_LocalOrbitalFrameFactory( using ostk::physics::time::Instant; - using ostk::astro::trajectory::LocalOrbitalFrameFactory; + using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; class_>( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameTransformProvider.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameTransformProvider.cpp index fafe4cd26..2abefbbdc 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameTransformProvider.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/LocalOrbitalFrameTransformProvider.cpp @@ -10,7 +10,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_LocalOrbitalFrameTransfor using ostk::physics::time::Instant; - using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; + using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; class_> localOrbitalFrameTransformProviderClass( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Model.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Model.cpp index a488c2f3f..62d8224f9 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Model.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Model.cpp @@ -6,7 +6,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Model(pybind11::module &a { using namespace pybind11; - using BaseModel = ostk::astro::trajectory::Model; + using BaseModel = ostk::astrodynamics::trajectory::Model; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit.cpp index ae0bded0f..b09994d8c 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit.cpp @@ -2,13 +2,12 @@ #include #include -#include -#include -#include +#include +#include +#include -#include +#include #include -#include #include inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit(pybind11::module& aModule) @@ -22,15 +21,15 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit(pybind11::module& a using ostk::physics::environment::object::Celestial; using ostk::physics::unit::Angle; - using ostk::astro::trajectory::Orbit; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::orbit::models::Kepler; - using ostk::astro::trajectory::orbit::models::Propagated; - using ostk::astro::trajectory::orbit::models::Tabulated; - using ostk::astro::trajectory::orbit::models::SGP4; + using ostk::astrodynamics::trajectory::Orbit; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::orbit::model::Kepler; + using ostk::astrodynamics::trajectory::orbit::model::Propagated; + using ostk::astrodynamics::trajectory::orbit::model::Tabulated; + using ostk::astrodynamics::trajectory::orbit::model::SGP4; { - class_ orbit_class( + class_ orbit_class( aModule, "Orbit", R"doc( @@ -61,7 +60,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit(pybind11::module& a orbit_class .def( - init&>(), + init&>(), arg("model"), arg("celestial_object"), R"doc( @@ -206,7 +205,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit(pybind11::module& a instant (Instant): The instant. Returns: - ostk::astro::trajectory::orbit::Pass: The pass. + ostk::astrodynamics::trajectory::orbit::Pass: The pass. )doc", arg("instant") @@ -382,7 +381,6 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit(pybind11::module& a auto orbit = aModule.def_submodule("orbit"); OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model(orbit); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models(orbit); OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Pass(orbit); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages(orbit); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message(orbit); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message.cpp new file mode 100644 index 000000000..9f799dfe5 --- /dev/null +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message.cpp @@ -0,0 +1,12 @@ +/// Apache License 2.0 + +#include + +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message(pybind11::module& aModule) +{ + // Create "message" python submodule + auto message = aModule.def_submodule("message"); + + // add objects to "message" submodule + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message_SpaceX(message); +} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX.cpp similarity index 67% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX.cpp index 52c3c070f..062576240 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX.cpp @@ -1,12 +1,12 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages_SpaceX(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message_SpaceX(pybind11::module& aModule) { // Create "spacex" python submodule auto spacex = aModule.def_submodule("spacex"); // add objects to "spacex" submodule - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages_SpaceX_OPM(spacex); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message_SpaceX_OPM(spacex); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX/OPM.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX/OPM.cpp similarity index 98% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX/OPM.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX/OPM.cpp index b5d2e4c87..c2b29c105 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages/SpaceX/OPM.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Message/SpaceX/OPM.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages_SpaceX_OPM(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Message_SpaceX_OPM(pybind11::module& aModule) { using namespace pybind11; @@ -18,7 +18,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages_SpaceX_OPM using ostk::physics::unit::Angle; using ostk::physics::unit::Length; - using ostk::astro::trajectory::orbit::messages::spacex::OPM; + using ostk::astrodynamics::trajectory::orbit::message::spacex::OPM; class_ opm( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages.cpp deleted file mode 100644 index 97ee7b8fd..000000000 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Messages.cpp +++ /dev/null @@ -1,12 +0,0 @@ -/// Apache License 2.0 - -#include - -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages(pybind11::module& aModule) -{ - // Create "messages" python submodule - auto messages = aModule.def_submodule("messages"); - - // add objects to "messages" submodule - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Messages_SpaceX(messages); -} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model.cpp index 9a422a203..52ffe2c6c 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model.cpp @@ -1,18 +1,19 @@ /// Apache License 2.0 -#include -#include -#include -#include +#include +#include +#include +#include +#include inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model(pybind11::module& aModule) { using namespace pybind11; - using ostk::astro::trajectory::orbit::Model; - using ostk::astro::trajectory::orbit::models::Kepler; - using ostk::astro::trajectory::orbit::models::Propagated; - using ostk::astro::trajectory::orbit::models::SGP4; + using ostk::astrodynamics::trajectory::orbit::Model; + using ostk::astrodynamics::trajectory::orbit::model::Kepler; + using ostk::astrodynamics::trajectory::orbit::model::Propagated; + using ostk::astrodynamics::trajectory::orbit::model::SGP4; class_( aModule, @@ -195,4 +196,14 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model(pybind11::mod ) ; + + // Create "model" python submodule + auto model = aModule.def_submodule("model"); + + // add objects to "model" submodule + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Kepler(model); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_SGP4(model); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Tabulated(model); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Propagated(model); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean(model); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler.cpp similarity index 94% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler.cpp index c29a751a8..9645d6685 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler.cpp @@ -1,10 +1,10 @@ /// Apache License 2.0 -#include +#include -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Kepler(pybind11::module& aModule) { using namespace pybind11; @@ -15,11 +15,11 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler(pybin using ostk::physics::unit::Derived; using ostk::physics::unit::Length; - using ostk::astro::trajectory::orbit::models::Kepler; - using ostk::astro::trajectory::orbit::models::kepler::COE; + using ostk::astrodynamics::trajectory::orbit::model::Kepler; + using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; { - class_ kepler_class( + class_ kepler_class( aModule, "Kepler", R"doc( @@ -256,5 +256,5 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler(pybin // Create "kepler" python submodule auto kepler = aModule.def_submodule("kepler"); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler_COE(kepler); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Kepler_COE(kepler); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.cpp similarity index 88% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.cpp index d630e90ea..37f0f2770 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.cpp @@ -2,10 +2,10 @@ #include -#include +#include -#include -#include +#include +#include using namespace pybind11; @@ -13,8 +13,8 @@ using ostk::core::type::Real; using ostk::physics::unit::Length; using ostk::physics::unit::Angle; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; // Trampoline class for virtual member functions class PyBrouwerLyddaneMean : public BrouwerLyddaneMean @@ -45,7 +45,7 @@ class PyBrouwerLyddaneMean : public BrouwerLyddaneMean } }; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean(pybind11::module& aModule) { { class_ brouwerLyddaneMean( @@ -153,9 +153,9 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLydda // Create "brouwerLyddaneMean" python submodule auto brouwerLyddaneMean = aModule.def_submodule("brouwerLyddaneMean"); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMeanShort( + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMeanShort( brouwerLyddaneMean ); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMeanLong(brouwerLyddaneMean + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMeanLong(brouwerLyddaneMean ); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.cpp similarity index 90% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.cpp index ccca8f57f..fb12c0d3a 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMeanLong( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMeanLong( pybind11::module& aModule ) { @@ -13,8 +13,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLydda using ostk::physics::unit::Angle; using ostk::physics::unit::Length; - using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; - using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanLong; + using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; + using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanLong; class_ brouwerLyddaneMeanLong( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.cpp similarity index 90% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.cpp index 10be121a8..d163afed0 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMeanShort( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMeanShort( pybind11::module& aModule ) { @@ -13,8 +13,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLydda using ostk::physics::unit::Angle; using ostk::physics::unit::Length; - using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; - using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanShort; + using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; + using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanShort; class_ brouwerLyddaneMeanShort( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/COE.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/COE.cpp similarity index 98% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/COE.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/COE.cpp index 81f9585f5..ba803d569 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Kepler/COE.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Kepler/COE.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler_COE(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Kepler_COE(pybind11::module& aModule) { using namespace pybind11; @@ -11,7 +11,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler_COE(p using ostk::physics::unit::Angle; using ostk::physics::unit::Length; - using ostk::astro::trajectory::orbit::models::kepler::COE; + using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; class_ coe( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Propagated.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Propagated.cpp similarity index 93% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Propagated.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Propagated.cpp index 23c7ba599..35cca97fd 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Propagated.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Propagated.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Propagated(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Propagated(pybind11::module& aModule) { using namespace pybind11; @@ -12,12 +12,12 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Propagated(p using ostk::physics::time::Instant; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::Propagator; - using ostk::astro::trajectory::orbit::models::Propagated; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::Propagator; + using ostk::astrodynamics::trajectory::orbit::model::Propagated; { - class_ propagated_class( + class_ propagated_class( aModule, "Propagated", R"doc( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4.cpp similarity index 87% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4.cpp index 142a7ccb0..874d90462 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4.cpp @@ -1,18 +1,18 @@ /// Apache License 2.0 -#include +#include -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_SGP4(pybind11::module& aModule) { using namespace pybind11; - using ostk::astro::trajectory::orbit::models::SGP4; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::SGP4; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { - class_( + class_( aModule, "SGP4", R"doc( @@ -122,5 +122,5 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4(pybind1 auto sgp4 = aModule.def_submodule("sgp4"); // Add objects to "sgp4" python submodule - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4_TLE(sgp4); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_SGP4_TLE(sgp4); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4/TLE.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4/TLE.cpp similarity index 98% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4/TLE.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4/TLE.cpp index f47246ae1..8119dfab2 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/SGP4/TLE.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/SGP4/TLE.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4_TLE(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_SGP4_TLE(pybind11::module& aModule) { using namespace pybind11; @@ -14,7 +14,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4_TLE(pyb using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Tabulated.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Tabulated.cpp similarity index 92% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Tabulated.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Tabulated.cpp index d2fa51ee2..4b06afe5a 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models/Tabulated.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Model/Tabulated.cpp @@ -1,18 +1,18 @@ /// Apache License 2.0 -#include +#include using namespace pybind11; using ostk::core::container::Array; using ostk::core::type::Integer; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::Tabulated; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::Tabulated; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Tabulated(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Model_Tabulated(pybind11::module& aModule) { - class_ tabulated_class( + class_ tabulated_class( aModule, "Tabulated", R"doc( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models.cpp deleted file mode 100644 index 380b1fe2d..000000000 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Models.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/// Apache License 2.0 - -#include -#include -#include -#include -#include - -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models(pybind11::module& aModule) -{ - // Create "models" python submodule - auto models = aModule.def_submodule("models"); - - // add objects to "models" submodule - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Kepler(models); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_SGP4(models); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Tabulated(models); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_Propagated(models); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Models_BrouwerLyddaneMean(models); -} diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Pass.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Pass.cpp index d615b7afb..79975aacb 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Pass.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Orbit/Pass.cpp @@ -10,7 +10,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Orbit_Pass(pybind11::modu using ostk::physics::time::Interval; - using ostk::astro::trajectory::orbit::Pass; + using ostk::astrodynamics::trajectory::orbit::Pass; class_ pass_class( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Propagator.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Propagator.cpp index b752a9c0a..c9f43c5d4 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Propagator.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Propagator.cpp @@ -12,12 +12,12 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Propagator(pybind11::modu using ostk::physics::Environment; using ostk::physics::time::Instant; - using ostk::astro::trajectory::state::NumericalSolver; - using ostk::astro::EventCondition; - using ostk::astro::Dynamics; - using ostk::astro::flight::system::SatelliteSystem; - using ostk::astro::trajectory::Propagator; - using ostk::astro::trajectory::State; + using ostk::astrodynamics::trajectory::state::NumericalSolver; + using ostk::astrodynamics::EventCondition; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::flight::system::SatelliteSystem; + using ostk::astrodynamics::trajectory::Propagator; + using ostk::astrodynamics::trajectory::State; class_( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Segment.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Segment.cpp index 3fd206d28..cd8ebceb2 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Segment.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Segment.cpp @@ -12,10 +12,10 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Segment(pybind11::module& using ostk::physics::time::Duration; - using ostk::astro::trajectory::state::NumericalSolver; - using ostk::astro::trajectory::state::CoordinatesSubset; - using ostk::astro::trajectory::Segment; - using ostk::astro::Dynamics; + using ostk::astrodynamics::trajectory::state::NumericalSolver; + using ostk::astrodynamics::trajectory::state::CoordinateSubset; + using ostk::astrodynamics::trajectory::Segment; + using ostk::astrodynamics::Dynamics; class_ segment( aModule, @@ -210,17 +210,17 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Segment(pybind11::module& &Segment::Solution::getDynamicsContribution, arg("dynamics"), arg("frame"), - arg("coordinates_subsets") = Array>::Empty(), + arg("coordinate_subsets") = Array>::Empty(), R"doc( Compute the contribution of the provided dynamics in the provided frame for all states associated with the segment. Args: dynamics (Dynamics): The dynamics. frame (Frame): The frame. - coordinates_subsets (list[CoordinatesSubset], optional): A subset of the dynamics writing coordinates subsets to consider. + coordinate_subsets (list[CoordinateSubset], optional): A subset of the dynamics writing coordinate subsets to consider. Returns: - MatrixXd: The matrix of dynamics contributions for the selected coordinates subsets of the dynamics. + MatrixXd: The matrix of dynamics contributions for the selected coordinate subsets of the dynamics. )doc" ) diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Sequence.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Sequence.cpp index bb2a027ac..8dde9fe7f 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Sequence.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/Sequence.cpp @@ -13,11 +13,11 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_Sequence(pybind11::module using ostk::physics::time::Duration; - using ostk::astro::trajectory::state::NumericalSolver; - using ostk::astro::trajectory::Sequence; - using ostk::astro::trajectory::Segment; - using ostk::astro::Dynamics; - using ostk::astro::flight::system::SatelliteSystem; + using ostk::astrodynamics::trajectory::state::NumericalSolver; + using ostk::astrodynamics::trajectory::Sequence; + using ostk::astrodynamics::trajectory::Segment; + using ostk::astrodynamics::Dynamics; + using ostk::astrodynamics::flight::system::SatelliteSystem; class_ sequence( aModule, diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State.cpp index 5f12347b2..4444bcc28 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State.cpp @@ -2,8 +2,8 @@ #include -#include -#include +#include +#include #include inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& aModule) @@ -20,8 +20,8 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::state::CoordinatesBroker; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::state::CoordinateBroker; class_( aModule, @@ -73,7 +73,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a arg("attitude_frame") ) .def( - init&, const Shared&>(), + init&, const Shared&>(), R"doc( Constructor with a pre-defined Coordinates Broker. @@ -81,19 +81,19 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a instant (Instant): An instant coordinates (numpy.ndarray): The coordinates at the instant in International System of Units frame (Frame): The reference frame in which the coordinates are referenced to and resolved in - coordinates_broker (CoordinatesBroker): The coordinates broker associated to the coordinates + coordinate_broker (CoordinateBroker): The coordinate broker associated to the coordinates )doc", arg("instant"), arg("coordinates"), arg("frame"), - arg("coordinates_broker") + arg("coordinate_broker") ) .def( init< const Instant&, const VectorXd&, const Shared&, - const Array>&>(), + const Array>&>(), R"doc( Constructor with coordinate subsets. @@ -101,12 +101,12 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a instant (Instant): An instant coordinates (numpy.ndarray): The coordinates at the instant in International System of Units frame (Frame): The reference frame in which the coordinates are referenced to and resolved in - coordinates_subsets (CoordinatesBroker): The coordinates subsets associated to the coordinates + coordinate_subsets (CoordinateBroker): The coordinate subsets associated to the coordinates )doc", arg("instant"), arg("coordinates"), arg("frame"), - arg("coordinates_subsets") + arg("coordinate_subsets") ) .def(init(), arg("state")) @@ -199,13 +199,13 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a )doc" ) .def( - "get_coordinates_subsets", - &State::getCoordinatesSubsets, + "get_coordinate_subsets", + &State::getCoordinateSubsets, R"doc( - Get the coordinates subsets associated to the state. + Get the coordinate subsets associated to the state. Returns: - list[CoordinatesSubset]: The coordinates subsets associated to the state. + list[CoordinateSubset]: The coordinate subsets associated to the state. )doc" ) .def( @@ -226,7 +226,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a Check if the state has a given subset. Args: - subset (CoordinatesSubset): The subset to check. + subset (CoordinateSubset): The subset to check. Returns: bool: True if the state has the subset, False otherwise. @@ -240,12 +240,12 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a Extract the coordinates associated to a subset of the state. Args: - coordinates_subset (CoordinatesSubset): The coordinates subset to extract. + coordinate_subset (CoordinateSubset): The coordinate subset to extract. Returns: np.array: The coordinates associated to the subset. )doc", - arg("coordinates_subset") + arg("coordinate_subset") ) .def( "extract_coordinates", @@ -254,12 +254,12 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a Extract the coordinates associated to a set of subsets of the state. Args: - coordinates_subsets (list[CoordinatesSubset]): The coordinates subsets to extract. + coordinate_subsets (list[CoordinateSubset]): The coordinate subsets to extract. Returns: np.array: The coordinates associated to the subsets. )doc", - arg("coordinates_subsets") + arg("coordinate_subsets") ) .def( @@ -293,7 +293,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State(pybind11::module& a // Create "state" python submodule auto state = aModule.def_submodule("state"); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(state); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(state); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateBroker(state); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset(state); OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_NumericalSolver(state); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesBroker.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateBroker.cpp similarity index 53% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesBroker.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateBroker.cpp index f87488ec6..276f42f5f 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesBroker.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateBroker.cpp @@ -1,8 +1,8 @@ /// Apache License 2.0 -#include +#include -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateBroker(pybind11::module& aModule) { using namespace pybind11; @@ -10,14 +10,14 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(p using ostk::mathematics::object::VectorXd; - using ostk::astro::trajectory::state::CoordinatesBroker; - using ostk::astro::trajectory::state::CoordinatesSubset; + using ostk::astrodynamics::trajectory::state::CoordinateBroker; + using ostk::astrodynamics::trajectory::state::CoordinateSubset; - class_>( + class_>( aModule, - "CoordinatesBroker", + "CoordinateBroker", R"doc( - Class to manage the coordinates subsets of a state. + Class to manage the coordinate subsets of a state. )doc" ) @@ -29,13 +29,13 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(p )doc" ) .def( - init>&>(), - arg("coordinates_subsets"), + init>&>(), + arg("coordinate_subsets"), R"doc( Create a broker for ther provided coordinate subsets. Args: - list[CoordinatesSubset]: The list of coordinates subsets. + list[CoordinateSubset]: The list of coordinate subsets. )doc" ) @@ -45,18 +45,18 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(p .def( "access_subsets", - &CoordinatesBroker::accessSubsets, + &CoordinateBroker::accessSubsets, R"doc( - Access the list of coordinates subsets. + Access the list of coordinate subsets. Returns: - list[CoordinatesSubset]: The list of coordinates subsets. + list[CoordinateSubset]: The list of coordinate subsets. )doc" ) .def( "get_number_of_coordinates", - &CoordinatesBroker::getNumberOfCoordinates, + &CoordinateBroker::getNumberOfCoordinates, R"doc( Get the total number of coordinates. @@ -67,67 +67,67 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(p ) .def( "get_number_of_subsets", - &CoordinatesBroker::getNumberOfSubsets, + &CoordinateBroker::getNumberOfSubsets, R"doc( - Get the number of coordinates subsets. + Get the number of coordinate subsets. Returns: - int: The number of coordinates subsets. + int: The number of coordinate subsets. )doc" ) .def( "get_subsets", - &CoordinatesBroker::getSubsets, + &CoordinateBroker::getSubsets, R"doc( - Get the list of coordinates subsets. + Get the list of coordinate subsets. Returns: - list[CoordinatesSubset]: The list of coordinates subsets. + list[CoordinateSubset]: The list of coordinate subsets. )doc" ) .def( "add_subset", - &CoordinatesBroker::addSubset, + &CoordinateBroker::addSubset, R"doc( - Add a coordinates subset. + Add a coordinate subset. Args: - coordinates_subset (CoordinatesSubset): The coordinates subset to add. + coordinate_subset (CoordinateSubset): The coordinate subset to add. )doc", - arg("coordinates_subset") + arg("coordinate_subset") ) .def( "has_subset", - overload_cast&>(&CoordinatesBroker::hasSubset, const_), - arg("coordinates_subset"), + overload_cast&>(&CoordinateBroker::hasSubset, const_), + arg("coordinate_subset"), R"doc( - Check if the coordinates broker has a given coordinates subset. + Check if the coordinate broker has a given coordinate subset. Args: - coordinates_subset (CoordinatesSubset): The coordinates subset to check. + coordinate_subset (CoordinateSubset): The coordinate subset to check. Returns: - bool: True if the coordinates broker has the coordinates subset, False otherwise. + bool: True if the coordinate broker has the coordinate subset, False otherwise. )doc" ) .def( "extract_coordinate", - overload_cast&>( - &CoordinatesBroker::extractCoordinate, const_ + overload_cast&>( + &CoordinateBroker::extractCoordinate, const_ ), arg("coordinates"), - arg("coordinates_subset"), + arg("coordinate_subset"), R"doc( Extract the coordinates of a subset from a full coordinates vector. Args: coordinates (numpy.ndarray): The full coordinates vector. - coordinates_subset (CoordinatesSubset): The coordinates subset. + coordinate_subset (CoordinateSubset): The coordinate subset. Returns: numpy.ndarray: The coordinates of the subset. @@ -136,15 +136,15 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesBroker(p ) .def( "extract_coordinates", - &CoordinatesBroker::extractCoordinates, + &CoordinateBroker::extractCoordinates, arg("coordinates"), - arg("coordinates_subsets"), + arg("coordinate_subsets"), R"doc( Extract the coordinates of multiple subsets from a full coordinates vector. Args: coordinates (numpy.ndarray): The full coordinates vector. - coordinates_subsets (list[CoordinatesSubset]): The coordinates subsets. + coordinate_subsets (list[CoordinateSubset]): The coordinate subsets. Returns: numpy.ndarray: The coordinates of the subsets. diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubset.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset.cpp similarity index 62% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubset.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset.cpp index d33d92c29..867703448 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubset.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset.cpp @@ -1,11 +1,11 @@ /// Apache License 2.0 -#include +#include -#include -#include -#include -#include +#include +#include +#include +#include using namespace pybind11; @@ -14,13 +14,13 @@ using ostk::core::type::Size; using ostk::mathematics::object::VectorXd; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; // Trampoline class for virtual member functions -class PyCoordinatesSubset : public CoordinatesSubset +class PyCoordinateSubset : public CoordinateSubset { public: - using CoordinatesSubset::CoordinatesSubset; + using CoordinateSubset::CoordinateSubset; // Trampoline (need one for each virtual function) @@ -29,18 +29,18 @@ class PyCoordinatesSubset : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override { PYBIND11_OVERRIDE( VectorXd, - CoordinatesSubset, + CoordinateSubset, add, anInstant, aFullCoordinatesVector, anotherFullCoordinatesVector, aFrameSPtr, - aCoordinatesBrokerSPtr + aCoordinateBrokerSPtr ); } @@ -49,18 +49,18 @@ class PyCoordinatesSubset : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override { PYBIND11_OVERRIDE( VectorXd, - CoordinatesSubset, + CoordinateSubset, subtract, anInstant, aFullCoordinatesVector, anotherFullCoordinatesVector, aFrameSPtr, - aCoordinatesBrokerSPtr + aCoordinateBrokerSPtr ); } @@ -69,29 +69,29 @@ class PyCoordinatesSubset : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const Shared& fromFrameSPtr, const Shared& toFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override { PYBIND11_OVERRIDE( VectorXd, - CoordinatesSubset, + CoordinateSubset, inFrame, anInstant, aFullCoordinatesVector, fromFrameSPtr, toFrameSPtr, - aCoordinatesBrokerSPtr + aCoordinateBrokerSPtr ); } }; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(pybind11::module& aModule) +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset(pybind11::module& aModule) { - class_>( + class_>( aModule, - "CoordinatesSubset", + "CoordinateSubset", R"doc( - State coordinates subset. It contains information related to a particular group of coordinates. It does not + State coordinate subset. It contains information related to a particular group of coordinates. It does not contain the coordinate values. )doc" @@ -103,51 +103,51 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p Constructor. Args: - name (str): The name of the coordinates subset. - size (int): The size of the coordinates subset. + name (str): The name of the coordinate subset. + size (int): The size of the coordinate subset. )doc", arg("name"), arg("size") ) - .def("__eq__", &CoordinatesSubset::operator==) - .def("__ne__", &CoordinatesSubset::operator!=) + .def("__eq__", &CoordinateSubset::operator==) + .def("__ne__", &CoordinateSubset::operator!=) .def( "get_id", - &CoordinatesSubset::getId, + &CoordinateSubset::getId, R"doc( - Get the identifier of the coordinates subset. + Get the identifier of the coordinate subset. Returns: - str: The identifier of the coordinates subset. + str: The identifier of the coordinate subset. )doc" ) .def( "get_name", - &CoordinatesSubset::getName, + &CoordinateSubset::getName, R"doc( - Get the name of the coordinates subset. + Get the name of the coordinate subset. Returns: - str: The name of the coordinates subset. + str: The name of the coordinate subset. )doc" ) .def( "get_size", - &CoordinatesSubset::getSize, + &CoordinateSubset::getSize, R"doc( - Get the size of the coordinates subset. + Get the size of the coordinate subset. Returns: - int: The size of the coordinates subset. + int: The size of the coordinate subset. )doc" ) .def( "add", - &CoordinatesSubset::add, + &CoordinateSubset::add, R"doc( Add the coordinates of another state to the coordinates of this state. @@ -156,7 +156,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p coordinates (numpy.ndarray): The coordinates of this state. another_coordinates (numpy.ndarray): The coordinates of the other state. frame (Frame): The reference frame of the coordinates. - coordinate_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The sum of the coordinates. @@ -170,7 +170,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p ) .def( "subtract", - &CoordinatesSubset::subtract, + &CoordinateSubset::subtract, R"doc( Subtract the coordinates of another state from the coordinates of this state. @@ -179,7 +179,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p coordinates (numpy.ndarray): The coordinates of this state. another_coordinates (numpy.ndarray): The coordinates of the other state. frame (Frame): The reference frame of the coordinates. - coordinate_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The difference of the coordinates. @@ -193,7 +193,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p ) .def( "in_frame", - &CoordinatesSubset::inFrame, + &CoordinateSubset::inFrame, R"doc( Convert the coordinates of this state from one frame to another. @@ -202,7 +202,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p coordinates (numpy.ndarray): The coordinates of this state. from_frame (Frame): The reference frame of the input coordinates. to_frame (Frame): The reference frame of the output coordinates. - coordinate_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The coordinates in the output frame. @@ -217,43 +217,43 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubset(p .def_static( "mass", - &CoordinatesSubset::Mass, + &CoordinateSubset::Mass, R"doc( - Get the mass coordinates subset. + Get the mass coordinate subset. Returns: - CoordinatesSubset: The mass coordinates subset. + CoordinateSubset: The mass coordinate subset. )doc" ) .def_static( "surface_area", - &CoordinatesSubset::SurfaceArea, + &CoordinateSubset::SurfaceArea, R"doc( - Get the surface area coordinates subset. + Get the surface area coordinate subset. Returns: - CoordinatesSubset: The surface area coordinates subset. + CoordinateSubset: The surface area coordinate subset. )doc" ) .def_static( "drag_coefficient", - &CoordinatesSubset::DragCoefficient, + &CoordinateSubset::DragCoefficient, R"doc( - Get the drag coefficient coordinates subset. + Get the drag coefficient coordinate subset. Returns: - CoordinatesSubset: The drag coefficient coordinates subset. + CoordinateSubset: The drag coefficient coordinate subset. )doc" ) ; - // Create "coordinates_subset" python submodule - auto coordinates_subset = aModule.def_submodule("coordinates_subset"); + // Create "coordinate_subset" python submodule + auto coordinate_subset = aModule.def_submodule("coordinate_subset"); - // Add objects to "coordinates_subset" submodule - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_AngularVelocity(coordinates_subset); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion(coordinates_subset); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_CartesianPosition(coordinates_subset); - OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_CartesianVelocity(coordinates_subset); + // Add objects to "coordinate_subset" submodule + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_AngularVelocity(coordinate_subset); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_AttitudeQuaternion(coordinate_subset); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_CartesianPosition(coordinate_subset); + OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_CartesianVelocity(coordinate_subset); } diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AngularVelocity.cpp similarity index 78% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AngularVelocity.cpp index 1caba2ef2..0fc1890a3 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AngularVelocity.cpp @@ -1,25 +1,25 @@ /// Apache License 2.0 -#include +#include using namespace pybind11; using ostk::core::type::String; using ostk::core::type::Shared; -using ostk::astro::trajectory::state::coordinatessubsets::AngularVelocity; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AngularVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_AngularVelocity( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_AngularVelocity( pybind11::module& aModule ) { - class_, CoordinatesSubset>( + class_, CoordinateSubset>( aModule, "AngularVelocity", R"doc( - Angular velocity coordinates subset. + Angular velocity coordinate subset. Defined with respect to a reference frame and a Attitude quaternion. @@ -51,7 +51,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ coordinates (numpy.ndarray): The Angular velocity to convert. from_frame (str): The reference frame of the input Angular velocity. to_frame (str): The reference frame of the output Angular velocity. - coordinates_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The Angular velocity in the output reference frame. @@ -61,7 +61,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ arg("coordinates"), arg("from_frame"), arg("to_frame"), - arg("coordinates_broker") + arg("coordinate_broker") ) .def_static( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp similarity index 82% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp index e05e063b5..33c993287 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp @@ -1,24 +1,24 @@ /// Apache License 2.0 -#include +#include using namespace pybind11; using ostk::core::type::String; using ostk::core::type::Shared; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_AttitudeQuaternion( pybind11::module& aModule ) { - class_, CoordinatesSubset>( + class_, CoordinateSubset>( aModule, "AttitudeQuaternion", R"doc( - Attitude quaternion coordinates subset. + Attitude quaternion coordinate subset. Defined with respect to a reference frame. @@ -44,7 +44,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ arg("coordinates"), arg("from_frame"), arg("to_frame"), - arg("coordinates_broker"), + arg("coordinate_broker"), R"doc( Convert a Attitude quaternion from one reference frame to another. @@ -53,7 +53,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ coordinates (numpy.ndarray): The Attitude quaternion to convert. from_frame (str): The reference frame of the input Attitude quaternion. to_frame (str): The reference frame of the output Attitude quaternion. - coordinates_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The Attitude quaternion in the output reference frame. diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianPosition.cpp similarity index 82% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianPosition.cpp index 60029937f..a2e317eed 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianPosition.cpp @@ -1,24 +1,24 @@ /// Apache License 2.0 -#include +#include using namespace pybind11; using ostk::core::type::String; using ostk::core::type::Shared; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_CartesianPosition( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_CartesianPosition( pybind11::module& aModule ) { - class_, CoordinatesSubset>( + class_, CoordinateSubset>( aModule, "CartesianPosition", R"doc( - Cartesian position coordinates subset. + Cartesian position coordinate subset. Defined with respect to a reference frame. @@ -44,7 +44,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ arg("coordinates"), arg("from_frame"), arg("to_frame"), - arg("coordinates_broker"), + arg("coordinate_broker"), R"doc( Convert a Cartesian position from one reference frame to another. @@ -53,7 +53,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ coordinates (numpy.ndarray): The Cartesian position to convert. from_frame (str): The reference frame of the input Cartesian position. to_frame (str): The reference frame of the output Cartesian position. - coordinates_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The Cartesian position in the output reference frame. diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp similarity index 83% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp index 6249a6c01..07e31317f 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp @@ -1,24 +1,24 @@ /// Apache License 2.0 -#include +#include using namespace pybind11; using ostk::core::type::String; using ostk::core::type::Shared; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_CartesianVelocity( +inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinateSubset_CartesianVelocity( pybind11::module& aModule ) { - class_, CoordinatesSubset>( + class_, CoordinateSubset>( aModule, "CartesianVelocity", R"doc( - Cartesian velocity coordinates subset. + Cartesian velocity coordinate subset. Defined with respect to a reference frame and a Cartesian position. @@ -50,7 +50,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ coordinates (numpy.ndarray): The Cartesian velocity to convert. from_frame (str): The reference frame of the input Cartesian velocity. to_frame (str): The reference frame of the output Cartesian velocity. - coordinates_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: numpy.ndarray: The Cartesian velocity in the output reference frame. @@ -60,7 +60,7 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_CoordinatesSubsets_ arg("coordinates"), arg("from_frame"), arg("to_frame"), - arg("coordinates_broker") + arg("coordinate_broker") ) .def_static( diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/NumericalSolver.cpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/NumericalSolver.cpp index 7efaada07..641490f44 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/NumericalSolver.cpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Trajectory/State/NumericalSolver.cpp @@ -11,10 +11,10 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_State_NumericalSolver(pyb using ostk::physics::time::Instant; using MathNumericalSolver = ostk::mathematics::solver::NumericalSolver; - using ostk::astro::EventCondition; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::state::NumericalSolver; - using ostk::astro::RootSolver; + using ostk::astrodynamics::EventCondition; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::state::NumericalSolver; + using ostk::astrodynamics::RootSolver; typedef std::function( aModule, @@ -26,15 +26,15 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_StateBuilder(pybind11::mo ) .def( - init&, const Array>&>(), + init&, const Array>&>(), arg("frame"), - arg("coordinates_subsets"), + arg("coordinate_subsets"), R"doc( Construct a new `StateBuilder` object. Arguments: frame (Frame): The reference frame. - coordinates_subsets list[CoordinatesSubset]: The coordinates subsets. + coordinate_subsets list[CoordinateSubset]: The coordinate subsets. Returns: StateBuilder @@ -42,15 +42,15 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_StateBuilder(pybind11::mo )doc" ) .def( - init&, const Shared&>(), + init&, const Shared&>(), arg("frame"), - arg("coordinates_broker"), + arg("coordinate_broker"), R"doc( Construct a new `StateBuilder` object. Arguments: frame (Frame): The reference frame. - coordinates_broker (CoordinatesBroker): The coordinates broker. + coordinate_broker (CoordinateBroker): The coordinate broker. Returns: StateBuilder: The new `StateBuilder` object. @@ -94,37 +94,37 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_StateBuilder(pybind11::mo ) .def( "__add__", - [](const StateBuilder& aStateBuilder, const Shared& aCoordinatesSubsetSPtr) + [](const StateBuilder& aStateBuilder, const Shared& aCoordinateSubsetSPtr) { - return aStateBuilder + aCoordinatesSubsetSPtr; + return aStateBuilder + aCoordinateSubsetSPtr; }, is_operator(), R"doc( - Add a coordinates subset to the `StateBuilder`. + Add a coordinate subset to the `StateBuilder`. Arguments: - coordinates_subsets (CoordinatesSubset): The coordinates subset to add. + coordinate_subsets (CoordinateSubset): The coordinate subset to add. Returns: - StateBuilder: The `StateBuilder` with the added coordinates subset. + StateBuilder: The `StateBuilder` with the added coordinate subset. )doc" ) .def( "__sub__", - [](const StateBuilder& aStateBuilder, const Shared& aCoordinatesSubsetSPtr) + [](const StateBuilder& aStateBuilder, const Shared& aCoordinateSubsetSPtr) { - return aStateBuilder - aCoordinatesSubsetSPtr; + return aStateBuilder - aCoordinateSubsetSPtr; }, is_operator(), R"doc( - Remove a coordinates subset from the `StateBuilder`. + Remove a coordinate subset from the `StateBuilder`. Arguments: - coordinates_subset (CoordinatesSubset): The coordinates subset to remove. + coordinate_subset (CoordinateSubset): The coordinate subset to remove. Returns: - StateBuilder: The `StateBuilder` with the removed coordinates subset. + StateBuilder: The `StateBuilder` with the removed coordinate subset. )doc" ) @@ -195,24 +195,24 @@ inline void OpenSpaceToolkitAstrodynamicsPy_Trajectory_StateBuilder(pybind11::mo ) .def( - "get_coordinates_subsets", - &StateBuilder::getCoordinatesSubsets, + "get_coordinate_subsets", + &StateBuilder::getCoordinateSubsets, R"doc( - Get the coordinates subsets of the `StateBuilder`. + Get the coordinate subsets of the `StateBuilder`. Returns: - Array>: The coordinates subsets of the `StateBuilder`. + Array>: The coordinate subsets of the `StateBuilder`. )doc" ) .def( - "access_coordinates_broker", - &StateBuilder::accessCoordinatesBroker, + "access_coordinate_broker", + &StateBuilder::accessCoordinateBroker, R"doc( - Access the coordinates broker of the `StateBuilder`. + Access the coordinate broker of the `StateBuilder`. Returns: - CoordinatesBroker: The coordinates broker of the `StateBuilder`. + CoordinateBroker: The coordinate broker of the `StateBuilder`. )doc" ) diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/ArrayCasting.hpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/ArrayCasting.hpp similarity index 100% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/ArrayCasting.hpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/ArrayCasting.hpp diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/IterableConverter.hpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/IterableConverter.hpp similarity index 95% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/IterableConverter.hpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/IterableConverter.hpp index 80112d70c..8e02b543b 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/IterableConverter.hpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/IterableConverter.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkitAstrodynamicsPy_Utilities_IterableConverter__ -#define __OpenSpaceToolkitAstrodynamicsPy_Utilities_IterableConverter__ +#ifndef __OpenSpaceToolkitAstrodynamicsPy_Utility_IterableConverter__ +#define __OpenSpaceToolkitAstrodynamicsPy_Utility_IterableConverter__ #include diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/MapConverter.hpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/MapConverter.hpp similarity index 96% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/MapConverter.hpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/MapConverter.hpp index 55c1b1d32..2786f1f40 100644 --- a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/MapConverter.hpp +++ b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/MapConverter.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkitAstrodynamicsPy_Utilities_MapConverter__ -#define __OpenSpaceToolkitAstrodynamicsPy_Utilities_MapConverter__ +#ifndef __OpenSpaceToolkitAstrodynamicsPy_Utility_MapConverter__ +#define __OpenSpaceToolkitAstrodynamicsPy_Utility_MapConverter__ // https://stackoverflow.com/questions/42952781/how-to-wrap-a-c-class-with-a-constructor-that-takes-a-stdmap-or-stdvector // https://stackoverflow.com/questions/6116345/boostpython-possible-to-automatically-convert-from-dict-stdmap diff --git a/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/ShiftToString.hpp b/bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/ShiftToString.hpp similarity index 100% rename from bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utilities/ShiftToString.hpp rename to bindings/python/src/OpenSpaceToolkitAstrodynamicsPy/Utility/ShiftToString.hpp diff --git a/bindings/python/test/access/test_generator.py b/bindings/python/test/access/test_generator.py index d69d41dc0..3f5337a64 100644 --- a/bindings/python/test/access/test_generator.py +++ b/bindings/python/test/access/test_generator.py @@ -16,8 +16,8 @@ from ostk.astrodynamics import Trajectory from ostk.astrodynamics.trajectory import Orbit -from ostk.astrodynamics.trajectory.orbit.models import Kepler -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model import Kepler +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE from ostk.astrodynamics import Access from ostk.astrodynamics.access import Generator diff --git a/bindings/python/test/conjunction/messages/ccsds/__init__.py b/bindings/python/test/conjunction/message/ccsds/__init__.py similarity index 100% rename from bindings/python/test/conjunction/messages/ccsds/__init__.py rename to bindings/python/test/conjunction/message/ccsds/__init__.py diff --git a/bindings/python/test/conjunction/messages/ccsds/conftest.py b/bindings/python/test/conjunction/message/ccsds/conftest.py similarity index 100% rename from bindings/python/test/conjunction/messages/ccsds/conftest.py rename to bindings/python/test/conjunction/message/ccsds/conftest.py diff --git a/bindings/python/test/conjunction/messages/ccsds/data/cdm.json b/bindings/python/test/conjunction/message/ccsds/data/cdm.json similarity index 100% rename from bindings/python/test/conjunction/messages/ccsds/data/cdm.json rename to bindings/python/test/conjunction/message/ccsds/data/cdm.json diff --git a/bindings/python/test/conjunction/messages/ccsds/test_cdm.py b/bindings/python/test/conjunction/message/ccsds/test_cdm.py similarity index 99% rename from bindings/python/test/conjunction/messages/ccsds/test_cdm.py rename to bindings/python/test/conjunction/message/ccsds/test_cdm.py index a91cfb498..4068a2460 100644 --- a/bindings/python/test/conjunction/messages/ccsds/test_cdm.py +++ b/bindings/python/test/conjunction/message/ccsds/test_cdm.py @@ -17,7 +17,7 @@ from ostk.physics.coordinate import Velocity from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.conjunction.messages.ccsds import CDM +from ostk.astrodynamics.conjunction.message.ccsds import CDM @pytest.fixture diff --git a/bindings/python/test/dynamics/test_atmospheric_drag.py b/bindings/python/test/dynamics/test_atmospheric_drag.py index 2f3cf83a4..8992c4582 100644 --- a/bindings/python/test/dynamics/test_atmospheric_drag.py +++ b/bindings/python/test/dynamics/test_atmospheric_drag.py @@ -20,14 +20,14 @@ from ostk.physics.environment.magnetic import Earth as EarthMagneticModel from ostk.physics.environment.object.celestial import Earth -from ostk.astrodynamics.trajectory.state import CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity -from ostk.astrodynamics.trajectory.state import CoordinatesBroker +from ostk.astrodynamics.trajectory.state import CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state import CoordinateBroker from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.state import CoordinatesSubset, CoordinatesBroker -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state import CoordinateSubset, CoordinateBroker +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( CartesianPosition, CartesianVelocity, ) @@ -65,14 +65,14 @@ def dynamics(earth: Earth) -> AtmosphericDrag: @pytest.fixture -def coordinates_broker() -> CoordinatesBroker: - return CoordinatesBroker( +def coordinate_broker() -> CoordinateBroker: + return CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), - CoordinatesSubset.surface_area(), - CoordinatesSubset.drag_coefficient(), + CoordinateSubset.mass(), + CoordinateSubset.surface_area(), + CoordinateSubset.drag_coefficient(), ] ) @@ -100,14 +100,14 @@ def state( dry_mass: float, surface_area: float, drag_coefficient: float, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ) -> State: coordinates = ( position_coordinates + velocity_coordinates + [dry_mass, surface_area, drag_coefficient] ) - return State(instant, coordinates, Frame.GCRF(), coordinates_broker) + return State(instant, coordinates, Frame.GCRF(), coordinate_broker) class TestAtmosphericDrag: diff --git a/bindings/python/test/dynamics/test_dynamics.py b/bindings/python/test/dynamics/test_dynamics.py index 4b8cafc8e..0f8934767 100644 --- a/bindings/python/test/dynamics/test_dynamics.py +++ b/bindings/python/test/dynamics/test_dynamics.py @@ -5,7 +5,7 @@ from ostk.physics import Environment from ostk.astrodynamics import Dynamics -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition @pytest.fixture @@ -24,10 +24,10 @@ class MyDynamics(Dynamics): def is_defined(): return True - def get_read_coordinates_subsets(self): + def get_read_coordinate_subsets(self): return [CartesianPosition.default()] - def get_write_coordinates_subsets(self): + def get_write_coordinate_subsets(self): return [CartesianPosition.default()] def compute_contribution(self, instant, state_vector, frame): diff --git a/bindings/python/test/dynamics/test_tabulated.py b/bindings/python/test/dynamics/test_tabulated.py index 8e2f28819..fd37eb732 100644 --- a/bindings/python/test/dynamics/test_tabulated.py +++ b/bindings/python/test/dynamics/test_tabulated.py @@ -10,8 +10,8 @@ from ostk.physics.time import Scale from ostk.physics.coordinate import Frame -from ostk.astrodynamics.trajectory.state import CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state import CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity from ostk.astrodynamics import Dynamics from ostk.astrodynamics.dynamics import Tabulated @@ -51,7 +51,7 @@ def contribution_profile() -> np.ndarray: @pytest.fixture -def coordinates_subsets() -> list[CoordinatesSubset]: +def coordinate_subsets() -> list[CoordinateSubset]: return [ CartesianVelocity.default(), ] @@ -66,10 +66,10 @@ def frame() -> Frame: def dynamics( instants: list[Instant], contribution_profile: np.ndarray, - coordinates_subsets: list[CoordinatesSubset], + coordinate_subsets: list[CoordinateSubset], frame: Frame, ) -> Tabulated: - return Tabulated(instants, contribution_profile, coordinates_subsets, frame) + return Tabulated(instants, contribution_profile, coordinate_subsets, frame) class TestTabulated: diff --git a/bindings/python/test/dynamics/test_thruster.py b/bindings/python/test/dynamics/test_thruster.py index acd249590..752cadbf0 100644 --- a/bindings/python/test/dynamics/test_thruster.py +++ b/bindings/python/test/dynamics/test_thruster.py @@ -14,10 +14,10 @@ from ostk.physics.time import Scale from ostk.physics.coordinate import Frame -from ostk.astrodynamics.trajectory.state import CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity -from ostk.astrodynamics.trajectory.state import CoordinatesBroker +from ostk.astrodynamics.trajectory.state import CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state import CoordinateBroker from ostk.astrodynamics.trajectory import State from ostk.astrodynamics.flight.system import PropulsionSystem @@ -77,22 +77,22 @@ def dynamics( @pytest.fixture -def coordinates_broker() -> CoordinatesBroker: - return CoordinatesBroker( +def coordinate_broker() -> CoordinateBroker: + return CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), + CoordinateSubset.mass(), ] ) @pytest.fixture -def state(coordinates_broker: CoordinatesBroker) -> State: +def state(coordinate_broker: CoordinateBroker) -> State: instant: Instant = Instant.date_time(DateTime(2021, 3, 20, 12, 0, 0), Scale.UTC) coordinates: list = [7000000.0, 0.0, 0.0, 0.0, 7546.05329, 0.0, 105.0] - return State(instant, coordinates, Frame.GCRF(), coordinates_broker) + return State(instant, coordinates, Frame.GCRF(), coordinate_broker) class TestThruster: @@ -105,8 +105,8 @@ def test_constructors(self, dynamics: Thruster): def test_getters(self, dynamics: Thruster): assert dynamics.get_satellite_system() is not None assert dynamics.get_guidance_law() is not None - assert dynamics.get_read_coordinates_subsets() is not None - assert dynamics.get_write_coordinates_subsets() is not None + assert dynamics.get_read_coordinate_subsets() is not None + assert dynamics.get_write_coordinate_subsets() is not None def test_compute_contribution_success(self, dynamics: Thruster, state: State): contribution = dynamics.compute_contribution( @@ -121,7 +121,7 @@ def test_compute_contribution_success(self, dynamics: Thruster, state: State): def test_compute_contribution_failure_out_of_fuel( self, satellite_system: SatelliteSystem, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, dynamics: Thruster, ): instant: Instant = Instant.date_time(DateTime(2021, 3, 20, 12, 0, 0), Scale.UTC) @@ -134,7 +134,7 @@ def test_compute_contribution_failure_out_of_fuel( 0.0, satellite_system.get_mass().in_kilograms(), ] - state = State(instant, coordinates, Frame.GCRF(), coordinates_broker) + state = State(instant, coordinates, Frame.GCRF(), coordinate_broker) with pytest.raises(RuntimeError): contribution = dynamics.compute_contribution( diff --git a/bindings/python/test/flight/test_profile.py b/bindings/python/test/flight/test_profile.py index 99ae436e4..2b105d482 100644 --- a/bindings/python/test/flight/test_profile.py +++ b/bindings/python/test/flight/test_profile.py @@ -23,8 +23,8 @@ from ostk.astrodynamics.trajectory import Orbit from ostk.astrodynamics.trajectory import State from ostk.astrodynamics.flight import Profile -from ostk.astrodynamics.flight.profile.models import Transform as TransformModel -from ostk.astrodynamics.flight.profile.models import Tabulated as TabulatedModel +from ostk.astrodynamics.flight.profile.model import Transform as TransformModel +from ostk.astrodynamics.flight.profile.model import Tabulated as TabulatedModel @pytest.fixture diff --git a/bindings/python/test/guidance_law/test_qlaw.py b/bindings/python/test/guidance_law/test_qlaw.py index a6d1b9f08..64e227858 100644 --- a/bindings/python/test/guidance_law/test_qlaw.py +++ b/bindings/python/test/guidance_law/test_qlaw.py @@ -15,7 +15,7 @@ from ostk.physics.unit import Derived -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE from ostk.astrodynamics import GuidanceLaw from ostk.astrodynamics.guidance_law import QLaw diff --git a/bindings/python/test/solvers/test_finite_difference_solver.py b/bindings/python/test/solvers/test_finite_difference_solver.py index d76c2bda7..5f5feccbe 100644 --- a/bindings/python/test/solvers/test_finite_difference_solver.py +++ b/bindings/python/test/solvers/test_finite_difference_solver.py @@ -11,7 +11,7 @@ from ostk.astrodynamics.solvers import FiniteDifferenceSolver from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.state import CoordinatesSubset +from ostk.astrodynamics.trajectory.state import CoordinateSubset @pytest.fixture @@ -36,8 +36,8 @@ def finite_difference_solver(request, step_percentage: float, step_duration: Dur @pytest.fixture -def coordinates_subsets() -> list[CoordinatesSubset]: - return [CoordinatesSubset("Position", 1), CoordinatesSubset("Velocity", 1)] +def coordinate_subsets() -> list[CoordinateSubset]: + return [CoordinateSubset("Position", 1), CoordinateSubset("Velocity", 1)] @pytest.fixture @@ -47,9 +47,9 @@ def frame() -> Frame: @pytest.fixture def state( - initial_instant: Instant, frame: Frame, coordinates_subsets: list[CoordinatesSubset] + initial_instant: Instant, frame: Frame, coordinate_subsets: list[CoordinateSubset] ): - return State(initial_instant, [1, 0], frame, coordinates_subsets) + return State(initial_instant, [1, 0], frame, coordinate_subsets) @pytest.fixture diff --git a/bindings/python/test/solvers/test_temporal_condition_solver.py b/bindings/python/test/solvers/test_temporal_condition_solver.py index 0cee7ee9f..7525c852f 100644 --- a/bindings/python/test/solvers/test_temporal_condition_solver.py +++ b/bindings/python/test/solvers/test_temporal_condition_solver.py @@ -12,8 +12,8 @@ from ostk.physics import Environment from ostk.astrodynamics.trajectory import Orbit -from ostk.astrodynamics.trajectory.orbit.models import Kepler -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model import Kepler +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE from ostk.astrodynamics.access import Generator from ostk.astrodynamics.solvers import TemporalConditionSolver diff --git a/bindings/python/test/test_access.py b/bindings/python/test/test_access.py index db3b197d6..8559e02d9 100644 --- a/bindings/python/test/test_access.py +++ b/bindings/python/test/test_access.py @@ -30,9 +30,9 @@ Orbit = astrodynamics.trajectory.Orbit State = astrodynamics.trajectory.State Pass = astrodynamics.trajectory.orbit.Pass -Kepler = astrodynamics.trajectory.orbit.models.Kepler -COE = astrodynamics.trajectory.orbit.models.kepler.COE -SGP4 = astrodynamics.trajectory.orbit.models.sgp4 +Kepler = astrodynamics.trajectory.orbit.model.Kepler +COE = astrodynamics.trajectory.orbit.model.kepler.COE +SGP4 = astrodynamics.trajectory.orbit.model.sgp4 Access = astrodynamics.Access diff --git a/bindings/python/test/test_display.py b/bindings/python/test/test_display.py index 844884a73..9754214fd 100644 --- a/bindings/python/test/test_display.py +++ b/bindings/python/test/test_display.py @@ -20,8 +20,8 @@ from ostk.astrodynamics.access import Generator as AccessGenerator from ostk.astrodynamics.trajectory import Orbit from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.orbit.models import SGP4 -from ostk.astrodynamics.trajectory.orbit.models.sgp4 import TLE +from ostk.astrodynamics.trajectory.orbit.model import SGP4 +from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE class TestDisplay: diff --git a/bindings/python/test/test_import.py b/bindings/python/test/test_import.py index 6c68d725b..f0a9d32b6 100644 --- a/bindings/python/test/test_import.py +++ b/bindings/python/test/test_import.py @@ -10,11 +10,11 @@ def test_import(self): from ostk.astrodynamics.trajectory import Orbit from ostk.astrodynamics.trajectory import Model from ostk.astrodynamics.trajectory.orbit import Pass - from ostk.astrodynamics.trajectory.orbit.models import Kepler - from ostk.astrodynamics.trajectory.orbit.models.kepler import COE - from ostk.astrodynamics.trajectory.orbit.models import SGP4 - from ostk.astrodynamics.trajectory.orbit.models.sgp4 import TLE - from ostk.astrodynamics.trajectory.orbit.models import Propagated + from ostk.astrodynamics.trajectory.orbit.model import Kepler + from ostk.astrodynamics.trajectory.orbit.model.kepler import COE + from ostk.astrodynamics.trajectory.orbit.model import SGP4 + from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE + from ostk.astrodynamics.trajectory.orbit.model import Propagated from ostk.astrodynamics.flight import Profile from ostk.astrodynamics.flight import System from ostk.astrodynamics.flight.system import SatelliteSystem diff --git a/bindings/python/test/test_trajectory.py b/bindings/python/test/test_trajectory.py index 7bba6458e..eb6c2e792 100644 --- a/bindings/python/test/test_trajectory.py +++ b/bindings/python/test/test_trajectory.py @@ -26,9 +26,9 @@ Orbit = astrodynamics.trajectory.Orbit State = astrodynamics.trajectory.State Pass = astrodynamics.trajectory.orbit.Pass -Kepler = astrodynamics.trajectory.orbit.models.Kepler -COE = astrodynamics.trajectory.orbit.models.kepler.COE -SGP4 = astrodynamics.trajectory.orbit.models.sgp4 +Kepler = astrodynamics.trajectory.orbit.model.Kepler +COE = astrodynamics.trajectory.orbit.model.kepler.COE +SGP4 = astrodynamics.trajectory.orbit.model.sgp4 Access = astrodynamics.Access diff --git a/bindings/python/test/test_utilities.py b/bindings/python/test/test_utilities.py index 02d3ec1ea..e94fdc472 100644 --- a/bindings/python/test/test_utilities.py +++ b/bindings/python/test/test_utilities.py @@ -22,7 +22,7 @@ State = astrodynamics.trajectory.State -class TestUtilities: +class TestUtility: def test_lla_from_state( self, state: State, diff --git a/bindings/python/test/trajectory/orbit/messages/__init__.py b/bindings/python/test/trajectory/orbit/message/__init__.py similarity index 100% rename from bindings/python/test/trajectory/orbit/messages/__init__.py rename to bindings/python/test/trajectory/orbit/message/__init__.py diff --git a/bindings/python/test/trajectory/orbit/messages/spacex/__init__.py b/bindings/python/test/trajectory/orbit/message/spacex/__init__.py similarity index 100% rename from bindings/python/test/trajectory/orbit/messages/spacex/__init__.py rename to bindings/python/test/trajectory/orbit/message/spacex/__init__.py diff --git a/bindings/python/test/trajectory/orbit/messages/spacex/conftest.py b/bindings/python/test/trajectory/orbit/message/spacex/conftest.py similarity index 100% rename from bindings/python/test/trajectory/orbit/messages/spacex/conftest.py rename to bindings/python/test/trajectory/orbit/message/spacex/conftest.py diff --git a/bindings/python/test/trajectory/orbit/messages/spacex/data/opm_1.yaml b/bindings/python/test/trajectory/orbit/message/spacex/data/opm_1.yaml similarity index 100% rename from bindings/python/test/trajectory/orbit/messages/spacex/data/opm_1.yaml rename to bindings/python/test/trajectory/orbit/message/spacex/data/opm_1.yaml diff --git a/bindings/python/test/trajectory/orbit/messages/spacex/test_opm.py b/bindings/python/test/trajectory/orbit/message/spacex/test_opm.py similarity index 98% rename from bindings/python/test/trajectory/orbit/messages/spacex/test_opm.py rename to bindings/python/test/trajectory/orbit/message/spacex/test_opm.py index 2376647f8..777abaab0 100644 --- a/bindings/python/test/trajectory/orbit/messages/spacex/test_opm.py +++ b/bindings/python/test/trajectory/orbit/message/spacex/test_opm.py @@ -17,7 +17,7 @@ from ostk.physics.coordinate import Velocity from ostk.physics.coordinate import Frame -from ostk.astrodynamics.trajectory.orbit.messages.spacex import OPM +from ostk.astrodynamics.trajectory.orbit.message.spacex import OPM @pytest.fixture diff --git a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py index 542756248..f65443daa 100644 --- a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py +++ b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean.py @@ -5,7 +5,7 @@ from ostk.physics.unit import Length from ostk.physics.unit import Angle -from ostk.astrodynamics.trajectory.orbit.models import BrouwerLyddaneMean +from ostk.astrodynamics.trajectory.orbit.model import BrouwerLyddaneMean @pytest.fixture diff --git a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py index 73c0e546d..c356ff81f 100644 --- a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py +++ b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_long.py @@ -10,8 +10,8 @@ from ostk.physics.coordinate import Position from ostk.physics.coordinate import Velocity -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE -from ostk.astrodynamics.trajectory.orbit.models.brouwerLyddaneMean import ( +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model.brouwerLyddaneMean import ( BrouwerLyddaneMeanLong, ) diff --git a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py index e09450ad2..ab9822b5b 100644 --- a/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py +++ b/bindings/python/test/trajectory/orbit/models/kepler/test_brouwer_lyddane_mean_short.py @@ -10,8 +10,8 @@ from ostk.physics.coordinate import Position from ostk.physics.coordinate import Velocity -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE -from ostk.astrodynamics.trajectory.orbit.models.brouwerLyddaneMean import ( +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model.brouwerLyddaneMean import ( BrouwerLyddaneMeanShort, ) diff --git a/bindings/python/test/trajectory/orbit/models/kepler/test_coe.py b/bindings/python/test/trajectory/orbit/models/kepler/test_coe.py index 23449bf3c..f4af1b652 100644 --- a/bindings/python/test/trajectory/orbit/models/kepler/test_coe.py +++ b/bindings/python/test/trajectory/orbit/models/kepler/test_coe.py @@ -6,7 +6,7 @@ from ostk.physics.unit import Angle from ostk.physics.environment.gravitational import Earth -from ostk.astrodynamics.trajectory.orbit.models.kepler import COE +from ostk.astrodynamics.trajectory.orbit.model.kepler import COE @pytest.fixture diff --git a/bindings/python/test/trajectory/orbit/models/sgp4/test_tle.py b/bindings/python/test/trajectory/orbit/models/sgp4/test_tle.py index fc3461493..ce9f27f6b 100644 --- a/bindings/python/test/trajectory/orbit/models/sgp4/test_tle.py +++ b/bindings/python/test/trajectory/orbit/models/sgp4/test_tle.py @@ -14,7 +14,7 @@ from ostk.physics.time import Scale from ostk.physics.time import DateTime -from ostk.astrodynamics.trajectory.orbit.models.sgp4 import TLE +from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE @pytest.fixture diff --git a/bindings/python/test/trajectory/orbit/models/test_kepler.py b/bindings/python/test/trajectory/orbit/models/test_kepler.py index 39d38de13..fc732c778 100644 --- a/bindings/python/test/trajectory/orbit/models/test_kepler.py +++ b/bindings/python/test/trajectory/orbit/models/test_kepler.py @@ -19,10 +19,10 @@ Model = astrodynamics.trajectory.Model Orbit = astrodynamics.trajectory.Orbit Pass = astrodynamics.trajectory.orbit.Pass -Kepler = astrodynamics.trajectory.orbit.models.Kepler -COE = astrodynamics.trajectory.orbit.models.kepler.COE -SGP4 = astrodynamics.trajectory.orbit.models.SGP4 -TLE = astrodynamics.trajectory.orbit.models.sgp4.TLE +Kepler = astrodynamics.trajectory.orbit.model.Kepler +COE = astrodynamics.trajectory.orbit.model.kepler.COE +SGP4 = astrodynamics.trajectory.orbit.model.SGP4 +TLE = astrodynamics.trajectory.orbit.model.sgp4.TLE State = astrodynamics.trajectory.State Access = astrodynamics.Access diff --git a/bindings/python/test/trajectory/orbit/models/test_propagated.py b/bindings/python/test/trajectory/orbit/models/test_propagated.py index 405f0ea5d..f9e7b0ec0 100644 --- a/bindings/python/test/trajectory/orbit/models/test_propagated.py +++ b/bindings/python/test/trajectory/orbit/models/test_propagated.py @@ -19,7 +19,7 @@ from ostk.astrodynamics import Dynamics from ostk.astrodynamics.dynamics import CentralBodyGravity from ostk.astrodynamics.dynamics import PositionDerivative -from ostk.astrodynamics.trajectory.orbit.models import Propagated +from ostk.astrodynamics.trajectory.orbit.model import Propagated @pytest.fixture diff --git a/bindings/python/test/trajectory/orbit/models/test_tabulated.py b/bindings/python/test/trajectory/orbit/models/test_tabulated.py index f423bebd0..c12240fb1 100644 --- a/bindings/python/test/trajectory/orbit/models/test_tabulated.py +++ b/bindings/python/test/trajectory/orbit/models/test_tabulated.py @@ -15,7 +15,7 @@ from ostk.astrodynamics.trajectory import State from ostk.astrodynamics.trajectory import Orbit -from ostk.astrodynamics.trajectory.orbit.models import Tabulated +from ostk.astrodynamics.trajectory.orbit.model import Tabulated @pytest.fixture diff --git a/bindings/python/test/trajectory/state/coordinates_subset/test_angular_velocity.py b/bindings/python/test/trajectory/state/coordinate_subset/test_angular_velocity.py similarity index 88% rename from bindings/python/test/trajectory/state/coordinates_subset/test_angular_velocity.py rename to bindings/python/test/trajectory/state/coordinate_subset/test_angular_velocity.py index f6d3f0e2b..0c31a0e43 100644 --- a/bindings/python/test/trajectory/state/coordinates_subset/test_angular_velocity.py +++ b/bindings/python/test/trajectory/state/coordinate_subset/test_angular_velocity.py @@ -2,7 +2,7 @@ import pytest -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( AngularVelocity, AttitudeQuaternion, ) diff --git a/bindings/python/test/trajectory/state/coordinates_subset/test_attitude_quaternion.py b/bindings/python/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py similarity index 78% rename from bindings/python/test/trajectory/state/coordinates_subset/test_attitude_quaternion.py rename to bindings/python/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py index 59d6f3d55..e7e1719fe 100644 --- a/bindings/python/test/trajectory/state/coordinates_subset/test_attitude_quaternion.py +++ b/bindings/python/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py @@ -2,7 +2,7 @@ import pytest -from ostk.astrodynamics.trajectory.state.coordinates_subset import AttitudeQuaternion +from ostk.astrodynamics.trajectory.state.coordinate_subset import AttitudeQuaternion @pytest.fixture diff --git a/bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_position.py b/bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_position.py similarity index 79% rename from bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_position.py rename to bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_position.py index c3b80ccf8..64fbb8ccf 100644 --- a/bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_position.py +++ b/bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_position.py @@ -5,8 +5,8 @@ from ostk.physics.time import Instant from ostk.physics.coordinate import Frame -from ostk.astrodynamics.trajectory.state import CoordinatesBroker, CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state import CoordinateBroker, CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition @pytest.fixture @@ -20,9 +20,9 @@ def cartesian_position() -> CartesianPosition: @pytest.fixture -def coordinates_subsets( +def coordinate_subsets( cartesian_position: CartesianPosition, -) -> list[CoordinatesSubset]: +) -> list[CoordinateSubset]: return [cartesian_position] @@ -37,10 +37,10 @@ def frame() -> Frame: @pytest.fixture -def coordinates_broker( - coordinates_subsets: list[CoordinatesSubset], -) -> CoordinatesBroker: - return CoordinatesBroker(coordinates_subsets) +def coordinate_broker( + coordinate_subsets: list[CoordinateSubset], +) -> CoordinateBroker: + return CoordinateBroker(coordinate_subsets) @pytest.fixture @@ -64,11 +64,11 @@ def test_add( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): assert all( cartesian_position.add( - instant, coordinates, another_coordinates, frame, coordinates_broker + instant, coordinates, another_coordinates, frame, coordinate_broker ) == [7000000.0, 7000000.0, 0.0] ) @@ -80,11 +80,11 @@ def test_subtract( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): assert all( cartesian_position.subtract( - instant, coordinates, another_coordinates, frame, coordinates_broker + instant, coordinates, another_coordinates, frame, coordinate_broker ) == [7000000.0, -7000000.0, 0.0] ) @@ -96,11 +96,11 @@ def test_in_frame( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): for value, expected in zip( cartesian_position.in_frame( - instant, coordinates, frame, Frame.ITRF(), coordinates_broker + instant, coordinates, frame, Frame.ITRF(), coordinate_broker ), [1238864.12746338, 6889500.39136482, -176.262107699686], ): diff --git a/bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py b/bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py similarity index 81% rename from bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py rename to bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py index 7bc5e4c32..5b11a017a 100644 --- a/bindings/python/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py +++ b/bindings/python/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py @@ -5,8 +5,8 @@ from ostk.physics.time import Instant from ostk.physics.coordinate import Frame -from ostk.astrodynamics.trajectory.state import CoordinatesBroker, CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state import CoordinateBroker, CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( CartesianVelocity, CartesianPosition, ) @@ -28,9 +28,9 @@ def cartesian_velocity() -> CartesianVelocity: @pytest.fixture -def coordinates_subsets( +def coordinate_subsets( cartesian_position: CartesianPosition, cartesian_velocity: CartesianVelocity -) -> list[CoordinatesSubset]: +) -> list[CoordinateSubset]: return [cartesian_position, cartesian_velocity] @@ -45,10 +45,10 @@ def frame() -> Frame: @pytest.fixture -def coordinates_broker( - coordinates_subsets: list[CoordinatesSubset], -) -> CoordinatesBroker: - return CoordinatesBroker(coordinates_subsets) +def coordinate_broker( + coordinate_subsets: list[CoordinateSubset], +) -> CoordinateBroker: + return CoordinateBroker(coordinate_subsets) @pytest.fixture @@ -72,11 +72,11 @@ def test_add( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): assert all( cartesian_velocity.add( - instant, coordinates, another_coordinates, frame, coordinates_broker + instant, coordinates, another_coordinates, frame, coordinate_broker ) == [5335.865450622126, 5335.865450622126, 5335.865450622126] ) @@ -88,11 +88,11 @@ def test_subtract( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): assert all( cartesian_velocity.subtract( - instant, coordinates, another_coordinates, frame, coordinates_broker + instant, coordinates, another_coordinates, frame, coordinate_broker ) == [-5335.865450622126, 5335.865450622126, 5335.865450622126] ) @@ -104,11 +104,11 @@ def test_in_frame( frame: Frame, coordinates: list[float], another_coordinates: list[float], - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): for value, expected in zip( cartesian_velocity.in_frame( - instant, coordinates, frame, Frame.ITRF(), coordinates_broker + instant, coordinates, frame, Frame.ITRF(), coordinate_broker ), [-4749.36551256577, 854.163395375881, 5335.71857543495], ): diff --git a/bindings/python/test/trajectory/state/test_coordinate_broker.py b/bindings/python/test/trajectory/state/test_coordinate_broker.py new file mode 100644 index 000000000..b174eb449 --- /dev/null +++ b/bindings/python/test/trajectory/state/test_coordinate_broker.py @@ -0,0 +1,84 @@ +# Apache License 2.0 + +import pytest + +from ostk.astrodynamics.trajectory.state import CoordinateBroker, CoordinateSubset + + +@pytest.fixture +def coordinate_subsets() -> list: + return [CoordinateSubset("Subset1", 2), CoordinateSubset("Subset2", 3)] + + +@pytest.fixture +def coordinate_broker(coordinate_subsets) -> CoordinateBroker: + return CoordinateBroker(coordinate_subsets) + + +@pytest.fixture +def coordinates() -> list[float]: + return [1.0, 2.0, 3.0, 4.0, 5.0] + + +class TestCoordinateBroker: + def test_constructor(self, coordinate_broker: CoordinateBroker): + assert coordinate_broker is not None + + def test_eq(self, coordinate_broker: CoordinateBroker): + assert coordinate_broker == coordinate_broker + + def test_ne(self, coordinate_broker: CoordinateBroker): + assert (coordinate_broker != coordinate_broker) == False + + def test_access_subsets( + self, coordinate_broker: CoordinateBroker, coordinate_subsets: list + ): + assert coordinate_broker.access_subsets() == coordinate_subsets + + def test_get_number_of_coordinates(self, coordinate_broker: CoordinateBroker): + assert coordinate_broker.get_number_of_coordinates() == 5 + + def test_get_number_of_subsets(self, coordinate_broker: CoordinateBroker): + assert coordinate_broker.get_number_of_subsets() == 2 + + def test_get_subsets( + self, coordinate_broker: CoordinateBroker, coordinate_subsets: list + ): + assert coordinate_broker.get_subsets() == coordinate_subsets + + def test_add_subset(self, coordinate_broker: CoordinateBroker): + new_subset = CoordinateSubset("NewSubset", 4) + number_of_coordinates = coordinate_broker.get_number_of_coordinates() + assert coordinate_broker.add_subset(new_subset) == number_of_coordinates + assert coordinate_broker.has_subset(new_subset) + + def test_has_subset( + self, coordinate_broker: CoordinateBroker, coordinate_subsets: list + ): + assert coordinate_broker.has_subset(coordinate_subsets[0]) + + def test_extract_coordinate( + self, + coordinate_broker: CoordinateBroker, + coordinates: list[float], + coordinate_subsets: list[CoordinateSubset], + ): + assert ( + coordinate_broker.extract_coordinate(coordinates, coordinate_subsets[0]) + == [1.0, 2.0] + ).all() + assert ( + coordinate_broker.extract_coordinate(coordinates, coordinate_subsets[1]) + == [3.0, 4.0, 5.0] + ).all() + + def test_extract_coordinates( + self, + coordinate_broker: CoordinateBroker, + coordinates: list[float], + coordinate_subsets: list[CoordinateSubset], + ): + assert ( + coordinate_broker.extract_coordinates(coordinates, coordinate_subsets) + == [1.0, 2.0, 3.0, 4.0, 5.0] + ).all() diff --git a/bindings/python/test/trajectory/state/test_coordinate_subset.py b/bindings/python/test/trajectory/state/test_coordinate_subset.py new file mode 100644 index 000000000..a1f32e458 --- /dev/null +++ b/bindings/python/test/trajectory/state/test_coordinate_subset.py @@ -0,0 +1,43 @@ +# Apache License 2.0 + +import pytest + +from ostk.astrodynamics.trajectory.state import CoordinateSubset + + +@pytest.fixture +def name() -> str: + return "MySubset" + + +@pytest.fixture +def size() -> int: + return 3 + + +@pytest.fixture +def coordinate_subset(name: str, size: int) -> CoordinateSubset: + return CoordinateSubset(name, size) + + +class TestCoordinateSubset: + def test_constructor(self, coordinate_subset: CoordinateSubset): + assert coordinate_subset is not None + + def test_eq(self, coordinate_subset: CoordinateSubset): + assert coordinate_subset == coordinate_subset + + def test_ne(self, coordinate_subset: CoordinateSubset): + assert (coordinate_subset != coordinate_subset) == False + + def test_get_id(self, coordinate_subset: CoordinateSubset): + assert coordinate_subset.get_id() is not None + + def test_get_name(self, coordinate_subset: CoordinateSubset, name: str): + assert coordinate_subset.get_name() == name + + def test_get_size(self, coordinate_subset: CoordinateSubset, size: int): + assert coordinate_subset.get_size() == size + + def test_mass(self): + assert CoordinateSubset.mass() is not None diff --git a/bindings/python/test/trajectory/state/test_coordinates_broker.py b/bindings/python/test/trajectory/state/test_coordinates_broker.py deleted file mode 100644 index 61500ccfb..000000000 --- a/bindings/python/test/trajectory/state/test_coordinates_broker.py +++ /dev/null @@ -1,84 +0,0 @@ -# Apache License 2.0 - -import pytest - -from ostk.astrodynamics.trajectory.state import CoordinatesBroker, CoordinatesSubset - - -@pytest.fixture -def coordinates_subsets() -> list: - return [CoordinatesSubset("Subset1", 2), CoordinatesSubset("Subset2", 3)] - - -@pytest.fixture -def coordinates_broker(coordinates_subsets) -> CoordinatesBroker: - return CoordinatesBroker(coordinates_subsets) - - -@pytest.fixture -def coordinates() -> list[float]: - return [1.0, 2.0, 3.0, 4.0, 5.0] - - -class TestCoordinatesBroker: - def test_constructor(self, coordinates_broker: CoordinatesBroker): - assert coordinates_broker is not None - - def test_eq(self, coordinates_broker: CoordinatesBroker): - assert coordinates_broker == coordinates_broker - - def test_ne(self, coordinates_broker: CoordinatesBroker): - assert (coordinates_broker != coordinates_broker) == False - - def test_access_subsets( - self, coordinates_broker: CoordinatesBroker, coordinates_subsets: list - ): - assert coordinates_broker.access_subsets() == coordinates_subsets - - def test_get_number_of_coordinates(self, coordinates_broker: CoordinatesBroker): - assert coordinates_broker.get_number_of_coordinates() == 5 - - def test_get_number_of_subsets(self, coordinates_broker: CoordinatesBroker): - assert coordinates_broker.get_number_of_subsets() == 2 - - def test_get_subsets( - self, coordinates_broker: CoordinatesBroker, coordinates_subsets: list - ): - assert coordinates_broker.get_subsets() == coordinates_subsets - - def test_add_subset(self, coordinates_broker: CoordinatesBroker): - new_subset = CoordinatesSubset("NewSubset", 4) - number_of_coordinates = coordinates_broker.get_number_of_coordinates() - assert coordinates_broker.add_subset(new_subset) == number_of_coordinates - assert coordinates_broker.has_subset(new_subset) - - def test_has_subset( - self, coordinates_broker: CoordinatesBroker, coordinates_subsets: list - ): - assert coordinates_broker.has_subset(coordinates_subsets[0]) - - def test_extract_coordinate( - self, - coordinates_broker: CoordinatesBroker, - coordinates: list[float], - coordinates_subsets: list[CoordinatesSubset], - ): - assert ( - coordinates_broker.extract_coordinate(coordinates, coordinates_subsets[0]) - == [1.0, 2.0] - ).all() - assert ( - coordinates_broker.extract_coordinate(coordinates, coordinates_subsets[1]) - == [3.0, 4.0, 5.0] - ).all() - - def test_extract_coordinates( - self, - coordinates_broker: CoordinatesBroker, - coordinates: list[float], - coordinates_subsets: list[CoordinatesSubset], - ): - assert ( - coordinates_broker.extract_coordinates(coordinates, coordinates_subsets) - == [1.0, 2.0, 3.0, 4.0, 5.0] - ).all() diff --git a/bindings/python/test/trajectory/state/test_coordinates_subset.py b/bindings/python/test/trajectory/state/test_coordinates_subset.py deleted file mode 100644 index 762589edf..000000000 --- a/bindings/python/test/trajectory/state/test_coordinates_subset.py +++ /dev/null @@ -1,43 +0,0 @@ -# Apache License 2.0 - -import pytest - -from ostk.astrodynamics.trajectory.state import CoordinatesSubset - - -@pytest.fixture -def name() -> str: - return "MySubset" - - -@pytest.fixture -def size() -> int: - return 3 - - -@pytest.fixture -def coordinates_subset(name: str, size: int) -> CoordinatesSubset: - return CoordinatesSubset(name, size) - - -class TestCoordinatesSubset: - def test_constructor(self, coordinates_subset: CoordinatesSubset): - assert coordinates_subset is not None - - def test_eq(self, coordinates_subset: CoordinatesSubset): - assert coordinates_subset == coordinates_subset - - def test_ne(self, coordinates_subset: CoordinatesSubset): - assert (coordinates_subset != coordinates_subset) == False - - def test_get_id(self, coordinates_subset: CoordinatesSubset): - assert coordinates_subset.get_id() is not None - - def test_get_name(self, coordinates_subset: CoordinatesSubset, name: str): - assert coordinates_subset.get_name() == name - - def test_get_size(self, coordinates_subset: CoordinatesSubset, size: int): - assert coordinates_subset.get_size() == size - - def test_mass(self): - assert CoordinatesSubset.mass() is not None diff --git a/bindings/python/test/trajectory/state/test_numerical_solver.py b/bindings/python/test/trajectory/state/test_numerical_solver.py index 22f581f61..7852e5423 100644 --- a/bindings/python/test/trajectory/state/test_numerical_solver.py +++ b/bindings/python/test/trajectory/state/test_numerical_solver.py @@ -11,8 +11,8 @@ from ostk.astrodynamics.trajectory import State from ostk.astrodynamics.trajectory.state import ( NumericalSolver, - CoordinatesBroker, - CoordinatesSubset, + CoordinateBroker, + CoordinateSubset, ) from ostk.astrodynamics.event_condition import RealCondition @@ -28,15 +28,15 @@ def get_state_vec(time: float) -> np.ndarray: @pytest.fixture -def coordinates_subsets() -> list[CoordinatesSubset]: - return [CoordinatesSubset("Subset", 2)] +def coordinate_subsets() -> list[CoordinateSubset]: + return [CoordinateSubset("Subset", 2)] @pytest.fixture -def coordinates_broker( - coordinates_subsets: list[CoordinatesSubset], -) -> CoordinatesBroker: - return CoordinatesBroker(coordinates_subsets) +def coordinate_broker( + coordinate_subsets: list[CoordinateSubset], +) -> CoordinateBroker: + return CoordinateBroker(coordinate_subsets) @pytest.fixture @@ -53,9 +53,9 @@ def frame() -> Frame: def initial_state( start_instant: Instant, frame: Frame, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ) -> State: - return State(start_instant, get_state_vec(0.0), frame, coordinates_broker) + return State(start_instant, get_state_vec(0.0), frame, coordinate_broker) @pytest.fixture diff --git a/bindings/python/test/trajectory/test_orbit.py b/bindings/python/test/trajectory/test_orbit.py index d582086a2..a7061cf8b 100644 --- a/bindings/python/test/trajectory/test_orbit.py +++ b/bindings/python/test/trajectory/test_orbit.py @@ -9,8 +9,8 @@ from ostk.astrodynamics.trajectory import Orbit, State from ostk.astrodynamics.trajectory.orbit import Pass from ostk.astrodynamics.trajectory.orbit import Pass -from ostk.astrodynamics.trajectory.orbit.models import SGP4 -from ostk.astrodynamics.trajectory.orbit.models.sgp4 import TLE +from ostk.astrodynamics.trajectory.orbit.model import SGP4 +from ostk.astrodynamics.trajectory.orbit.model.sgp4 import TLE @pytest.fixture diff --git a/bindings/python/test/trajectory/test_propagator.py b/bindings/python/test/trajectory/test_propagator.py index 8a805a74f..83c50531e 100644 --- a/bindings/python/test/trajectory/test_propagator.py +++ b/bindings/python/test/trajectory/test_propagator.py @@ -25,10 +25,10 @@ from ostk.astrodynamics.trajectory import LocalOrbitalFrameFactory from ostk.astrodynamics.trajectory import LocalOrbitalFrameDirection -from ostk.astrodynamics.trajectory.state import CoordinatesSubset -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity -from ostk.astrodynamics.trajectory.state import CoordinatesBroker +from ostk.astrodynamics.trajectory.state import CoordinateSubset +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state import CoordinateBroker from ostk.astrodynamics.trajectory.state import NumericalSolver from ostk.astrodynamics.flight.system import PropulsionSystem @@ -40,8 +40,8 @@ from ostk.astrodynamics.dynamics import AtmosphericDrag from ostk.astrodynamics.guidance_law import ConstantThrust from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.state import CoordinatesSubset, CoordinatesBroker -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state import CoordinateSubset, CoordinateBroker +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( CartesianPosition, CartesianVelocity, ) @@ -99,32 +99,32 @@ def environment(earth) -> Environment: @pytest.fixture -def coordinates_broker_7d(): - return CoordinatesBroker( +def coordinate_broker_7d(): + return CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), + CoordinateSubset.mass(), ] ) @pytest.fixture -def coordinates_broker_9d(): - return CoordinatesBroker( +def coordinate_broker_9d(): + return CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), - CoordinatesSubset.surface_area(), - CoordinatesSubset.drag_coefficient(), + CoordinateSubset.mass(), + CoordinateSubset.surface_area(), + CoordinateSubset.drag_coefficient(), ] ) @pytest.fixture def state( - satellite_system: SatelliteSystem, coordinates_broker_7d: CoordinatesBroker + satellite_system: SatelliteSystem, coordinate_broker_7d: CoordinateBroker ) -> State: instant: Instant = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC) @@ -140,12 +140,12 @@ def state( satellite_system.get_mass().in_kilograms() + propellant_mass, ] - return State(instant, coordinates, Frame.GCRF(), coordinates_broker_7d) + return State(instant, coordinates, Frame.GCRF(), coordinate_broker_7d) @pytest.fixture def state_low_altitude( - satellite_system: SatelliteSystem, coordinates_broker_9d: CoordinatesBroker + satellite_system: SatelliteSystem, coordinate_broker_9d: CoordinateBroker ) -> State: instant: Instant = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC) @@ -165,7 +165,7 @@ def state_low_altitude( cd, ] - return State(instant, coordinates, Frame.GCRF(), coordinates_broker_9d) + return State(instant, coordinates, Frame.GCRF(), coordinate_broker_9d) @pytest.fixture diff --git a/bindings/python/test/trajectory/test_segment.py b/bindings/python/test/trajectory/test_segment.py index 103e06d66..18725a5f9 100644 --- a/bindings/python/test/trajectory/test_segment.py +++ b/bindings/python/test/trajectory/test_segment.py @@ -20,10 +20,10 @@ from ostk.astrodynamics.trajectory import State from ostk.astrodynamics.trajectory import Segment from ostk.astrodynamics.event_condition import InstantCondition -from ostk.astrodynamics.trajectory.state import CoordinatesSubset -from ostk.astrodynamics.trajectory.state import CoordinatesBroker -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state import CoordinateSubset +from ostk.astrodynamics.trajectory.state import CoordinateBroker +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity @pytest.fixture @@ -44,14 +44,14 @@ def state() -> State: 300.0, ] frame: Frame = Frame.GCRF() - coordinates_broker: CoordinatesBroker = CoordinatesBroker( + coordinate_broker: CoordinateBroker = CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), + CoordinateSubset.mass(), ] ) - return State(instant, coordinates, frame, coordinates_broker) + return State(instant, coordinates, frame, coordinate_broker) @pytest.fixture diff --git a/bindings/python/test/trajectory/test_sequence.py b/bindings/python/test/trajectory/test_sequence.py index 192fb1880..1157d94ce 100644 --- a/bindings/python/test/trajectory/test_sequence.py +++ b/bindings/python/test/trajectory/test_sequence.py @@ -36,11 +36,11 @@ from ostk.astrodynamics.trajectory import Segment from ostk.astrodynamics.trajectory import Sequence from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.state import CoordinatesBroker -from ostk.astrodynamics.trajectory.state import CoordinatesSubset +from ostk.astrodynamics.trajectory.state import CoordinateBroker +from ostk.astrodynamics.trajectory.state import CoordinateSubset from ostk.astrodynamics.trajectory.state import NumericalSolver -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianPosition -from ostk.astrodynamics.trajectory.state.coordinates_subset import CartesianVelocity +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianPosition +from ostk.astrodynamics.trajectory.state.coordinate_subset import CartesianVelocity @pytest.fixture @@ -112,14 +112,14 @@ def environment() -> Environment: @pytest.fixture -def coordinates_broker() -> CoordinatesBroker: - return CoordinatesBroker( +def coordinate_broker() -> CoordinateBroker: + return CoordinateBroker( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), - CoordinatesSubset.surface_area(), - CoordinatesSubset.drag_coefficient(), + CoordinateSubset.mass(), + CoordinateSubset.surface_area(), + CoordinateSubset.drag_coefficient(), ] ) @@ -143,7 +143,7 @@ def state( wet_mass: Mass, cross_sectional_surface_area: float, drag_coefficient: float, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ) -> State: frame: Frame = Frame.GCRF() instant: Instant = Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC) @@ -168,7 +168,7 @@ def state( drag_coefficient, ], frame, - coordinates_broker, + coordinate_broker, ) diff --git a/bindings/python/test/trajectory/test_state.py b/bindings/python/test/trajectory/test_state.py index 7033390b0..2759fe095 100644 --- a/bindings/python/test/trajectory/test_state.py +++ b/bindings/python/test/trajectory/test_state.py @@ -14,8 +14,8 @@ from ostk.physics.coordinate import Frame from ostk.astrodynamics.trajectory import State -from ostk.astrodynamics.trajectory.state import CoordinatesBroker -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state import CoordinateBroker +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( CartesianPosition, CartesianVelocity, ) @@ -73,8 +73,8 @@ def profile_state( @pytest.fixture -def coordinates_broker() -> CoordinatesBroker: - return CoordinatesBroker([CartesianPosition.default(), CartesianVelocity.default()]) +def coordinate_broker() -> CoordinateBroker: + return CoordinateBroker([CartesianPosition.default(), CartesianVelocity.default()]) class TestState: @@ -109,7 +109,7 @@ def test_explicit_constructor( position: Position, velocity: Velocity, frame: Frame, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): state = State(instant, position, velocity) assert state is not None @@ -120,7 +120,7 @@ def test_explicit_constructor( instant, np.append(position.get_coordinates(), velocity.get_coordinates()), frame, - coordinates_broker, + coordinate_broker, ) assert state is not None @@ -204,7 +204,7 @@ def test_getters( assert profile_state.has_subset(CartesianVelocity.default()) assert profile_state.get_frame() == frame assert profile_state.get_coordinates() is not None - assert profile_state.get_coordinates_subsets() is not None + assert profile_state.get_coordinate_subsets() is not None def test_in_frame( self, diff --git a/bindings/python/test/trajectory/test_state_builder.py b/bindings/python/test/trajectory/test_state_builder.py index dc2c7d679..a1011db06 100644 --- a/bindings/python/test/trajectory/test_state_builder.py +++ b/bindings/python/test/trajectory/test_state_builder.py @@ -14,10 +14,10 @@ StateBuilder, ) from ostk.astrodynamics.trajectory.state import ( - CoordinatesBroker, - CoordinatesSubset, + CoordinateBroker, + CoordinateSubset, ) -from ostk.astrodynamics.trajectory.state.coordinates_subset import ( +from ostk.astrodynamics.trajectory.state.coordinate_subset import ( CartesianPosition, CartesianVelocity, ) @@ -34,7 +34,7 @@ def frame() -> Frame: @pytest.fixture -def coordinates_subsets() -> list[CoordinatesSubset]: +def coordinate_subsets() -> list[CoordinateSubset]: return [CartesianPosition.default(), CartesianVelocity.default()] @@ -44,10 +44,10 @@ def coordinates() -> list[float]: @pytest.fixture -def coordinates_broker( - coordinates_subsets: list[CoordinatesSubset], -) -> CoordinatesBroker: - return CoordinatesBroker(coordinates_subsets) +def coordinate_broker( + coordinate_subsets: list[CoordinateSubset], +) -> CoordinateBroker: + return CoordinateBroker(coordinate_subsets) @pytest.fixture @@ -55,23 +55,23 @@ def state( instant: Instant, coordinates: list[float], frame: Frame, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ) -> State: - return State(instant, coordinates, frame, coordinates_broker) + return State(instant, coordinates, frame, coordinate_broker) @pytest.fixture -def state_builder(frame: Frame, coordinates_broker: CoordinatesBroker) -> State: - return StateBuilder(frame, coordinates_broker) +def state_builder(frame: Frame, coordinate_broker: CoordinateBroker) -> State: + return StateBuilder(frame, coordinate_broker) class TestStateBuilder: def test_broker_constructor( self, frame: Frame, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): - builder = StateBuilder(frame, coordinates_broker) + builder = StateBuilder(frame, coordinate_broker) assert builder is not None assert isinstance(builder, StateBuilder) assert builder.is_defined() @@ -79,9 +79,9 @@ def test_broker_constructor( def test_subsets_constructor( self, frame: Frame, - coordinates_subsets: list[CoordinatesSubset], + coordinate_subsets: list[CoordinateSubset], ): - builder = StateBuilder(frame, coordinates_subsets) + builder = StateBuilder(frame, coordinate_subsets) assert builder is not None assert isinstance(builder, StateBuilder) assert builder.is_defined() @@ -103,7 +103,7 @@ def test_operators( self, state_builder: StateBuilder, ): - added_builder: StateBuilder = state_builder + CoordinatesSubset.mass() + added_builder: StateBuilder = state_builder + CoordinateSubset.mass() assert isinstance(added_builder, StateBuilder) assert state_builder != added_builder @@ -125,7 +125,7 @@ def test_build( assert state.get_instant() == instant assert (state.get_coordinates() == coordinates).all() assert state.get_frame() == state_builder.get_frame() - assert state.get_coordinates_subsets() == state_builder.get_coordinates_subsets() + assert state.get_coordinate_subsets() == state_builder.get_coordinate_subsets() def test_reduce( self, @@ -146,14 +146,14 @@ def test_expand( [ CartesianPosition.default(), CartesianVelocity.default(), - CoordinatesSubset.mass(), + CoordinateSubset.mass(), ], ) default_state: State = State( state.get_instant(), [100], state.get_frame(), - CoordinatesBroker([CoordinatesSubset.mass()]), + CoordinateBroker([CoordinateSubset.mass()]), ) expanded_state: State = builder.expand(state, default_state) @@ -165,7 +165,7 @@ def test_getters( self, state_builder: StateBuilder, frame: Frame, - coordinates_broker: CoordinatesBroker, + coordinate_broker: CoordinateBroker, ): assert state_builder.get_frame() == frame - assert state_builder.get_coordinates_subsets() == coordinates_broker.get_subsets() + assert state_builder.get_coordinate_subsets() == coordinate_broker.get_subsets() diff --git a/bindings/python/tools/python/ostk/astrodynamics/pytrajectory/pystate.py b/bindings/python/tools/python/ostk/astrodynamics/pytrajectory/pystate.py index ae8e352ab..85be86f25 100644 --- a/bindings/python/tools/python/ostk/astrodynamics/pytrajectory/pystate.py +++ b/bindings/python/tools/python/ostk/astrodynamics/pytrajectory/pystate.py @@ -11,21 +11,21 @@ @staticmethod -def custom_class_generator(frame: Frame, coordinates_subsets: list) -> type: +def custom_class_generator(frame: Frame, coordinate_subsets: list) -> type: """ Emit a custom class type for States. This is meta-programming syntactic sugar on top of the StateBuilder class. - StateType = State.template(frame, coordinates_subsets) + StateType = State.template(frame, coordinate_subsets) state = StateType(instant, coordinates) is equivalent to - state_builder = StateBuilder(frame, coordinates_subsets) + state_builder = StateBuilder(frame, coordinate_subsets) state = state_builder.build(instant, coordinates) """ class StateTemplateType(State): - state_builder: StateBuilder = StateBuilder(frame, coordinates_subsets) + state_builder: StateBuilder = StateBuilder(frame, coordinate_subsets) def __init__(self, instant: Instant, coordinates: np.ndarray): super().__init__(StateTemplateType.state_builder.build(instant, coordinates)) diff --git a/docs/python.rst b/docs/python.rst index 7a729116c..6ec59dc40 100644 --- a/docs/python.rst +++ b/docs/python.rst @@ -8,20 +8,20 @@ Python API Documentation ostk.astrodynamics ostk.astrodynamics.access - ostk.astrodynamics.conjunction.messages.ccsds + ostk.astrodynamics.conjunction.message.ccsds ostk.astrodynamics.dynamics ostk.astrodynamics.event_condition ostk.astrodynamics.flight ostk.astrodynamics.flight.profile - ostk.astrodynamics.flight.profile.models + ostk.astrodynamics.flight.profile.model ostk.astrodynamics.flight.system ostk.astrodynamics.guidance_law ostk.astrodynamics.trajectory ostk.astrodynamics.trajectory.orbit - ostk.astrodynamics.trajectory.orbit.messages - ostk.astrodynamics.trajectory.orbit.messages.spacex - ostk.astrodynamics.trajectory.orbit.models - ostk.astrodynamics.trajectory.orbit.models.kepler - ostk.astrodynamics.trajectory.orbit.models.sgp4 + ostk.astrodynamics.trajectory.orbit.message + ostk.astrodynamics.trajectory.orbit.message.spacex + ostk.astrodynamics.trajectory.orbit.model + ostk.astrodynamics.trajectory.orbit.model.kepler + ostk.astrodynamics.trajectory.orbit.model.sgp4 ostk.astrodynamics.trajectory.state - ostk.astrodynamics.trajectory.state.coordinates_subset \ No newline at end of file + ostk.astrodynamics.trajectory.state.coordinate_subset diff --git a/include/OpenSpaceToolkit/Astrodynamics/Access.hpp b/include/OpenSpaceToolkit/Astrodynamics/Access.hpp index 1611baf01..7d9852448 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Access.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Access.hpp @@ -13,7 +13,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::container::Array; @@ -83,7 +83,7 @@ class Access Angle maxElevation_; }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Access/Generator.hpp b/include/OpenSpaceToolkit/Astrodynamics/Access/Generator.hpp index 62c630f86..491330928 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Access/Generator.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Access/Generator.hpp @@ -22,7 +22,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace access { @@ -44,9 +44,9 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Length; using ostk::physics::environment::object::Celestial; -using ostk::astro::Access; -using ostk::astro::Trajectory; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::Access; +using ostk::astrodynamics::Trajectory; +using ostk::astrodynamics::trajectory::State; #define DEFAULT_STEP Duration::Minutes(1.0) #define DEFAULT_TOLERANCE Duration::Microseconds(1.0) @@ -196,7 +196,7 @@ class GeneratorContext }; } // namespace access -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.hpp b/include/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.hpp similarity index 96% rename from include/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.hpp index c15f81efd..8ecd041b5 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM__ -#define __OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM__ +#define __OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM__ #include #include @@ -27,11 +27,11 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace conjunction { -namespace messages +namespace message { namespace ccsds { @@ -58,7 +58,7 @@ using ostk::physics::time::Instant; using ostk::physics::unit::Length; using ostk::physics::unit::Mass; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief CCSDS Conjunction Data Message (CDM) /// General content sections: @@ -283,9 +283,9 @@ class CDM }; } // namespace ccsds -} // namespace messages +} // namespace message } // namespace conjunction -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics.hpp index bf3dcced6..3a2f9b445 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics.hpp @@ -17,13 +17,13 @@ #include #include -#include -#include +#include +#include #include namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::container::Array; @@ -40,9 +40,9 @@ using ostk::physics::Environment; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; /// @brief Define a dynamical system subject to equations of motion class Dynamics @@ -97,15 +97,15 @@ class Dynamics /// @return True if dynamics is defined virtual bool isDefined() const = 0; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const = 0; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const = 0; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const = 0; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const = 0; /// @brief Compute the contribution to the state derivative. /// @@ -159,7 +159,7 @@ class Dynamics ); }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.hpp index 6d12d9cb7..fe47b5a3c 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.hpp @@ -14,7 +14,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -26,8 +26,8 @@ using ostk::physics::environment::object::Celestial; using ostk::physics::time::Instant; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; /// @brief Define the acceleration experienced by a spacecraft due to atmospheric drag class AtmosphericDrag : public Dynamics @@ -75,15 +75,15 @@ class AtmosphericDrag : public Dynamics /// @return A celestial object Shared getCelestial() const; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Compute the contribution to the state derivative. /// @@ -109,7 +109,7 @@ class AtmosphericDrag : public Dynamics }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.hpp index b056fe03b..98ca13834 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.hpp @@ -12,7 +12,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -23,7 +23,7 @@ using ostk::core::type::String; using ostk::physics::environment::object::Celestial; using ostk::physics::time::Instant; -using ostk::astro::Dynamics; +using ostk::astrodynamics::Dynamics; /// @brief Define the acceleration experienced by a point mass due to gravity class CentralBodyGravity : public Dynamics @@ -71,15 +71,15 @@ class CentralBodyGravity : public Dynamics /// @return A celestial object Shared getCelestial() const; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Compute the contribution to the state derivative. /// @@ -105,7 +105,7 @@ class CentralBodyGravity : public Dynamics }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.hpp index d1786faa1..ecd78df0c 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.hpp @@ -13,14 +13,14 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { using ostk::core::type::Integer; -using ostk::astro::Dynamics; +using ostk::astrodynamics::Dynamics; /// @brief Define the contribution to the position due to velocity class PositionDerivative : public Dynamics @@ -49,15 +49,15 @@ class PositionDerivative : public Dynamics /// @return True if position derivative dynamics is defined virtual bool isDefined() const override; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Compute the contribution to the state derivative. /// @@ -80,7 +80,7 @@ class PositionDerivative : public Dynamics }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.hpp index af9c32359..3e9449926 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.hpp @@ -14,11 +14,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -35,7 +35,7 @@ using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; using ostk::physics::time::Duration; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; /// @brief A tabulated dynamics that uses the provided contribution profile to compute the contribution to the dynamics. class Tabulated : public Dynamics @@ -45,12 +45,12 @@ class Tabulated : public Dynamics /// /// @param anInstantArray An array of instants, must be sorted /// @param aContributionProfile A contribution profile, one row for each instant - /// @param aWriteCoordinatesSubsets An array of coordinates subsets to write to + /// @param aWriteCoordinateSubsets An array of coordinate subsets to write to /// @param aFrameSPtr A frame Tabulated( const Array& anInstantArray, const MatrixXd& aContributionProfile, - const Array>& aWriteCoordinatesSubsets, + const Array>& aWriteCoordinateSubsets, const Shared& aFrameSPtr ); @@ -100,15 +100,15 @@ class Tabulated : public Dynamics /// @return True if dynamics is defined virtual bool isDefined() const override; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Compute the contribution to the state derivative. /// @@ -132,13 +132,13 @@ class Tabulated : public Dynamics private: const MatrixXd contributionProfile_; const Array instants_; - const Array> writeCoordinatesSubsets_; + const Array> writeCoordinateSubsets_; const Shared frameSPtr_; Array interpolators_; }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.hpp index d8e7230f4..53f55e945 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.hpp @@ -12,7 +12,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -23,7 +23,7 @@ using ostk::core::type::String; using ostk::physics::environment::object::Celestial; using ostk::physics::time::Instant; -using ostk::astro::Dynamics; +using ostk::astrodynamics::Dynamics; /// @brief Define the acceleration experienced by a point mass due to gravity class ThirdBodyGravity : public Dynamics @@ -71,15 +71,15 @@ class ThirdBodyGravity : public Dynamics /// @return A celestial object Shared getCelestial() const; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Compute the contribution to the state derivative. /// @@ -105,7 +105,7 @@ class ThirdBodyGravity : public Dynamics }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.hpp b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.hpp index 84ee0de18..00a14f996 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.hpp @@ -10,11 +10,11 @@ #include #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -23,10 +23,10 @@ using ostk::core::type::String; using ostk::core::type::Shared; using ostk::core::container::Array; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::GuidanceLaw; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::GuidanceLaw; /// @brief Define the acceleration experienced by a point mass due to thrust class Thruster : public Dynamics @@ -55,15 +55,15 @@ class Thruster : public Dynamics /// @return Guidance law Shared getGuidanceLaw() const; - /// @brief Return the coordinates subsets that the instance reads from + /// @brief Return the coordinate subsets that the instance reads from /// - /// @return The coordinates subsets that the instance reads from - virtual Array> getReadCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance reads from + virtual Array> getReadCoordinateSubsets() const override; - /// @brief Return the coordinates subsets that the instance writes to + /// @brief Return the coordinate subsets that the instance writes to /// - /// @return The coordinates subsets that the instance writes to - virtual Array> getWriteCoordinatesSubsets() const override; + /// @return The coordinate subsets that the instance writes to + virtual Array> getWriteCoordinateSubsets() const override; /// @brief Check if constant thrust thruster dynamics is defined /// @@ -98,7 +98,7 @@ class Thruster : public Dynamics }; } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition.hpp index 413655888..b7bc4857e 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition.hpp @@ -13,7 +13,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::type::String; @@ -22,7 +22,7 @@ using ostk::core::type::Real; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief An Event Condition defines a criterion that can be evaluated /// based on a current/previous state vectors and times @@ -133,7 +133,7 @@ class EventCondition Target target_; }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.hpp index 26116143c..57da161e7 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.hpp @@ -13,7 +13,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -24,7 +24,7 @@ using ostk::core::container::Pair; using ostk::physics::unit::Angle; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief An Event Condition that works with angles. Handles wrapping angle to [0,360). class AngularCondition : public EventCondition @@ -146,7 +146,7 @@ class AngularCondition : public EventCondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.hpp index c2a489150..b663fb537 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.hpp @@ -10,15 +10,15 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { using ostk::core::type::String; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::State; /// @brief An Event Condition that can evaluate each state to a boolean. class BooleanCondition : public RealCondition @@ -64,7 +64,7 @@ class BooleanCondition : public RealCondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.hpp index 390ac1f71..46ffd3f2c 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.hpp @@ -13,11 +13,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -33,11 +33,11 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Length; using ostk::physics::coordinate::Frame; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::AngularCondition; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::AngularCondition; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::State; /// @brief A Classical Orbital Element based event condition class COECondition @@ -168,7 +168,7 @@ class COECondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.hpp index 9482df233..cb48cf4cd 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.hpp @@ -9,14 +9,14 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { using ostk::physics::time::Instant; -using ostk::astro::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::RealCondition; /// @brief A duration based event condition class InstantCondition : public RealCondition @@ -42,7 +42,7 @@ class InstantCondition : public RealCondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.hpp index ef0db4212..fdab3812e 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.hpp @@ -11,7 +11,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -19,8 +19,8 @@ namespace eventcondition using ostk::core::container::Array; using ostk::core::type::Shared; -using ostk::astro::EventCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::trajectory::State; /// @brief A logical connective event condition. /// @@ -98,7 +98,7 @@ class LogicalCondition : public EventCondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.hpp b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.hpp index b4f31681b..21f1246a7 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.hpp @@ -12,7 +12,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -22,7 +22,7 @@ using ostk::core::type::String; using ostk::physics::time::Duration; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief An Event Condition that can evaluate each state to a real number. Meant for non-cyclic /// continuous real numbers. For cyclic numbers (like angles), use AngularCondition. @@ -128,7 +128,7 @@ class RealCondition : public EventCondition }; } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight.hpp index 7adbcba29..e06404f1b 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight.hpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { /// @brief Spacecraft flight diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile.hpp index 1388f7206..db4e0cbe7 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile.hpp @@ -22,7 +22,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -41,9 +41,9 @@ using ostk::physics::time::Duration; using ostk::physics::time::Instant; using ostk::physics::time::Interval; -using ostk::astro::Trajectory; -using ostk::astro::flight::profile::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::Trajectory; +using ostk::astrodynamics::flight::profile::Model; +using ostk::astrodynamics::trajectory::State; /// @brief Spacecraft flight profile class Profile @@ -180,7 +180,7 @@ class Profile }; } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.hpp index abe33a225..085409cb5 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.hpp @@ -11,7 +11,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -26,7 +26,7 @@ using ostk::physics::coordinate::Axes; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief Profile model (abstract) class Model @@ -84,7 +84,7 @@ class Model } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Tabulated.hpp similarity index 86% rename from include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Tabulated.hpp index 5d939a409..a3a9fc43a 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Tabulated.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Models_Tabulated__ -#define __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Models_Tabulated__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Model_Tabulated__ +#define __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Model_Tabulated__ #include #include @@ -16,13 +16,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { namespace profile { -namespace models +namespace model { using ostk::core::container::Array; @@ -36,8 +36,8 @@ using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; using ostk::physics::time::Interval; -using ostk::astro::flight::profile::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::flight::profile::Model; +using ostk::astrodynamics::trajectory::State; /// @brief Tabulated profile model class Tabulated : public virtual Model @@ -79,10 +79,10 @@ class Tabulated : public virtual Model Pair accessStateRangeAtIndex(const Index& anIndex) const; }; -} // namespace models +} // namespace model } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Transform.hpp similarity index 88% rename from include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Transform.hpp index 07a662cb7..37426646e 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model/Transform.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Models_Transform__ -#define __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Models_Transform__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Model_Transform__ +#define __OpenSpaceToolkit_Astrodynamics_Flight_Profile_Model_Transform__ #include #include @@ -18,13 +18,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { namespace profile { -namespace models +namespace model { using ostk::core::container::Array; @@ -39,8 +39,8 @@ using ostk::physics::time::Instant; using ostk::physics::time::Interval; using DynamicProvider = ostk::physics::coordinate::frame::provider::Dynamic; -using ostk::astro::flight::profile::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::flight::profile::Model; +using ostk::astrodynamics::trajectory::State; /// @brief Transform provided profile model class Transform : public virtual Model @@ -88,10 +88,10 @@ class Transform : public virtual Model Shared frameSPtr_; }; -} // namespace models +} // namespace model } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/System.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/System.hpp index 9723690ae..9880137e1 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/System.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/System.hpp @@ -10,7 +10,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -101,7 +101,7 @@ class System }; } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.hpp index c4579f847..904089588 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.hpp @@ -13,7 +13,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -153,7 +153,7 @@ class PropulsionSystem } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.hpp index 161a52c69..98abd6ba0 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.hpp @@ -17,7 +17,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -34,8 +34,8 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::unit::Mass; -using ostk::astro::flight::System; -using ostk::astro::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::System; +using ostk::astrodynamics::flight::system::PropulsionSystem; /// @brief Define the dynamics system who's motion is being studied, in particular this is a /// satellite system @@ -180,7 +180,7 @@ class SatelliteSystem : public System } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.hpp b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.hpp index 08dd50a76..a38d53bfe 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.hpp @@ -18,7 +18,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -35,9 +35,9 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::unit::Mass; -using ostk::astro::flight::System; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::System; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; /// @brief Satellite System builder, meant to simplify creation of a SatelliteSystem, by allowing /// you to only specify the parameters you want. There are two ways of doing this: @@ -138,7 +138,7 @@ class SatelliteSystemBuilder } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.hpp b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.hpp index 06a81f4bf..3af917b7a 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.hpp @@ -14,7 +14,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::type::String; @@ -84,7 +84,7 @@ class GuidanceLaw const String name_; }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.hpp b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.hpp index 06781943c..67872d707 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.hpp @@ -15,7 +15,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace guidancelaw { @@ -26,7 +26,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::time::Instant; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; /// @brief Define the acceleration experienced by a point mass due to a constant thrust /// guidance law @@ -100,7 +100,7 @@ class ConstantThrust : public GuidanceLaw }; } // namespace guidancelaw -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.hpp b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.hpp index 9e49e05a5..43d287ca3 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.hpp @@ -11,13 +11,13 @@ #include #include -#include -#include +#include +#include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace guidancelaw { @@ -44,10 +44,10 @@ using ostk::physics::coordinate::Frame; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::GuidanceLaw; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::solvers::FiniteDifferenceSolver; -using ostk::astro::trajectory::StateBuilder; +using ostk::astrodynamics::GuidanceLaw; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::solver::FiniteDifferenceSolver; +using ostk::astrodynamics::trajectory::StateBuilder; /// @brief The Q-law is a Lyapunov feedback control law developed by Petropoulos, /// based on analytic expressions for maximum rates of change of the orbit elements and @@ -250,7 +250,7 @@ class QLaw : public GuidanceLaw }; } // namespace guidancelaw -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/RootSolver.hpp b/include/OpenSpaceToolkit/Astrodynamics/RootSolver.hpp index 25ea5235f..807171127 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/RootSolver.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/RootSolver.hpp @@ -8,7 +8,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::type::Size; @@ -110,7 +110,7 @@ class RootSolver std::function getToleranceFunction() const; }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.hpp b/include/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.hpp similarity index 97% rename from include/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.hpp index 74fb194f6..9a5e9b8da 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.hpp @@ -16,9 +16,9 @@ namespace ostk { -namespace astro +namespace astrodynamics { -namespace solvers +namespace solver { using ostk::core::type::Real; @@ -32,7 +32,7 @@ using ostk::mathematics::object::MatrixXd; using ostk::physics::time::Instant; using ostk::physics::time::Duration; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief Finite Difference solver class FiniteDifferenceSolver @@ -151,8 +151,8 @@ class FiniteDifferenceSolver const Duration stepDuration_; }; -} // namespace solvers -} // namespace astro +} // namespace solver +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.hpp b/include/OpenSpaceToolkit/Astrodynamics/Solver/TemporalConditionSolver.hpp similarity index 97% rename from include/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Solver/TemporalConditionSolver.hpp index 4d5c0453a..e31f6f487 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Solver/TemporalConditionSolver.hpp @@ -12,9 +12,9 @@ namespace ostk { -namespace astro +namespace astrodynamics { -namespace solvers +namespace solver { using ostk::core::type::Size; @@ -97,8 +97,8 @@ class TemporalConditionSolver ); }; -} // namespace solvers -} // namespace astro +} // namespace solver +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory.hpp index ce33dc92a..f19aa5f70 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory.hpp @@ -17,7 +17,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::container::Array; @@ -28,8 +28,8 @@ using ostk::core::type::Unique; using ostk::physics::time::Instant; using ostk::physics::time::Interval; -using ostk::astro::trajectory::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::Model; +using ostk::astrodynamics::trajectory::State; /// @brief Path followed by an object through space as a function of time /// @@ -171,7 +171,7 @@ class Trajectory Trajectory(); }; -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.hpp index cb852fbff..65f081d40 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.hpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -22,7 +22,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::time::Instant; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; /// @brief Local Orbital Frame Direction /// @@ -100,7 +100,7 @@ class LocalOrbitalFrameDirection }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.hpp index 79722abb8..02dec9234 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.hpp @@ -15,7 +15,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -28,7 +28,7 @@ using ostk::physics::coordinate::Frame; using ostk::physics::coordinate::Vector3d; using ostk::physics::time::Instant; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; /// @brief A local orbital frame factory /// @@ -138,7 +138,7 @@ class LocalOrbitalFrameFactory }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.hpp index 25ae7025c..8160a7a33 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.hpp @@ -14,7 +14,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -120,7 +120,7 @@ class LocalOrbitalFrameTransformProvider : public Provider }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.hpp index 93d1ea21a..afcaf2276 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.hpp @@ -11,7 +11,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -20,7 +20,7 @@ using ostk::core::container::Array; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief Trajectory model (abstract) class Model @@ -73,7 +73,7 @@ class Model }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.hpp similarity index 79% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.hpp index afccaa192..4763d6ccc 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Models_Static__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Models_Static__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Model_Static__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Model_Static__ #include #include @@ -11,19 +11,19 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { -namespace models +namespace model { using ostk::physics::coordinate::Position; using ostk::physics::time::Instant; using ostk::physics::time::Interval; -using ostk::astro::trajectory::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::Model; +using ostk::astrodynamics::trajectory::State; /// @brief Static trajectory model class Static : public virtual Model @@ -54,9 +54,9 @@ class Static : public virtual Model Position position_; }; -} // namespace models +} // namespace model } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.hpp similarity index 91% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.hpp index 42a0309ee..0fd182beb 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Models_Tabulated__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Models_Tabulated__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Model_Tabulated__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Model_Tabulated__ #include #include @@ -23,11 +23,11 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { -namespace models +namespace model { using ostk::core::container::Array; @@ -45,8 +45,8 @@ using ostk::physics::time::Instant; using ostk::physics::time::Interval; using ostk::physics::time::Scale; -using ostk::astro::trajectory::Model; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::Model; +using ostk::astrodynamics::trajectory::State; #define DEFAULT_TABULATED_INTERPOLATION_TYPE Tabulated::InterpolationType::Linear @@ -112,9 +112,9 @@ class Tabulated : public virtual Model Array> interpolators_ = Array>::Empty(); }; -} // namespace models +} // namespace model } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.hpp index 045e30f36..7e52df019 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.hpp @@ -27,7 +27,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -48,9 +48,9 @@ using ostk::physics::time::Time; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::Trajectory; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::Pass; +using ostk::astrodynamics::Trajectory; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::Pass; /// @brief Gravitationally curved trajectory of an object /// @@ -223,7 +223,7 @@ class Orbit : public Trajectory }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.hpp similarity index 96% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.hpp index b2469fc7f..d8c267e09 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM__ #include #include @@ -21,13 +21,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace messages +namespace message { namespace spacex { @@ -48,7 +48,7 @@ using ostk::physics::time::Instant; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; /// @brief SpaceX Orbital Parameter Message (OPM) /// @@ -138,10 +138,10 @@ class OPM }; } // namespace spacex -} // namespace messages +} // namespace message } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.hpp index 52e4ee7cb..cbbe71ad6 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.hpp @@ -12,7 +12,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -23,9 +23,9 @@ using ostk::core::type::Integer; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; -class Model : public virtual ostk::astro::trajectory::Model +class Model : public virtual ostk::astrodynamics::trajectory::Model { public: Model(); @@ -49,7 +49,7 @@ class Model : public virtual ostk::astro::trajectory::Model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp similarity index 87% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp index 21bae576e..6142871be 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMean__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_BrouwerLyddaneMean_BrouwerLyddaneMean__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMean__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_BrouwerLyddaneMean_BrouwerLyddaneMean__ #include #include @@ -18,17 +18,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -48,7 +48,7 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; /// @brief Brouwer-Lyddane Mean Orbital Elements. Short and/or secular periodic variations are /// averaged. @@ -114,10 +114,10 @@ class BrouwerLyddaneMean : public COE }; } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp similarity index 82% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp index 5898d5313..461e4ed6c 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong__ #include #include @@ -18,18 +18,18 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -49,8 +49,8 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using classicalOE = ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; +using classicalOE = ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; /// @brief Brouwer-Lyddane Mean Orbital Elements. Short and/or secular periodic variations are /// averaged. @@ -109,10 +109,10 @@ class BrouwerLyddaneMeanLong : public BrouwerLyddaneMean }; } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp similarity index 82% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp index dd9770d9c..2198c15dd 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort__ #include #include @@ -18,18 +18,18 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -49,8 +49,8 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using classicalOE = ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; +using classicalOE = ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; /// @brief Brouwer-Lyddane Mean Short Orbital Elements. Short periodic variations are averaged. /// @@ -108,10 +108,10 @@ class BrouwerLyddaneMeanShort : public BrouwerLyddaneMean }; } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.hpp similarity index 90% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.hpp index 6b8a51d5a..379c694e5 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler__ #include #include @@ -13,18 +13,18 @@ #include #include -#include +#include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::core::type::Integer; @@ -36,12 +36,12 @@ using ostk::physics::time::Instant; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; #define DEFAULT_IN_FIXED_FRAME false -class Kepler : public ostk::astro::trajectory::orbit::Model +class Kepler : public ostk::astrodynamics::trajectory::orbit::Model { public: enum class PerturbationType @@ -176,10 +176,10 @@ class Kepler : public ostk::astro::trajectory::orbit::Model ); }; -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.hpp similarity index 97% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.hpp index ac625868b..18660bcc8 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE__ #include #include @@ -20,13 +20,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace kepler { @@ -364,10 +364,10 @@ class COE }; } // namespace kepler -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.hpp similarity index 91% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.hpp index 63af34ec7..1f6e8e604 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated__ #include #include @@ -16,13 +16,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::core::container::Array; @@ -31,14 +31,14 @@ using ostk::core::type::Real; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::Model; -using ostk::astro::Dynamics; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::Model; +using ostk::astrodynamics::Dynamics; /// @brief Define an orbit model that is propagated using numerical propagation -class Propagated : public ostk::astro::trajectory::orbit::Model +class Propagated : public ostk::astrodynamics::trajectory::orbit::Model { public: /// @brief Constructor @@ -199,10 +199,10 @@ class Propagated : public ostk::astro::trajectory::orbit::Model void sanitizeCachedArray() const; }; -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.hpp similarity index 81% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.hpp index 1365b1754..544c346bd 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4__ #include #include @@ -14,18 +14,18 @@ #include #include -#include +#include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::core::type::Integer; @@ -38,10 +38,10 @@ using ostk::physics::time::Instant; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::sgp4::TLE; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; -class SGP4 : public ostk::astro::trajectory::orbit::Model +class SGP4 : public ostk::astrodynamics::trajectory::orbit::Model { public: SGP4(const TLE& aTle); @@ -87,10 +87,10 @@ class SGP4 : public ostk::astro::trajectory::orbit::Model Unique implUPtr_; }; -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.hpp similarity index 98% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.hpp index 21343e4ee..c1f92edf5 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE__ #include #include @@ -14,13 +14,13 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace sgp4 { @@ -373,10 +373,10 @@ class TLE }; } // namespace sgp4 -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.hpp similarity index 81% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.hpp index 90c8449af..4b8e2dafd 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated__ #include #include @@ -9,19 +9,19 @@ #include #include -#include +#include #include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::core::container::Array; @@ -29,9 +29,9 @@ using ostk::core::type::Integer; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::State; -class Tabulated : public virtual trajectory::orbit::Model, public trajectory::models::Tabulated +class Tabulated : public virtual trajectory::orbit::Model, public trajectory::model::Tabulated { public: Tabulated( @@ -67,10 +67,10 @@ class Tabulated : public virtual trajectory::orbit::Model, public trajectory::mo Integer initialRevolutionNumber_; }; -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.hpp index c1e8166e1..a165c4603 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.hpp @@ -11,7 +11,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -174,7 +174,7 @@ class Pass } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.hpp index 62f0c8a9b..4ef7d16fc 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.hpp @@ -36,7 +36,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -53,12 +53,12 @@ using ostk::physics::coordinate::Velocity; using ostk::physics::time::Duration; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::EventCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::StateBuilder; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::StateBuilder; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; /// @brief Define a propagator to be used for numerical propagation class Propagator @@ -103,10 +103,10 @@ class Propagator /// @return True if propagator is defined bool isDefined() const; - /// @brief Access the coordinates broker + /// @brief Access the coordinate broker /// - /// @return The coordinates broker - const Shared& accessCoordinatesBroker() const; + /// @return The coordinate broker + const Shared& accessCoordinateBroker() const; /// @brief Access the numerical solver /// @@ -209,7 +209,7 @@ class Propagator static Propagator FromEnvironment(const NumericalSolver& aNumericalSolver, const Environment& anEnvironment); private: - Shared coordinatesBrokerSPtr_ = std::make_shared(); + Shared coordinatesBrokerSPtr_ = std::make_shared(); Array dynamicsContexts_ = Array::Empty(); mutable NumericalSolver numericalSolver_; @@ -217,7 +217,7 @@ class Propagator }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.hpp index 135cae75f..0552ebad3 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.hpp @@ -16,13 +16,13 @@ #include #include #include -#include +#include #include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -38,12 +38,12 @@ using ostk::physics::time::Instant; using ostk::physics::time::Duration; using ostk::physics::unit::Mass; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::orbit::models::Propagated; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::Thruster; -using ostk::astro::EventCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::orbit::model::Propagated; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::EventCondition; /// @brief Represent a propagation segment for astrodynamics purposes class Segment @@ -117,13 +117,13 @@ class Segment /// /// @param aDynamicsSPtr Dynamics /// @param aFrameSPtr Frame - /// @param aCoordinatesSubsetSPtrArray Array of coordinates subsets + /// @param aCoordinateSubsetSPtrArray Array of coordinate subsets /// @return Dynamics contribution MatrixXd getDynamicsContribution( const Shared& aDynamicsSPtr, const Shared& aFrameSPtr, - const Array>& aCoordinatesSubsetSPtrArray = - Array>::Empty() + const Array>& aCoordinateSubsetSPtrArray = + Array>::Empty() ) const; /// @brief Get dynamics acceleration contribution @@ -260,7 +260,7 @@ class Segment }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif // __OpenSpaceToolkit_Astrodynamics_Trajectory_Segment__ diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.hpp index a0ac89f49..c638cb24b 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.hpp @@ -12,13 +12,13 @@ #include #include -#include +#include #include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -30,11 +30,11 @@ using ostk::core::container::Array; using ostk::physics::Environment; using ostk::physics::unit::Mass; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::State; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::trajectory::orbit::models::Propagated; -using ostk::astro::dynamics::Thruster; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::orbit::model::Propagated; +using ostk::astrodynamics::dynamics::Thruster; /// @brief Represent a sequence of trajectory segments executed in order. class Sequence @@ -221,7 +221,7 @@ class Sequence }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State.hpp index 52c340b50..6c2b80f87 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State.hpp @@ -15,12 +15,12 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -38,8 +38,8 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; /// @brief Trajectory State class State @@ -51,12 +51,12 @@ class State /// @param aCoordinates The coordinates at the instant in International System of Units /// @param aFrameSPtr The reference frame in which the coordinates are referenced to and /// resolved in - /// @param aCoordinatesBrokerSPtr The coordinates broker associated to the coordinates + /// @param aCoordinateBrokerSPtr The coordinate broker associated to the coordinates State( const Instant& anInstant, const VectorXd& aCoordinates, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ); /// @brief Constructor. This constructor makes a new Coordinates Broker under the hood for every @@ -67,12 +67,12 @@ class State /// @param aCoordinates The coordinates at the instant in International System of Units /// @param aFrameSPtr The reference frame in which the coordinates are referenced to and /// resolved in - /// @param aCoordinatesSubsetsArray The coordinates subsets associated to the coordinates + /// @param aCoordinateSubsetsArray The coordinate subsets associated to the coordinates State( const Instant& anInstant, const VectorXd& aCoordinates, const Shared& aFrameSPtr, - const Array>& aCoordinatesSubsetsArray + const Array>& aCoordinateSubsetsArray ); /// @brief Utility constructor for Position/Velocity/Attitude/Angular Velocity. @@ -163,10 +163,10 @@ class State /// @return The coordinates const VectorXd& accessCoordinates() const; - /// @brief Access the coordinates broker associated with the State. + /// @brief Access the coordinate broker associated with the State. /// - /// @return The coordinates broker associated to the State - const Shared& accessCoordinatesBroker() const; + /// @return The coordinate broker associated to the State + const Shared& accessCoordinateBroker() const; /// @brief Get the size of the State. /// @@ -209,29 +209,29 @@ class State /// @return The coordinates VectorXd getCoordinates() const; - /// @brief Get the coordinates subsets of the State. + /// @brief Get the coordinate subsets of the State. /// - /// @return The coordinates subsets - const Array> getCoordinatesSubsets() const; + /// @return The coordinate subsets + const Array> getCoordinateSubsets() const; - /// @brief Check if the State has a given coordinates subset. + /// @brief Check if the State has a given coordinate subset. /// - /// @param aCoordinatesSubsetSPtr the coordinates subset to be checked + /// @param aCoordinateSubsetSPtr the coordinate subset to be checked /// - /// @return True if the coordinates subset is included in the State - bool hasSubset(const Shared& aCoordinatesSubsetSPtr) const; + /// @return True if the coordinate subset is included in the State + bool hasSubset(const Shared& aCoordinateSubsetSPtr) const; /// @brief Extract the coordinates for a single subset. /// /// @param aSubsetSPtr The subset to extract the coordinates for /// @return The coordinates for the subset - VectorXd extractCoordinate(const Shared& aSubsetSPtr) const; + VectorXd extractCoordinate(const Shared& aSubsetSPtr) const; /// @brief Extract the coordinates for multiple subsets. /// - /// @param aCoordinatesSubsetsArray The array of subsets to extract the coordinates for + /// @param aCoordinateSubsetsArray The array of subsets to extract the coordinates for /// @return The coordinates for the subsets - VectorXd extractCoordinates(const Array>& aCoordinatesSubsetsArray) const; + VectorXd extractCoordinates(const Array>& aCoordinateSubsetsArray) const; /// @brief Transform the State to a different reference frame. /// @@ -254,11 +254,11 @@ class State Instant instant_; VectorXd coordinates_; Shared frameSPtr_; - Shared coordinatesBrokerSPtr_; + Shared coordinatesBrokerSPtr_; }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.hpp similarity index 60% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.hpp index caf129a57..7fb1c8ad6 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker__ #include #include @@ -10,11 +10,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -28,46 +28,46 @@ using ostk::core::type::Shared; using ostk::core::type::Size; using ostk::core::type::String; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -/// @brief State coordinates broker. -class CoordinatesBroker +/// @brief State coordinate broker. +class CoordinateBroker { public: /// @brief Constructor /// /// @code{.cpp} - /// CoordinatesBroker coordinatesBroker(); + /// CoordinateBroker coordinatesBroker(); /// @endcode - CoordinatesBroker(); + CoordinateBroker(); /// @brief Constructor /// /// @code{.cpp} - /// CoordinatesBroker coordinatesBroker({asubsetSPtr, anotherSubsetSPtr}); + /// CoordinateBroker coordinatesBroker({asubsetSPtr, anotherSubsetSPtr}); /// @endcode /// - /// @param aCoordinatesSubsetsArray the coordinates subsets to consider - CoordinatesBroker(const Array>& aCoordinatesSubsetsArray); + /// @param aCoordinateSubsetsArray the coordinate subsets to consider + CoordinateBroker(const Array>& aCoordinateSubsetsArray); /// @brief Equal to operator /// - /// @param aCoordinatesBroker A coordinates broker + /// @param aCoordinateBroker A coordinate broker /// /// @return True if CoordinateBrokers equal - bool operator==(const CoordinatesBroker& aCoordinatesBroker) const; + bool operator==(const CoordinateBroker& aCoordinateBroker) const; /// @brief Not equal to operator /// - /// @param aCoordinatesBroker A coordinates broker + /// @param aCoordinateBroker A coordinate broker /// /// @return True if CoordinateBrokers are not equal - bool operator!=(const CoordinatesBroker& aCoordinatesBroker) const; + bool operator!=(const CoordinateBroker& aCoordinateBroker) const; /// @brief Return the considered coordinate subsets /// /// @return The considered coordinate subsets - const Array>& accessSubsets() const; + const Array>& accessSubsets() const; /// @brief Return the total number of coordinates /// @@ -82,56 +82,56 @@ class CoordinatesBroker /// @brief Return the considered coordinate subsets /// /// @return The considered coordinate subsets - Array> getSubsets() const; + Array> getSubsets() const; - /// @brief Add a coordinates subset to be considered, returning the starting index it will occupy + /// @brief Add a coordinate subset to be considered, returning the starting index it will occupy /// (or that it occupies if it was already added) in the state coordinates /// - /// @param aCoordinatesSubsetSPtr a coordinates subset to be considered + /// @param aCoordinateSubsetSPtr a coordinate subset to be considered /// /// @return The starting index of the subset in the state coordinates - Index addSubset(const Shared& aCoordinatesSubsetSPtr); + Index addSubset(const Shared& aCoordinateSubsetSPtr); - /// @brief Check if a coordinates subset has already been considered + /// @brief Check if a coordinate subset has already been considered /// - /// @param aCoordinatesSubsetSPtr the coordinates subset to be checked + /// @param aCoordinateSubsetSPtr the coordinate subset to be checked /// - /// @return True if the coordinates subset is already considered - bool hasSubset(const Shared& aCoordinatesSubsetSPtr) const; + /// @return True if the coordinate subset is already considered + bool hasSubset(const Shared& aCoordinateSubsetSPtr) const; /// @brief Extract the coordinates of a given subset from the full coordinates vector /// /// @param aFullCoordinatesVector the full coordinates vecctor - /// @param aCoordinatesSubset the coordinates subsets of interest + /// @param aCoordinateSubset the coordinate subsets of interest /// /// @return The coordinates of the subset - VectorXd extractCoordinate(const VectorXd& aFullCoordinatesVector, const CoordinatesSubset& aCoordinatesSubset) + VectorXd extractCoordinate(const VectorXd& aFullCoordinatesVector, const CoordinateSubset& aCoordinateSubset) const; /// @brief Extract the coordinates of a given subset from the full coordinates vector /// /// @param aFullCoordinatesVector the full coordinates vecctor - /// @param aCoordinatesSubsetSPtr the coordinates subsets of interest + /// @param aCoordinateSubsetSPtr the coordinate subsets of interest /// /// @return The coordinates of the subset VectorXd extractCoordinate( - const VectorXd& aFullCoordinatesVector, const Shared& aCoordinatesSubsetSPtr + const VectorXd& aFullCoordinatesVector, const Shared& aCoordinateSubsetSPtr ) const; /// @brief Extract the coordinates of an array of subsets from the full coordinates vector /// /// @param aFullCoordinatesVector the full coordinates vecctor - /// @param aCoordinatesSubsetsArray the array of coordinates subsets of interest + /// @param aCoordinateSubsetsArray the array of coordinate subsets of interest /// /// @return The coordinates of the array of subsets in the same order as the input subsets VectorXd extractCoordinates( - const VectorXd& aFullCoordinatesVector, const Array>& aCoordinatesSubsetsArray + const VectorXd& aFullCoordinatesVector, const Array>& aCoordinateSubsetsArray ) const; private: - Index nextCoordinatesSubsetIndex_; - Array> coordinatesSubsets_; - Map coordinatesSubsetsIndexMap_; + Index nextCoordinateSubsetIndex_; + Array> coordinateSubsets_; + Map coordinateSubsetsIndexMap_; bool hasSubset(const String& anId) const; Index getSubsetIndex(const String& anId) const; @@ -139,7 +139,7 @@ class CoordinatesBroker } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.hpp similarity index 69% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.hpp index 63eb8311c..790caffc3 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.hpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset__ #include #include @@ -14,7 +14,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -30,16 +30,16 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -class CoordinatesBroker; +class CoordinateBroker; -/// @brief State coordinates subset. It contains information related to a particular group of coordinates. It does not +/// @brief State coordinate subset. It contains information related to a particular group of coordinates. It does not /// contain the coordinate values. -class CoordinatesSubset +class CoordinateSubset { public: /// @brief Constructor /// - /// The default CoordinatesSubset instance is frame-invariant and implements element-wise + /// The default CoordinateSubset instance is frame-invariant and implements element-wise /// addition/subtraction. /// @code{.cpp} /// CoordinateSubset coordinateSubset = {aName, aSize}; @@ -47,21 +47,21 @@ class CoordinatesSubset /// /// @param aName A name /// @param aSize A size (i.e. dimension) - CoordinatesSubset(const String& aName, const Size& aSize); + CoordinateSubset(const String& aName, const Size& aSize); /// @brief Equal to operator /// - /// @param aCoordinatesSubset The coordinate subset to compare it to + /// @param aCoordinateSubset The coordinate subset to compare it to /// - /// @return True if CoordinatesSubsets are equal - bool operator==(const CoordinatesSubset& aCoordinatesSubset) const; + /// @return True if CoordinateSubsets are equal + bool operator==(const CoordinateSubset& aCoordinateSubset) const; /// @brief Not equal to operator /// - /// @param aCoordinatesSubset The coordinate subset to compare it to + /// @param aCoordinateSubset The coordinate subset to compare it to /// - /// @return True if CoordinatesSubsets are not equal - bool operator!=(const CoordinatesSubset& aCoordinatesSubset) const; + /// @return True if CoordinateSubsets are not equal + bool operator!=(const CoordinateSubset& aCoordinateSubset) const; /// @brief Return the unique identifier of the instance /// @@ -78,38 +78,38 @@ class CoordinatesSubset /// @return The size (i.e. dimension) of the instance Size getSize() const; - /// @brief Add two coordinates subsets + /// @brief Add two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame in which the coordinates are resolved - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 + subset_2) + /// @return The resulting coordinate subset value (subset_1 + subset_2) virtual VectorXd add( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const; - /// @brief Subtract two coordinates subsets + /// @brief Subtract two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame associated to the coordinates - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 - subset_2) + /// @return The resulting coordinate subset value (subset_1 - subset_2) virtual VectorXd subtract( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const; /// @brief Transform the coordinate subset from one frame to another @@ -118,31 +118,31 @@ class CoordinatesSubset /// @param aFullCoordinatesVector all coordinates /// @param fromFrameSPtr the reference frame associated to the coordinates /// @param toFrameSPtr the reference frame in which the coordinates are to be transformed - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value expressed in the desired reference frame + /// @return The resulting coordinate subset value expressed in the desired reference frame virtual VectorXd inFrame( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const Shared& fromFrameSPtr, const Shared& toFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const; /// @brief Return a default Mass instance /// /// @return The default Mass shared pointer instance - static Shared Mass(); + static Shared Mass(); /// @brief Return a default Surface Area instance /// /// @return The default Surface Area shared pointer instance - static Shared SurfaceArea(); + static Shared SurfaceArea(); /// @brief Return a default DragCoefficient instance /// /// @return The default DragCoefficient shared pointer instance - static Shared DragCoefficient(); + static Shared DragCoefficient(); private: String name_; @@ -152,7 +152,7 @@ class CoordinatesSubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.hpp similarity index 73% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.hpp index 750913c71..7c288f4c0 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.hpp @@ -1,20 +1,20 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity__ -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::core::type::Shared; @@ -23,13 +23,13 @@ using ostk::core::type::String; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; /// @brief Angular Velocity. -class AngularVelocity : public CoordinatesSubset +class AngularVelocity : public CoordinateSubset { public: /// @brief Constructor @@ -53,16 +53,16 @@ class AngularVelocity : public CoordinatesSubset /// @param [in] aFullCoordinatesVector all coordinates /// @param [in] fromFrame the reference frame associated to the coordinates /// @param [in] toFrame the reference frame in which the coordinates are to be transformed - /// @param [in] aCoordinatesBrokerSPtr a coordinates broker + /// @param [in] aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value expressed in the desired reference frame + /// @return The resulting coordinate subset value expressed in the desired reference frame VectorXd inFrame( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const; /// @brief Return the default instance @@ -75,10 +75,10 @@ class AngularVelocity : public CoordinatesSubset Shared attitudeQuaternionSPtr_; }; -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.hpp similarity index 79% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.hpp index 920c08b28..2fd51568c 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.hpp @@ -1,23 +1,23 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion__ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::core::type::Shared; @@ -28,12 +28,12 @@ using ostk::mathematics::geometry::d3::transformation::rotation::Quaternion; using ostk::physics::coordinate::Transform; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; /// @brief Attitude Quaternion (XYZS format). -class AttitudeQuaternion : public CoordinatesSubset +class AttitudeQuaternion : public CoordinateSubset { public: /// @brief Constructor @@ -56,16 +56,16 @@ class AttitudeQuaternion : public CoordinatesSubset /// @param [in] aFullCoordinatesVector all coordinates /// @param [in] fromFrame the reference frame associated to the coordinates /// @param [in] toFrame the reference frame in which the coordinates are to be transformed - /// @param [in] aCoordinatesBrokerSPtr a coordinates broker + /// @param [in] aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value expressed in the desired reference frame + /// @return The resulting coordinate subset value expressed in the desired reference frame VectorXd inFrame( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; /// @brief Return a Quaternion from coordinates. @@ -89,10 +89,10 @@ class AttitudeQuaternion : public CoordinatesSubset static Shared Default(); }; -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.hpp similarity index 70% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.hpp index 678db4725..c0d3661d9 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.hpp @@ -1,19 +1,19 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition__ -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::core::type::Shared; @@ -21,11 +21,11 @@ using ostk::core::type::String; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; /// @brief Cartesian Position. -class CartesianPosition : public CoordinatesSubset +class CartesianPosition : public CoordinateSubset { public: /// @brief Constructor @@ -40,38 +40,38 @@ class CartesianPosition : public CoordinatesSubset /// @brief Destructor ~CartesianPosition(); - /// @brief Add two coordinates subsets + /// @brief Add two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame in which the coordinates are resolved - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 + subset_2) + /// @return The resulting coordinate subset value (subset_1 + subset_2) virtual VectorXd add( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; - /// @brief Subtract two coordinates subsets + /// @brief Subtract two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame associated to the coordinates - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 - subset_2) + /// @return The resulting coordinate subset value (subset_1 - subset_2) virtual VectorXd subtract( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; /// @brief Transforms the coordinate subset from one frame to another @@ -80,15 +80,15 @@ class CartesianPosition : public CoordinatesSubset /// @param aFullCoordinatesVector all coordinates /// @param fromFrame the reference frame associated to the coordinates /// @param toFrame the reference frame in which the coordinates are to be transformed - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value expressed in the desired reference frame + /// @return The resulting coordinate subset value expressed in the desired reference frame VectorXd inFrame( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; /// @brief Return the default instance @@ -97,10 +97,10 @@ class CartesianPosition : public CoordinatesSubset static Shared Default(); }; -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.hpp similarity index 70% rename from include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.hpp rename to include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.hpp index 826637b80..47ad54be8 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.hpp @@ -1,20 +1,20 @@ /// Apache License 2.0 -#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity__ -#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity__ +#ifndef __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity__ +#define __OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity__ -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::core::type::Shared; @@ -23,12 +23,12 @@ using ostk::core::type::String; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; /// @brief Cartesian Velocity. -class CartesianVelocity : public CoordinatesSubset +class CartesianVelocity : public CoordinateSubset { public: /// @brief Constructor @@ -44,38 +44,38 @@ class CartesianVelocity : public CoordinatesSubset /// @brief Destructor ~CartesianVelocity(); - /// @brief Add two coordinates subsets + /// @brief Add two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame in which the coordinates are resolved - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 + subset_2) + /// @return The resulting coordinate subset value (subset_1 + subset_2) virtual VectorXd add( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; - /// @brief Subtract two coordinates subsets + /// @brief Subtract two coordinate subsets /// /// @param anInstant the instant associated to the coordinates /// @param aFullCoordinatesVector first set of all coordinates /// @param anotherFullCoordinatesVector second set of all coordinates /// @param aFrameSPtr the reference frame associated to the coordinates - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value (subset_1 - subset_2) + /// @return The resulting coordinate subset value (subset_1 - subset_2) virtual VectorXd subtract( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const override; /// @brief Transforms the coordinate subset from one frame to another @@ -84,15 +84,15 @@ class CartesianVelocity : public CoordinatesSubset /// @param aFullCoordinatesVector all coordinates /// @param fromFrame the reference frame associated to the coordinates /// @param toFrame the reference frame in which the coordinates are to be transformed - /// @param aCoordinatesBrokerSPtr a coordinates broker + /// @param aCoordinateBrokerSPtr a coordinate broker /// - /// @return The resulting coordinates subset value expressed in the desired reference frame + /// @return The resulting coordinate subset value expressed in the desired reference frame VectorXd inFrame( const Instant& anInstant, const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const; /// @brief Return the default instance @@ -104,10 +104,10 @@ class CartesianVelocity : public CoordinatesSubset Shared cartesianPositionSPtr_; }; -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.hpp index 1d6e2db83..e7c7c82d7 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.hpp @@ -16,7 +16,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -27,8 +27,8 @@ using ostk::core::container::Array; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; -using ostk::astro::RootSolver; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::RootSolver; using MathNumericalSolver = ostk::mathematics::solver::NumericalSolver; /// @brief Define an astrodynamics state contextual Numerical Solver. This class inherits from the OSTk Mathematics @@ -239,7 +239,7 @@ class NumericalSolver : public MathNumericalSolver } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.hpp b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.hpp index ae6178641..35b0e29c0 100644 --- a/include/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.hpp +++ b/include/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.hpp @@ -14,12 +14,12 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -35,11 +35,11 @@ using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -/// @brief Factory class to generate States with common reference frame and coordinates subsets +/// @brief Factory class to generate States with common reference frame and coordinate subsets class StateBuilder { public: @@ -47,18 +47,18 @@ class StateBuilder /// /// @param aFrameSPtr The reference frame in which the coordinates are referenced to and /// resolved in - /// @param aCoordinatesSubsetsArray The array of coordinates subsets defining the output + /// @param aCoordinateSubsetsArray The array of coordinate subsets defining the output /// States StateBuilder( - const Shared& aFrameSPtr, const Array>& aCoordinatesSubsetsArray + const Shared& aFrameSPtr, const Array>& aCoordinateSubsetsArray ); /// @brief Constructor. /// /// @param aFrameSPtr The reference frame in which the coordinates are referenced to and /// resolved in - /// @param aCoordinatesBroker Shared pointer to an existing Coordinates Broker - StateBuilder(const Shared& aFrameSPtr, const Shared& aCoordinatesBrokerSPtr); + /// @param aCoordinateBroker Shared pointer to an existing Coordinates Broker + StateBuilder(const Shared& aFrameSPtr, const Shared& aCoordinateBrokerSPtr); /// @brief Constructor. /// @@ -77,19 +77,19 @@ class StateBuilder /// @return True if the StateBuilders are not equal, false otherwise bool operator!=(const StateBuilder& aStateBuilder) const; - /// @brief Return a new StateBuilder with the additional CoordinatesSubset. + /// @brief Return a new StateBuilder with the additional CoordinateSubset. /// - /// @param aCoordinatesSubsetSPtr The CoordinatesSubset to append + /// @param aCoordinateSubsetSPtr The CoordinateSubset to append /// /// @return A new StateBuilder - const StateBuilder operator+(const Shared& aCoordinatesSubsetSPtr) const; + const StateBuilder operator+(const Shared& aCoordinateSubsetSPtr) const; - /// @brief Return a new StateBuilder without the given CoordinatesSubset. + /// @brief Return a new StateBuilder without the given CoordinateSubset. /// - /// @param aCoordinatesSubsetSPtr The CoordinatesSubset to remove + /// @param aCoordinateSubsetSPtr The CoordinateSubset to remove /// /// @return A new StateBuilder - const StateBuilder operator-(const Shared& aCoordinatesSubsetSPtr) const; + const StateBuilder operator-(const Shared& aCoordinateSubsetSPtr) const; /// @brief Stream insertion operator. /// @@ -108,17 +108,17 @@ class StateBuilder /// @return A State linked to the Frame and Coordinates Broker of the StateBuilder const State build(const Instant& anInstant, const VectorXd& aCoordinates) const; - /// @brief Produce a State with the CoordinatesSubsets specified by the StateBuilder. + /// @brief Produce a State with the CoordinateSubsets specified by the StateBuilder. /// /// @param aState the state from which the coordinates will be taken. - /// @return A State with the CoordinatesSubsets of the StateBuilder. + /// @return A State with the CoordinateSubsets of the StateBuilder. const State reduce(const State& aState) const; - /// @brief Produce a State with the CoordinatesSubsets specified by the StateBuilder. + /// @brief Produce a State with the CoordinateSubsets specified by the StateBuilder. /// /// @param aState the state from which the coordinates will be taken. /// @param defaultState the state from which missing coordinates will be taken. - /// @return A State with the CoordinatesSubsets of the StateBuilder. + /// @return A State with the CoordinateSubsets of the StateBuilder. const State expand(const State& aState, const State& defaultState) const; /// @brief Accessor for the reference frame. @@ -126,20 +126,20 @@ class StateBuilder /// @return The reference frame const Shared accessFrame() const; - /// @brief Access the coordinates broker associated with the StateBuilder. + /// @brief Access the coordinate broker associated with the StateBuilder. /// - /// @return The coordinates broker associated to the State - const Shared& accessCoordinatesBroker() const; + /// @return The coordinate broker associated to the State + const Shared& accessCoordinateBroker() const; /// @brief Get the reference frame associated with the StateBuilder. /// /// @return The reference frame Shared getFrame() const; - /// @brief Get the coordinates subsets of the StateBuilder. + /// @brief Get the coordinate subsets of the StateBuilder. /// - /// @return The coordinates subsets - const Array> getCoordinatesSubsets() const; + /// @return The coordinate subsets + const Array> getCoordinateSubsets() const; /// @brief Print the StateBuilder to an output stream. /// @@ -154,11 +154,11 @@ class StateBuilder private: Shared frameSPtr_; - Shared coordinatesBrokerSPtr_; + Shared coordinatesBrokerSPtr_; }; } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/src/OpenSpaceToolkit/Astrodynamics/Access.cpp b/src/OpenSpaceToolkit/Astrodynamics/Access.cpp index f7b98e280..e13210126 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Access.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Access.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { Access::Access( @@ -202,5 +202,5 @@ String Access::StringFromType(const Access::Type& aType) return String::Empty(); } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Access/Generator.cpp b/src/OpenSpaceToolkit/Astrodynamics/Access/Generator.cpp index ba6c5093e..2b28b649e 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Access/Generator.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Access/Generator.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include using ostk::mathematics::geometry::d3::object::Point; using ostk::mathematics::geometry::d3::object::Segment; @@ -18,11 +18,11 @@ using ostk::physics::coordinate::Frame; using ostk::physics::coordinate::spherical::LLA; using ostk::physics::environment::Object; using ostk::physics::environment::object::celestial::Earth; -using ostk::astro::solvers::TemporalConditionSolver; +using ostk::astrodynamics::solver::TemporalConditionSolver; namespace ostk { -namespace astro +namespace astrodynamics { namespace access { @@ -558,5 +558,5 @@ AER GeneratorContext::CalculateAer( } } // namespace access -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.cpp b/src/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.cpp index 96624c1bd..d3ebca494 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.cpp @@ -2,15 +2,15 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace conjunction { -namespace messages +namespace message { namespace ccsds { @@ -666,7 +666,7 @@ CDM::ObjectType CDM::ObjectTypeFromString(const String& aString) } } // namespace ccsds -} // namespace messages +} // namespace message } // namespace conjunction -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics.cpp index e75dc737a..0be8c9a63 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics.cpp @@ -10,7 +10,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { using ostk::core::container::Array; @@ -21,10 +21,10 @@ using ostk::core::type::Size; using ostk::physics::time::Duration; using ostk::physics::environment::object::Celestial; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::PositionDerivative; Dynamics::Context::Context( const Shared& aDynamicsSPtr, @@ -184,5 +184,5 @@ Array> Dynamics::FromEnvironment(const Environment& anEnvironme return dynamicsArray; } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.cpp index 708e0220f..22a61afdd 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.cpp @@ -5,13 +5,13 @@ #include #include -#include -#include -#include +#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -25,9 +25,9 @@ using ostk::physics::unit::Length; using ostk::physics::unit::Time; using ostk::physics::coordinate::Position; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -71,18 +71,18 @@ Shared AtmosphericDrag::getCelestial() const return celestialObjectSPtr_; } -Array> AtmosphericDrag::getReadCoordinatesSubsets() const +Array> AtmosphericDrag::getReadCoordinateSubsets() const { return { CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient(), + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient(), }; } -Array> AtmosphericDrag::getWriteCoordinatesSubsets() const +Array> AtmosphericDrag::getWriteCoordinateSubsets() const { return { CartesianVelocity::Default(), @@ -133,5 +133,5 @@ void AtmosphericDrag::print(std::ostream& anOutputStream, bool displayDecorator) } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.cpp index 7bf10b636..7c8ac45b8 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.cpp @@ -4,12 +4,12 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -22,8 +22,8 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Length; using ostk::physics::unit::Time; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -69,14 +69,14 @@ Shared CentralBodyGravity::getCelestial() const return celestialObjectSPtr_; } -Array> CentralBodyGravity::getReadCoordinatesSubsets() const +Array> CentralBodyGravity::getReadCoordinateSubsets() const { return { CartesianPosition::Default(), }; } -Array> CentralBodyGravity::getWriteCoordinatesSubsets() const +Array> CentralBodyGravity::getWriteCoordinateSubsets() const { return { CartesianVelocity::Default(), @@ -116,5 +116,5 @@ void CentralBodyGravity::print(std::ostream& anOutputStream, bool displayDecorat } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.cpp index 80927cb53..1b52a2713 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.cpp @@ -6,18 +6,18 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; PositionDerivative::PositionDerivative() : Dynamics("Position Derivative") @@ -38,14 +38,14 @@ std::ostream& operator<<(std::ostream& anOutputStream, const PositionDerivative& return anOutputStream; } -Array> PositionDerivative::getReadCoordinatesSubsets() const +Array> PositionDerivative::getReadCoordinateSubsets() const { return { CartesianVelocity::Default(), }; } -Array> PositionDerivative::getWriteCoordinatesSubsets() const +Array> PositionDerivative::getWriteCoordinateSubsets() const { return { CartesianPosition::Default(), @@ -70,5 +70,5 @@ void PositionDerivative::print(std::ostream& anOutputStream, bool displayDecorat } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.cpp index 784f5e56b..73c526579 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.cpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -21,13 +21,13 @@ using ostk::mathematics::object::VectorXd; Tabulated::Tabulated( const Array& anInstantArray, const MatrixXd& aContributionProfile, - const Array>& aWriteCoordinatesSubsets, + const Array>& aWriteCoordinateSubsets, const Shared& aFrameSPtr ) : Dynamics("Tabulated"), contributionProfile_(aContributionProfile), instants_(anInstantArray), - writeCoordinatesSubsets_(aWriteCoordinatesSubsets), + writeCoordinateSubsets_(aWriteCoordinateSubsets), frameSPtr_(aFrameSPtr) { if (anInstantArray.getSize() != (Index)aContributionProfile.rows()) @@ -37,7 +37,7 @@ Tabulated::Tabulated( ); } - if (aWriteCoordinatesSubsets + if (aWriteCoordinateSubsets .map( [](const auto& coordinatesSubset) { @@ -48,7 +48,7 @@ Tabulated::Tabulated( { throw ostk::core::error::RuntimeError( "Contribution profile must have the same number of columns as the sum of the sizes of the write " - "coordinates subsets." + "coordinate subsets." ); } @@ -110,14 +110,14 @@ bool Tabulated::isDefined() const return true; } -Array> Tabulated::getReadCoordinatesSubsets() const +Array> Tabulated::getReadCoordinateSubsets() const { return {}; } -Array> Tabulated::getWriteCoordinatesSubsets() const +Array> Tabulated::getWriteCoordinateSubsets() const { - return writeCoordinatesSubsets_; + return writeCoordinateSubsets_; } VectorXd Tabulated::computeContribution( @@ -152,7 +152,7 @@ void Tabulated::print(std::ostream& anOutputStream, bool displayDecorator) const Dynamics::print(anOutputStream, false); - for (const auto& subset : writeCoordinatesSubsets_) + for (const auto& subset : writeCoordinateSubsets_) { ostk::core::utils::Print::Line(anOutputStream) << subset->getName() << subset->getSize(); } @@ -172,5 +172,5 @@ void Tabulated::print(std::ostream& anOutputStream, bool displayDecorator) const } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.cpp index c5c1eeae3..5d7827962 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.cpp @@ -4,12 +4,12 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -24,8 +24,8 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Length; using ostk::physics::unit::Time; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -75,14 +75,14 @@ Shared ThirdBodyGravity::getCelestial() const return celestialObjectSPtr_; } -Array> ThirdBodyGravity::getReadCoordinatesSubsets() const +Array> ThirdBodyGravity::getReadCoordinateSubsets() const { return { CartesianPosition::Default(), }; } -Array> ThirdBodyGravity::getWriteCoordinatesSubsets() const +Array> ThirdBodyGravity::getWriteCoordinateSubsets() const { return { CartesianVelocity::Default(), @@ -126,5 +126,5 @@ void ThirdBodyGravity::print(std::ostream& anOutputStream, bool displayDecorator } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.cpp b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.cpp index 87a9454b1..9441e1b46 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.cpp @@ -8,13 +8,13 @@ #include #include -#include -#include -#include +#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace dynamics { @@ -24,9 +24,9 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::unit::Mass; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; Thruster::Thruster( const SatelliteSystem& aSatelliteSystem, const Shared& aGuidanceLaw, const String& aName @@ -58,20 +58,20 @@ Shared Thruster::getGuidanceLaw() const return guidanceLaw_; } -Array> Thruster::getReadCoordinatesSubsets() const +Array> Thruster::getReadCoordinateSubsets() const { return { CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), }; } -Array> Thruster::getWriteCoordinatesSubsets() const +Array> Thruster::getWriteCoordinateSubsets() const { return { CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), }; } @@ -120,5 +120,5 @@ void Thruster::print(std::ostream& anOutputStream, bool displayDecorator) const } } // namespace dynamics -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition.cpp index d77ce56b3..32f1a807c 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { EventCondition::Target::Target(const Real& aValue, const Type& aType) @@ -128,5 +128,5 @@ void EventCondition::print(std::ostream& anOutputStream, bool displayDecorator) displayDecorator ? ostk::core::utils::Print::Footer(anOutputStream) : void(); } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.cpp index 1ac872d97..cbe19ef6d 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.cpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -208,5 +208,5 @@ AngularCondition::AngularCondition( } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.cpp index 04c616155..bdb2fa867 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -50,5 +50,5 @@ void BooleanCondition::print(std::ostream& anOutputStream, bool displayDecorator } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.cpp index f3bc0a4f0..0b2ba13eb 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.cpp @@ -3,11 +3,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -22,8 +22,8 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Length; using ostk::physics::unit::Time; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::State; RealCondition COECondition::SemiMajorAxis( const RealCondition::Criterion& aCriterion, @@ -183,5 +183,5 @@ std::function COECondition::GenerateEvaluator( } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.cpp index 198bfe61d..a22d785e4 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -32,5 +32,5 @@ Instant InstantCondition::getInstant() const } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.cpp index 6b9b3a5ef..798179afb 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -99,5 +99,5 @@ LogicalCondition::evaluationSignature LogicalCondition::GenerateEvaluator(const } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.cpp b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.cpp index 1a2205cc9..913057842 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.cpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace eventcondition { @@ -148,5 +148,5 @@ std::function RealCondition::GenerateComparator( } } // namespace eventcondition -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile.cpp index 9f12c060a..9095672e5 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile.cpp @@ -1,11 +1,11 @@ /// Apache License 2.0 #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -98,14 +98,14 @@ Profile Profile::Undefined() Profile Profile::InertialPointing(const Trajectory& aTrajectory, const Quaternion& aQuaternion) { - using ostk::astro::flight::profile::models::Transform; + using ostk::astrodynamics::flight::profile::model::Transform; return {Transform::InertialPointing(aTrajectory, aQuaternion)}; } Profile Profile::NadirPointing(const trajectory::Orbit& anOrbit, const trajectory::Orbit::FrameType& anOrbitalFrameType) { - using ostk::astro::flight::profile::models::Transform; + using ostk::astrodynamics::flight::profile::model::Transform; return {Transform::NadirPointing(anOrbit, anOrbitalFrameType)}; } @@ -116,5 +116,5 @@ Profile::Profile() } } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.cpp index 52cb9e3ef..5e786b228 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Model.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -51,5 +51,5 @@ Array Model::calculateStatesAt(const Array& anInstantArray) cons } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.cpp index a1a4afe80..84e45acb7 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Tabulated.cpp @@ -5,17 +5,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { namespace profile { -namespace models +namespace model { using ostk::mathematics::geometry::d3::transformation::rotation::Quaternion; @@ -313,8 +313,8 @@ Pair Tabulated::accessStateRangeAtIndex(const Index& return {previousStatePtr, nextStatePtr}; } -} // namespace models +} // namespace model } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.cpp index 2090010ac..ef27a58d2 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/Profile/Models/Transform.cpp @@ -3,17 +3,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { namespace profile { -namespace models +namespace model { Transform::Transform(const DynamicProvider& aDynamicTransformProvider, const Shared& aFrameSPtr) @@ -201,8 +201,8 @@ bool Transform::operator==(const Model& aModel) const return (this->frameSPtr_ == transformModelPtr->frameSPtr_); } -} // namespace models +} // namespace model } // namespace profile } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/System.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/System.cpp index 64f2117fe..42b7ab1f8 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/System.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/System.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -91,5 +91,5 @@ System System::Undefined() } } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.cpp index a8ba4b512..bd386d217 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.cpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -184,5 +184,5 @@ PropulsionSystem PropulsionSystem::Default() } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.cpp index 575160444..8c5d6a1a6 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -163,5 +163,5 @@ SatelliteSystem SatelliteSystem::Default() } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.cpp b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.cpp index 6d3d3fe1f..92a3bed07 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace flight { @@ -122,5 +122,5 @@ SatelliteSystemBuilder SatelliteSystemBuilder::Default() } // namespace system } // namespace flight -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.cpp b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.cpp index 093dd4768..2ae170ca2 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.cpp @@ -5,7 +5,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { GuidanceLaw::GuidanceLaw(const String& aName) @@ -35,5 +35,5 @@ void GuidanceLaw::print(std::ostream& anOutputStream, bool displayDecorator) con displayDecorator ? ostk::core::utils::Print::Footer(anOutputStream) : void(); } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.cpp b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.cpp index 437eb2bf8..c8f9bf50e 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.cpp @@ -10,15 +10,15 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace guidancelaw { using ostk::mathematics::geometry::d3::transformation::rotation::Quaternion; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; ConstantThrust::ConstantThrust(const LocalOrbitalFrameDirection& aThrustDirection) : GuidanceLaw("Constant Thrust"), @@ -88,5 +88,5 @@ ConstantThrust ConstantThrust::Intrack(const bool& velocityDirection) } } // namespace guidancelaw -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.cpp b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.cpp index 49818f672..c030f879d 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.cpp @@ -5,11 +5,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace guidancelaw { @@ -23,8 +23,8 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; QLaw::Parameters::Parameters( const Map>& anElementWeightsMap, @@ -116,7 +116,7 @@ QLaw::QLaw( finiteDifferenceSolver_( FiniteDifferenceSolver(FiniteDifferenceSolver::Type::Central, 1e-3, Duration::Seconds(1e-6)) ), - stateBuilder_(Frame::GCRF(), {std::make_shared("QLaw Element Vector", 5)}) + stateBuilder_(Frame::GCRF(), {std::make_shared("QLaw Element Vector", 5)}) { } @@ -731,5 +731,5 @@ Tuple QLaw::computeEffectivity( } } // namespace guidancelaw -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/RootSolver.cpp b/src/OpenSpaceToolkit/Astrodynamics/RootSolver.cpp index 433f63695..ad6b76e56 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/RootSolver.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/RootSolver.cpp @@ -9,7 +9,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { RootSolver::RootSolver(const Size& aMaximumIterationCount, const Real& aTolerance) @@ -120,5 +120,5 @@ std::function RootSolver::getToleranceFuncti }; } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.cpp b/src/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.cpp index eb21d45fd..77f853144 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.cpp @@ -2,14 +2,14 @@ #include -#include +#include #include namespace ostk { -namespace astro +namespace astrodynamics { -namespace solvers +namespace solver { using ostk::core::type::Size; @@ -17,7 +17,7 @@ using ostk::core::type::Index; using ostk::physics::time::Duration; -using ostk::astro::trajectory::StateBuilder; +using ostk::astrodynamics::trajectory::StateBuilder; FiniteDifferenceSolver::FiniteDifferenceSolver( const FiniteDifferenceSolver::Type& aType, const Real& aStepPercentage, const Duration& aStepDuration @@ -255,6 +255,6 @@ FiniteDifferenceSolver FiniteDifferenceSolver::Default() }; } -} // namespace solvers -} // namespace astro +} // namespace solver +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.cpp b/src/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.cpp index 011533e35..7a26c4b7e 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Solvers/TemporalConditionSolver.cpp @@ -6,13 +6,13 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { -namespace solvers +namespace solver { TemporalConditionSolver::TemporalConditionSolver( @@ -151,6 +151,6 @@ bool TemporalConditionSolver::EvaluateConditionAt( ); } -} // namespace solvers -} // namespace astro +} // namespace solver +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory.cpp index f938dd061..e8a450234 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory.cpp @@ -4,15 +4,15 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { -using ostk::astro::trajectory::models::Tabulated; +using ostk::astrodynamics::trajectory::model::Tabulated; Trajectory::Trajectory(const Model& aModel) : modelUPtr_(aModel.clone()) @@ -119,7 +119,7 @@ Trajectory Trajectory::Undefined() Trajectory Trajectory::Position(const physics::coordinate::Position& aPosition) { - using ostk::astro::trajectory::models::Static; + using ostk::astrodynamics::trajectory::model::Static; if (!aPosition.isDefined()) { @@ -134,5 +134,5 @@ Trajectory::Trajectory() { } -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.cpp index 75b557be6..caf347291 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.cpp @@ -8,7 +8,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -103,5 +103,5 @@ LocalOrbitalFrameDirection LocalOrbitalFrameDirection::Undefined() } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.cpp index bd44b8a8b..789ee9cab 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.cpp @@ -18,7 +18,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -34,8 +34,8 @@ using ostk::physics::coordinate::frame::Provider; using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; struct SharedFrameEnabler : public Frame { @@ -142,5 +142,5 @@ String LocalOrbitalFrameFactory::generateFrameName( } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.cpp index 90acf7a33..86292842c 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.cpp @@ -15,7 +15,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -261,5 +261,5 @@ Transform LocalOrbitalFrameTransformProvider::generateTransform( } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.cpp index 11c057f8e..f63b06dde 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -38,5 +38,5 @@ Array Model::calculateStatesAt(const Array& anInstantArray) cons } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.cpp similarity index 92% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.cpp index 47266e286..d9aa56056 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Static.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Static.cpp @@ -3,15 +3,15 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { -namespace models +namespace model { Static::Static(const Position& aPosition) @@ -93,7 +93,7 @@ bool Static::operator!=(const Model& aModel) const return !((*this) == aModel); } -} // namespace models +} // namespace model } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.cpp similarity index 95% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.cpp index 64fe46f95..37801553b 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Models/Tabulated.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Model/Tabulated.cpp @@ -3,16 +3,16 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { -namespace models +namespace model { Tabulated::Tabulated(const Array& aStateArray, const InterpolationType& anInterpolationType) @@ -144,7 +144,7 @@ State Tabulated::calculateStateAt(const Instant& anInstant) const using ostk::core::type::Index; using ostk::core::type::String; - using ostk::astro::trajectory::state::CoordinatesBroker; + using ostk::astrodynamics::trajectory::state::CoordinateBroker; if (!anInstant.isDefined()) { @@ -174,7 +174,7 @@ State Tabulated::calculateStateAt(const Instant& anInstant) const } const Shared& frame = firstState_.accessFrame(); - const Shared& coordinatesBroker = firstState_.accessCoordinatesBroker(); + const Shared& coordinatesBroker = firstState_.accessCoordinateBroker(); return State(anInstant, interpolatedCoordinates, frame, coordinatesBroker); } @@ -261,7 +261,7 @@ bool Tabulated::operator!=(const Model& aModel) const return !((*this) == aModel); } -} // namespace models +} // namespace model } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.cpp index 61bf0c9fc..913a4b50f 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.cpp @@ -20,14 +20,14 @@ #include #include -#include +#include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -45,10 +45,10 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Mass; using ostk::physics::unit::Length; using ostk::physics::environment::object::celestial::Sun; -using orbit::models::Kepler; -using orbit::models::kepler::COE; +using orbit::model::Kepler; +using orbit::model::kepler::COE; -using ostk::astro::RootSolver; +using ostk::astrodynamics::RootSolver; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, ostk::physics::unit::Time::Unit::Second); @@ -69,7 +69,7 @@ Orbit::Orbit( const Integer& anInitialRevolutionNumber, const Shared& aCelestialObjectSPtr ) - : Trajectory(orbit::models::Tabulated(aStateArray, anInitialRevolutionNumber)), + : Trajectory(orbit::model::Tabulated(aStateArray, anInitialRevolutionNumber)), modelPtr_(dynamic_cast(&this->accessModel())), celestialObjectSPtr_(aCelestialObjectSPtr) { @@ -187,7 +187,7 @@ Pass Orbit::getPassWithRevolutionNumber(const Integer& aRevolutionNumber) const { // If any, get pass with closest revolution number - Pass const* closestPassPtr = nullptr; + Pass const* closestPasSPtr = nullptr; const auto lowerBoundMapIt = this->passMap_.lower_bound(aRevolutionNumber); @@ -197,7 +197,7 @@ Pass Orbit::getPassWithRevolutionNumber(const Integer& aRevolutionNumber) const if (lowerBoundMapIt == this->passMap_.begin()) { - closestPassPtr = &(lowerBoundMapIt->second); + closestPasSPtr = &(lowerBoundMapIt->second); } else { @@ -205,25 +205,25 @@ Pass Orbit::getPassWithRevolutionNumber(const Integer& aRevolutionNumber) const if ((aRevolutionNumber - closestPassMapIt->first) < (lowerBoundMapIt->first - aRevolutionNumber)) { - closestPassPtr = &(closestPassMapIt->second); + closestPasSPtr = &(closestPassMapIt->second); } else { - closestPassPtr = &(lowerBoundMapIt->second); + closestPasSPtr = &(lowerBoundMapIt->second); } } } else if (this->passMap_.size() > 0) { // std::cout << "this->passMap_ IS NOT EMPTY" << std::endl ; - closestPassPtr = &(this->passMap_.begin()->second); + closestPasSPtr = &(this->passMap_.begin()->second); } Pass currentPass = Pass::Undefined(); - if (closestPassPtr != nullptr) // Pass with closest revolution number found + if (closestPasSPtr != nullptr) // Pass with closest revolution number found { - currentPass = *closestPassPtr; + currentPass = *closestPasSPtr; } const Instant epoch = this->modelPtr_->getEpoch(); @@ -662,8 +662,8 @@ Orbit Orbit::Circular( const Shared& aCelestialObjectSPtr ) { - using orbit::models::Kepler; - using orbit::models::kepler::COE; + using orbit::model::Kepler; + using orbit::model::kepler::COE; if (!anEpoch.isDefined()) { @@ -706,8 +706,8 @@ Orbit Orbit::Equatorial( const Shared& aCelestialObjectSPtr ) { - using orbit::models::Kepler; - using orbit::models::kepler::COE; + using orbit::model::Kepler; + using orbit::model::kepler::COE; if (!anEpoch.isDefined()) { @@ -774,8 +774,8 @@ Orbit Orbit::GeoSynchronous( using ostk::physics::coordinate::spherical::LLA; using ostk::physics::coordinate::Position; - using orbit::models::Kepler; - using orbit::models::kepler::COE; + using orbit::model::Kepler; + using orbit::model::kepler::COE; if (!anEpoch.isDefined()) { @@ -1053,8 +1053,8 @@ Array> Orbit::ComputePasses(const Array& aStateArray, c } } - const models::Tabulated tabulated = - models::Tabulated(aStateArray, models::Tabulated::InterpolationType::BarycentricRational); + const model::Tabulated tabulated = + model::Tabulated(aStateArray, model::Tabulated::InterpolationType::BarycentricRational); const Instant& epoch = aStateArray.accessFirst().accessInstant(); @@ -1190,5 +1190,5 @@ Instant Orbit::GetCrossingInstant( } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.cpp similarity index 97% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.cpp index 34a297f2b..4b511da28 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.cpp @@ -4,17 +4,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace messages +namespace message { namespace spacex { @@ -189,8 +189,8 @@ State OPM::Deployment::toState() const } } // namespace spacex -} // namespace messages +} // namespace message } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.cpp index 648d305eb..38f848237 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -17,5 +17,5 @@ Model::~Model() {} } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp similarity index 97% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp index 90f340a3e..b84d49746 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMean.cpp @@ -4,17 +4,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -267,8 +267,8 @@ Vector6d BrouwerLyddaneMean::Cartesian( } } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp similarity index 98% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp index 7f295f1ca..3c94f5b95 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanLong.cpp @@ -6,17 +6,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -442,8 +442,8 @@ BrouwerLyddaneMeanLong BrouwerLyddaneMeanLong::FromSIVector(const Vector6d &aVec } } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp similarity index 98% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp index 76335aafb..f83f86435 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/BrouwerLyddaneMean/BrouwerLyddaneMeanShort.cpp @@ -6,17 +6,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace blm { @@ -331,8 +331,8 @@ BrouwerLyddaneMeanShort BrouwerLyddaneMeanShort::FromSIVector(const Vector6d &aV } } // namespace blm -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.cpp similarity index 99% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.cpp index 7be01fe99..29ef5549f 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.cpp @@ -5,17 +5,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::physics::unit::Derived; @@ -849,8 +849,8 @@ Integer Kepler::CalculateJ4RevolutionNumberAt( return (durationFromEpoch.inSeconds() / orbitalPeriod.inSeconds()).floor() + 1; } -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.cpp similarity index 99% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.cpp index e9997570a..68afda357 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.cpp @@ -8,17 +8,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace kepler { @@ -985,8 +985,8 @@ Angle COE::ConvertAnomaly( } } // namespace kepler -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.cpp similarity index 98% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.cpp index 9ed1bd2c9..f5748ce72 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.cpp @@ -3,17 +3,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::core::type::Size; @@ -412,8 +412,8 @@ void Propagated::sanitizeCachedArray() const } } -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.cpp similarity index 96% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.cpp index 5692d313a..ba82ad2d5 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.cpp @@ -9,17 +9,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { using ostk::physics::coordinate::Transform; @@ -230,8 +230,8 @@ bool SGP4::operator!=(const trajectory::Model& aModel) const return !((*this) == aModel); } -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.cpp similarity index 99% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.cpp index 6ed6646a0..e4853acce 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.cpp @@ -9,17 +9,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { namespace sgp4 { @@ -839,8 +839,8 @@ Real TLE::ParseReal(const String& aString, bool isDecimalPointAssumed) } } // namespace sgp4 -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.cpp similarity index 80% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.cpp index d6dfb2235..56ada33fb 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.cpp @@ -3,17 +3,17 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace orbit { -namespace models +namespace model { Tabulated::Tabulated( @@ -22,7 +22,7 @@ Tabulated::Tabulated( const InterpolationType& anInterpolationType ) : trajectory::orbit::Model(), - trajectory::models::Tabulated(aStateArray, anInterpolationType), + trajectory::model::Tabulated(aStateArray, anInterpolationType), initialRevolutionNumber_(anInitialRevolutionNumber) { } @@ -39,7 +39,7 @@ bool Tabulated::operator==(const Tabulated& aTabulatedModel) const return false; } - return (trajectory::models::Tabulated::operator==(aTabulatedModel)) && + return (trajectory::model::Tabulated::operator==(aTabulatedModel)) && (initialRevolutionNumber_ == aTabulatedModel.initialRevolutionNumber_); } @@ -50,7 +50,7 @@ bool Tabulated::operator!=(const Tabulated& aTabulatedModel) const bool Tabulated::isDefined() const { - return trajectory::models::Tabulated::isDefined() && initialRevolutionNumber_.isDefined(); + return trajectory::model::Tabulated::isDefined() && initialRevolutionNumber_.isDefined(); } Instant Tabulated::getEpoch() const @@ -75,7 +75,7 @@ Integer Tabulated::getRevolutionNumberAtEpoch() const State Tabulated::calculateStateAt(const Instant& anInstant) const { - return trajectory::models::Tabulated::calculateStateAt(anInstant); + return trajectory::model::Tabulated::calculateStateAt(anInstant); } Integer Tabulated::calculateRevolutionNumberAt(const Instant& anInstant) const @@ -99,7 +99,7 @@ Integer Tabulated::calculateRevolutionNumberAt(const Instant& anInstant) const void Tabulated::print(std::ostream& anOutputStream, bool displayDecorator) const { - trajectory::models::Tabulated::print(anOutputStream, displayDecorator); + trajectory::model::Tabulated::print(anOutputStream, displayDecorator); } bool Tabulated::operator==(const trajectory::Model& aModel) const @@ -114,8 +114,8 @@ bool Tabulated::operator!=(const trajectory::Model& aModel) const return !((*this) == aModel); } -} // namespace models +} // namespace model } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.cpp index 40a7c5ae0..958bb4e0c 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.cpp @@ -7,7 +7,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -317,5 +317,5 @@ String Pass::StringFromPhase(const Pass::Phase& aPhase) } // namespace orbit } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.cpp index 5f72becf5..c65dc6011 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.cpp @@ -11,7 +11,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -24,11 +24,11 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::environment::object::Celestial; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; const Shared Propagator::IntegrationFrameSPtr = Frame::GCRF(); @@ -73,7 +73,7 @@ bool Propagator::isDefined() const !this->dynamicsContexts_.isEmpty(); } -const Shared& Propagator::accessCoordinatesBroker() const +const Shared& Propagator::accessCoordinateBroker() const { if (!this->isDefined()) { @@ -95,7 +95,7 @@ const NumericalSolver& Propagator::accessNumericalSolver() const Size Propagator::getNumberOfCoordinates() const { - return this->accessCoordinatesBroker()->getNumberOfCoordinates(); + return this->accessCoordinateBroker()->getNumberOfCoordinates(); } Array> Propagator::getDynamics() const @@ -133,7 +133,7 @@ void Propagator::addDynamics(const Shared& aDynamicsSPtr) void Propagator::clearDynamics() { this->dynamicsContexts_.clear(); - this->coordinatesBrokerSPtr_ = std::make_shared(); + this->coordinatesBrokerSPtr_ = std::make_shared(); } State Propagator::calculateStateAt(const State& aState, const Instant& anInstant) const @@ -319,8 +319,8 @@ void Propagator::registerDynamicsContext(const Shared& aDynamicsSPtr) { // Store read coordinate subsets information Array> readInfo = Array>::Empty(); - readInfo.reserve(aDynamicsSPtr->getReadCoordinatesSubsets().getSize()); - for (const Shared& subset : aDynamicsSPtr->getReadCoordinatesSubsets()) + readInfo.reserve(aDynamicsSPtr->getReadCoordinateSubsets().getSize()); + for (const Shared& subset : aDynamicsSPtr->getReadCoordinateSubsets()) { const Pair indexAndSize = {this->coordinatesBrokerSPtr_->addSubset(subset), subset->getSize()}; readInfo.add(indexAndSize); @@ -328,8 +328,8 @@ void Propagator::registerDynamicsContext(const Shared& aDynamicsSPtr) // Store write coordinate subsets information Array> writeInfo = Array>::Empty(); - writeInfo.reserve(aDynamicsSPtr->getWriteCoordinatesSubsets().getSize()); - for (const Shared& subset : aDynamicsSPtr->getWriteCoordinatesSubsets()) + writeInfo.reserve(aDynamicsSPtr->getWriteCoordinateSubsets().getSize()); + for (const Shared& subset : aDynamicsSPtr->getWriteCoordinateSubsets()) { const Pair indexAndSize = {this->coordinatesBrokerSPtr_->addSubset(subset), subset->getSize()}; writeInfo.add(indexAndSize); @@ -339,5 +339,5 @@ void Propagator::registerDynamicsContext(const Shared& aDynamicsSPtr) } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.cpp index 5655e9158..070269d3a 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.cpp @@ -6,12 +6,12 @@ #include #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -19,9 +19,9 @@ namespace trajectory using ostk::physics::time::Duration; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; Segment::Solution::Solution( const String& aName, @@ -65,7 +65,7 @@ Mass Segment::Solution::getInitialMass() const throw ostk::core::error::RuntimeError("No solution available."); } - return Mass::Kilograms(this->states.accessFirst().extractCoordinate(CoordinatesSubset::Mass())[0]); + return Mass::Kilograms(this->states.accessFirst().extractCoordinate(CoordinateSubset::Mass())[0]); } Mass Segment::Solution::getFinalMass() const @@ -75,7 +75,7 @@ Mass Segment::Solution::getFinalMass() const throw ostk::core::error::RuntimeError("No solution available."); } - return Mass::Kilograms(this->states.accessLast().extractCoordinate(CoordinatesSubset::Mass())[0]); + return Mass::Kilograms(this->states.accessLast().extractCoordinate(CoordinateSubset::Mass())[0]); } Duration Segment::Solution::getPropagationDuration() const @@ -149,7 +149,7 @@ Array Segment::Solution::calculateStatesAt( MatrixXd Segment::Solution::getDynamicsContribution( const Shared& aDynamicsSPtr, const Shared& aFrameSPtr, - const Array>& aCoordinatesSubsetSPtrArray + const Array>& aCoordinateSubsetSPtrArray ) const { // Check dynamics is part of the segment dynamics @@ -158,46 +158,46 @@ MatrixXd Segment::Solution::getDynamicsContribution( throw ostk::core::error::RuntimeError("Provided dynamics is not part of the segment dynamics."); } - // Extract write coordinates subsets from dynamics - const Array> dynamicsWriteCoordinatesSubsets = - aDynamicsSPtr->getWriteCoordinatesSubsets(); + // Extract write coordinate subsets from dynamics + const Array> dynamicsWriteCoordinateSubsets = + aDynamicsSPtr->getWriteCoordinateSubsets(); - // Check that the provided coordinates subsets are part of the dynamics write coordinates subsets - for (auto aCoordinatesSubsetSPtr : aCoordinatesSubsetSPtrArray) + // Check that the provided coordinate subsets are part of the dynamics write coordinate subsets + for (auto aCoordinateSubsetSPtr : aCoordinateSubsetSPtrArray) { - if (!dynamicsWriteCoordinatesSubsets.contains(aCoordinatesSubsetSPtr)) + if (!dynamicsWriteCoordinateSubsets.contains(aCoordinateSubsetSPtr)) { throw ostk::core::error::RuntimeError(String::Format( - "Provided coordinates subset [{}] is not part of the dynamics write coordinates subsets.", - aCoordinatesSubsetSPtr->getName() + "Provided coordinate subset [{}] is not part of the dynamics write coordinate subsets.", + aCoordinateSubsetSPtr->getName() )); } } // Initialize the definitive coordinate subset array - Array> definitiveCoordinateSubsetArray = aCoordinatesSubsetSPtrArray; + Array> definitiveCoordinateSubsetArray = aCoordinateSubsetSPtrArray; - // Check value for aCoordinatesSubsetSPtrArray - if (aCoordinatesSubsetSPtrArray.isEmpty()) + // Check value for aCoordinateSubsetSPtrArray + if (aCoordinateSubsetSPtrArray.isEmpty()) { - definitiveCoordinateSubsetArray = aDynamicsSPtr->getWriteCoordinatesSubsets(); + definitiveCoordinateSubsetArray = aDynamicsSPtr->getWriteCoordinateSubsets(); } // Extract states size const Size numberOfstates = this->states.getSize(); // Extract dynamics context and behavior relative to state - Array> dynamicsReadCoordinatesSubsets = aDynamicsSPtr->getReadCoordinatesSubsets(); + Array> dynamicsReadCoordinateSubsets = aDynamicsSPtr->getReadCoordinateSubsets(); // Construct state builder - const StateBuilder builder = StateBuilder(aFrameSPtr, dynamicsReadCoordinatesSubsets); + const StateBuilder builder = StateBuilder(aFrameSPtr, dynamicsReadCoordinateSubsets); // Compute the size of dynamicsContributionMatrix Size dynamicsWriteSize = std::accumulate( definitiveCoordinateSubsetArray.begin(), definitiveCoordinateSubsetArray.end(), 0, - [](int sum, const Shared& subset) + [](int sum, const Shared& subset) { return sum + subset->getSize(); } @@ -442,5 +442,5 @@ Segment Segment::Maneuver( } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.cpp index cb99bef33..9b947d2e1 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.cpp @@ -10,7 +10,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -400,5 +400,5 @@ void Sequence::print(std::ostream& anOutputStream, bool displayDecorator) const } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State.cpp index 736c589f2..b2926d53d 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State.cpp @@ -4,37 +4,37 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { using ostk::core::type::Index; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::AngularVelocity; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AngularVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; State::State( const Instant& anInstant, const VectorXd& aCoordinates, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) : instant_(anInstant), coordinates_(aCoordinates), frameSPtr_(aFrameSPtr), - coordinatesBrokerSPtr_(aCoordinatesBrokerSPtr) + coordinatesBrokerSPtr_(aCoordinateBrokerSPtr) { if (coordinatesBrokerSPtr_ && (Size)coordinates_.size() != coordinatesBrokerSPtr_->getNumberOfCoordinates()) { @@ -46,12 +46,12 @@ State::State( const Instant& anInstant, const VectorXd& aCoordinates, const Shared& aFrameSPtr, - const Array>& aCoordinatesSubsetsArray + const Array>& aCoordinateSubsetsArray ) : instant_(anInstant), coordinates_(aCoordinates), frameSPtr_(aFrameSPtr), - coordinatesBrokerSPtr_(std::make_shared(CoordinatesBroker(aCoordinatesSubsetsArray))) + coordinatesBrokerSPtr_(std::make_shared(CoordinateBroker(aCoordinateSubsetsArray))) { } @@ -82,8 +82,8 @@ State::State(const Instant& anInstant, const Position& aPosition, const Velocity coordinates.segment(0, 3) = aPosition.inUnit(Position::Unit::Meter).accessCoordinates(); coordinates.segment(3, 3) = aVelocity.inUnit(Velocity::Unit::MeterPerSecond).accessCoordinates(); - static const Shared coordinatesBrokerSPtr = - std::make_shared(CoordinatesBroker({ + static const Shared coordinatesBrokerSPtr = + std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), })); @@ -139,8 +139,8 @@ State::State( coordinates.segment(6, 4) = AttitudeQuaternion::quaterionToCoordinates(anAttitude); coordinates.segment(10, 3) = anAngularVelocity; - static const Shared coordinatesBrokerSPtr = - std::make_shared(CoordinatesBroker( + static const Shared coordinatesBrokerSPtr = + std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), AttitudeQuaternion::Default(), @@ -194,7 +194,7 @@ bool State::operator==(const State& aState) const return false; } - for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) + for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) { if (!aState.coordinatesBrokerSPtr_->hasSubset(subset)) { @@ -239,7 +239,7 @@ State State::operator+(const State& aState) const VectorXd addedCoordinates = VectorXd(this->coordinatesBrokerSPtr_->getNumberOfCoordinates()); Index i = 0; - for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) + for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) { Size subsetSize = subset->getSize(); addedCoordinates.segment(i, subsetSize) = subset->add( @@ -284,7 +284,7 @@ State State::operator-(const State& aState) const VectorXd subtractedCoordinates = VectorXd(this->coordinatesBrokerSPtr_->getNumberOfCoordinates()); Index i = 0; - for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) + for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) { Size subsetSize = subset->getSize(); subtractedCoordinates.segment(i, subsetSize) = subset->subtract( @@ -348,7 +348,7 @@ const VectorXd& State::accessCoordinates() const return this->coordinates_; } -const Shared& State::accessCoordinatesBroker() const +const Shared& State::accessCoordinateBroker() const { if (!this->isDefined()) { @@ -423,7 +423,7 @@ VectorXd State::getCoordinates() const return this->accessCoordinates(); } -const Array> State::getCoordinatesSubsets() const +const Array> State::getCoordinateSubsets() const { if (!this->isDefined()) { @@ -433,7 +433,7 @@ const Array> State::getCoordinatesSubsets() cons return this->coordinatesBrokerSPtr_->getSubsets(); } -bool State::hasSubset(const Shared& aSubsetSPtr) const +bool State::hasSubset(const Shared& aSubsetSPtr) const { if (!this->isDefined()) { @@ -443,14 +443,14 @@ bool State::hasSubset(const Shared& aSubsetSPtr) const return this->coordinatesBrokerSPtr_->hasSubset(aSubsetSPtr); } -VectorXd State::extractCoordinate(const Shared& aSubsetSPtr) const +VectorXd State::extractCoordinate(const Shared& aSubsetSPtr) const { return this->coordinatesBrokerSPtr_->extractCoordinate(this->accessCoordinates(), aSubsetSPtr); } -VectorXd State::extractCoordinates(const Array>& aCoordinatesSubsetsArray) const +VectorXd State::extractCoordinates(const Array>& aCoordinateSubsetsArray) const { - return this->coordinatesBrokerSPtr_->extractCoordinates(this->accessCoordinates(), aCoordinatesSubsetsArray); + return this->coordinatesBrokerSPtr_->extractCoordinates(this->accessCoordinates(), aCoordinateSubsetsArray); } State State::inFrame(const Shared& aFrameSPtr) const @@ -472,7 +472,7 @@ State State::inFrame(const Shared& aFrameSPtr) const VectorXd inFrameCoordinates = VectorXd(this->coordinatesBrokerSPtr_->getNumberOfCoordinates()); Index i = 0; - for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) + for (const Shared& subset : this->coordinatesBrokerSPtr_->accessSubsets()) { const VectorXd subsetInFrame = subset->inFrame( this->instant_, this->coordinates_, this->frameSPtr_, aFrameSPtr, this->coordinatesBrokerSPtr_ @@ -507,7 +507,7 @@ void State::print(std::ostream& anOutputStream, bool displayDecorator) const } else { - const Array> subsets = this->coordinatesBrokerSPtr_->getSubsets(); + const Array> subsets = this->coordinatesBrokerSPtr_->getSubsets(); for (const auto& subset : subsets) { @@ -524,5 +524,5 @@ State State::Undefined() } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.cpp new file mode 100644 index 000000000..c4a12d4a5 --- /dev/null +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.cpp @@ -0,0 +1,170 @@ +/// Apache License 2.0 + +#include +#include + +#include + +namespace ostk +{ +namespace astrodynamics +{ +namespace trajectory +{ +namespace state +{ + +CoordinateBroker::CoordinateBroker() + : nextCoordinateSubsetIndex_(0), + coordinateSubsets_({}), + coordinateSubsetsIndexMap_({}) +{ +} + +CoordinateBroker::CoordinateBroker(const Array>& aCoordinateSubsetsArray) + : CoordinateBroker() +{ + for (Shared subset : aCoordinateSubsetsArray) + { + this->addSubset(subset); + } +} + +bool CoordinateBroker::operator==(const CoordinateBroker& aCoordinateBroker) const +{ + if (this->getNumberOfCoordinates() != aCoordinateBroker.getNumberOfCoordinates()) + { + return false; + } + + if (this->getNumberOfSubsets() != aCoordinateBroker.getNumberOfSubsets()) + { + return false; + } + + for (const auto& element : this->coordinateSubsetsIndexMap_) + { + const String id = element.first; + if (!aCoordinateBroker.hasSubset(id)) + { + return false; + } + + if (element.second != aCoordinateBroker.getSubsetIndex(id)) + { + return false; + } + } + + return true; +} + +bool CoordinateBroker::operator!=(const CoordinateBroker& aCoordinateBroker) const +{ + return !((*this) == aCoordinateBroker); +} + +const Array>& CoordinateBroker::accessSubsets() const +{ + return this->coordinateSubsets_; +} + +Size CoordinateBroker::getNumberOfCoordinates() const +{ + return this->nextCoordinateSubsetIndex_; +} + +Size CoordinateBroker::getNumberOfSubsets() const +{ + return (size_t)this->coordinateSubsetsIndexMap_.size(); +} + +Array> CoordinateBroker::getSubsets() const +{ + return this->accessSubsets(); +} + +Index CoordinateBroker::addSubset(const Shared& aCoordinateSubsetSPtr) +{ + const auto search = this->coordinateSubsetsIndexMap_.find(aCoordinateSubsetSPtr->getId()); + + if (search != this->coordinateSubsetsIndexMap_.end()) + { + return search->second; + } + + const Index coordinatesSubsetIndex = this->nextCoordinateSubsetIndex_; + + this->coordinateSubsets_.add(aCoordinateSubsetSPtr); + this->coordinateSubsetsIndexMap_.insert({aCoordinateSubsetSPtr->getId(), this->nextCoordinateSubsetIndex_}); + this->nextCoordinateSubsetIndex_ += aCoordinateSubsetSPtr->getSize(); + + return coordinatesSubsetIndex; +} + +bool CoordinateBroker::hasSubset(const Shared& aCoordinateSubsetSPtr) const +{ + return this->hasSubset(aCoordinateSubsetSPtr->getId()); +} + +VectorXd CoordinateBroker::extractCoordinate( + const VectorXd& aFullCoordinatesVector, const CoordinateSubset& aCoordinateSubset +) const +{ + return aFullCoordinatesVector.segment( + this->getSubsetIndex(aCoordinateSubset.getId()), aCoordinateSubset.getSize() + ); +} + +VectorXd CoordinateBroker::extractCoordinates( + const VectorXd& aFullCoordinatesVector, const Array>& aCoordinateSubsetsArray +) const +{ + Size coordinateSubsetsSize = 0; + for (const auto& subset : aCoordinateSubsetsArray) + { + coordinateSubsetsSize += subset->getSize(); + } + + VectorXd coordinateSubsetsVector(coordinateSubsetsSize); + + int startIndex = 0; + for (const auto& subset : aCoordinateSubsetsArray) + { + coordinateSubsetsVector.segment(startIndex, subset->getSize()) = + aFullCoordinatesVector.segment(this->getSubsetIndex(subset->getId()), subset->getSize()); + + startIndex += subset->getSize(); + } + + return coordinateSubsetsVector; +} + +VectorXd CoordinateBroker::extractCoordinate( + const VectorXd& aFullCoordinatesVector, const Shared& aCoordinateSubsetSPtr +) const +{ + return this->extractCoordinate(aFullCoordinatesVector, *aCoordinateSubsetSPtr); +} + +bool CoordinateBroker::hasSubset(const String& anId) const +{ + return this->coordinateSubsetsIndexMap_.count(anId) > 0; +} + +Index CoordinateBroker::getSubsetIndex(const String& anId) const +{ + auto search = this->coordinateSubsetsIndexMap_.find(anId); + + if (search == this->coordinateSubsetsIndexMap_.end()) + { + throw ostk::core::error::RuntimeError("Coordinates subset [{}] not found", anId); + } + + return search->second; +} + +} // namespace state +} // namespace trajectory +} // namespace astrodynamics +} // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.cpp similarity index 51% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.cpp index d306362ac..23a9f9585 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.cpp @@ -2,19 +2,19 @@ #include -#include -#include +#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -CoordinatesSubset::CoordinatesSubset(const String& aName, const Size& aSize) +CoordinateSubset::CoordinateSubset(const String& aName, const Size& aSize) : name_(aName), size_(aSize), id_(aName + " | " + std::to_string(aSize)) @@ -30,86 +30,86 @@ CoordinatesSubset::CoordinatesSubset(const String& aName, const Size& aSize) } } -bool CoordinatesSubset::operator==(const CoordinatesSubset& aCoordinatesSubset) const +bool CoordinateSubset::operator==(const CoordinateSubset& aCoordinateSubset) const { - return this->id_ == aCoordinatesSubset.id_; + return this->id_ == aCoordinateSubset.id_; } -bool CoordinatesSubset::operator!=(const CoordinatesSubset& aCoordinatesSubset) const +bool CoordinateSubset::operator!=(const CoordinateSubset& aCoordinateSubset) const { - return !((*this) == aCoordinatesSubset); + return !((*this) == aCoordinateSubset); } -String CoordinatesSubset::getId() const +String CoordinateSubset::getId() const { return id_; } -String CoordinatesSubset::getName() const +String CoordinateSubset::getName() const { return name_; } -Size CoordinatesSubset::getSize() const +Size CoordinateSubset::getSize() const { return size_; } -VectorXd CoordinatesSubset::add( +VectorXd CoordinateSubset::add( [[maybe_unused]] const Instant& anInstant, [[maybe_unused]] const VectorXd& aFullCoordinatesVector, [[maybe_unused]] const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - [[maybe_unused]] const Shared& aCoordinatesBrokerSPtr + [[maybe_unused]] const Shared& aCoordinateBrokerSPtr ) const { throw ostk::core::error::runtime::Wrong("Addition operation"); } -VectorXd CoordinatesSubset::subtract( +VectorXd CoordinateSubset::subtract( [[maybe_unused]] const Instant& anInstant, [[maybe_unused]] const VectorXd& aFullCoordinatesVector, [[maybe_unused]] const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - [[maybe_unused]] const Shared& aCoordinatesBrokerSPtr + [[maybe_unused]] const Shared& aCoordinateBrokerSPtr ) const { throw ostk::core::error::runtime::Wrong("Subtraction operation"); } -VectorXd CoordinatesSubset::inFrame( +VectorXd CoordinateSubset::inFrame( [[maybe_unused]] const Instant& anInstant, const VectorXd& aFullCoordinatesVector, [[maybe_unused]] const Shared& fromFrame, [[maybe_unused]] const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - VectorXd coordinates = aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); + VectorXd coordinates = aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); return coordinates; } -Shared CoordinatesSubset::Mass() +Shared CoordinateSubset::Mass() { - static const Shared mass = std::make_shared("MASS", 1); + static const Shared mass = std::make_shared("MASS", 1); return mass; } -Shared CoordinatesSubset::SurfaceArea() +Shared CoordinateSubset::SurfaceArea() { - static const Shared surfaceArea = std::make_shared("SURFACE_AREA", 1); + static const Shared surfaceArea = std::make_shared("SURFACE_AREA", 1); return surfaceArea; } -Shared CoordinatesSubset::DragCoefficient() +Shared CoordinateSubset::DragCoefficient() { - static const Shared dragCoefficient = - std::make_shared("DRAG_COEFFICIENT", 1); + static const Shared dragCoefficient = + std::make_shared("DRAG_COEFFICIENT", 1); return dragCoefficient; } } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.cpp similarity index 81% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.cpp index 7a594bb83..500b6b395 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.cpp @@ -2,17 +2,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::mathematics::object::Vector3d; @@ -21,7 +21,7 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; AngularVelocity::AngularVelocity(const Shared& aAttitudeQuaternionSPtr, const String& aName) - : CoordinatesSubset(aName, 3), + : CoordinateSubset(aName, 3), attitudeQuaternionSPtr_(aAttitudeQuaternionSPtr) { } @@ -33,13 +33,13 @@ VectorXd AngularVelocity::inFrame( const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - const VectorXd coordinates = aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); + const VectorXd coordinates = aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); const VectorXd attitudeCoordinatesInFrame = this->attitudeQuaternionSPtr_->inFrame( - anInstant, aFullCoordinatesVector, fromFrame, toFrame, aCoordinatesBrokerSPtr + anInstant, aFullCoordinatesVector, fromFrame, toFrame, aCoordinateBrokerSPtr ); const Quaternion quaternionInFrame = AttitudeQuaternion::coordinatesToQuaternion(attitudeCoordinatesInFrame).toNormalized(); @@ -57,8 +57,8 @@ Shared AngularVelocity::Default() return angularVelocity; } -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp similarity index 82% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp index fdd2c7d89..6d730cb2b 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.cpp @@ -2,17 +2,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::mathematics::object::Vector3d; @@ -20,7 +20,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::coordinate::Position; AttitudeQuaternion::AttitudeQuaternion(const String& aName) - : CoordinatesSubset(aName, 4) + : CoordinateSubset(aName, 4) { } @@ -31,10 +31,10 @@ VectorXd AttitudeQuaternion::inFrame( const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - const VectorXd coordinates = aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); + const VectorXd coordinates = aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); const Quaternion quaternion = coordinatesToQuaternion(coordinates); @@ -65,8 +65,8 @@ Shared AttitudeQuaternion::Default() return attitudeQuaternion; } -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.cpp similarity index 67% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.cpp index 77078e8a5..f255b7677 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.cpp @@ -2,17 +2,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::mathematics::object::Vector3d; @@ -20,7 +20,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::coordinate::Position; CartesianPosition::CartesianPosition(const String& aName) - : CoordinatesSubset(aName, 3) + : CoordinateSubset(aName, 3) { } @@ -31,11 +31,11 @@ VectorXd CartesianPosition::add( const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - return aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) + - aCoordinatesBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); + return aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) + + aCoordinateBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); } VectorXd CartesianPosition::subtract( @@ -43,11 +43,11 @@ VectorXd CartesianPosition::subtract( const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - return aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) - - aCoordinatesBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); + return aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) - + aCoordinateBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); } VectorXd CartesianPosition::inFrame( @@ -55,10 +55,10 @@ VectorXd CartesianPosition::inFrame( const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - VectorXd positionCoordinates = aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); + VectorXd positionCoordinates = aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); Vector3d toFrameCoordinates = Position::Meters({positionCoordinates(0), positionCoordinates(1), positionCoordinates(2)}, fromFrame) @@ -75,8 +75,8 @@ Shared CartesianPosition::Default() return cartesianPosition; } -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp similarity index 68% rename from src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp rename to src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp index 942468ff2..4f214daf5 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.cpp @@ -2,17 +2,17 @@ #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { namespace state { -namespace coordinatessubsets +namespace coordinatesubset { using ostk::mathematics::object::Vector3d; @@ -21,7 +21,7 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; CartesianVelocity::CartesianVelocity(const Shared& aCartesianPositionSPtr, const String& aName) - : CoordinatesSubset(aName, aCartesianPositionSPtr->getSize()), + : CoordinateSubset(aName, aCartesianPositionSPtr->getSize()), cartesianPositionSPtr_(aCartesianPositionSPtr) { } @@ -33,11 +33,11 @@ VectorXd CartesianVelocity::add( const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - return aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) + - aCoordinatesBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); + return aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) + + aCoordinateBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); } VectorXd CartesianVelocity::subtract( @@ -45,11 +45,11 @@ VectorXd CartesianVelocity::subtract( const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, [[maybe_unused]] const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { - return aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) - - aCoordinatesBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); + return aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this) - + aCoordinateBrokerSPtr->extractCoordinate(anotherFullCoordinatesVector, *this); } VectorXd CartesianVelocity::inFrame( @@ -57,12 +57,12 @@ VectorXd CartesianVelocity::inFrame( const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr + const Shared& aCoordinateBrokerSPtr ) const { const VectorXd positionCoordinates = - aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, this->cartesianPositionSPtr_); - const VectorXd velocityCoordinates = aCoordinatesBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); + aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, this->cartesianPositionSPtr_); + const VectorXd velocityCoordinates = aCoordinateBrokerSPtr->extractCoordinate(aFullCoordinatesVector, *this); Vector3d toFrameCoordinates = Velocity::MetersPerSecond({velocityCoordinates(0), velocityCoordinates(1), velocityCoordinates(2)}, fromFrame) @@ -83,8 +83,8 @@ Shared CartesianVelocity::Default() return cartesianVelocity; } -} // namespace coordinatessubsets +} // namespace coordinatesubset } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.cpp deleted file mode 100644 index 9ad0f4e47..000000000 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/// Apache License 2.0 - -#include -#include - -#include - -namespace ostk -{ -namespace astro -{ -namespace trajectory -{ -namespace state -{ - -CoordinatesBroker::CoordinatesBroker() - : nextCoordinatesSubsetIndex_(0), - coordinatesSubsets_({}), - coordinatesSubsetsIndexMap_({}) -{ -} - -CoordinatesBroker::CoordinatesBroker(const Array>& aCoordinatesSubsetsArray) - : CoordinatesBroker() -{ - for (Shared subset : aCoordinatesSubsetsArray) - { - this->addSubset(subset); - } -} - -bool CoordinatesBroker::operator==(const CoordinatesBroker& aCoordinatesBroker) const -{ - if (this->getNumberOfCoordinates() != aCoordinatesBroker.getNumberOfCoordinates()) - { - return false; - } - - if (this->getNumberOfSubsets() != aCoordinatesBroker.getNumberOfSubsets()) - { - return false; - } - - for (const auto& element : this->coordinatesSubsetsIndexMap_) - { - const String id = element.first; - if (!aCoordinatesBroker.hasSubset(id)) - { - return false; - } - - if (element.second != aCoordinatesBroker.getSubsetIndex(id)) - { - return false; - } - } - - return true; -} - -bool CoordinatesBroker::operator!=(const CoordinatesBroker& aCoordinatesBroker) const -{ - return !((*this) == aCoordinatesBroker); -} - -const Array>& CoordinatesBroker::accessSubsets() const -{ - return this->coordinatesSubsets_; -} - -Size CoordinatesBroker::getNumberOfCoordinates() const -{ - return this->nextCoordinatesSubsetIndex_; -} - -Size CoordinatesBroker::getNumberOfSubsets() const -{ - return (size_t)this->coordinatesSubsetsIndexMap_.size(); -} - -Array> CoordinatesBroker::getSubsets() const -{ - return this->accessSubsets(); -} - -Index CoordinatesBroker::addSubset(const Shared& aCoordinatesSubsetSPtr) -{ - const auto search = this->coordinatesSubsetsIndexMap_.find(aCoordinatesSubsetSPtr->getId()); - - if (search != this->coordinatesSubsetsIndexMap_.end()) - { - return search->second; - } - - const Index coordinatesSubsetIndex = this->nextCoordinatesSubsetIndex_; - - this->coordinatesSubsets_.add(aCoordinatesSubsetSPtr); - this->coordinatesSubsetsIndexMap_.insert({aCoordinatesSubsetSPtr->getId(), this->nextCoordinatesSubsetIndex_}); - this->nextCoordinatesSubsetIndex_ += aCoordinatesSubsetSPtr->getSize(); - - return coordinatesSubsetIndex; -} - -bool CoordinatesBroker::hasSubset(const Shared& aCoordinatesSubsetSPtr) const -{ - return this->hasSubset(aCoordinatesSubsetSPtr->getId()); -} - -VectorXd CoordinatesBroker::extractCoordinate( - const VectorXd& aFullCoordinatesVector, const CoordinatesSubset& aCoordinatesSubset -) const -{ - return aFullCoordinatesVector.segment( - this->getSubsetIndex(aCoordinatesSubset.getId()), aCoordinatesSubset.getSize() - ); -} - -VectorXd CoordinatesBroker::extractCoordinates( - const VectorXd& aFullCoordinatesVector, const Array>& aCoordinatesSubsetsArray -) const -{ - Size coordinatesSubsetsSize = 0; - for (const auto& subset : aCoordinatesSubsetsArray) - { - coordinatesSubsetsSize += subset->getSize(); - } - - VectorXd coordinatesSubsetsVector(coordinatesSubsetsSize); - - int startIndex = 0; - for (const auto& subset : aCoordinatesSubsetsArray) - { - coordinatesSubsetsVector.segment(startIndex, subset->getSize()) = - aFullCoordinatesVector.segment(this->getSubsetIndex(subset->getId()), subset->getSize()); - - startIndex += subset->getSize(); - } - - return coordinatesSubsetsVector; -} - -VectorXd CoordinatesBroker::extractCoordinate( - const VectorXd& aFullCoordinatesVector, const Shared& aCoordinatesSubsetSPtr -) const -{ - return this->extractCoordinate(aFullCoordinatesVector, *aCoordinatesSubsetSPtr); -} - -bool CoordinatesBroker::hasSubset(const String& anId) const -{ - return this->coordinatesSubsetsIndexMap_.count(anId) > 0; -} - -Index CoordinatesBroker::getSubsetIndex(const String& anId) const -{ - auto search = this->coordinatesSubsetsIndexMap_.find(anId); - - if (search == this->coordinatesSubsetsIndexMap_.end()) - { - throw ostk::core::error::RuntimeError("Coordinates subset [{}] not found", anId); - } - - return search->second; -} - -} // namespace state -} // namespace trajectory -} // namespace astro -} // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.cpp index f47717f32..640dc69a8 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.cpp @@ -12,7 +12,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { @@ -23,8 +23,8 @@ using namespace boost::numeric::odeint; using ostk::physics::time::Duration; -using ostk::astro::RootSolver; -using ostk::astro::trajectory::StateBuilder; +using ostk::astrodynamics::RootSolver; +using ostk::astrodynamics::trajectory::StateBuilder; typedef runge_kutta_dopri5 dense_stepper_type_5; @@ -93,7 +93,7 @@ Array NumericalSolver::integrateTime( anInstantArray[i], solution.first, aState.accessFrame(), - aState.accessCoordinatesBroker(), + aState.accessCoordinateBroker(), }; states.add(state); } @@ -365,5 +365,5 @@ void NumericalSolver::observeState(const State& aState) } // namespace state } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.cpp b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.cpp index d2c2a5b3a..968f75ae4 100644 --- a/src/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.cpp +++ b/src/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.cpp @@ -6,30 +6,30 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace trajectory { StateBuilder::StateBuilder( - const Shared& aFrameSPtr, const Array>& aCoordinatesSubsetsArray + const Shared& aFrameSPtr, const Array>& aCoordinateSubsetsArray ) : frameSPtr_(aFrameSPtr), - coordinatesBrokerSPtr_(std::make_shared(CoordinatesBroker(aCoordinatesSubsetsArray))) + coordinatesBrokerSPtr_(std::make_shared(CoordinateBroker(aCoordinateSubsetsArray))) { } StateBuilder::StateBuilder( - const Shared& aFrameSPtr, const Shared& aCoordinatesBrokerSPtr + const Shared& aFrameSPtr, const Shared& aCoordinateBrokerSPtr ) : frameSPtr_(aFrameSPtr), - coordinatesBrokerSPtr_(aCoordinatesBrokerSPtr) + coordinatesBrokerSPtr_(aCoordinateBrokerSPtr) { } StateBuilder::StateBuilder(const State& aState) : frameSPtr_(aState.accessFrame()), - coordinatesBrokerSPtr_(aState.accessCoordinatesBroker()) + coordinatesBrokerSPtr_(aState.accessCoordinateBroker()) { } @@ -58,40 +58,40 @@ bool StateBuilder::operator!=(const StateBuilder& aStateBuilder) const return !((*this) == aStateBuilder); } -const StateBuilder StateBuilder::operator+(const Shared& aCoordinatesSubsetSPtr) const +const StateBuilder StateBuilder::operator+(const Shared& aCoordinateSubsetSPtr) const { if (!this->isDefined()) { throw ostk::core::error::runtime::Undefined("StateBuilder"); } - if (this->coordinatesBrokerSPtr_->hasSubset(aCoordinatesSubsetSPtr)) + if (this->coordinatesBrokerSPtr_->hasSubset(aCoordinateSubsetSPtr)) { - throw ostk::core::error::RuntimeError("Duplicate CoordinatesSubset: [{}]", aCoordinatesSubsetSPtr->getName()); + throw ostk::core::error::RuntimeError("Duplicate CoordinateSubset: [{}]", aCoordinateSubsetSPtr->getName()); } - Array> expandedSubsets = coordinatesBrokerSPtr_->getSubsets(); - expandedSubsets.add(aCoordinatesSubsetSPtr); + Array> expandedSubsets = coordinatesBrokerSPtr_->getSubsets(); + expandedSubsets.add(aCoordinateSubsetSPtr); return StateBuilder(this->frameSPtr_, expandedSubsets); } -const StateBuilder StateBuilder::operator-(const Shared& aCoordinatesSubsetSPtr) const +const StateBuilder StateBuilder::operator-(const Shared& aCoordinateSubsetSPtr) const { if (!this->isDefined()) { throw ostk::core::error::runtime::Undefined("StateBuilder"); } - if (!this->coordinatesBrokerSPtr_->hasSubset(aCoordinatesSubsetSPtr)) + if (!this->coordinatesBrokerSPtr_->hasSubset(aCoordinateSubsetSPtr)) { - throw ostk::core::error::RuntimeError("Missing CoordinatesSubset: [{}]", aCoordinatesSubsetSPtr->getName()); + throw ostk::core::error::RuntimeError("Missing CoordinateSubset: [{}]", aCoordinateSubsetSPtr->getName()); } - Array> contractedSubsets = Array>::Empty(); + Array> contractedSubsets = Array>::Empty(); for (const auto& subset : this->coordinatesBrokerSPtr_->getSubsets()) { - if (subset != aCoordinatesSubsetSPtr) + if (subset != aCoordinateSubsetSPtr) { contractedSubsets.add(subset); } @@ -144,9 +144,9 @@ const State StateBuilder::reduce(const State& aState) const for (const auto& subset : this->coordinatesBrokerSPtr_->getSubsets()) { - if (!aState.accessCoordinatesBroker()->hasSubset(subset)) + if (!aState.accessCoordinateBroker()->hasSubset(subset)) { - throw ostk::core::error::RuntimeError("Missing CoordinatesSubset: [{}]", subset->getName()); + throw ostk::core::error::RuntimeError("Missing CoordinateSubset: [{}]", subset->getName()); } const VectorXd subsetCoordinates = aState.extractCoordinate(subset); @@ -193,14 +193,14 @@ const State StateBuilder::expand(const State& aState, const State& defaultState) bool subsetDetected = false; VectorXd subsetCoordinates; - if (aState.accessCoordinatesBroker()->hasSubset(subset)) + if (aState.accessCoordinateBroker()->hasSubset(subset)) { subsetDetected = true; nonDefaultSubsetDetections++; subsetCoordinates = aState.extractCoordinate(subset); } - if (!subsetDetected && defaultState.accessCoordinatesBroker()->hasSubset(subset)) + if (!subsetDetected && defaultState.accessCoordinateBroker()->hasSubset(subset)) { subsetDetected = true; subsetCoordinates = defaultState.extractCoordinate(subset); @@ -208,14 +208,14 @@ const State StateBuilder::expand(const State& aState, const State& defaultState) if (!subsetDetected) { - throw ostk::core::error::RuntimeError("Missing CoordinatesSubset: [{}]", subset->getName()); + throw ostk::core::error::RuntimeError("Missing CoordinateSubset: [{}]", subset->getName()); } coordinates.segment(nextIndex, subsetCoordinates.size()) = subsetCoordinates; nextIndex += subsetCoordinates.size(); } - if (Size(nonDefaultSubsetDetections) != aState.accessCoordinatesBroker()->getNumberOfSubsets()) + if (Size(nonDefaultSubsetDetections) != aState.accessCoordinateBroker()->getNumberOfSubsets()) { throw ostk::core::error::RuntimeError("The operation is not an expansion"); } @@ -233,7 +233,7 @@ const Shared StateBuilder::accessFrame() const return this->frameSPtr_; } -const Shared& StateBuilder::accessCoordinatesBroker() const +const Shared& StateBuilder::accessCoordinateBroker() const { if (!this->isDefined()) { @@ -248,7 +248,7 @@ Shared StateBuilder::getFrame() const return this->accessFrame(); } -const Array> StateBuilder::getCoordinatesSubsets() const +const Array> StateBuilder::getCoordinateSubsets() const { if (!this->isDefined()) { @@ -273,7 +273,7 @@ void StateBuilder::print(std::ostream& anOutputStream, bool displayDecorator) co } else { - const Array> subsets = this->coordinatesBrokerSPtr_->getSubsets(); + const Array> subsets = this->coordinatesBrokerSPtr_->getSubsets(); for (const auto& subset : subsets) { @@ -289,5 +289,5 @@ StateBuilder StateBuilder::Undefined() } } // namespace trajectory -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/test/Global.test.hpp b/test/Global.test.hpp index d43422a25..d0a083c81 100644 --- a/test/Global.test.hpp +++ b/test/Global.test.hpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace test { @@ -15,5 +15,5 @@ extern std::string someGlobalString; } } // namespace test -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/test/Main.test.cxx b/test/Main.test.cxx index 534215ca8..5c42b859d 100644 --- a/test/Main.test.cxx +++ b/test/Main.test.cxx @@ -6,7 +6,7 @@ int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); - ::testing::AddGlobalTestEnvironment(new ostk::astro::test::Environment(argc >= 2 ? argv[1] : "")); + ::testing::AddGlobalTestEnvironment(new ostk::astrodynamics::test::Environment(argc >= 2 ? argv[1] : "")); return RUN_ALL_TESTS(); } diff --git a/test/OpenSpaceToolkit/Astrodynamics/Access.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Access.test.cpp index 8e7a5b3aa..d5fc70846 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Access.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Access.test.cpp @@ -16,7 +16,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, Constructor) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -56,7 +56,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, EqualToOperator) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -144,7 +144,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, NotEqualToOperator) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -232,7 +232,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, StreamOperator) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -258,7 +258,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, IsDefined) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -284,7 +284,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, IsComplete) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -322,7 +322,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetType) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -360,7 +360,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetAcquisitionOfSignal) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -386,7 +386,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetTimeOfClosestApproach) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -412,7 +412,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetLossOfSignal) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -439,7 +439,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetInterval) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -466,7 +466,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetDuration) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -493,7 +493,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetMaxElevation) using ostk::physics::time::Scale; using ostk::physics::unit::Angle; - using ostk::astro::Access; + using ostk::astrodynamics::Access; { const Access::Type type = Access::Type::Complete; @@ -514,7 +514,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, GetMaxElevation) TEST(OpenSpaceToolkit_Astrodynamics_Access, Undefined) { - using ostk::astro::Access; + using ostk::astrodynamics::Access; { EXPECT_NO_THROW(Access::Undefined()); @@ -525,7 +525,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Access, Undefined) TEST(OpenSpaceToolkit_Astrodynamics_Access, StringFromType) { - using ostk::astro::Access; + using ostk::astrodynamics::Access; { EXPECT_EQ("Undefined", Access::StringFromType(Access::Type::Undefined)); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Access/Generator.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Access/Generator.test.cpp index b1ec59f98..5c424bb0a 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Access/Generator.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Access/Generator.test.cpp @@ -13,10 +13,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include @@ -44,15 +44,15 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::Access; -using ostk::astro::Trajectory; -using ostk::astro::access::Generator; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::Kepler; -using ostk::astro::trajectory::orbit::models::SGP4; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::sgp4::TLE; +using ostk::astrodynamics::Access; +using ostk::astrodynamics::Trajectory; +using ostk::astrodynamics::access::Generator; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::Kepler; +using ostk::astrodynamics::trajectory::orbit::model::SGP4; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; TEST(OpenSpaceToolkit_Astrodynamics_Access_Generator, Constructor) { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.test.cpp similarity index 82% rename from test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.test.cpp index a617379be..2759ada12 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM.test.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include #include @@ -21,10 +21,10 @@ using ostk::physics::time::Scale; using ostk::physics::unit::Length; using ostk::physics::unit::Mass; -using ostk::astro::conjunction::messages::ccsds::CDM; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::conjunction::message::ccsds::CDM; +using ostk::astrodynamics::trajectory::State; -class OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM : public ::testing::Test { protected: // https://public.ccsds.org/Pubs/508x0b1e2c2.pdf (section 3.6.3 - page 3-12) @@ -156,7 +156,7 @@ class OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM : public ::t CDM cdm_ = CDM::Undefined(); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, IsDefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, IsDefined) { { EXPECT_TRUE(this->cdm_.isDefined()); @@ -167,7 +167,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, IsDefined) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetHeader) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetHeader) { { const CDM::Header header = this->cdm_.getHeader(); @@ -185,7 +185,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetHeader) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetRelativeMetadata) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetRelativeMetadata) { { const CDM::RelativeMetadata relativeMetadata = this->cdm_.getRelativeMetadata(); @@ -221,7 +221,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetRelativ } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMetadataArray) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetMetadataArray) { { const Array objectsMetadataArray = this->cdm_.getMetadataArray(); @@ -234,7 +234,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMetadat } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetDataArray) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetDataArray) { { const Array objectsDataArray = this->cdm_.getDataArray(); @@ -247,7 +247,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetDataArr } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectMetadataAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectMetadataAt) { { const CDM::Metadata objectMetadata = this->cdm_.getObjectMetadataAt(0); @@ -285,7 +285,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectM } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectDataAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectDataAt) { { const CDM::Data objectData = this->cdm_.getObjectDataAt(0); @@ -325,7 +325,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCCSDSCDMVersion) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetCCSDSCDMVersion) { { EXPECT_EQ("1.0", this->cdm_.getCCSDSCDMVersion()); @@ -336,7 +336,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCCSDSCD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, getCreationDate) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, getCreationDate) { { EXPECT_EQ(Instant::DateTime(DateTime(2010, 3, 12, 22, 31, 12), Scale::UTC), this->cdm_.getCreationDate()); @@ -347,7 +347,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, getCreatio } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetOriginator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetOriginator) { { EXPECT_EQ("JSPOC", this->cdm_.getOriginator()); @@ -358,7 +358,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetOrigina } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMessageFor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetMessageFor) { { EXPECT_EQ("SATELLITE A", this->cdm_.getMessageFor()); @@ -369,7 +369,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMessage } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMessageId) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetMessageId) { { EXPECT_EQ("201113719185", this->cdm_.getMessageId()); @@ -380,7 +380,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMessage } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetTCA) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetTCA) { { EXPECT_EQ(Instant::DateTime(DateTime(2010, 3, 13, 22, 37, 52, 618), Scale::UTC), this->cdm_.getTCA()); @@ -391,7 +391,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetTCA) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMissDistance) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetMissDistance) { { EXPECT_EQ(Length::Meters(715.0), this->cdm_.getMissDistance()); @@ -402,7 +402,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMissDis } } -// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetRelativePosition) +// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetRelativePosition) // { // { @@ -419,7 +419,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMissDis // } -// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetRelativeVelocity) +// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetRelativeVelocity) // { // { @@ -436,7 +436,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetMissDis // } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCollisionProbability) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetCollisionProbability) { { EXPECT_EQ(0.0000435, this->cdm_.getCollisionProbability()); @@ -447,7 +447,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCollisi } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCollisionProbabilityMethod) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetCollisionProbabilityMethod) { { EXPECT_EQ("FOSTER-1992", this->cdm_.getCollisionProbabilityMethod()); @@ -458,7 +458,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetCollisi } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectDesignator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectDesignator) { { EXPECT_EQ(30337, this->cdm_.getObjectDesignator(1)); @@ -469,7 +469,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectName) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectName) { { EXPECT_EQ("FENGYUN 1C DEB", this->cdm_.getObjectName(1)); @@ -480,7 +480,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectN } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectInternationalDesignator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectInternationalDesignator) { { EXPECT_EQ("1999-025AA", this->cdm_.getObjectInternationalDesignator(1)); @@ -491,7 +491,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectI } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectType) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectType) { { EXPECT_EQ(CDM::ObjectType::Debris, this->cdm_.getObjectType(1)); @@ -502,7 +502,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectT } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectEphemerisName) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectEphemerisName) { { EXPECT_EQ("NONE", this->cdm_.getObjectEphemerisName(1)); @@ -513,7 +513,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectE } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectCovarianceMethod) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectCovarianceMethod) { { EXPECT_EQ("CALCULATED", this->cdm_.getObjectCovarianceMethod(1)); @@ -524,7 +524,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectC } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectManeuverability) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectManeuverability) { { EXPECT_EQ("NO", this->cdm_.getObjectManeuverability(1)); @@ -535,7 +535,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectM } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectReferenceFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectReferenceFrame) { { EXPECT_EQ("EME2000", this->cdm_.getObjectReferenceFrame(1)); @@ -546,7 +546,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectR } } -// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectStateAtTCA) +// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectStateAtTCA) // { // { @@ -563,7 +563,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectR // } -// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectCovarianceMatrix) +// TEST_F (OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, GetObjectCovarianceMatrix) // { // { @@ -580,14 +580,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, GetObjectR // } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Undefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, Undefined) { { EXPECT_NO_THROW(CDM::Undefined()); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Dictionary) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, Dictionary) { using ostk::core::container::Dictionary; using ostk::core::container::Object; @@ -597,21 +597,21 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Dictionary } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Parse) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, Parse) { { EXPECT_ANY_THROW(CDM::Parse(String::Empty())); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Load) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, Load) { using ostk::core::filesystem::File; using ostk::core::filesystem::Path; { const CDM cdm = CDM::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM/cdm.json")) + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM/cdm.json")) ); } @@ -620,7 +620,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, Load) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Messages_CCSDS_CDM, ObjectTypeFromString) +TEST_F(OpenSpaceToolkit_Astrodynamics_Conjunction_Message_CCSDS_CDM, ObjectTypeFromString) { { EXPECT_EQ(CDM::ObjectType::Payload, CDM::ObjectTypeFromString("PAYLOAD")); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM/cdm.json b/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM/cdm.json similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM/cdm.json rename to test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM/cdm.json diff --git a/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM/cdm.kvn b/test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM/cdm.kvn similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Conjunction/Messages/CCSDS/CDM/cdm.kvn rename to test/OpenSpaceToolkit/Astrodynamics/Conjunction/Message/CCSDS/CDM/cdm.kvn diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics.test.cpp index 85beb9d0f..a1ecb9f65 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics.test.cpp @@ -21,10 +21,10 @@ using ostk::physics::Environment; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::Dynamics; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class DynamicsMock : public Dynamics { @@ -34,9 +34,9 @@ class DynamicsMock : public Dynamics MOCK_METHOD(bool, isDefined, (), (const, override)); - MOCK_METHOD(Array>, getReadCoordinatesSubsets, (), (const, override)); + MOCK_METHOD(Array>, getReadCoordinateSubsets, (), (const, override)); - MOCK_METHOD(Array>, getWriteCoordinatesSubsets, (), (const, override)); + MOCK_METHOD(Array>, getWriteCoordinateSubsets, (), (const, override)); MOCK_METHOD( VectorXd, diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.test.cpp index 950416c22..a74116194 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/AtmosphericDrag.test.cpp @@ -29,9 +29,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -69,14 +69,14 @@ using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -212,23 +212,23 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_AtmosphericDrag, GetCelestial) EXPECT_TRUE(atmosphericDynamics.getCelestial() == earthSPtr_); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_AtmosphericDrag, GetReadCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_AtmosphericDrag, GetReadCoordinateSubsets) { AtmosphericDrag atmosphericDrag(earthSPtr_); - const Array> subsets = atmosphericDrag.getReadCoordinatesSubsets(); + const Array> subsets = atmosphericDrag.getReadCoordinateSubsets(); EXPECT_EQ(5, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); EXPECT_EQ(CartesianVelocity::Default(), subsets[1]); - EXPECT_EQ(CoordinatesSubset::Mass(), subsets[2]); + EXPECT_EQ(CoordinateSubset::Mass(), subsets[2]); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_AtmosphericDrag, GetWriteCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_AtmosphericDrag, GetWriteCoordinateSubsets) { AtmosphericDrag atmosphericDrag(earthSPtr_); - const Array> subsets = atmosphericDrag.getWriteCoordinatesSubsets(); + const Array> subsets = atmosphericDrag.getWriteCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianVelocity::Default(), subsets[0]); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.test.cpp index 8521ecbcc..d9644e77b 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/CentralBodyGravity.test.cpp @@ -20,9 +20,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -51,12 +51,12 @@ using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -193,21 +193,21 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_CentralBodyGravity, GetCelestial) EXPECT_TRUE(centralBodyGravity.getCelestial() == sphericalEarthSPtr_); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_CentralBodyGravity, GetReadCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_CentralBodyGravity, GetReadCoordinateSubsets) { const CentralBodyGravity centralBodyGravity = CentralBodyGravity(sphericalEarthSPtr_); - const Array> subsets = centralBodyGravity.getReadCoordinatesSubsets(); + const Array> subsets = centralBodyGravity.getReadCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_CentralBodyGravity, GetWriteCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_CentralBodyGravity, GetWriteCoordinateSubsets) { const CentralBodyGravity centralBodyGravity = CentralBodyGravity(sphericalEarthSPtr_); - const Array> subsets = centralBodyGravity.getWriteCoordinatesSubsets(); + const Array> subsets = centralBodyGravity.getWriteCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianVelocity::Default(), subsets[0]); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.test.cpp index 7becad904..d6327fbe5 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/PositionDerivative.test.cpp @@ -9,9 +9,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include @@ -23,11 +23,11 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative : public ::testing::Test { @@ -78,21 +78,21 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative, Print) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative, GetReadCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative, GetReadCoordinateSubsets) { const PositionDerivative positionDerivative = PositionDerivative(); - const Array> subsets = positionDerivative.getReadCoordinatesSubsets(); + const Array> subsets = positionDerivative.getReadCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianVelocity::Default(), subsets[0]); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative, GetWriteCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_PositionDerivative, GetWriteCoordinateSubsets) { const PositionDerivative positionDerivative = PositionDerivative(); - const Array> subsets = positionDerivative.getWriteCoordinatesSubsets(); + const Array> subsets = positionDerivative.getWriteCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.test.cpp index 713ebc4e7..c9825e08b 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Tabulated.test.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include @@ -32,9 +32,9 @@ using ostk::physics::time::Instant; using ostk::physics::time::Scale; using ostk::physics::coordinate::Frame; -using ostk::astro::dynamics::Tabulated; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::dynamics::Tabulated; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated : public ::testing::Test { @@ -51,7 +51,7 @@ class OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated : public ::testing::Test Instant::DateTime(DateTime(2018, 01, 01, 0, 0, 10, 000), Scale::UTC), Instant::DateTime(DateTime(2018, 01, 01, 0, 0, 15, 000), Scale::UTC), }; - const Array> defaultWriteCoordinatesSubsets_ = {CartesianVelocity::Default()}; + const Array> defaultWriteCoordinateSubsets_ = {CartesianVelocity::Default()}; const Shared defaultFrameSPtr_ = Frame::GCRF(); MatrixXd contributionProfile_; @@ -90,7 +90,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Constructor) { { EXPECT_NO_THROW( - Tabulated(defaultInstants_, contributionProfile_, defaultWriteCoordinatesSubsets_, defaultFrameSPtr_) + Tabulated(defaultInstants_, contributionProfile_, defaultWriteCoordinateSubsets_, defaultFrameSPtr_) ); } @@ -99,7 +99,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Constructor) { try { - Tabulated({}, contributionProfile_, defaultWriteCoordinatesSubsets_, defaultFrameSPtr_); + Tabulated({}, contributionProfile_, defaultWriteCoordinateSubsets_, defaultFrameSPtr_); } catch (const ostk::core::error::RuntimeError& e) { @@ -119,13 +119,13 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Constructor) { try { - Tabulated(defaultInstants_, contributionProfile_, {CoordinatesSubset::Mass()}, defaultFrameSPtr_); + Tabulated(defaultInstants_, contributionProfile_, {CoordinateSubset::Mass()}, defaultFrameSPtr_); } catch (const ostk::core::error::RuntimeError& e) { EXPECT_EQ( "Contribution profile must have the same number of columns as the sum of the sizes of the " - "write coordinates subsets.", + "write coordinate subsets.", e.getMessage() ); throw; @@ -143,7 +143,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, StreamOperator) Tabulated tabulated = { defaultInstants_, contributionProfile_, - defaultWriteCoordinatesSubsets_, + defaultWriteCoordinateSubsets_, defaultFrameSPtr_, }; @@ -159,7 +159,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Print) Tabulated tabulated = { defaultInstants_, contributionProfile_, - defaultWriteCoordinatesSubsets_, + defaultWriteCoordinateSubsets_, defaultFrameSPtr_, }; @@ -174,7 +174,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Accessors) Tabulated tabulated = { defaultInstants_, contributionProfile_, - defaultWriteCoordinatesSubsets_, + defaultWriteCoordinateSubsets_, defaultFrameSPtr_, }; @@ -196,7 +196,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, Getters) Tabulated tabulated = { defaultInstants_, contributionProfile_, - defaultWriteCoordinatesSubsets_, + defaultWriteCoordinateSubsets_, defaultFrameSPtr_, }; @@ -218,7 +218,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, ComputeContribution) const VectorXd x; // Not used { Tabulated tabulated = { - defaultInstants_, contributionProfile_, defaultWriteCoordinatesSubsets_, defaultFrameSPtr_ + defaultInstants_, contributionProfile_, defaultWriteCoordinateSubsets_, defaultFrameSPtr_ }; // Wrong frame @@ -253,7 +253,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Tabulated, ComputeContribution) const Tabulated tabulated = { instants, contributionProfile, - defaultWriteCoordinatesSubsets_, + defaultWriteCoordinateSubsets_, defaultFrameSPtr_, }; diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.test.cpp index a9610c358..1e4e8431a 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/ThirdBodyGravity.test.cpp @@ -21,9 +21,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -52,13 +52,13 @@ using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; static const Derived::Unit GravitationalParameterSIUnit = Derived::Unit::GravitationalParameter(Length::Unit::Meter, Time::Unit::Second); @@ -209,17 +209,17 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_ThirdBodyGravity, GetCelestial) EXPECT_TRUE(defaultThirdBodyGravity_.getCelestial() == sphericalMoonSPtr_); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_ThirdBodyGravity, GetReadCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_ThirdBodyGravity, GetReadCoordinateSubsets) { - const Array> subsets = defaultThirdBodyGravity_.getReadCoordinatesSubsets(); + const Array> subsets = defaultThirdBodyGravity_.getReadCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_ThirdBodyGravity, GetWriteCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_ThirdBodyGravity, GetWriteCoordinateSubsets) { - const Array> subsets = defaultThirdBodyGravity_.getWriteCoordinatesSubsets(); + const Array> subsets = defaultThirdBodyGravity_.getWriteCoordinateSubsets(); EXPECT_EQ(1, subsets.size()); EXPECT_EQ(CartesianVelocity::Default(), subsets[0]); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.test.cpp index 0c8257151..30c71aacd 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Dynamics/Thruster.test.cpp @@ -11,9 +11,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include using ostk::core::type::Shared; using ostk::core::type::String; @@ -27,12 +27,12 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::GuidanceLaw; -using ostk::astro::dynamics::Thruster; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::GuidanceLaw; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class MockGuidanceLaw : public GuidanceLaw { @@ -111,15 +111,15 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetName) EXPECT_EQ(defaultThruster_.getName(), defaultName_); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetReadCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetReadCoordinateSubsets) { - const Array> expectedSubsets = { + const Array> expectedSubsets = { CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), }; - const Array> readSubsets = defaultThruster_.getReadCoordinatesSubsets(); + const Array> readSubsets = defaultThruster_.getReadCoordinateSubsets(); for (Index i = 0; i < expectedSubsets.getSize(); ++i) { @@ -127,14 +127,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetReadCoordinatesSubse } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetWriteCoordinatesSubsets) +TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster, GetWriteCoordinateSubsets) { - const Array> expectedSubsets = { + const Array> expectedSubsets = { CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), }; - const Array> writeSubsets = defaultThruster_.getWriteCoordinatesSubsets(); + const Array> writeSubsets = defaultThruster_.getWriteCoordinateSubsets(); for (Index i = 0; i < expectedSubsets.getSize(); ++i) { diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition.test.cpp index eee70a761..defa81338 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition.test.cpp @@ -24,8 +24,8 @@ using ostk::physics::time::Instant; using ostk::physics::unit::Length; using ostk::physics::unit::Angle; -using ostk::astro::EventCondition; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::trajectory::State; class TestCondition : public EventCondition { diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.test.cpp index 1235c55d9..13f13abb2 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/AngularCondition.test.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -31,12 +31,12 @@ using ostk::physics::coordinate::Frame; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::AngularCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::StateBuilder; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::AngularCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::StateBuilder; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_EventCondition_AngularCondition : public ::testing::Test { @@ -53,8 +53,8 @@ class OpenSpaceToolkit_Astrodynamics_EventCondition_AngularCondition : public :: defaultName_, defaultCriterion_, defaultEvaluator_, defaultTargetAngle_ }; - const Array> defaultSubsets_ = { - std::make_shared(CoordinatesSubset("ANGLE", 1)) + const Array> defaultSubsets_ = { + std::make_shared(CoordinateSubset("ANGLE", 1)) }; const StateBuilder defaultStateBuilder_ = StateBuilder(Frame::GCRF(), defaultSubsets_); diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.test.cpp index bfffe37c7..51318c40d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/BooleanCondition.test.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -28,11 +28,11 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::eventcondition::BooleanCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::StateBuilder; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::eventcondition::BooleanCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::StateBuilder; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_EventCondition_BooleanCondition : public ::testing::Test { @@ -52,11 +52,11 @@ class OpenSpaceToolkit_Astrodynamics_EventCondition_BooleanCondition : public :: }; const Instant defaultInstant_ = Instant::J2000(); const Shared defaultFrame_ = Frame::GCRF(); - const Shared defaultCoordinatesBroker_ = - std::make_shared(CoordinatesBroker(Array>::Empty())); + const Shared defaultCoordinateBroker_ = + std::make_shared(CoordinateBroker(Array>::Empty())); - const Array> defaultSubsets_ = { - std::make_shared(CoordinatesSubset("ANGLE", 1)) + const Array> defaultSubsets_ = { + std::make_shared(CoordinateSubset("ANGLE", 1)) }; const StateBuilder defaultStateBuilder_ = StateBuilder(defaultFrame_, defaultSubsets_); diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.test.cpp index a5ebdbeeb..d0295f731 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/COECondition.test.cpp @@ -14,10 +14,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include @@ -38,15 +38,15 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Length; using ostk::physics::unit::Derived; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::COECondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::AngularCondition; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::COECondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::AngularCondition; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class OpenSpaceToolkit_Astrodynamics_EventCondition_COECondition : public ::testing::TestWithParam> diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.test.cpp index 1e3518ef8..0ac847d32 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/InstantCondition.test.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include @@ -22,10 +22,10 @@ using ostk::physics::time::Duration; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_EventCondition_InstantCondition : public ::testing::Test { @@ -34,13 +34,13 @@ class OpenSpaceToolkit_Astrodynamics_EventCondition_InstantCondition : public :: const Instant defaultInstant_ = Instant::J2000(); const VectorXd defaultCoordinates_; const Shared defaultFrame_ = Frame::GCRF(); - const Shared defaultCoordinatesBroker_ = - std::make_shared(Array>::Empty()); + const Shared defaultCoordinateBroker_ = + std::make_shared(Array>::Empty()); const InstantCondition defaultCondition_ = InstantCondition(defaultCriterion_, defaultInstant_); const State generateState(const Instant& anInstant) { - return State(anInstant, defaultCoordinates_, defaultFrame_, defaultCoordinatesBroker_); + return State(anInstant, defaultCoordinates_, defaultFrame_, defaultCoordinateBroker_); } }; diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.test.cpp index 118b6ba54..db6eb3aa0 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/LogicalCondition.test.cpp @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include @@ -31,13 +31,13 @@ using ostk::physics::time::Instant; using ostk::physics::time::Duration; using ostk::physics::coordinate::Frame; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::LogicalCondition; -using ostk::astro::eventcondition::BooleanCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::LogicalCondition; +using ostk::astrodynamics::eventcondition::BooleanCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_EventCondition_LogicalCondition : public ::testing::Test { @@ -66,10 +66,10 @@ class OpenSpaceToolkit_Astrodynamics_EventCondition_LogicalCondition : public :: LogicalCondition defaultLogicalCondition_ = LogicalCondition(defaultName_, defaultType_, defaultEventConditions_); const Instant defaultInstant_ = Instant::J2000(); const Shared defaultFrame_ = Frame::GCRF(); - const Shared defaultCoordinatesBroker_ = - std::make_shared(CoordinatesBroker(Array>::Empty())); + const Shared defaultCoordinateBroker_ = + std::make_shared(CoordinateBroker(Array>::Empty())); const VectorXd defaultCoordinates_; - const State defaultState_ = State(defaultInstant_, defaultCoordinates_, defaultFrame_, defaultCoordinatesBroker_); + const State defaultState_ = State(defaultInstant_, defaultCoordinates_, defaultFrame_, defaultCoordinateBroker_); }; TEST_F(OpenSpaceToolkit_Astrodynamics_EventCondition_LogicalCondition, Constructor) diff --git a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.test.cpp index 4db1e42fa..a528d451e 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/EventCondition/RealCondition.test.cpp @@ -12,8 +12,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -29,11 +29,11 @@ using ostk::physics::time::Duration; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::StateBuilder; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::StateBuilder; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_EventCondition_RealCondition : public ::testing::Test { @@ -48,11 +48,11 @@ class OpenSpaceToolkit_Astrodynamics_EventCondition_RealCondition : public ::tes const RealCondition defaultCondition_ = {defaultName_, defaultCriterion_, defaultEvaluator_, defaultTarget_}; const Instant defaultInstant_ = Instant::J2000(); const Shared defaultFrame_ = Frame::GCRF(); - const Shared defaultCoordinatesBroker_ = - std::make_shared(CoordinatesBroker(Array>::Empty())); + const Shared defaultCoordinateBroker_ = + std::make_shared(CoordinateBroker(Array>::Empty())); - const Array> defaultSubsets_ = { - std::make_shared(CoordinatesSubset("REAL", 1)) + const Array> defaultSubsets_ = { + std::make_shared(CoordinateSubset("REAL", 1)) }; const StateBuilder defaultStateBuilder_ = StateBuilder(defaultFrame_, defaultSubsets_); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Flight/Profile.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Flight/Profile.test.cpp index e8eac3cd2..3fa4b4bbb 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Flight/Profile.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Flight/Profile.test.cpp @@ -20,11 +20,11 @@ #include #include -#include -#include +#include +#include #include -#include -#include +#include +#include #include @@ -54,13 +54,13 @@ using ostk::physics::unit::Length; using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; -using ostk::astro::flight::Profile; -using ostk::astro::flight::profile::models::Transform; -using ostk::astro::flight::profile::models::Tabulated; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::orbit::models::Kepler; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::flight::Profile; +using ostk::astrodynamics::flight::profile::model::Transform; +using ostk::astrodynamics::flight::profile::model::Tabulated; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::orbit::model::Kepler; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; class OpenSpaceToolkit_Astrodynamics_Flight_Profile : public ::testing::Test { @@ -222,7 +222,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Flight_Profile, GetStatesAt) TEST_F(OpenSpaceToolkit_Astrodynamics_Flight_Profile, Undefined) { - using ostk::astro::flight::Profile; + using ostk::astrodynamics::flight::Profile; { EXPECT_NO_THROW(Profile::Undefined()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Flight/System.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Flight/System.test.cpp index e4772664f..2f5ac7629 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Flight/System.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Flight/System.test.cpp @@ -27,7 +27,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, Constructor) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; // Normal constructor { @@ -84,7 +84,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, EqualToOperator) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; // Normal constructor { @@ -135,7 +135,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, NotEqualToOperator) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; // Normal constructor { @@ -186,7 +186,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, IsDefined) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { // Define satellite mass @@ -224,7 +224,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, StreamOperator) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { // Define satellite mass @@ -265,7 +265,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, Print) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { // Define satellite mass @@ -306,7 +306,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, getMass) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { // Define satellite mass @@ -349,7 +349,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Flight_System, getGeometry) using ostk::physics::unit::Mass; - using ostk::astro::flight::System; + using ostk::astrodynamics::flight::System; { // Define satellite geometry diff --git a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.test.cpp index 5e54b118d..420b909e2 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/PropulsionSystem.test.cpp @@ -25,7 +25,7 @@ using ostk::physics::Unit; using ostk::physics::environment::gravitational::Earth; -using ostk::astro::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; class OpenSpaceToolkit_Astrodynamics_Flight_System_PropulsionSystem : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.test.cpp index 9904fb172..380bf1d63 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystem.test.cpp @@ -34,8 +34,8 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::Unit; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; class OpenSpaceToolkit_Astrodynamics_Flight_System_SatelliteSystem : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.test.cpp index 44109ef56..a83433b77 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Flight/System/SatelliteSystemBuilder.test.cpp @@ -35,9 +35,9 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::Unit; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::SatelliteSystemBuilder; -using ostk::astro::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::SatelliteSystemBuilder; +using ostk::astrodynamics::flight::system::PropulsionSystem; class OpenSpaceToolkit_Astrodynamics_Flight_System_SatelliteSystemBuilder : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.test.cpp index f347e61dd..12bd3af9d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw.test.cpp @@ -22,7 +22,7 @@ using ostk::mathematics::object::Vector3d; using ostk::physics::time::Instant; using ostk::physics::coordinate::Frame; -using ostk::astro::GuidanceLaw; +using ostk::astrodynamics::GuidanceLaw; class MockGuidanceLaw : public GuidanceLaw { diff --git a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.test.cpp index 6148e2979..a1c096d8a 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/ConstantThrust.test.cpp @@ -71,14 +71,14 @@ using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::Dynamics; -using ostk::astro::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::guidancelaw::ConstantThrust; using namespace boost::numeric::odeint; diff --git a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.test.cpp index f47cbd9e5..59ebee21b 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/GuidanceLaw/QLaw.test.cpp @@ -15,9 +15,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include @@ -49,21 +49,21 @@ using ostk::physics::coordinate::Frame; using ostk::physics::environment::object::celestial::Earth; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::guidancelaw::QLaw; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::Thruster; -using ostk::astro::dynamics::PositionDerivative; +using ostk::astrodynamics::guidancelaw::QLaw; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::dynamics::PositionDerivative; class OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster_GuidanceLaw_QLaw : public ::testing::Test { @@ -560,7 +560,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Dynamics_Thruster_GuidanceLaw_QLaw, Calcul Instant::J2000(), coordinates, Frame::GCRF(), - {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()} + {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()} }; const Vector3d acceleration = qlaw.calculateThrustAccelerationAt( diff --git a/test/OpenSpaceToolkit/Astrodynamics/RootSolver.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/RootSolver.test.cpp index 948ebc30b..35831bf59 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/RootSolver.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/RootSolver.test.cpp @@ -7,7 +7,7 @@ using ostk::core::type::Size; using ostk::core::type::Real; -using ostk::astro::RootSolver; +using ostk::astrodynamics::RootSolver; class OpenSpaceToolkit_Astrodynamics_RootSolver : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.test.cpp similarity index 95% rename from test/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.test.cpp index dafd1daca..78d832d05 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Solvers/FiniteDifferenceSolver.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Solver/FiniteDifferenceSolver.test.cpp @@ -4,8 +4,8 @@ #include -#include -#include +#include +#include #include using ostk::core::type::Size; @@ -20,9 +20,9 @@ using ostk::physics::coordinate::Frame; using ostk::mathematics::object::VectorXd; using ostk::mathematics::object::MatrixXd; -using ostk::astro::solvers::FiniteDifferenceSolver; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::solver::FiniteDifferenceSolver; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; class OpenSpaceToolkit_Astrodynamics_Solvers_FiniteDifferenceSolver : public ::testing::Test { @@ -85,9 +85,9 @@ class OpenSpaceToolkit_Astrodynamics_Solvers_FiniteDifferenceSolver : public ::t defaultStepDuration_, }; - const Array> coordinateSubsets_ = { - std::make_shared(CoordinatesSubset("Position", 1)), - std::make_shared(CoordinatesSubset("Velocity", 1)), + const Array> coordinateSubsets_ = { + std::make_shared(CoordinateSubset("Position", 1)), + std::make_shared(CoordinateSubset("Velocity", 1)), }; State initialState_ = State::Undefined(); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory.test.cpp index 0ae9c3064..9de971e7d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory.test.cpp @@ -3,7 +3,7 @@ #include #include -#include +#include #include @@ -19,9 +19,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, Constructor) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -72,9 +72,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, EqualToOperator) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -147,9 +147,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, NotEqualToOperator) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -222,9 +222,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, StreamOperator) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -262,9 +262,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, IsDefined) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -302,9 +302,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, AccessModel) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -342,9 +342,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, GetStateAt) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -412,9 +412,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, GetStatesAt) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; // Test correct handling of state array dimensions { @@ -532,9 +532,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, Print) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::Trajectory; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::models::Tabulated; + using ostk::astrodynamics::Trajectory; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::model::Tabulated; { const Shared gcrfSPtr = Frame::GCRF(); @@ -563,7 +563,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, Print) TEST(OpenSpaceToolkit_Astrodynamics_Trajectory, Undefined) { - using ostk::astro::Trajectory; + using ostk::astrodynamics::Trajectory; { EXPECT_NO_THROW(Trajectory::Undefined()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.test.cpp index 8c947cb05..7c5fb212b 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameDirection.test.cpp @@ -43,9 +43,9 @@ using ostk::physics::unit::Derived; using ostk::physics::coordinate::Transform; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; class OpenSpaceToolkit_Astrodynamics_Trajectory_LocalOrbitalFrameDirection : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.test.cpp index fbc0e862b..62113e154 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameFactory.test.cpp @@ -42,8 +42,8 @@ using ostk::physics::unit::Derived; using ostk::physics::coordinate::Transform; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; class OpenSpaceToolkit_Astrodynamics_Trajectory_LocalOrbitalFrameFactory : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.test.cpp index 6139158b0..86eddd1e8 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/LocalOrbitalFrameTransformProvider.test.cpp @@ -22,7 +22,7 @@ using ostk::physics::time::Scale; using ostk::physics::coordinate::Transform; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; class OpenSpaceToolkit_Astrodynamics_Trajectory_LocalOrbitalFrameTransformProvider : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.test.cpp index f94523562..a86848989 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit.test.cpp @@ -21,11 +21,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include @@ -61,13 +61,13 @@ using ostk::physics::unit::Derived; using ostk::physics::unit::Length; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::Pass; -using ostk::astro::trajectory::orbit::models::Kepler; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::SGP4; -using ostk::astro::trajectory::orbit::models::sgp4::TLE; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::Pass; +using ostk::astrodynamics::trajectory::orbit::model::Kepler; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::SGP4; +using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, Constructor) { @@ -262,7 +262,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, GetRevolutionNumberAt) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Passes.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Passes.csv" )), Table::Format::CSV, true @@ -320,7 +320,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, GetPassAt) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Passes.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Passes.csv" )), Table::Format::CSV, true @@ -469,7 +469,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, ComputePasses) // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/" "Satellite Passes.csv")), Table::Format::CSV, true @@ -600,7 +600,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, GetPassWithRevolutionNumbe // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/" "Satellite Passes.csv")), Table::Format::CSV, true @@ -664,7 +664,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, GetPassWithRevolutionNumbe // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/" "Satellite Passes.csv")), Table::Format::CSV, true @@ -728,7 +728,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit, GetPassWithRevolutionNumbe // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/" "Satellite Passes.csv")), Table::Format::CSV, true diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.test.cpp similarity index 90% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.test.cpp index ea90c6043..9913c2f94 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM.test.cpp @@ -2,7 +2,7 @@ #include -#include +#include #include @@ -23,9 +23,9 @@ using ostk::physics::time::Scale; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::trajectory::orbit::messages::spacex::OPM; +using ostk::astrodynamics::trajectory::orbit::message::spacex::OPM; -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM : public ::testing::Test { protected: void SetUp() override @@ -71,7 +71,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM : publ OPM opm_ = OPM::Undefined(); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, Constructor) { const OPM opm = { OPM::Header { @@ -96,7 +96,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Cons }; } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, IsDefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, IsDefined) { { EXPECT_TRUE(this->opm_.isDefined()); @@ -107,7 +107,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, IsDe } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetHeader) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, GetHeader) { { const OPM::Header header = this->opm_.getHeader(); @@ -121,7 +121,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetH } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetDeployments) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, GetDeployments) { { const Array deployments = this->opm_.getDeployments(); @@ -148,7 +148,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetDeploymentAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, GetDeploymentAt) { { const OPM::Deployment deployment = this->opm_.getDeploymentAt(0); @@ -177,7 +177,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetDeploymentWithName) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, GetDeploymentWithName) { { const OPM::Deployment deployment = this->opm_.getDeploymentWithName("B"); @@ -206,14 +206,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, GetD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Undefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, Undefined) { { EXPECT_NO_THROW(OPM::Undefined()); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Dictionary) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, Dictionary) { using ostk::core::container::Dictionary; using ostk::core::container::Object; @@ -241,21 +241,21 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Dict } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Parse) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, Parse) { { EXPECT_ANY_THROW(OPM::Parse(String::Empty())); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Load) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, Load) { using ostk::core::filesystem::File; using ostk::core::filesystem::Path; { const OPM opm = OPM::Load(File::Path( - Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM/opm_1.yaml") + Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM/opm_1.yaml") )); EXPECT_EQ(Instant::DateTime(DateTime(2020, 1, 1, 12, 34, 56, 789), Scale::UTC), opm.getHeader().generationDate); @@ -305,9 +305,9 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, Load } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Messages_SpaceX_OPM, DeploymentToState) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Message_SpaceX_OPM, DeploymentToState) { - using ostk::astro::trajectory::State; + using ostk::astrodynamics::trajectory::State; { const OPM::Deployment deployment = this->opm_.getDeploymentWithName("B"); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM/opm_1.yaml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM/opm_1.yaml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Messages/SpaceX/OPM/opm_1.yaml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Message/SpaceX/OPM/opm_1.yaml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.test.cpp similarity index 92% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.test.cpp index de02e7e23..036d7daab 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler.test.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include @@ -47,12 +47,12 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::Kepler; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::Kepler; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Constructor) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Constructor) // { // using ostk::core::type::Shared ; @@ -77,10 +77,10 @@ using ostk::astro::trajectory::orbit::models::kepler::COE; // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::Orbit ; -// using ostk::astro::trajectory::State ; -// using ostk::astro::trajectory::orbit::models::Kepler ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::Orbit ; +// using ostk::astrodynamics::trajectory::State ; +// using ostk::astrodynamics::trajectory::orbit::model::Kepler ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // // { @@ -130,23 +130,23 @@ using ostk::astro::trajectory::orbit::models::kepler::COE; // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, EqualToOperator) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, NotEqualToOperator) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, StreamOperator) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, IsDefined) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetClassicalOrbitalElements) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetEpoch) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetRevolutionNumberAtEpoch) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetGravitationalParameter) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetEquatorialRadius) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetJ2) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetJ4) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, GetPerturbationType) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, CalculateStateAt) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, CalculateRevolutionNumberAt) -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, StringFromPerturbationType) - -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_1) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, EqualToOperator) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, NotEqualToOperator) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, StreamOperator) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, IsDefined) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetClassicalOrbitalElements) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetEpoch) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetRevolutionNumberAtEpoch) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetGravitationalParameter) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetEquatorialRadius) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetJ2) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetJ4) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, GetPerturbationType) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, CalculateStateAt) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, CalculateRevolutionNumberAt) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, StringFromPerturbationType) + +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_1) { { // Environment setup @@ -182,7 +182,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_1) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Orbit.csv" )), Table::Format::CSV, true @@ -257,7 +257,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_1) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_2) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_2) { { // Environment setup @@ -293,7 +293,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_2) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite Orbit.csv" )), Table::Format::CSV, true @@ -375,7 +375,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_2) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_3) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_3) { { // Environment setup @@ -411,7 +411,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_3) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite Orbit.csv" )), Table::Format::CSV, true @@ -482,7 +482,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_3) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_4) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_4) { { // Environment setup @@ -518,7 +518,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_4) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite Orbit.csv" )), Table::Format::CSV, true @@ -589,7 +589,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_4) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_5) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_5) { { // Environment setup @@ -625,7 +625,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_5) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite Orbit.csv" )), Table::Format::CSV, true @@ -696,7 +696,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_5) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_6) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler, Test_6) { { // Environment setup @@ -732,7 +732,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler, Test_6) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite Orbit.csv" )), Table::Format::CSV, true diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.test.cpp similarity index 84% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.test.cpp index 478a7118e..6a8f26234 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMean.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMean.test.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include @@ -31,8 +31,8 @@ using ostk::physics::coordinate::Velocity; using ostk::physics::unit::Length; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMean; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMean; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; class BrouwerLyddaneMeanMock : public BrouwerLyddaneMean { @@ -52,7 +52,7 @@ class BrouwerLyddaneMeanMock : public BrouwerLyddaneMean MOCK_METHOD(COE, toCOE, (), (const, override)); }; -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean : public ::testing::Test { protected: const Length semiMajorAxis_ = Length::Kilometers(6973.743736075629); @@ -72,14 +72,14 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLydda }; }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean, Constructor) { { EXPECT_NO_THROW(BrouwerLyddaneMeanMock(semiMajorAxis_, eccentricity_, inclination_, raan_, aop_, meanAnomaly_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean, Getters) { { EXPECT_TRUE(brouwerLyddaneMean_.getMeanAnomaly() == meanAnomaly_); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.test.cpp similarity index 90% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.test.cpp index 028205a62..1a273299d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanLong.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanLong.test.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -31,10 +31,10 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanLong; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanLong; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, Constructor) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, Constructor) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -48,7 +48,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, ToBrouwerLyddaneMeanLong) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, ToBrouwerLyddaneMeanLong) { { const COE coe = COE::FromSIVector( @@ -74,7 +74,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean_Parametrized +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean_Parametrized : public ::testing::TestWithParam> { }; @@ -82,7 +82,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLydda // Values taken from GMAT INSTANTIATE_TEST_SUITE_P( Cartesian, - OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean_Parametrized, + OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean_Parametrized, ::testing::Values( std::make_tuple( Position::Meters({853730.214, -382070.813, 6892445.528}, Frame::GCRF()), @@ -123,7 +123,7 @@ INSTANTIATE_TEST_SUITE_P( ) ); -TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMean_Parametrized, Cartesian) +TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMean_Parametrized, Cartesian) { const auto& [position, velocity, expectedMeanElements] = GetParam(); const BrouwerLyddaneMeanLong brouwerMeanLongOE = BrouwerLyddaneMeanLong::Cartesian( @@ -138,7 +138,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLydd EXPECT_LT(std::abs(brouwerMeanLongOE.getMeanAnomaly().inRadians() - expectedMeanElements[5]), 1e-5); } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, Cartesian_EdgeCases) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, Cartesian_EdgeCases) { { const COE coe = { @@ -194,7 +194,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } // Values taken from GMAT -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, ToCOE) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, ToCOE) { { const BrouwerLyddaneMeanLong brouwerMeanLongOE = BrouwerLyddaneMeanLong({ @@ -260,7 +260,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, GetCartesianState) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, GetCartesianState) { { const Length semiMajorAxis = Length::Kilometers(6973.743586220524); @@ -323,7 +323,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanLong, Undefined) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanLong, Undefined) { { EXPECT_NO_THROW(BrouwerLyddaneMeanLong::Undefined()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.test.cpp similarity index 88% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.test.cpp index b86e73eac..78289cf9a 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/BrouwerLyddaneMeanShort.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/BrouwerLyddaneMeanShort.test.cpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include @@ -31,10 +31,10 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanShort; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanShort; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort, Constructor) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort, Constructor) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -48,7 +48,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort, ToBrouwerLyddaneMeanShort) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort, ToBrouwerLyddaneMeanShort) { { const COE coe = COE::FromSIVector( @@ -74,7 +74,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort_Parametrized +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort_Parametrized : public ::testing::TestWithParam> { }; @@ -82,7 +82,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLydda // Values taken from GMAT INSTANTIATE_TEST_SUITE_P( Cartesian, - OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort_Parametrized, + OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort_Parametrized, ::testing::Values(std::make_tuple( Position::Meters({6596065.624114551, 2282234.953292401, -18030.93992064121}, Frame::GCRF()), Velocity::MetersPerSecond({345.4716519563907, -967.0404288726759, 7488.686029827369}, Frame::GCRF()), @@ -97,7 +97,7 @@ INSTANTIATE_TEST_SUITE_P( )) ); -TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort_Parametrized, Cartesian) +TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort_Parametrized, Cartesian) { const auto& [position, velocity, expectedMeanElements] = GetParam(); const BrouwerLyddaneMeanShort brouwerMeanShortOE = BrouwerLyddaneMeanShort::Cartesian( @@ -113,7 +113,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLydd } // Values taken from GMAT -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort, ToCOE) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort, ToCOE) { { const BrouwerLyddaneMeanShort brouwerMeanShortOE = BrouwerLyddaneMeanShort({ @@ -179,7 +179,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort, GetCartesianState) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort, GetCartesianState) { { const Length semiMajorAxis = Length::Kilometers(6973.743736075629); @@ -244,7 +244,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddan } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_BrouwerLyddaneMeanShort, Undefined) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_BrouwerLyddaneMeanShort, Undefined) { { EXPECT_NO_THROW(BrouwerLyddaneMeanShort::Undefined()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.test.cpp similarity index 87% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.test.cpp index 7163f0d44..6d2933780 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/COE.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/COE.test.cpp @@ -11,9 +11,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include @@ -34,11 +34,11 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanLong; -using ostk::astro::trajectory::orbit::models::blm::BrouwerLyddaneMeanShort; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanLong; +using ostk::astrodynamics::trajectory::orbit::model::blm::BrouwerLyddaneMeanShort; -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Constructor) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, Constructor) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -52,7 +52,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Construc } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, EqualToOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, EqualToOperator) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -98,7 +98,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, EqualToO } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, NotEqualToOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, NotEqualToOperator) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -144,7 +144,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, NotEqual } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, StreamOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, StreamOperator) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -164,7 +164,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, StreamOp } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, IsDefined) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, IsDefined) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -184,7 +184,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, IsDefine } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetSemiMajorAxis) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetSemiMajorAxis) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -204,7 +204,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetSemiM } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetEccentricity) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetEccentricity) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -224,7 +224,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetEccen } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetInclination) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetInclination) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -244,7 +244,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetIncli } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetRaan) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetRaan) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -264,7 +264,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetRaan) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAop) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetAop) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -284,7 +284,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAop) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetTrueAnomaly) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetTrueAnomaly) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -304,7 +304,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetTrueA } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetPeriapsisRadius) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetPeriapsisRadius) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -324,7 +324,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetPeria } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetApoapsisRadius) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetApoapsisRadius) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -344,7 +344,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetApoap } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetSemiLatusRectum) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetSemiLatusRectum) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -366,7 +366,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetSemiL } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetRadialDistance) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetRadialDistance) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -390,7 +390,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetRadia } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngularMomentum) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetAngularMomentum) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -418,7 +418,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul } } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetMeanAnomaly) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetMeanAnomaly) // { // using ostk::core::type::Real ; @@ -433,7 +433,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -443,7 +443,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetEccentricAnomaly) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetEccentricAnomaly) // { // using ostk::core::type::Real ; @@ -458,7 +458,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -468,7 +468,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetMeanMotion) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetMeanMotion) // { // using ostk::core::type::Real ; @@ -483,7 +483,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -493,7 +493,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetOrbitalPeriod) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetOrbitalPeriod) // { // using ostk::core::type::Real ; @@ -508,7 +508,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -518,7 +518,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetAngul // } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetCartesianState) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetCartesianState) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -597,7 +597,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetCarte } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetVector) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, GetVector) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -622,14 +622,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, GetVecto } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Undefined) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, Undefined) { { EXPECT_NO_THROW(COE::Undefined()); } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Cartesian) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, Cartesian) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -726,7 +726,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Cartesia } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVector) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, FromSIVector) { { const Length semiMajorAxis = Length::Kilometers(7000.0); @@ -751,7 +751,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe } } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, EccentricAnomalyFromTrueAnomaly) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, EccentricAnomalyFromTrueAnomaly) // { // using ostk::core::type::Real ; @@ -766,7 +766,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -776,7 +776,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, TrueAnomalyFromEccentricAnomaly) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, TrueAnomalyFromEccentricAnomaly) // { // using ostk::core::type::Real ; @@ -791,7 +791,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -801,7 +801,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // } -// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, MeanAnomalyFromEccentricAnomaly) +// TEST (OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, MeanAnomalyFromEccentricAnomaly) // { // using ostk::core::type::Real ; @@ -816,7 +816,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // using ostk::physics::coordinate::Velocity ; // using ostk::physics::environment::object::celestial::Earth ; -// using ostk::astro::trajectory::orbit::models::kepler::COE ; +// using ostk::astrodynamics::trajectory::orbit::model::kepler::COE ; // { @@ -826,7 +826,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, FromSIVe // } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, EccentricAnomalyFromMeanAnomaly) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, EccentricAnomalyFromMeanAnomaly) { { const Angle meanAnomaly = Angle::Degrees(0.0); @@ -859,7 +859,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, Eccentri } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, TrueAnomalyFromMeanAnomaly) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, TrueAnomalyFromMeanAnomaly) { { const Angle meanAnomaly = Angle::Radians(5.08731632317414); @@ -872,7 +872,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, TrueAnom } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, StringFromElement) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, StringFromElement) { const Array> testCases = { {COE::Element::SemiMajorAxis, "SemiMajorAxis"}, @@ -894,7 +894,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, StringFr } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Kepler_COE, ConvertAnomaly) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Kepler_COE, ConvertAnomaly) { { EXPECT_DOUBLE_EQ( diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Satellite1.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Satellite1.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Satellite1.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Satellite1.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Satellite1.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Satellite1.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Satellite1.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Satellite1.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target1.t b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target1.t similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target1.t rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target1.t diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target1.t3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target1.t3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target1.t3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target1.t3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target2.t b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target2.t similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target2.t rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target2.t diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target2.t3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target2.t3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target2.t3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target2.t3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target3.t b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target3.t similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target3.t rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target3.t diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target3.t3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target3.t3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target3.t3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target3.t3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target4.t b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target4.t similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target4.t rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target4.t diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target4.t3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target4.t3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Constructor/Scenario/Target4.t3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Constructor/Scenario/Target4.t3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_1/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_1/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_2/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_2/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_3/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_3/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_4/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_4/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_5/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_5/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite Passes.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite Passes.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite Passes.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite Passes.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Kepler/Test_6/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Kepler/Test_6/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.test.cpp similarity index 93% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.test.cpp index 5ad81858f..16847fd9d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated.test.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include @@ -59,18 +59,18 @@ using ostk::physics::unit::Length; using ostk::physics::unit::Time; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::orbit::models::Propagated; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::orbit::model::Propagated; +using ostk::astrodynamics::trajectory::state::NumericalSolver; /* UNIT TESTS */ -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated : public ::testing::Test { protected: void SetUp() override @@ -108,7 +108,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated : public Propagator propagator_ = Propagator::Undefined(); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, Constructor) { // State array setup Array stateArray = Array::Empty(); @@ -160,7 +160,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Constr } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, EqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, EqualToOperator) { { // Setup Propagated model @@ -197,7 +197,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, EqualT } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, NotEqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, NotEqualToOperator) { { // Setup Propagated model @@ -234,7 +234,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, NotEqu } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, IsDefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, IsDefined) { { const Propagated propagatedModel = {propagator_, defaultState_}; @@ -243,7 +243,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, IsDefi } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, StreamOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, StreamOperator) { { const Propagated propagatedModel = {propagator_, defaultState_}; @@ -256,7 +256,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Stream } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Print) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, Print) { { const Propagated propagatedModel = {propagator_, defaultState_}; @@ -269,7 +269,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Print) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, getEpoch) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, getEpoch) { { const Propagated propagatedModel = {propagator_, defaultState_}; @@ -278,7 +278,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, getEpo } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, getRevolutionNumberAtEpoch) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, getRevolutionNumberAtEpoch) { { const Propagated propagatedModel = { @@ -291,7 +291,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, getRev } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, CalculateStateAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, CalculateStateAt) { // Setup Propagated model and orbit const Propagated propagatedModel = {propagator_, defaultState_}; @@ -315,11 +315,11 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Calcul } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, CalculateStatesAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, CalculateStatesAt) { // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/" "Propagated/CalculateStatesAt_StateValidation.csv")), Table::Format::CSV, true @@ -458,7 +458,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Calcul } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, CalculateRevolutionNumberAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, CalculateRevolutionNumberAt) { // Test undefined { @@ -559,7 +559,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Calcul } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, AccessCachedStateArray) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, AccessCachedStateArray) { // Test cachedStateArray sorting during construction and accessing (not during propagation) { @@ -617,7 +617,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, Access } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, SetCachedStateArray) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, SetCachedStateArray) { // Current state and instant setup const Instant startInstant = Instant::DateTime(DateTime(2021, 1, 2, 0, 0, 0), Scale::UTC); @@ -710,7 +710,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, SetCac } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagated, PropagationAtExactInstants) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagated, PropagationAtExactInstants) { { Array states = { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/CalculateStatesAt_StateValidation.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/CalculateStatesAt_StateValidation.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/CalculateStatesAt_StateValidation.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/CalculateStatesAt_StateValidation.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_EGM96_360x360_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_EGM96_360x360_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_EGM96_360x360_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_EGM96_360x360_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Moon_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Moon_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Moon_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Moon_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Sun_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Sun_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Sun_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Sun_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Sun_Moon_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Sun_Moon_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/GMAT_TwoBody_Sun_Moon_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/GMAT_TwoBody_Sun_Moon_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_0.0_0.0_1.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_0.0_0.0_1.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_0.0_0.0_1.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_0.0_0.0_1.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2021-05-13T12-34-13.345_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2021-05-13T12-34-13.345_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2021-05-13T12-34-13.345_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2021-05-13T12-34-13.345_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_LVLH_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_LVLH_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_LVLH_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_LVLH_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_TNW_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_TNW_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_TNW_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_TNW_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VVLH_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VVLH_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VVLH_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VVLH_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_10.0_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_10.0_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_10.0_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_10.0_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7500000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7500000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_7500000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_7500000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2021-12-23T11-23-21.235_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2021-12-23T11-23-21.235_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2021-12-23T11-23-21.235_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2021-12-23T11-23-21.235_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_4.2_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_4.2_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_4.2_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_4.2_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_25.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_25.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_25.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_25.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_7200.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_7200.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_7200.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_7200.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_1.0_150.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_1.0_150.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_1.0_150.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_1.0_150.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7300000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7300000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_ConstantThrustThruster_Drag_7300000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_ConstantThrustThruster_Drag_7300000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_Exponential_320km_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_Exponential_320km_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_Exponential_320km_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_Exponential_320km_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_Exponential_500km_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_Exponential_500km_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_Exponential_500km_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_Exponential_500km_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_NRLMSISE00_470km_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_NRLMSISE00_470km_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_NRLMSISE00_470km_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_NRLMSISE00_470km_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_NRLMSISE00_Large_Cross_Section_470km_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_NRLMSISE00_Large_Cross_Section_470km_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/Orekit_Drag_NRLMSISE00_Large_Cross_Section_470km_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/Orekit_Drag_NRLMSISE00_Large_Cross_Section_470km_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_EGM2008_100x100_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_EGM2008_100x100_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_EGM2008_100x100_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_EGM2008_100x100_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_EGM96_70x70_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_EGM96_70x70_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_EGM96_70x70_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_EGM96_70x70_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_TwoBody_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_TwoBody_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_TwoBody_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_TwoBody_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84EGM96_70x70_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84EGM96_70x70_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84EGM96_70x70_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84EGM96_70x70_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84_70x70_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84_70x70_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84_70x70_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84_70x70_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84old_12x12_2hr_run.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84old_12x12_2hr_run.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_WGS84old_12x12_2hr_run.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_WGS84old_12x12_2hr_run.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/SpaceWeather-All-v1.2.txt b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/SpaceWeather-All-v1.2.txt similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/SpaceWeather-All-v1.2.txt rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/SpaceWeather-All-v1.2.txt diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.test.cpp similarity index 95% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.test.cpp index c4a073f94..a6c6ac427 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4.test.cpp @@ -21,12 +21,12 @@ #include #include -#include -#include +#include +#include #include -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4, Test_1) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4, Test_1) { using ostk::core::container::Array; using ostk::core::container::Table; @@ -53,10 +53,10 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4, Test_1) using ostk::physics::unit::Derived; using ostk::physics::unit::Length; - using ostk::astro::trajectory::Orbit; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::orbit::models::SGP4; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::Orbit; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::orbit::model::SGP4; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { // Environment setup @@ -66,7 +66,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4, Test_1) // Orbital model setup const TLE tle = TLE::Load(File::Path( - Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.tle") + Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.tle") )); const SGP4 sgp4Model = {tle}; @@ -79,7 +79,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4, Test_1) const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite Orbit.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite Orbit.csv" )), Table::Format::CSV, true diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.test.cpp similarity index 93% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.test.cpp index 19a3e4fa6..b5a8e89d2 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE.test.cpp @@ -2,15 +2,15 @@ #include -#include +#include #include -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Constructor) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, Constructor) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -35,11 +35,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Constructo } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, EqualToOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, EqualToOperator) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -61,11 +61,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, EqualToOpe } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, NotEqualToOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, NotEqualToOperator) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -87,11 +87,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, NotEqualTo } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, StreamOperator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, StreamOperator) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String satelliteName = "ISS (ZARYA)"; @@ -108,11 +108,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, StreamOper } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, GetSatelliteNumber) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, GetSatelliteNumber) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -128,11 +128,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, GetSatelli } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getClassification) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getClassification) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -148,11 +148,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getClassif } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getInternationalDesignator) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getInternationalDesignator) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -168,7 +168,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getInterna } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEpoch) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getEpoch) { using ostk::core::type::String; @@ -176,7 +176,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEpoch) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -192,11 +192,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEpoch) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMotionFirstTimeDerivativeDividedByTwo) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getMeanMotionFirstTimeDerivativeDividedByTwo) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -212,11 +212,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMot } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMotionSecondTimeDerivativeDividedBySix) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getMeanMotionSecondTimeDerivativeDividedBySix) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -232,11 +232,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMot } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getBStarDragTerm) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getBStarDragTerm) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -252,11 +252,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getBStarDr } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEphemerisType) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getEphemerisType) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -272,11 +272,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEphemer } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getElementSetNumber) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getElementSetNumber) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -292,11 +292,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getElement } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getFirstLineChecksum) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getFirstLineChecksum) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -321,13 +321,13 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getFirstLi } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getInclination) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getInclination) { using ostk::core::type::String; using ostk::physics::unit::Angle; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -343,13 +343,13 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getInclina } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getRaan) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getRaan) { using ostk::core::type::String; using ostk::physics::unit::Angle; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -365,11 +365,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getRaan) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEccentricity) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getEccentricity) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -385,13 +385,13 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getEccentr } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getAop) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getAop) { using ostk::core::type::String; using ostk::physics::unit::Angle; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -407,13 +407,13 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getAop) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanAnomaly) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getMeanAnomaly) { using ostk::core::type::String; using ostk::physics::unit::Angle; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -429,7 +429,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanAno } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMotion) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getMeanMotion) { using ostk::core::type::String; @@ -437,7 +437,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMot using ostk::physics::unit::Derived; using ostk::physics::unit::Time; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -456,11 +456,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getMeanMot } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getRevolutionNumberAtEpoch) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getRevolutionNumberAtEpoch) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -476,11 +476,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getRevolut } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getSecondLineChecksum) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, getSecondLineChecksum) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -505,12 +505,12 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, getSecondL } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetSatelliteNumber) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, SetSatelliteNumber) { using ostk::core::type::Integer; using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 99993U 21990ZZZ 21182.62513889 .00000763 00000-0 42347-4 0 99995"; @@ -585,7 +585,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetSatelli } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetEpoch) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, SetEpoch) { using ostk::core::type::String; @@ -594,7 +594,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetEpoch) using ostk::physics::time::Instant; using ostk::physics::time::Scale; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; @@ -654,12 +654,12 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetEpoch) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetRevolutionNumberAtEpoch) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, SetRevolutionNumberAtEpoch) { using ostk::core::type::Integer; using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 99993U 21990ZZZ 21182.62513889 .00000763 00000-0 42347-4 0 99995"; @@ -751,9 +751,9 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, SetRevolut } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Undefined) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, Undefined) { - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { EXPECT_NO_THROW(TLE::Undefined()); @@ -761,14 +761,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Undefined) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, CanParse) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, CanParse) { using ostk::core::filesystem::File; using ostk::core::filesystem::Path; using ostk::core::type::Integer; using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { EXPECT_TRUE( @@ -860,7 +860,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, CanParse) { const File activeTlesFile = File::Path( - Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/active.txt") + Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/active.txt") ); const String allTles = activeTlesFile.getContents(); @@ -903,7 +903,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, CanParse) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Parse) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, Parse) { using ostk::core::filesystem::File; using ostk::core::filesystem::Path; @@ -914,7 +914,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Parse) using ostk::physics::unit::Derived; using ostk::physics::unit::Time; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const TLE tle = TLE::Parse( @@ -1020,7 +1020,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Parse) { const File activeTlesFile = File::Path( - Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/active.txt") + Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/active.txt") ); const String allTles = activeTlesFile.getContents(); @@ -1069,7 +1069,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Parse) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Load) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, Load) { using ostk::core::filesystem::File; using ostk::core::filesystem::Path; @@ -1079,11 +1079,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Load) using ostk::physics::unit::Derived; using ostk::physics::unit::Time; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const TLE tle = TLE::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/A.tle")) + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/A.tle")) ); EXPECT_TRUE(tle.isDefined()); @@ -1111,7 +1111,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Load) { const TLE tle = TLE::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/B.tle")) + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/B.tle")) ); EXPECT_TRUE(tle.isDefined()); @@ -1140,7 +1140,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Load) { const TLE tle = TLE::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/C.tle")) + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/C.tle")) ); EXPECT_TRUE(tle.isDefined()); @@ -1173,7 +1173,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Load) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Construct) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, Construct) { using ostk::core::type::Integer; using ostk::core::type::Real; @@ -1186,7 +1186,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Construct) using ostk::physics::unit::Derived; using ostk::physics::unit::Time; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String satelliteName = "Satellite"; @@ -2196,11 +2196,11 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, Construct) } } -TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_SGP4_TLE, GenerateChecksum) +TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_SGP4_TLE, GenerateChecksum) { using ostk::core::type::String; - using ostk::astro::trajectory::orbit::models::sgp4::TLE; + using ostk::astrodynamics::trajectory::orbit::model::sgp4::TLE; { const String firstLine = "1 25544U 98067A 08264.51782528 -.00002182 00000-0 -11606-4 0 2927"; diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/A.tle b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/A.tle similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/A.tle rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/A.tle diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/B.tle b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/B.tle similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/B.tle rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/B.tle diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/C.tle b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/C.tle similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/C.tle rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/C.tle diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/active.txt b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/active.txt similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/TLE/active.txt rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/TLE/active.txt diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite Orbit.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite Orbit.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite Orbit.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite Orbit.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.sa b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.sa similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.sa rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.sa diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.sa3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.sa3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.sa3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.sa3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.tle b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.tle similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Satellite.tle rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Satellite.tle diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario STK ScenarioWB.wsp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario STK ScenarioWB.wsp similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario STK ScenarioWB.wsp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario STK ScenarioWB.wsp diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario STK ScenarioWB.wsptb b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario STK ScenarioWB.wsptb similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario STK ScenarioWB.wsptb rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario STK ScenarioWB.wsptb diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario.sc b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario.sc similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario.sc rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario.sc diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario.sc3 b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario.sc3 similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/Scenario.sc3 rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/Scenario.sc3 diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/ScenarioTimelinePrefs.xml b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/ScenarioTimelinePrefs.xml similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/SGP4/Test_1/ScenarioTimelinePrefs.xml rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/SGP4/Test_1/ScenarioTimelinePrefs.xml diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.test.cpp similarity index 87% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.test.cpp index 869904985..43d8b95c3 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated.test.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include @@ -33,12 +33,12 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::orbit::Model; -using ostk::astro::trajectory::orbit::models::Tabulated; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::orbit::Model; +using ostk::astrodynamics::trajectory::orbit::model::Tabulated; -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated : public ::testing::Test { protected: void SetUp() override @@ -60,7 +60,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated : public const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated/propagated_states.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated/propagated_states.csv" )), Table::Format::CSV, true @@ -99,7 +99,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated : public Array referenceStates_ = Array::Empty(); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, Constructor) { const Tabulated tabulated(states_, 0, Tabulated::InterpolationType::Linear); @@ -108,7 +108,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, Constru const Orbit orbit = {tabulated, environment.accessCelestialObjectWithName("Earth")}; } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, GetInterval) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, GetInterval) { using ostk::physics::time::Interval; @@ -121,7 +121,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, GetInte ); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, EqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, EqualToOperator) { const Tabulated tabulated(states_, 0, Tabulated::InterpolationType::Linear); const Tabulated anotherTabulated(states_, 0, Tabulated::InterpolationType::Linear); @@ -129,7 +129,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, EqualTo EXPECT_TRUE(tabulated == anotherTabulated); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, NotEqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, NotEqualToOperator) { const Tabulated tabulated(states_, 0, Tabulated::InterpolationType::CubicSpline); const Tabulated anotherTabulated(states_, 0, Tabulated::InterpolationType::Linear); @@ -137,7 +137,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, NotEqua EXPECT_TRUE(tabulated != anotherTabulated); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, CalculateStateAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, CalculateStateAt) { loadData(); @@ -172,7 +172,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, Calcula } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Tabulated, CalculateStatesAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Tabulated, CalculateStatesAt) { loadData(); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated/propagated_states.csv b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated/propagated_states.csv similarity index 100% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Tabulated/propagated_states.csv rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Tabulated/propagated_states.csv diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.test.cpp index f6ef8a4e3..204f24a20 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Pass.test.cpp @@ -16,7 +16,7 @@ using ostk::physics::time::Instant; using ostk::physics::time::Interval; using ostk::physics::time::Duration; -using ostk::astro::trajectory::orbit::Pass; +using ostk::astrodynamics::trajectory::orbit::Pass; class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Pass : public ::testing::Test { diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utilities.test.hpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utility.test.hpp similarity index 94% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utilities.test.hpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utility.test.hpp index bdbea751b..f0c27b4cb 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utilities.test.hpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Utility.test.hpp @@ -20,8 +20,8 @@ #include #include -#include -#include +#include +#include #include @@ -49,10 +49,10 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::orbit::models::Kepler; -using ostk::astro::trajectory::orbit::models::kepler::COE; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::orbit::model::Kepler; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; void testOrbit( const String& aScenarioIdentifier, diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.test.cpp index f5b4b7f03..ffce4f53c 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Propagator.test.cpp @@ -41,9 +41,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include @@ -89,25 +89,25 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; /* UNIT TESTS */ -class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator : public ::testing::Test { protected: void SetUp() override @@ -174,14 +174,14 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator : public Propagator defaultPropagator_ = Propagator::Undefined(); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, Constructor) { { EXPECT_NO_THROW(Propagator(defaultNumericalSolver_, defaultDynamics_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, EqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, EqualToOperator) { { const Propagator propagator_x = {defaultPropagator_}; @@ -199,7 +199,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, EqualT } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, NotEqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, NotEqualToOperator) { { const Propagator propagatorX = {defaultPropagator_}; @@ -217,7 +217,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, NotEqu } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, IsDefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, IsDefined) { { EXPECT_TRUE(defaultPropagator_.isDefined()); @@ -229,7 +229,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, IsDefi } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Undefined) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, Undefined) { { EXPECT_NO_THROW(Propagator::Undefined()); @@ -238,7 +238,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Undefi } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, StreamOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, StreamOperator) { { testing::internal::CaptureStdout(); @@ -249,7 +249,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Stream } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Print) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, Print) { { testing::internal::CaptureStdout(); @@ -260,18 +260,18 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Print) } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, AccessCoordinatesBroker) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, AccessCoordinateBroker) { { - EXPECT_TRUE(defaultPropagator_.accessCoordinatesBroker() != nullptr); + EXPECT_TRUE(defaultPropagator_.accessCoordinateBroker() != nullptr); } { - EXPECT_ANY_THROW(Propagator::Undefined().accessCoordinatesBroker()); + EXPECT_ANY_THROW(Propagator::Undefined().accessCoordinateBroker()); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, AccessNumericalSolver) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, AccessNumericalSolver) { { EXPECT_NO_THROW(defaultPropagator_.accessNumericalSolver()); @@ -282,7 +282,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Access } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, Getters) { { EXPECT_TRUE(defaultPropagator_.getNumberOfCoordinates() == 6); @@ -293,7 +293,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Getter } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, SetDynamics) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, SetDynamics) { { EXPECT_TRUE(defaultPropagator_.getNumberOfCoordinates() == 6); @@ -313,7 +313,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, SetDyn } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, AddDynamics) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, AddDynamics) { { EXPECT_TRUE(defaultPropagator_.getNumberOfCoordinates() == 6); @@ -333,7 +333,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, AddDyn } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, ClearDynamics) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, ClearDynamics) { { EXPECT_TRUE(defaultPropagator_.getNumberOfCoordinates() == 6); @@ -345,7 +345,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, ClearD } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, CalculateStateAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, CalculateStateAt) { // Current state and instant setup const State state = { @@ -380,7 +380,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul EXPECT_EQ(outputStateGCRF.getInstant(), outputStateGCRF2.getInstant()); EXPECT_EQ(outputStateGCRF.getFrame(), outputStateGCRF2.getFrame()); - EXPECT_EQ(outputStateGCRF.accessCoordinatesBroker(), outputStateGCRF2.accessCoordinatesBroker()); + EXPECT_EQ(outputStateGCRF.accessCoordinateBroker(), outputStateGCRF2.accessCoordinateBroker()); // Get the coordinates from the two states const VectorXd coordinates1 = outputStateGCRF.getCoordinates(); @@ -402,18 +402,18 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul VectorXd coords(8); coords << 7000000.0, 0.0, 0.0, 0.0, 5335.865450622126, 5335.865450622126, 1, 2; - const Array> coordinatesSubsets = { + const Array> coordinateSubsets = { CartesianPosition::Default(), CartesianVelocity::Default(), - std::make_shared(CoordinatesSubset("extra1", 1)), - std::make_shared(CoordinatesSubset("extra2", 1)), + std::make_shared(CoordinateSubset("extra1", 1)), + std::make_shared(CoordinateSubset("extra2", 1)), }; const State bigState = { Instant::DateTime(DateTime(2018, 1, 2, 0, 0, 0), Scale::UTC), coords, gcrfSPtr_, - coordinatesSubsets, + coordinateSubsets, }; // Confirm the propagator only needs 6 dimensions @@ -423,12 +423,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul const State outputState = defaultPropagator_.calculateStateAt(bigState, instantArray[0]); EXPECT_NE(bigState, outputState); - EXPECT_EQ(bigState.getCoordinatesSubsets(), outputState.getCoordinatesSubsets()); + EXPECT_EQ(bigState.getCoordinateSubsets(), outputState.getCoordinateSubsets()); EXPECT_EQ(outputState.getCoordinates().size(), 8); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, CalculateStateAt_Condition) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, CalculateStateAt_Condition) { { // Current state and instant setup @@ -499,7 +499,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul const State outputStateGCRF2 = outputStateITRF.inFrame(Frame::GCRF()); EXPECT_EQ(outputStateGCRF.getFrame(), outputStateGCRF2.getFrame()); - EXPECT_EQ(outputStateGCRF.accessCoordinatesBroker(), outputStateGCRF2.accessCoordinatesBroker()); + EXPECT_EQ(outputStateGCRF.accessCoordinateBroker(), outputStateGCRF2.accessCoordinateBroker()); // Get the coordinates from the two states const VectorXd coordinates1 = outputStateGCRF.getCoordinates(); @@ -521,18 +521,18 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul VectorXd coords(8); coords << 7000000.0, 0.0, 0.0, 0.0, 5335.865450622126, 5335.865450622126, 1, 2; - const Array> coordinatesSubsets = { + const Array> coordinateSubsets = { CartesianPosition::Default(), CartesianVelocity::Default(), - std::make_shared(CoordinatesSubset("extra1", 1)), - std::make_shared(CoordinatesSubset("extra2", 1)), + std::make_shared(CoordinateSubset("extra1", 1)), + std::make_shared(CoordinateSubset("extra2", 1)), }; const State bigState = { Instant::DateTime(DateTime(2018, 1, 2, 0, 0, 0), Scale::UTC), coords, gcrfSPtr_, - coordinatesSubsets, + coordinateSubsets, }; // Setup instants @@ -555,12 +555,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul const State outputState = conditionSolution.state; EXPECT_NE(bigState, outputState); - EXPECT_EQ(bigState.getCoordinatesSubsets(), outputState.getCoordinatesSubsets()); + EXPECT_EQ(bigState.getCoordinateSubsets(), outputState.getCoordinateSubsets()); EXPECT_EQ(outputState.getCoordinates().size(), 8); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, CalculateStatesAt) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, CalculateStatesAt) { // Test exception for unsorted instant array { @@ -584,7 +584,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul /// Test full state results against reference trajectory // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/" "Propagated/CalculateStatesAt_StateValidation.csv")), Table::Format::CSV, true @@ -741,7 +741,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul EXPECT_EQ(outputStatesGCRF[i].getInstant(), outputStateGCRF2.getInstant()); EXPECT_EQ(outputStatesGCRF[i].getFrame(), outputStateGCRF2.getFrame()); - EXPECT_EQ(outputStatesGCRF[i].accessCoordinatesBroker(), outputStateGCRF2.accessCoordinatesBroker()); + EXPECT_EQ(outputStatesGCRF[i].accessCoordinateBroker(), outputStateGCRF2.accessCoordinateBroker()); // Get the coordinates from the two states const VectorXd coordinates1 = outputStatesGCRF[i].getCoordinates(); @@ -764,18 +764,18 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul VectorXd coords(8); coords << 7000000.0, 0.0, 0.0, 0.0, 5335.865450622126, 5335.865450622126, 1, 2; - const Array> coordinatesSubsets = { + const Array> coordinateSubsets = { CartesianPosition::Default(), CartesianVelocity::Default(), - std::make_shared(CoordinatesSubset("extra1", 1)), - std::make_shared(CoordinatesSubset("extra2", 1)), + std::make_shared(CoordinateSubset("extra1", 1)), + std::make_shared(CoordinateSubset("extra2", 1)), }; const State bigState = { Instant::DateTime(DateTime(2018, 1, 2, 0, 0, 0), Scale::UTC), coords, gcrfSPtr_, - coordinatesSubsets, + coordinateSubsets, }; // Confirm the propagator only needs 6 dimensions @@ -787,13 +787,13 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Calcul for (size_t i = 0; i < outputStates.getSize(); i++) { EXPECT_NE(bigState, outputStates[i]); - EXPECT_EQ(bigState.getCoordinatesSubsets(), outputStates[i].getCoordinatesSubsets()); + EXPECT_EQ(bigState.getCoordinateSubsets(), outputStates[i].getCoordinateSubsets()); EXPECT_EQ(outputStates[i].getCoordinates().size(), 8); } } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Default) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, Default) { { EXPECT_NO_THROW(Propagator::Default()); @@ -807,7 +807,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, Defaul } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Models_Propagator, FromEnvironment) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Orbit_Model_Propagator, FromEnvironment) { { Environment environment = Environment::Default(); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.test.cpp index 34a276080..aece8264e 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Segment.test.cpp @@ -15,8 +15,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -43,26 +43,26 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::dynamics::Thruster; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::eventcondition::COECondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::eventcondition::COECondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth; using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; @@ -73,11 +73,11 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Segment : public ::testing::Test { VectorXd initialCoordinates(7); initialCoordinates << 7000000.0, 0.0, 0.0, 0.0, 7546.05329, 0.0, 200.0; - initialStateWithMass_ = {Instant::J2000(), initialCoordinates, Frame::GCRF(), thrustCoordinatesBrokerSPtr_}; + initialStateWithMass_ = {Instant::J2000(), initialCoordinates, Frame::GCRF(), thrustCoordinateBrokerSPtr_}; VectorXd finalCoordinates(7); finalCoordinates << 7000000.0, 0.0, 0.0, 0.0, 7546.05329, 0.0, 180.0; - finalStateWithMass_ = {Instant::J2000(), finalCoordinates, Frame::GCRF(), thrustCoordinatesBrokerSPtr_}; + finalStateWithMass_ = {Instant::J2000(), finalCoordinates, Frame::GCRF(), thrustCoordinateBrokerSPtr_}; } protected: @@ -115,11 +115,11 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_Segment : public ::testing::Test const Segment defaultCoastSegment_ = Segment::Coast(defaultName_, defaultInstantCondition_, defaultDynamics_, defaultNumericalSolver_); - const Shared thrustCoordinatesBrokerSPtr_ = - std::make_shared(CoordinatesBroker({ + const Shared thrustCoordinateBrokerSPtr_ = + std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), })); State initialStateWithMass_ = State::Undefined(); @@ -308,10 +308,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetDyn for (const Shared& dynamics : defaultDynamics_) { const MatrixXd contributionDefault = segmentSolution.getDynamicsContribution(dynamics, stateFrame); - const Array> dynamicsWriteCoordinatesSubsets = - dynamics->getWriteCoordinatesSubsets(); + const Array> dynamicsWriteCoordinateSubsets = + dynamics->getWriteCoordinateSubsets(); const MatrixXd contributionExplicit = - segmentSolution.getDynamicsContribution(dynamics, stateFrame, dynamicsWriteCoordinatesSubsets); + segmentSolution.getDynamicsContribution(dynamics, stateFrame, dynamicsWriteCoordinateSubsets); EXPECT_EQ(contributionDefault, contributionExplicit); } } @@ -324,12 +324,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetDyn for (const Shared& dynamics : defaultDynamics_) { - const Array> dynamicsWriteCoordinatesSubsets = - dynamics->getWriteCoordinatesSubsets(); - const Shared dynamicsWriteCoordinatesSubset = dynamicsWriteCoordinatesSubsets[0]; + const Array> dynamicsWriteCoordinateSubsets = + dynamics->getWriteCoordinateSubsets(); + const Shared dynamicsWriteCoordinateSubset = dynamicsWriteCoordinateSubsets[0]; const MatrixXd contribution = - segmentSolution.getDynamicsContribution(dynamics, stateFrame, {dynamicsWriteCoordinatesSubset}); - EXPECT_EQ(contribution.cols(), dynamicsWriteCoordinatesSubset->getSize()); + segmentSolution.getDynamicsContribution(dynamics, stateFrame, {dynamicsWriteCoordinateSubset}); + EXPECT_EQ(contribution.cols(), dynamicsWriteCoordinateSubset->getSize()); EXPECT_EQ(contribution.rows(), segmentSolution.states.getSize()); } } @@ -342,12 +342,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetDyn // Construct a coordinatesSubset not part of the dynamics for which the contribution is requested const Shared dynamics = defaultDynamics_[0]; - const Shared coordinatesSubset = CoordinatesSubset::DragCoefficient(); + const Shared coordinatesSubset = CoordinateSubset::DragCoefficient(); - EXPECT_FALSE(dynamics->getWriteCoordinatesSubsets().contains(coordinatesSubset)); + EXPECT_FALSE(dynamics->getWriteCoordinateSubsets().contains(coordinatesSubset)); const String expectedString = - "Provided coordinates subset is not part of the dynamics write coordinates subsets."; + "Provided coordinate subset is not part of the dynamics write coordinate subsets."; // Test the throw and the message that is thrown EXPECT_THROW( @@ -413,7 +413,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetDyn // Check error for PositionDerivative const String expectedString = - "Provided coordinates subset is not part of the dynamics write coordinates subsets."; + "Provided coordinate subset is not part of the dynamics write coordinate subsets."; // Test the throw and the message that is thrown EXPECT_THROW( @@ -457,8 +457,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetAll segmentSolution.states.getSize(), contributions.at(dynamics).rows() ); // Check the number of rows corresponds to the number of states EXPECT_GT( - contributions.at(dynamics).cols(), dynamics->getWriteCoordinatesSubsets().getSize() - ); // Check the number of columns corresponds to the number of coordinates subsets to which the dynamics + contributions.at(dynamics).cols(), dynamics->getWriteCoordinateSubsets().getSize() + ); // Check the number of columns corresponds to the number of coordinate subsets to which the dynamics // writes } } @@ -479,8 +479,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Segment, SegmentSolution_GetAll segmentSolution.states.getSize(), contributions.at(dynamics).rows() ); // Check the number of rows corresponds to the number of states EXPECT_GT( - contributions.at(dynamics).cols(), dynamics->getWriteCoordinatesSubsets().getSize() - ); // Check the number of columns corresponds to the number of coordinates subsets to which the dynamics + contributions.at(dynamics).cols(), dynamics->getWriteCoordinateSubsets().getSize() + ); // Check the number of columns corresponds to the number of coordinate subsets to which the dynamics // writes } } diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.test.cpp index 443da9e10..ca7d97ef8 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Sequence.test.cpp @@ -18,8 +18,8 @@ #include #include #include -#include -#include +#include +#include #include #include @@ -54,29 +54,29 @@ using EarthGravitationalModel = ostk::physics::environment::gravitational::Earth using EarthMagneticModel = ostk::physics::environment::magnetic::Earth; using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::Thruster; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::EventCondition; -using ostk::astro::eventcondition::COECondition; -using ostk::astro::eventcondition::AngularCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::eventcondition::InstantCondition; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::EventCondition; +using ostk::astrodynamics::eventcondition::COECondition; +using ostk::astrodynamics::eventcondition::AngularCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::eventcondition::InstantCondition; class OpenSpaceToolkit_Astrodynamics_Trajectory_Sequence : public ::testing::Test { @@ -595,13 +595,13 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_Sequence, Solve_2) std::make_shared(satelliteSystem, std::make_shared(ConstantThrust::Intrack())) ); - const Shared coordinatesBrokerSPtr = - std::make_shared(CoordinatesBroker({ + const Shared coordinatesBrokerSPtr = + std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient(), + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient(), })); VectorXd coordinates(9); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State.test.cpp index e7a1fd115..4cb1f794f 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State.test.cpp @@ -3,10 +3,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include @@ -26,13 +26,13 @@ using ostk::physics::time::Scale; using ostk::physics::unit::Angle; using ostk::physics::unit::Length; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::AngularVelocity; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AngularVelocity; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::State; TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Constructor) { @@ -40,8 +40,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Constructor) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); EXPECT_NO_THROW(State state(instant, coordinates, Frame::GCRF(), brokerSPtr)); @@ -52,7 +52,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Constructor) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Array> subsets = { + const Array> subsets = { CartesianPosition::Default(), CartesianVelocity::Default() }; EXPECT_NO_THROW(State state(instant, coordinates, Frame::GCRF(), subsets)); @@ -67,8 +67,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Constructor) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(3); coordinates << 1.0, 2.0, 3.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); EXPECT_THROW(State state(instant, coordinates, Frame::GCRF(), brokerSPtr), ostk::core::error::runtime::Wrong); @@ -198,8 +198,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Constructor) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); State state(instant, coordinates, Frame::GCRF(), brokerSPtr); @@ -218,8 +218,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, CopyAssignmentOperator) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -247,8 +247,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -262,16 +262,16 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; VectorXd anotherCoordinates(7); anotherCoordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 100.0; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()}) ); const State anotherState = {instant, anotherCoordinates, Frame::GCRF(), brokerSPtr2}; @@ -284,14 +284,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -302,8 +302,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) { VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const Instant anInstant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); @@ -319,8 +319,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) { const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); VectorXd aCoordinates(6); @@ -340,8 +340,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -356,14 +356,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -376,14 +376,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, EqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -492,8 +492,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -508,16 +508,16 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; VectorXd anotherCoordinates(7); anotherCoordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 100.0; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()}) ); const State anotherState = {instant, anotherCoordinates, Frame::GCRF(), brokerSPtr2}; @@ -530,14 +530,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -548,10 +548,10 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) { VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); broker.addSubset(CartesianPosition::Default()); broker.addSubset(CartesianVelocity::Default()); - const Shared brokerSPtr = std::make_shared(broker); + const Shared brokerSPtr = std::make_shared(broker); const Instant anInstant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); @@ -566,10 +566,10 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) { const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); broker.addSubset(CartesianPosition::Default()); broker.addSubset(CartesianVelocity::Default()); - const Shared brokerSPtr = std::make_shared(broker); + const Shared brokerSPtr = std::make_shared(broker); VectorXd aCoordinates(6); aCoordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; @@ -588,8 +588,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -604,14 +604,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -624,14 +624,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, NotEqualToOperator) VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr1 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr1 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr1}; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) ); const State anotherState = {instant, coordinates, Frame::GCRF(), brokerSPtr2}; @@ -820,14 +820,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, AdditionOperator) VectorXd aCoordinates(3); aCoordinates << 0.0, 0.0, 0.0; - const Shared brokerSPtr1 = - std::make_shared(CoordinatesBroker({CartesianPosition::Default()})); + const Shared brokerSPtr1 = + std::make_shared(CoordinateBroker({CartesianPosition::Default()})); const State aState = State(instant, aCoordinates, Frame::GCRF(), brokerSPtr1); VectorXd anotherCoordinates(6); anotherCoordinates << 0.0, 0.0, 0.0, 0.0, 0.0, 0.0; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = State(instant, anotherCoordinates, Frame::GCRF(), brokerSPtr2); @@ -921,14 +921,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, SubtractionOperator) VectorXd aCoordinates(3); aCoordinates << 0.0, 0.0, 0.0; - const Shared brokerSPtr1 = - std::make_shared(CoordinatesBroker({CartesianPosition::Default()})); + const Shared brokerSPtr1 = + std::make_shared(CoordinateBroker({CartesianPosition::Default()})); const State aState = State(instant, aCoordinates, Frame::GCRF(), brokerSPtr1); VectorXd anotherCoordinates(6); anotherCoordinates << 0.0, 0.0, 0.0, 0.0, 0.0, 0.0; - const Shared brokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State anotherState = State(instant, anotherCoordinates, Frame::GCRF(), brokerSPtr2); @@ -967,8 +967,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Accessors) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State state = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -976,14 +976,14 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Accessors) EXPECT_EQ(instant, state.accessInstant()); EXPECT_EQ(coordinates, state.accessCoordinates()); EXPECT_EQ(Frame::GCRF(), state.accessFrame()); - EXPECT_EQ(brokerSPtr, state.accessCoordinatesBroker()); + EXPECT_EQ(brokerSPtr, state.accessCoordinateBroker()); } { EXPECT_ANY_THROW(State::Undefined().accessInstant()); EXPECT_ANY_THROW(State::Undefined().accessCoordinates()); EXPECT_ANY_THROW(State::Undefined().accessFrame()); - EXPECT_ANY_THROW(State::Undefined().accessCoordinatesBroker()); + EXPECT_ANY_THROW(State::Undefined().accessCoordinateBroker()); } } @@ -998,7 +998,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Getters) VectorXd coordinates(13); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, -0.003, -0.904, 0.301, 0.304, -1.0, -2.0, -3.0; - const Shared brokerSPtr = std::make_shared(CoordinatesBroker( + const Shared brokerSPtr = std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), AttitudeQuaternion::Default(), @@ -1014,7 +1014,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Getters) EXPECT_EQ(attitude, state.getAttitude()); EXPECT_EQ(angularVelocity, state.getAngularVelocity()); EXPECT_EQ(coordinates, state.getCoordinates()); - EXPECT_EQ(state.getCoordinatesSubsets(), brokerSPtr->getSubsets()); + EXPECT_EQ(state.getCoordinateSubsets(), brokerSPtr->getSubsets()); EXPECT_TRUE(state.hasSubset(CartesianPosition::Default())); EXPECT_TRUE(state.hasSubset(CartesianVelocity::Default())); EXPECT_TRUE(state.hasSubset(AttitudeQuaternion::Default())); @@ -1094,7 +1094,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, Getters) EXPECT_ANY_THROW(State::Undefined().getAttitude()); EXPECT_ANY_THROW(State::Undefined().getAngularVelocity()); EXPECT_ANY_THROW(State::Undefined().getCoordinates()); - EXPECT_ANY_THROW(State::Undefined().getCoordinatesSubsets()); + EXPECT_ANY_THROW(State::Undefined().getCoordinateSubsets()); EXPECT_ANY_THROW(State::Undefined().hasSubset(CartesianPosition::Default())); EXPECT_ANY_THROW(State::Undefined().getFrame()); } @@ -1105,8 +1105,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, IsDefined) { const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State state = State(instant, coordinates, Frame::GCRF(), brokerSPtr); @@ -1118,8 +1118,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, IsDefined) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State state = State(instant, coordinates, nullptr, brokerSPtr); @@ -1131,8 +1131,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, IsDefined) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State state = State(instant, coordinates, Frame::Undefined(), brokerSPtr); @@ -1170,7 +1170,7 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, ExtractCoordinate) { const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(0); - const Shared brokerSPtr = std::make_shared(CoordinatesBroker()); + const Shared brokerSPtr = std::make_shared(CoordinateBroker()); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; EXPECT_ANY_THROW(aState.extractCoordinate(CartesianPosition::Default())); @@ -1180,8 +1180,8 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, ExtractCoordinate) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; @@ -1196,18 +1196,18 @@ TEST(OpenSpaceToolkit_Astrodynamics_Trajectory_State, ExtractCoordinates) const Instant instant = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC); VectorXd coordinates(6); coordinates << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0; - const Shared brokerSPtr = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared brokerSPtr = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const State aState = {instant, coordinates, Frame::GCRF(), brokerSPtr}; - const Array> positionSubset = {CartesianPosition::Default()}; + const Array> positionSubset = {CartesianPosition::Default()}; EXPECT_EQ(coordinates.segment(0, 3), aState.extractCoordinates(positionSubset)); - const Array> velocitySubset = {CartesianVelocity::Default()}; + const Array> velocitySubset = {CartesianVelocity::Default()}; EXPECT_EQ(coordinates.segment(3, 3), aState.extractCoordinates(velocitySubset)); - const Array> positionAndVelocitySubset = { + const Array> positionAndVelocitySubset = { CartesianPosition::Default(), CartesianVelocity::Default(), }; diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.test.cpp similarity index 71% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.test.cpp index 213fcd0b4..2345dbd89 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesBroker.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateBroker.test.cpp @@ -2,8 +2,8 @@ #include -#include -#include +#include +#include #include @@ -17,14 +17,14 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -class CoordinatesSubsetMock : public CoordinatesSubset +class CoordinateSubsetMock : public CoordinateSubset { public: - CoordinatesSubsetMock(const String& aName, const Size& aSize) - : CoordinatesSubset(aName, aSize) {}; + CoordinateSubsetMock(const String& aName, const Size& aSize) + : CoordinateSubset(aName, aSize) {}; MOCK_METHOD( VectorXd, @@ -33,7 +33,7 @@ class CoordinatesSubsetMock : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr), + const Shared& aCoordinateBrokerSPtr), (const, override) ); @@ -44,7 +44,7 @@ class CoordinatesSubsetMock : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const VectorXd& anotherFullCoordinatesVector, const Shared& aFrameSPtr, - const Shared& aCoordinatesBrokerSPtr), + const Shared& aCoordinateBrokerSPtr), (const, override) ); @@ -55,48 +55,48 @@ class CoordinatesSubsetMock : public CoordinatesSubset const VectorXd& aFullCoordinatesVector, const Shared& fromFrame, const Shared& toFrame, - const Shared& aCoordinatesBrokerSPtr), + const Shared& aCoordinateBrokerSPtr), (const, override) ); }; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker : public ::testing::Test { protected: - const Shared subset_1 = std::make_shared("S1", 1); - const Shared subset_2 = std::make_shared("S2", 2); - const Shared subset_3 = std::make_shared("S3", 3); - const Shared subset_4 = std::make_shared("S4", 1); - const Shared subsetDuplicate = std::make_shared("S1", 1); + const Shared subset_1 = std::make_shared("S1", 1); + const Shared subset_2 = std::make_shared("S2", 2); + const Shared subset_3 = std::make_shared("S3", 3); + const Shared subset_4 = std::make_shared("S4", 1); + const Shared subsetDuplicate = std::make_shared("S1", 1); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, Constructor) { { - EXPECT_NO_THROW(CoordinatesBroker()); + EXPECT_NO_THROW(CoordinateBroker()); } { - EXPECT_NO_THROW(CoordinatesBroker({subset_1, subset_2, subsetDuplicate})); + EXPECT_NO_THROW(CoordinateBroker({subset_1, subset_2, subsetDuplicate})); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, EqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, EqualToOperator) { { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); EXPECT_TRUE(broker_1 == broker_2); } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); broker_2.addSubset(subset_2); @@ -104,11 +104,11 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, EqualT } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_2); broker_2.addSubset(subset_1); @@ -116,19 +116,19 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, EqualT } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); EXPECT_FALSE(broker_1 == broker_2); } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); broker_2.addSubset(subset_2); @@ -136,33 +136,33 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, EqualT } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); EXPECT_FALSE(broker_1 == broker_2); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, NotEqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, NotEqualToOperator) { { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); EXPECT_FALSE(broker_1 != broker_2); } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); broker_2.addSubset(subset_2); @@ -170,11 +170,11 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, NotEqu } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_2); broker_2.addSubset(subset_1); @@ -182,19 +182,19 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, NotEqu } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); EXPECT_TRUE(broker_1 != broker_2); } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); broker_2.addSubset(subset_2); @@ -202,27 +202,27 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, NotEqu } { - CoordinatesBroker broker_1 = CoordinatesBroker(); + CoordinateBroker broker_1 = CoordinateBroker(); broker_1.addSubset(subset_1); broker_1.addSubset(subset_2); - CoordinatesBroker broker_2 = CoordinatesBroker(); + CoordinateBroker broker_2 = CoordinateBroker(); broker_2.addSubset(subset_1); EXPECT_TRUE(broker_1 != broker_2); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Accessors) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, Accessors) { { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); EXPECT_EQ(0, broker.accessSubsets().size()); } { - CoordinatesBroker broker = CoordinatesBroker({subset_1, subset_2, subsetDuplicate}); + CoordinateBroker broker = CoordinateBroker({subset_1, subset_2, subsetDuplicate}); EXPECT_EQ(2, broker.accessSubsets().size()); EXPECT_EQ(subset_1, broker.accessSubsets()[0]); @@ -230,10 +230,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Access } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, Getters) { { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); EXPECT_EQ(0, broker.getNumberOfCoordinates()); EXPECT_EQ(0, broker.getNumberOfSubsets()); @@ -241,7 +241,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Getter } { - CoordinatesBroker broker = CoordinatesBroker({subset_1, subset_2, subsetDuplicate}); + CoordinateBroker broker = CoordinateBroker({subset_1, subset_2, subsetDuplicate}); EXPECT_EQ(3, broker.getNumberOfCoordinates()); EXPECT_EQ(2, broker.getNumberOfSubsets()); @@ -251,10 +251,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Getter } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Operations) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, Operations) { { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); EXPECT_EQ(0, broker.getNumberOfCoordinates()); EXPECT_EQ(0, broker.getNumberOfSubsets()); @@ -291,7 +291,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Operat } { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); // Add subset EXPECT_EQ(0, broker.addSubset(subset_1)); @@ -319,10 +319,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Operat } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, ExtractCoordinate) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, ExtractCoordinate) { { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); broker.addSubset(subset_1); broker.addSubset(subset_2); broker.addSubset(subset_3); @@ -349,10 +349,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Extrac } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, ExtractCoordinates) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateBroker, ExtractCoordinates) { { - CoordinatesBroker broker = CoordinatesBroker(); + CoordinateBroker broker = CoordinateBroker(); broker.addSubset(subset_1); broker.addSubset(subset_2); broker.addSubset(subset_3); @@ -360,19 +360,19 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Extrac VectorXd fullCoordinatesVector(6); fullCoordinatesVector << 0.0, 1.0, 2.0, 3.0, 4.0, 5.0; - Array> subsets_1 = {subset_1}; + Array> subsets_1 = {subset_1}; const VectorXd subset_1_coordinates = broker.extractCoordinates(fullCoordinatesVector, subsets_1); EXPECT_EQ(1, subset_1_coordinates.size()); EXPECT_EQ(0.0, subset_1_coordinates(0)); - Array> subsets_12 = {subset_1, subset_2}; + Array> subsets_12 = {subset_1, subset_2}; const VectorXd subset_12_coordinates = broker.extractCoordinates(fullCoordinatesVector, subsets_12); EXPECT_EQ(3, subset_12_coordinates.size()); EXPECT_EQ(0.0, subset_12_coordinates(0)); EXPECT_EQ(1.0, subset_12_coordinates(1)); EXPECT_EQ(2.0, subset_12_coordinates(2)); - Array> subsets_13 = {subset_1, subset_3}; + Array> subsets_13 = {subset_1, subset_3}; const VectorXd subset_13_coordinates = broker.extractCoordinates(fullCoordinatesVector, subsets_13); EXPECT_EQ(4, subset_13_coordinates.size()); EXPECT_EQ(0.0, subset_13_coordinates(0)); @@ -380,7 +380,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Extrac EXPECT_EQ(4.0, subset_13_coordinates(2)); EXPECT_EQ(5.0, subset_13_coordinates(3)); - Array> subsets_31 = {subset_3, subset_1}; + Array> subsets_31 = {subset_3, subset_1}; const VectorXd subset_31_coordinates = broker.extractCoordinates(fullCoordinatesVector, subsets_31); EXPECT_EQ(4, subset_31_coordinates.size()); EXPECT_EQ(3.0, subset_31_coordinates(0)); @@ -388,7 +388,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Extrac EXPECT_EQ(5.0, subset_31_coordinates(2)); EXPECT_EQ(0.0, subset_31_coordinates(3)); - Array> subsets_123 = {subset_1, subset_2, subset_3}; + Array> subsets_123 = {subset_1, subset_2, subset_3}; const VectorXd subset_123_coordinates = broker.extractCoordinates(fullCoordinatesVector, subsets_123); EXPECT_EQ(6, subset_123_coordinates.size()); EXPECT_EQ(0.0, subset_123_coordinates(0)); @@ -398,7 +398,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesBroker, Extrac EXPECT_EQ(4.0, subset_123_coordinates(4)); EXPECT_EQ(5.0, subset_123_coordinates(5)); - Array> subsets_14 = {subset_1, subset_4}; + Array> subsets_14 = {subset_1, subset_4}; EXPECT_ANY_THROW(broker.extractCoordinates(fullCoordinatesVector, subsets_14)); } } diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.test.cpp similarity index 64% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.test.cpp index 111c71954..d4b9082fc 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubset.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset.test.cpp @@ -2,8 +2,8 @@ #include -#include -#include +#include +#include #include @@ -17,65 +17,65 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset : public ::testing::Test { protected: const String defaultName_ = "NAME"; const Size defaultSize_ = 1; - const CoordinatesSubset defaultCoordinateSubset_ = CoordinatesSubset(defaultName_, defaultSize_); + const CoordinateSubset defaultCoordinateSubset_ = CoordinateSubset(defaultName_, defaultSize_); - const Array> defaultCoordinateSubsets_ = { - std::make_shared(defaultCoordinateSubset_) + const Array> defaultCoordinateSubsets_ = { + std::make_shared(defaultCoordinateSubset_) }; - const Shared defaultCoordinatesBroker_ = - std::make_shared(defaultCoordinateSubsets_); + const Shared defaultCoordinateBroker_ = + std::make_shared(defaultCoordinateSubsets_); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, Constructor) { { - EXPECT_NO_THROW(CoordinatesSubset("NAME", 1)); + EXPECT_NO_THROW(CoordinateSubset("NAME", 1)); } { - EXPECT_NO_THROW(CoordinatesSubset("R45", 4)); + EXPECT_NO_THROW(CoordinateSubset("R45", 4)); } { - EXPECT_ANY_THROW(CoordinatesSubset("", 0)); - EXPECT_ANY_THROW(CoordinatesSubset("NAME", 0)); + EXPECT_ANY_THROW(CoordinateSubset("", 0)); + EXPECT_ANY_THROW(CoordinateSubset("NAME", 0)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, EqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, EqualToOperator) { { EXPECT_TRUE(defaultCoordinateSubset_ == defaultCoordinateSubset_); } { - EXPECT_FALSE(defaultCoordinateSubset_ == CoordinatesSubset("OTHER", 1)); - EXPECT_FALSE(defaultCoordinateSubset_ == CoordinatesSubset("NAME", 2)); + EXPECT_FALSE(defaultCoordinateSubset_ == CoordinateSubset("OTHER", 1)); + EXPECT_FALSE(defaultCoordinateSubset_ == CoordinateSubset("NAME", 2)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, NotEqualToOperator) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, NotEqualToOperator) { { EXPECT_FALSE(defaultCoordinateSubset_ != defaultCoordinateSubset_); } { - EXPECT_TRUE(defaultCoordinateSubset_ != CoordinatesSubset("OTHER", 1)); - EXPECT_TRUE(defaultCoordinateSubset_ != CoordinatesSubset("NAME", 2)); + EXPECT_TRUE(defaultCoordinateSubset_ != CoordinateSubset("OTHER", 1)); + EXPECT_TRUE(defaultCoordinateSubset_ != CoordinateSubset("NAME", 2)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, Getters) { { EXPECT_EQ(defaultName_, defaultCoordinateSubset_.getName()); @@ -83,7 +83,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Getter } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Add) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, Add) { const Instant instant = Instant::J2000(); const Shared frame = Frame::GCRF(); @@ -94,11 +94,11 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Add) input2 << 2.0, 7.0, 3.0, 4.0; { - EXPECT_ANY_THROW(defaultCoordinateSubset_.add(instant, input1, input2, frame, defaultCoordinatesBroker_)); + EXPECT_ANY_THROW(defaultCoordinateSubset_.add(instant, input1, input2, frame, defaultCoordinateBroker_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Subtract) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, Subtract) { const Instant instant = Instant::J2000(); const Shared frame = Frame::GCRF(); @@ -109,11 +109,11 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Subtra input2 << 2.0, 7.0, 3.0, 4.0; { - EXPECT_ANY_THROW(defaultCoordinateSubset_.subtract(instant, input1, input2, frame, defaultCoordinatesBroker_)); + EXPECT_ANY_THROW(defaultCoordinateSubset_.subtract(instant, input1, input2, frame, defaultCoordinateBroker_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, InFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, InFrame) { { const Instant instant = Instant::J2000(); @@ -127,30 +127,30 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, InFram VectorXd actual(1); actual = defaultCoordinateSubset_.inFrame( - instant, fullCoordinatesVector, fromFrame, toFrame, defaultCoordinatesBroker_ + instant, fullCoordinatesVector, fromFrame, toFrame, defaultCoordinateBroker_ ); EXPECT_EQ(expected, actual); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, Mass) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, Mass) { { - EXPECT_NO_THROW(CoordinatesSubset::Mass()); + EXPECT_NO_THROW(CoordinateSubset::Mass()); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, SurfaceArea) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, SurfaceArea) { { - EXPECT_NO_THROW(CoordinatesSubset::SurfaceArea()); + EXPECT_NO_THROW(CoordinateSubset::SurfaceArea()); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubset, DragCoefficient) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset, DragCoefficient) { { - EXPECT_NO_THROW(CoordinatesSubset::DragCoefficient()); + EXPECT_NO_THROW(CoordinateSubset::DragCoefficient()); } } diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.test.cpp similarity index 72% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.test.cpp index d63dcde20..f2641b102 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AngularVelocity.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AngularVelocity.test.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include #include @@ -13,38 +13,38 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; -using ostk::astro::trajectory::state::coordinatessubsets::AngularVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AngularVelocity; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity : public ::testing::Test { protected: const String defaultName_ = "NAME"; const Shared defaultAttitudeQuaternionSPtr_ = AttitudeQuaternion::Default(); const AngularVelocity defaultAngularVelocity_ = AngularVelocity(defaultAttitudeQuaternionSPtr_, defaultName_); - const Array> defaultCoordinateSubsets_ = { + const Array> defaultCoordinateSubsets_ = { std::make_shared(defaultAngularVelocity_) }; - const Shared defaultCoordinatesBroker_ = - std::make_shared(defaultCoordinateSubsets_); + const Shared defaultCoordinateBroker_ = + std::make_shared(defaultCoordinateSubsets_); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, Constructor) { { EXPECT_NO_THROW(AngularVelocity(defaultAttitudeQuaternionSPtr_, defaultName_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, Getters) { EXPECT_EQ(3, defaultAngularVelocity_.getSize()); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, Add) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, Add) { { const Instant instant = Instant::J2000(); @@ -56,12 +56,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Angula allCoordinates_2 << 4.0, 5.0, 6.0; EXPECT_ANY_THROW( - defaultAngularVelocity_.add(instant, allCoordinates_1, allCoordinates_2, frame, defaultCoordinatesBroker_) + defaultAngularVelocity_.add(instant, allCoordinates_1, allCoordinates_2, frame, defaultCoordinateBroker_) ); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, Subtract) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, Subtract) { { const Instant instant = Instant::J2000(); @@ -72,12 +72,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Angula allCoordinates_2 << -4.0, -5.0, -6.0; EXPECT_ANY_THROW(defaultAngularVelocity_.subtract( - instant, allCoordinates_1, allCoordinates_2, frame, defaultCoordinatesBroker_ + instant, allCoordinates_1, allCoordinates_2, frame, defaultCoordinateBroker_ )); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, InFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, InFrame) { { const Instant instant = Instant::J2000(); @@ -85,10 +85,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Angula const Shared toFrame = Frame::TEME(); VectorXd fullCoordinatesVector(7); fullCoordinatesVector << 0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 3.0; - const Array> coordinateSubsets = { + const Array> coordinateSubsets = { defaultAttitudeQuaternionSPtr_, std::make_shared(defaultAngularVelocity_) }; - const Shared brokerSPtr = std::make_shared(coordinateSubsets); + const Shared brokerSPtr = std::make_shared(coordinateSubsets); // TBI: check actual values EXPECT_NO_THROW(defaultAngularVelocity_.inFrame(instant, fullCoordinatesVector, fromFrame, toFrame, brokerSPtr) @@ -96,7 +96,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Angula } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AngularVelocity, Default) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AngularVelocity, Default) { { EXPECT_NO_THROW(AngularVelocity::Default()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.test.cpp similarity index 72% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.test.cpp index 4e4ec0eba..364493e19 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/AttitudeQuaternion.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/AttitudeQuaternion.test.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include #include @@ -14,35 +14,35 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::AttitudeQuaternion; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::AttitudeQuaternion; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion : public ::testing::Test { protected: const String defaultName_ = "NAME"; const AttitudeQuaternion defaultAttitudeQuaternion_ = AttitudeQuaternion(defaultName_); - const Array> defaultCoordinateSubsets_ = { + const Array> defaultCoordinateSubsets_ = { std::make_shared(defaultAttitudeQuaternion_) }; - const Shared defaultCoordinatesBroker_ = - std::make_shared(defaultCoordinateSubsets_); + const Shared defaultCoordinateBroker_ = + std::make_shared(defaultCoordinateSubsets_); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, Constructor) { { EXPECT_NO_THROW(AttitudeQuaternion("NAME")); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, Getters) { EXPECT_EQ(4, defaultAttitudeQuaternion_.getSize()); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, Add) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, Add) { { VectorXd firstCoordinates(4); @@ -51,12 +51,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Attitu secondCoordinates << 0.0, 0.0, 0.0, 1.0; EXPECT_ANY_THROW(defaultAttitudeQuaternion_.add( - Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinateBroker_ )); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, Subtract) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, Subtract) { { VectorXd firstCoordinates(4); @@ -65,12 +65,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Attitu secondCoordinates << 0.0, 0.0, 0.0, 1.0; EXPECT_ANY_THROW(defaultAttitudeQuaternion_.subtract( - Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinateBroker_ )); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, InFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, InFrame) { { const Instant instant = Instant::J2000(); @@ -78,7 +78,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Attitu const Shared toFrame = Frame::TEME(); VectorXd fullCoordinatesVector(4); fullCoordinatesVector << 0.0, 0.0, 0.0, 1.0; - const Shared brokerkSPtr = defaultCoordinatesBroker_; + const Shared brokerkSPtr = defaultCoordinateBroker_; // TBI: check actual values EXPECT_NO_THROW( @@ -88,7 +88,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Attitu } TEST_F( - OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, ConversionToAndFromQuaternion + OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, ConversionToAndFromQuaternion ) { { @@ -103,7 +103,7 @@ TEST_F( } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_AttitudeQuaternion, Default) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_AttitudeQuaternion, Default) { { EXPECT_NO_THROW(AttitudeQuaternion::Default()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.test.cpp similarity index 74% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.test.cpp index 3c0f850fb..9715d213f 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianPosition.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianPosition.test.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include #include @@ -15,35 +15,35 @@ using ostk::physics::coordinate::Frame; using ostk::physics::coordinate::Position; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition : public ::testing::Test { protected: const String defaultName_ = "NAME"; const CartesianPosition defaultCartesianPosition_ = CartesianPosition(defaultName_); - const Array> defaultCoordinateSubsets_ = { + const Array> defaultCoordinateSubsets_ = { std::make_shared(defaultCartesianPosition_) }; - const Shared defaultCoordinatesBroker_ = - std::make_shared(defaultCoordinateSubsets_); + const Shared defaultCoordinateBroker_ = + std::make_shared(defaultCoordinateSubsets_); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, Constructor) { { EXPECT_NO_THROW(CartesianPosition("NAME")); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, Getters) { EXPECT_EQ(3, defaultCartesianPosition_.getSize()); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, Add) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, Add) { { VectorXd firstCoordinates(3); @@ -55,14 +55,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes expected << 5.0, 7.0, 9.0; const VectorXd actual = defaultCartesianPosition_.add( - Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinateBroker_ ); EXPECT_EQ(expected, actual); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, Subtract) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, Subtract) { { VectorXd firstCoordinates(3); @@ -74,14 +74,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes expected << 5.0, 7.0, 9.0; const VectorXd actual = defaultCartesianPosition_.subtract( - Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), firstCoordinates, secondCoordinates, Frame::Undefined(), defaultCoordinateBroker_ ); EXPECT_EQ(expected, actual); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, InFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, InFrame) { { const Instant instant = Instant::J2000(); @@ -89,7 +89,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes const Shared toFrame = Frame::TEME(); VectorXd fullCoordinatesVector(3); fullCoordinatesVector << 1.0e7, -1e7, 5e6; - const Shared brokerkSPtr = defaultCoordinatesBroker_; + const Shared brokerkSPtr = defaultCoordinateBroker_; Vector3d expected = Position::Meters({1.0e7, -1e7, 5e6}, fromFrame).inFrame(toFrame, instant).getCoordinates(); @@ -100,7 +100,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianPosition, Default) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianPosition, Default) { { EXPECT_NO_THROW(CartesianPosition::Default()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.test.cpp similarity index 74% rename from test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.test.cpp rename to test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.test.cpp index 3592e5788..c8c5e437d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinatesSubsets/CartesianVelocity.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/CoordinateSubset/CartesianVelocity.test.cpp @@ -1,6 +1,6 @@ /// Apache License 2.0 -#include +#include #include @@ -16,38 +16,38 @@ using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; using ostk::physics::time::Instant; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; -class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity : public ::testing::Test +class OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity : public ::testing::Test { protected: const String defaultName_ = "NAME"; const Shared defaultCartesianPositionSPtr_ = CartesianPosition::Default(); const CartesianVelocity defaultCartesianVelocity_ = CartesianVelocity(defaultCartesianPositionSPtr_, defaultName_); - const Array> defaultCoordinateSubsets_ = { + const Array> defaultCoordinateSubsets_ = { std::make_shared(defaultCartesianVelocity_) }; - const Shared defaultCoordinatesBroker_ = - std::make_shared(defaultCoordinateSubsets_); + const Shared defaultCoordinateBroker_ = + std::make_shared(defaultCoordinateSubsets_); }; -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, Constructor) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, Constructor) { { EXPECT_NO_THROW(CartesianVelocity(defaultCartesianPositionSPtr_, defaultName_)); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, Getters) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, Getters) { EXPECT_EQ(3, defaultCartesianVelocity_.getSize()); } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, Add) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, Add) { { VectorXd allCoordinates_1(3); @@ -59,14 +59,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes expected << 5.0, 7.0, 9.0; const VectorXd actual = defaultCartesianVelocity_.add( - Instant::Undefined(), allCoordinates_1, allCoordinates_2, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), allCoordinates_1, allCoordinates_2, Frame::Undefined(), defaultCoordinateBroker_ ); EXPECT_EQ(expected, actual); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, Subtract) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, Subtract) { { VectorXd allCoordinates_1(3); @@ -78,14 +78,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes expected << 5.0, 7.0, 9.0; const VectorXd actual = defaultCartesianVelocity_.subtract( - Instant::Undefined(), allCoordinates_1, allCoordinates_2, Frame::Undefined(), defaultCoordinatesBroker_ + Instant::Undefined(), allCoordinates_1, allCoordinates_2, Frame::Undefined(), defaultCoordinateBroker_ ); EXPECT_EQ(expected, actual); } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, InFrame) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, InFrame) { { const Instant instant = Instant::J2000(); @@ -93,10 +93,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes const Shared toFrame = Frame::TEME(); VectorXd fullCoordinatesVector(6); fullCoordinatesVector << 1.0e6, 2.0e6, 3.0e5, 4.0e3, -5.0e3, 6.0e3; - const Array> coordinateSubsets = { + const Array> coordinateSubsets = { defaultCartesianPositionSPtr_, std::make_shared(defaultCartesianVelocity_) }; - const Shared brokerSPtr = std::make_shared(coordinateSubsets); + const Shared brokerSPtr = std::make_shared(coordinateSubsets); Vector3d expected = Velocity::MetersPerSecond({4.0e3, -5.0e3, 6.0e3}, fromFrame) .inFrame(Position::Meters({1.0e6, 2.0e6, 3.0e5}, fromFrame), toFrame, instant) @@ -109,7 +109,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_Cartes } } -TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinatesSubsets_CartesianVelocity, Default) +TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_State_CoordinateSubset_CartesianVelocity, Default) { { EXPECT_NO_THROW(CartesianVelocity::Default()); diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.test.cpp index 1889e51f3..a2aef141c 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/State/NumericalSolver.test.cpp @@ -10,8 +10,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -31,11 +31,11 @@ using ostk::physics::time::DateTime; using ostk::physics::time::Scale; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::State; // Simple duration based condition @@ -84,7 +84,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_State_NumericalSolver : public : defaultStartInstant_, defaultStateVector_, gcrfSPtr_, - defaultCoordinatesBroker_, + defaultCoordinateBroker_, }; } @@ -106,8 +106,8 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_State_NumericalSolver : public : }; VectorXd defaultStateVector_; - const Shared defaultCoordinatesBroker_ = - std::make_shared(CoordinatesBroker({std::make_shared("Test", 2)})); + const Shared defaultCoordinateBroker_ = + std::make_shared(CoordinateBroker({std::make_shared("Test", 2)})); const Instant defaultStartInstant_ = Instant::DateTime(DateTime(2018, 1, 2, 0, 0, 0), Scale::UTC); const Shared gcrfSPtr_ = Frame::GCRF(); @@ -151,7 +151,7 @@ class OpenSpaceToolkit_Astrodynamics_Trajectory_State_NumericalSolver : public : anInstant, stateVector, gcrfSPtr_, - defaultCoordinatesBroker_, + defaultCoordinateBroker_, }; } }; diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.test.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.test.cpp index 7ca61bffd..95dea3d8d 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.test.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/StateBuilder.test.cpp @@ -1,7 +1,7 @@ /// Apache License 2.0 -#include -#include +#include +#include #include #include @@ -16,36 +16,36 @@ using ostk::physics::time::DateTime; using ostk::physics::time::Instant; using ostk::physics::time::Scale; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::StateBuilder; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::StateBuilder; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder : public ::testing::Test { protected: - const Array> posVelSubsets = { + const Array> posVelSubsets = { CartesianPosition::Default(), CartesianVelocity::Default() }; - const Array> posVelMassSubsets = { - CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass() + const Array> posVelMassSubsets = { + CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass() }; - const Array> massPosSubsets = { - CoordinatesSubset::Mass(), CartesianPosition::Default() + const Array> massPosSubsets = { + CoordinateSubset::Mass(), CartesianPosition::Default() }; - const Shared posVelBrokerSPtr = - std::make_shared(CoordinatesBroker(posVelSubsets)); + const Shared posVelBrokerSPtr = + std::make_shared(CoordinateBroker(posVelSubsets)); - const Shared posVelMassBrokerSPtr = - std::make_shared(CoordinatesBroker(posVelMassSubsets)); + const Shared posVelMassBrokerSPtr = + std::make_shared(CoordinateBroker(posVelMassSubsets)); - const Shared massPosBrokerSPtr = - std::make_shared(CoordinatesBroker(massPosSubsets)); + const Shared massPosBrokerSPtr = + std::make_shared(CoordinateBroker(massPosSubsets)); }; TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Constructor) @@ -105,8 +105,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, EqualToOperator) { const StateBuilder aStateBuilder = {Frame::GCRF(), posVelBrokerSPtr}; - const Shared posVelBrokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared posVelBrokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const StateBuilder anotherStateBuilder = {Frame::GCRF(), posVelBrokerSPtr2}; @@ -117,8 +117,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, EqualToOperator) { const StateBuilder aStateBuilder = {Frame::GCRF(), posVelBrokerSPtr}; - const Shared velPosBrokerSPtr = std::make_shared( - CoordinatesBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) + const Shared velPosBrokerSPtr = std::make_shared( + CoordinateBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) ); const StateBuilder anotherStateBuilder = {Frame::GCRF(), velPosBrokerSPtr}; @@ -182,8 +182,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, NotEqualToOperato { const StateBuilder aStateBuilder = {Frame::GCRF(), posVelBrokerSPtr}; - const Shared posVelBrokerSPtr2 = std::make_shared( - CoordinatesBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) + const Shared posVelBrokerSPtr2 = std::make_shared( + CoordinateBroker({CartesianPosition::Default(), CartesianVelocity::Default()}) ); const StateBuilder anotherStateBuilder = {Frame::GCRF(), posVelBrokerSPtr2}; @@ -194,8 +194,8 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, NotEqualToOperato { const StateBuilder aStateBuilder = {Frame::GCRF(), posVelBrokerSPtr}; - const Shared velPosBrokerSPtr = std::make_shared( - CoordinatesBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) + const Shared velPosBrokerSPtr = std::make_shared( + CoordinateBroker({CartesianVelocity::Default(), CartesianPosition::Default()}) ); const StateBuilder anotherStateBuilder = {Frame::GCRF(), velPosBrokerSPtr}; @@ -230,21 +230,21 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, AdditionOperator) { { const StateBuilder stateBuilder = StateBuilder(Frame::GCRF(), posVelBrokerSPtr); - const StateBuilder expandedStateBuilder = stateBuilder + CoordinatesSubset::Mass(); + const StateBuilder expandedStateBuilder = stateBuilder + CoordinateSubset::Mass(); EXPECT_FALSE(stateBuilder == expandedStateBuilder); - const Array> subsets = stateBuilder.accessCoordinatesBroker()->accessSubsets(); + const Array> subsets = stateBuilder.accessCoordinateBroker()->accessSubsets(); EXPECT_EQ(2, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); EXPECT_EQ(CartesianVelocity::Default(), subsets[1]); - const Array> expandedSubsets = - expandedStateBuilder.accessCoordinatesBroker()->accessSubsets(); + const Array> expandedSubsets = + expandedStateBuilder.accessCoordinateBroker()->accessSubsets(); EXPECT_EQ(3, expandedSubsets.size()); EXPECT_EQ(CartesianPosition::Default(), expandedSubsets[0]); EXPECT_EQ(CartesianVelocity::Default(), expandedSubsets[1]); - EXPECT_EQ(CoordinatesSubset::Mass(), expandedSubsets[2]); + EXPECT_EQ(CoordinateSubset::Mass(), expandedSubsets[2]); } { @@ -268,17 +268,17 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, SubtractionOperat EXPECT_FALSE(stateBuilder == contractedStateBuilder); - const Array> subsets = stateBuilder.accessCoordinatesBroker()->accessSubsets(); + const Array> subsets = stateBuilder.accessCoordinateBroker()->accessSubsets(); EXPECT_EQ(3, subsets.size()); EXPECT_EQ(CartesianPosition::Default(), subsets[0]); EXPECT_EQ(CartesianVelocity::Default(), subsets[1]); - EXPECT_EQ(CoordinatesSubset::Mass(), subsets[2]); + EXPECT_EQ(CoordinateSubset::Mass(), subsets[2]); - const Array> contractedSubsets = - contractedStateBuilder.accessCoordinatesBroker()->accessSubsets(); + const Array> contractedSubsets = + contractedStateBuilder.accessCoordinateBroker()->accessSubsets(); EXPECT_EQ(2, contractedSubsets.size()); EXPECT_EQ(CartesianPosition::Default(), contractedSubsets[0]); - EXPECT_EQ(CoordinatesSubset::Mass(), contractedSubsets[1]); + EXPECT_EQ(CoordinateSubset::Mass(), contractedSubsets[1]); } { @@ -290,7 +290,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, SubtractionOperat { const StateBuilder stateBuilder = StateBuilder(Frame::GCRF(), posVelBrokerSPtr); - EXPECT_ANY_THROW(stateBuilder - CoordinatesSubset::Mass()); + EXPECT_ANY_THROW(stateBuilder - CoordinateSubset::Mass()); } } @@ -329,10 +329,10 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Build) EXPECT_EQ(instant, state.accessInstant()); EXPECT_EQ(coordinates, state.accessCoordinates()); EXPECT_EQ(Frame::GCRF(), state.accessFrame()); - EXPECT_EQ(posVelBrokerSPtr, state.accessCoordinatesBroker()); + EXPECT_EQ(posVelBrokerSPtr, state.accessCoordinateBroker()); EXPECT_EQ(stateBuilder.accessFrame(), state.accessFrame()); - EXPECT_EQ(stateBuilder.accessCoordinatesBroker(), state.accessCoordinatesBroker()); + EXPECT_EQ(stateBuilder.accessCoordinateBroker(), state.accessCoordinateBroker()); } { @@ -354,7 +354,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Build) EXPECT_NE(state1.accessCoordinates(), state2.accessCoordinates()); EXPECT_EQ(state1.accessFrame(), state2.accessFrame()); - EXPECT_EQ(state1.accessCoordinatesBroker(), state2.accessCoordinatesBroker()); + EXPECT_EQ(state1.accessCoordinateBroker(), state2.accessCoordinateBroker()); } { @@ -578,14 +578,14 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Accessors) const StateBuilder stateBuilder = {Frame::GCRF(), posVelBrokerSPtr}; EXPECT_EQ(Frame::GCRF(), stateBuilder.accessFrame()); - EXPECT_EQ(posVelBrokerSPtr, stateBuilder.accessCoordinatesBroker()); + EXPECT_EQ(posVelBrokerSPtr, stateBuilder.accessCoordinateBroker()); } { const StateBuilder stateBuilder = {Frame::GCRF(), posVelSubsets}; EXPECT_EQ(Frame::GCRF(), stateBuilder.accessFrame()); - EXPECT_EQ(posVelSubsets, stateBuilder.accessCoordinatesBroker()->getSubsets()); + EXPECT_EQ(posVelSubsets, stateBuilder.accessCoordinateBroker()->getSubsets()); } { @@ -596,12 +596,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Accessors) const StateBuilder stateBuilder = {state}; EXPECT_EQ(Frame::GCRF(), stateBuilder.accessFrame()); - EXPECT_EQ(posVelBrokerSPtr, stateBuilder.accessCoordinatesBroker()); + EXPECT_EQ(posVelBrokerSPtr, stateBuilder.accessCoordinateBroker()); } { EXPECT_ANY_THROW(StateBuilder::Undefined().accessFrame()); - EXPECT_ANY_THROW(StateBuilder::Undefined().accessCoordinatesBroker()); + EXPECT_ANY_THROW(StateBuilder::Undefined().accessCoordinateBroker()); } } @@ -610,12 +610,12 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Trajectory_StateBuilder, Getters) { const StateBuilder stateBuilder = StateBuilder(Frame::GCRF(), posVelBrokerSPtr); - EXPECT_EQ(stateBuilder.getCoordinatesSubsets(), posVelBrokerSPtr->getSubsets()); + EXPECT_EQ(stateBuilder.getCoordinateSubsets(), posVelBrokerSPtr->getSubsets()); EXPECT_EQ(Frame::GCRF(), stateBuilder.getFrame()); } { - EXPECT_ANY_THROW(StateBuilder::Undefined().getCoordinatesSubsets()); + EXPECT_ANY_THROW(StateBuilder::Undefined().getCoordinateSubsets()); EXPECT_ANY_THROW(StateBuilder::Undefined().getFrame()); } } diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/NRLMSIS00.validation.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/NRLMSIS00.validation.cpp index 9295b11e9..2eec0a09f 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/NRLMSIS00.validation.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/NRLMSIS00.validation.cpp @@ -41,10 +41,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -83,20 +83,20 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::SatelliteSystemBuilder; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::SatelliteSystemBuilder; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; class OpenSpaceToolkit_Astrodynamics_Validation_NRLMSIS00Validation : public ::testing::Test { @@ -154,12 +154,12 @@ class OpenSpaceToolkit_Astrodynamics_Validation_NRLMSIS00Validation : public ::t Shared earthSpherical_ = nullptr; Propagator defaultPropagator_ = Propagator::Undefined(); - const Shared dragCoordinatesBrokerSPtr_ = std::make_shared(CoordinatesBroker( + const Shared dragCoordinateBrokerSPtr_ = std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient()} + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient()} )); }; @@ -213,7 +213,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_NRLMSIS00Validation_Data_Succes dragCoefficient; // Current state and instant setup - const State state = {startInstant, initialStateVector, gcrfSPtr_, dragCoordinatesBrokerSPtr_}; + const State state = {startInstant, initialStateVector, gcrfSPtr_, dragCoordinateBrokerSPtr_}; const NumericalSolver RK4 = { NumericalSolver::LogType::NoLog, @@ -295,7 +295,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_NRLMSIS00Validation_Data_Failur dragCoefficient; // Current state and instant setup - const State state = {startInstant, initialStateVector, gcrfSPtr_, dragCoordinatesBrokerSPtr_}; + const State state = {startInstant, initialStateVector, gcrfSPtr_, dragCoordinateBrokerSPtr_}; const NumericalSolver RK4 = { NumericalSolver::LogType::NoLog, diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.cross.validation.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.cross.validation.cpp index 5e7852a9a..39a378a95 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.cross.validation.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.cross.validation.cpp @@ -50,10 +50,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -98,25 +98,25 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::Tabulated; -using ostk::astro::dynamics::Thruster; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::SatelliteSystemBuilder; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::Tabulated; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::SatelliteSystemBuilder; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; class OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation : public ::testing::Test { @@ -183,12 +183,12 @@ class OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation : public ::testi Shared earthSpherical_ = nullptr; Propagator defaultPropagator_ = Propagator::Undefined(); - const Shared dragCoordinatesBrokerSPtr_ = std::make_shared(CoordinatesBroker( + const Shared dragCoordinateBrokerSPtr_ = std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient()} + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient()} )); }; @@ -199,7 +199,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation, ForceModel_Two // Reference data setup const Table referenceData = Table::Load( File::Path(Path::Parse( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/STK_TwoBody_2hr_run.csv" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/STK_TwoBody_2hr_run.csv" )), Table::Format::CSV, true @@ -312,7 +312,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation, ForceModel_EGM // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/" "Propagated/STK_EGM2008_100x100_2hr_run.csv")), Table::Format::CSV, true @@ -391,7 +391,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation, ForceModel_WGS // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/" "Propagated/STK_WGS84EGM96_70x70_2hr_run.csv")), Table::Format::CSV, true @@ -470,7 +470,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation, ForceModel_EGM // Reference data setup const Table referenceData = Table::Load( - File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/" + File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/" "Propagated/STK_WGS84_70x70_2hr_run.csv")), Table::Format::CSV, true @@ -662,11 +662,11 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation_Thruster, Force LocalOrbitalFrameDirection(localOrbitalFrameThrustVector, localOrbitalFrameFactory); // Coordinates Broker (scenario-independent) - const Shared coordinatesBrokerSPtr = - std::make_shared(CoordinatesBroker({ + const Shared coordinatesBrokerSPtr = + std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), })); // Setup initial state @@ -735,7 +735,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_CrossValidation_Thruster, Force // GCRF Compare const Position positionGCRF = propagatedStateArray[i].inFrame(gcrfSPtr_).getPosition(); const Velocity velocityGCRF = propagatedStateArray[i].inFrame(gcrfSPtr_).getVelocity(); - const double mass = propagatedStateArray[i].extractCoordinate(CoordinatesSubset::Mass())[0]; + const double mass = propagatedStateArray[i].extractCoordinate(CoordinateSubset::Mass())[0]; VectorXd OSTkStateCoordinatesGCRF(7); OSTkStateCoordinatesGCRF << positionGCRF.accessCoordinates(), velocityGCRF.accessCoordinates(), mass; @@ -856,7 +856,7 @@ INSTANTIATE_TEST_SUITE_P( ::testing::Values( // Test Case 0 std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -871,7 +871,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 1: Start date in 2021 std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2021-05-13T12-34-13.345_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -886,7 +886,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 2: QSW LOF std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_1.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::QSW(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -901,7 +901,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 3: TNW LOF std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_TNW_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::TNW(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -916,7 +916,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 4: LVLH LOF std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_LVLH_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::LVLH(Frame::GCRF()), // Local Orbital Frame Factory to express thrust @@ -931,7 +931,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 5: VVLH LOF std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VVLH_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VVLH(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -946,7 +946,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 6: Increase spacecraft mass to 1000kg std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -961,7 +961,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 7: Increase maneuver duration to 4h std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -976,7 +976,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 8: Increase spacecraft mass to 1000kg and LVLH std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_LVLH_1.0_0." "0_0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::LVLH(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -991,7 +991,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 9: Increase maneuver duration to 4h and LVLH std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_LVLH_1.0_0." "0_0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::LVLH(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1006,7 +1006,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 10: Increase thrust to 10N std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_10.0_1500.0_3600.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1021,7 +1021,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 11: Equatorial orbit std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_0." "0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1036,7 +1036,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 12: Thrust Vector on +Z and Equatorial std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_0.0_0.0_1." "0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1051,7 +1051,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 13: Higher altitude orbit (~1000km) std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_7500000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_0.0_" "0.0_30.0.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1209,13 +1209,13 @@ TEST_P( LocalOrbitalFrameDirection(localOrbitalFrameThrustVector, localOrbitalFrameFactory); // Coordinates Broker (scenario-independent) - const Shared coordinatesBrokerSPtr = - std::make_shared(CoordinatesBroker({ + const Shared coordinatesBrokerSPtr = + std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient(), + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient(), })); // Setup initial conditions @@ -1284,7 +1284,7 @@ TEST_P( // GCRF Compare const Position positionGCRF = propagatedStateArray[i].inFrame(gcrfSPtr_).getPosition(); const Velocity velocityGCRF = propagatedStateArray[i].inFrame(gcrfSPtr_).getVelocity(); - const double mass = propagatedStateArray[i].extractCoordinate(CoordinatesSubset::Mass())[0]; + const double mass = propagatedStateArray[i].extractCoordinate(CoordinateSubset::Mass())[0]; VectorXd OSTkStateCoordinatesGCRF(9); OSTkStateCoordinatesGCRF << positionGCRF.accessCoordinates(), velocityGCRF.accessCoordinates(), mass, @@ -1395,7 +1395,7 @@ INSTANTIATE_TEST_SUITE_P( ::testing::Values( // Test Case 0 std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1412,7 +1412,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 1: Start date in 2021 std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2021-12-23T11-23-21.235_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1429,7 +1429,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 2: QSW LOF std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_QSW_0.0_" "1.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::QSW(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1446,7 +1446,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 3: Increase spacecraft mass to 1000kg std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_1015.0_0.1_1500.0_3600.0_VNC_1." "0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1463,7 +1463,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 4: Increase maneuver duration to 2h std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_7200.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1480,7 +1480,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 5: Increase maneuver duration to 4h std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_14400.0_VNC_1." "0_0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1497,7 +1497,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 6: Increase thrust to 1N, lowering specific impulse to 150.0 std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_1.0_150.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1514,7 +1514,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 7: Equatorial orbit std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_0.0_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1531,7 +1531,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 8: Increase spacecraft cross section std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_25.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1548,7 +1548,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 9: Increase spacecraft drag coefficient and cross section std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7000000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_4.2_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction @@ -1565,7 +1565,7 @@ INSTANTIATE_TEST_SUITE_P( ), // Test Case 10: Higher initial altitude (~800 km) and increase cross section std::make_tuple( - "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Models/Propagated/" + "/app/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Orbit/Model/Propagated/" "Orekit_ConstantThrustThruster_Drag_7300000.0_98.1_2023-01-01T00-00-00.000_115.0_0.1_1500.0_3600.0_VNC_1.0_" "0.0_0.0_30.0_EXPONENTIAL_1.0_2.1_TRUE.csv", // Scenario validation data file path LocalOrbitalFrameFactory::VNC(Frame::GCRF()), // Local Orbital Frame Factory to express thrust direction diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.self.validation.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.self.validation.cpp index 5452bda20..d98720307 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.self.validation.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/Propagator.self.validation.cpp @@ -47,10 +47,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -91,23 +91,23 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::Tabulated; -using ostk::astro::dynamics::Thruster; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::flight::system::SatelliteSystemBuilder; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::Tabulated; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::flight::system::SatelliteSystemBuilder; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; class OpenSpaceToolkit_Astrodynamics_Validation_SelfValidation : public ::testing::Test { @@ -165,12 +165,12 @@ class OpenSpaceToolkit_Astrodynamics_Validation_SelfValidation : public ::testin Shared earthSpherical_ = nullptr; Propagator defaultPropagator_ = Propagator::Undefined(); - const Shared dragCoordinatesBrokerSPtr_ = std::make_shared(CoordinatesBroker( + const Shared dragCoordinateBrokerSPtr_ = std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient()} + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient()} )); }; @@ -184,7 +184,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_SelfValidation, ForceModel_Tabu Instant::DateTime(DateTime(2023, 1, 1, 0, 0, 0, 0), Scale::UTC), coordinates, Frame::GCRF(), - dragCoordinatesBrokerSPtr_, + dragCoordinateBrokerSPtr_, }; const Earth earth = Earth::FromModels( @@ -247,7 +247,7 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_SelfValidation, ForceModel_Tabu const Tabulated tabulated = { instants, contributions, - {CartesianVelocity::Default(), CoordinatesSubset::Mass()}, + {CartesianVelocity::Default(), CoordinateSubset::Mass()}, gcrfSPtr_, }; diff --git a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/QLaw.validation.cpp b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/QLaw.validation.cpp index a28b1a391..3d2acf5f3 100644 --- a/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/QLaw.validation.cpp +++ b/test/OpenSpaceToolkit/Astrodynamics/Trajectory/Validation/QLaw.validation.cpp @@ -37,15 +37,15 @@ #include #include #include -#include +#include #include -#include +#include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -86,23 +86,23 @@ using ostk::physics::unit::Angle; using ostk::physics::unit::Derived; using ostk::physics::unit::Length; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::Thruster; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::guidancelaw::QLaw; -using ostk::astro::solvers::FiniteDifferenceSolver; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::guidancelaw::QLaw; +using ostk::astrodynamics::solver::FiniteDifferenceSolver; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; class OpenSpaceToolkit_Astrodynamics_Validation_QLawValidation : public ::testing::Test, @@ -162,12 +162,12 @@ class OpenSpaceToolkit_Astrodynamics_Validation_QLawValidation Shared earthSpherical_ = nullptr; Propagator defaultPropagator_ = Propagator::Undefined(); - const Shared dragCoordinatesBrokerSPtr_ = std::make_shared(CoordinatesBroker( + const Shared dragCoordinateBrokerSPtr_ = std::make_shared(CoordinateBroker( {CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient()} + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient()} )); }; @@ -270,7 +270,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_QLawValidation, QLaw_Paper_Case Instant::J2000(), coordinates, Frame::GCRF(), - {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()} + {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()} }; const State state = @@ -370,7 +370,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_QLawValidation, QLaw_Paper_Case Instant::J2000(), coordinates, Frame::GCRF(), - {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()} + {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()} }; const State state = @@ -441,7 +441,7 @@ TEST_P(OpenSpaceToolkit_Astrodynamics_Validation_QLawValidation, SSO_targeting) Instant::DateTime(DateTime(2024, 10, 1, 0, 0, 0), Scale::UTC), coordinates, Frame::GCRF(), - {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinatesSubset::Mass()} + {CartesianPosition::Default(), CartesianVelocity::Default(), CoordinateSubset::Mass()} }; // SMA Targeting diff --git a/test/Setup.test.hpp b/test/Setup.test.hpp index a38f7b889..5adc1f962 100644 --- a/test/Setup.test.hpp +++ b/test/Setup.test.hpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace test { @@ -43,5 +43,5 @@ class Environment : public testing::Environment }; } // namespace test -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/tutorials/cpp/sensor-modeling/SensorModeling.cxx b/tutorials/cpp/sensor-modeling/SensorModeling.cxx index a973d0b57..f99c2fc80 100644 --- a/tutorials/cpp/sensor-modeling/SensorModeling.cxx +++ b/tutorials/cpp/sensor-modeling/SensorModeling.cxx @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include int main() { @@ -58,10 +58,10 @@ int main() using ostk::physics::environment::object::Celestial; using ostk::physics::environment::object::celestial::Earth; - using ostk::astro::trajectory::Orbit; - using ostk::astro::trajectory::State; - using ostk::astro::trajectory::orbit::models::Kepler; - using ostk::astro::trajectory::orbit::models::kepler::COE; + using ostk::astrodynamics::trajectory::Orbit; + using ostk::astrodynamics::trajectory::State; + using ostk::astrodynamics::trajectory::orbit::model::Kepler; + using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; // Environment diff --git a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.cpp b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.cpp index cb6582fa8..3368ab925 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { @@ -158,5 +158,5 @@ String CrossValidator::ToolToPath(const Tool& aTool) } } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.hpp b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.hpp index e4c8d2468..4f77a9b64 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.hpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.hpp @@ -16,11 +16,11 @@ #include #include -#include +#include namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { @@ -37,8 +37,8 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::coordinate::Frame; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesSubset; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; enum Quantity // Enum values here correspond to index of each output in the csv file { @@ -129,7 +129,7 @@ class CrossValidator }; } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.test.cpp b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.test.cpp index 74dc92664..50a032f6e 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.test.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/CrossValidator.test.cpp @@ -3,14 +3,14 @@ #include #include -#include -#include +#include +#include -using ostk::astro::validation::CrossValidator; -using ostk::astro::validation::Quantity; -using ostk::astro::validation::QuantityComparison; -using ostk::astro::validation::Tool; -using ostk::astro::validation::ToolComparison; +using ostk::astrodynamics::validation::CrossValidator; +using ostk::astrodynamics::validation::Quantity; +using ostk::astrodynamics::validation::QuantityComparison; +using ostk::astrodynamics::validation::Tool; +using ostk::astrodynamics::validation::ToolComparison; using ostk::core::container::Array; using ostk::core::container::Table; @@ -31,11 +31,11 @@ using ostk::physics::time::DateTime; using ostk::physics::coordinate::Position; using ostk::physics::coordinate::Velocity; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; class OpenSpaceToolkit_Astrodynamics_Validation_CrossValidator : public ::testing::Test { @@ -85,10 +85,10 @@ class OpenSpaceToolkit_Astrodynamics_Validation_CrossValidator : public ::testin }, }; - const Shared coordinatesBrokerSPtr_ = std::make_shared(CoordinatesBroker({ + const Shared coordinatesBrokerSPtr_ = std::make_shared(CoordinateBroker({ CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), + CoordinateSubset::Mass(), })); State defaultState_ = State::Undefined(); diff --git a/validation/OpenSpaceToolkit/Astrodynamics/Framework.validation.cpp b/validation/OpenSpaceToolkit/Astrodynamics/Framework.validation.cpp index 1cea2163e..60ca184d9 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/Framework.validation.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/Framework.validation.cpp @@ -53,19 +53,19 @@ #include #include #include -#include +#include #include #include #include -#include +#include #include #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include using ostk::core::container::Array; @@ -116,40 +116,40 @@ using EarthAtmosphericModel = ostk::physics::environment::atmospheric::Earth; using EarthSpaceWeatherManager = ostk::physics::environment::atmospheric::earth::Manager; using ostk::physics::environment::atmospheric::earth::CSSISpaceWeather; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::Orbit; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::orbit::models::kepler::COE; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::Thruster; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::guidancelaw::QLaw; -using ostk::astro::solvers::FiniteDifferenceSolver; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::Orbit; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::orbit::model::kepler::COE; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::guidancelaw::QLaw; +using ostk::astrodynamics::solver::FiniteDifferenceSolver; -using ostk::astro::validation::Quantity; -using ostk::astro::validation::Tool; -using ostk::astro::validation::ToolComparison; -using ostk::astro::validation::QuantityComparison; -using ostk::astro::validation::MissionSequence; -using ostk::astro::validation::CrossValidator; -using ostk::astro::validation::Parser; +using ostk::astrodynamics::validation::Quantity; +using ostk::astrodynamics::validation::Tool; +using ostk::astrodynamics::validation::ToolComparison; +using ostk::astrodynamics::validation::QuantityComparison; +using ostk::astrodynamics::validation::MissionSequence; +using ostk::astrodynamics::validation::CrossValidator; +using ostk::astrodynamics::validation::Parser; class OpenSpaceToolkit_Astrodynamics_Validation : public ::testing::TestWithParam>> diff --git a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.cpp b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.cpp index 6a8321719..9d807814e 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { @@ -115,5 +115,5 @@ Array MissionSequence::compareResults(const Table& referenceData, cons } } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.hpp b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.hpp index 97f9c7401..3e2bed92f 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.hpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.hpp @@ -25,14 +25,14 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { -using ostk::astro::validation::Parser; -using ostk::astro::validation::ToolComparison; -using ostk::astro::validation::QuantityComparison; +using ostk::astrodynamics::validation::Parser; +using ostk::astrodynamics::validation::ToolComparison; +using ostk::astrodynamics::validation::QuantityComparison; using ostk::core::container::Array; using ostk::core::container::Dictionary; @@ -47,10 +47,10 @@ using ostk::mathematics::object::VectorXd; using ostk::physics::Environment; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::State; /// @brief Holds the OSTk objects and data required to define and run a "Mission Sequence". class MissionSequence @@ -104,7 +104,7 @@ class MissionSequence }; } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.test.cpp b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.test.cpp index 6bea89469..0cd677830 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.test.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/MissionSequence.test.cpp @@ -4,12 +4,12 @@ #include -using ostk::astro::validation::Parser; -using ostk::astro::validation::ToolComparison; -using ostk::astro::validation::Tool; -using ostk::astro::validation::QuantityComparison; -using ostk::astro::validation::Quantity; -using ostk::astro::validation::MissionSequence; +using ostk::astrodynamics::validation::Parser; +using ostk::astrodynamics::validation::ToolComparison; +using ostk::astrodynamics::validation::Tool; +using ostk::astrodynamics::validation::QuantityComparison; +using ostk::astrodynamics::validation::Quantity; +using ostk::astrodynamics::validation::MissionSequence; using ostk::core::container::Array; using ostk::core::container::Table; @@ -31,10 +31,10 @@ using ostk::physics::time::DateTime; using ostk::physics::time::Instant; using ostk::physics::time::Scale; -using ostk::astro::Dynamics; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::State; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::State; class OpenSpaceToolkit_Astrodynamics_Validation_MissionSequence : public ::testing::Test { diff --git a/validation/OpenSpaceToolkit/Astrodynamics/Parser.cpp b/validation/OpenSpaceToolkit/Astrodynamics/Parser.cpp index dd023a365..acc57a3d4 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/Parser.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/Parser.cpp @@ -4,7 +4,7 @@ namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { @@ -98,12 +98,12 @@ State Parser::CreateInitialState(const Dictionary& aDictionary, const SatelliteS throw ostk::core::error::runtime::Wrong("KEPLERIAN initial conditions not yet supported"); } - const Array> subsets = { + const Array> subsets = { CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient() + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient() }; return StateBuilder(frame, subsets).build(initialInstant, coordinates); @@ -355,5 +355,5 @@ Segment Parser::CreateSegment( } } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk diff --git a/validation/OpenSpaceToolkit/Astrodynamics/Parser.hpp b/validation/OpenSpaceToolkit/Astrodynamics/Parser.hpp index ef038a483..4fdbd802c 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/Parser.hpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/Parser.hpp @@ -57,25 +57,25 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include namespace ostk { -namespace astro +namespace astrodynamics { namespace validation { -using ostk::astro::validation::Quantity; -using ostk::astro::validation::QuantityComparison; -using ostk::astro::validation::Tool; -using ostk::astro::validation::ToolComparison; -using ostk::astro::validation::CrossValidator; +using ostk::astrodynamics::validation::Quantity; +using ostk::astrodynamics::validation::QuantityComparison; +using ostk::astrodynamics::validation::Tool; +using ostk::astrodynamics::validation::ToolComparison; +using ostk::astrodynamics::validation::CrossValidator; using ostk::core::container::Array; using ostk::core::container::Table; @@ -114,29 +114,29 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::Thruster; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::StateBuilder; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::StateBuilder; /// @brief Provide methods to parse a "Mission Sequence Scenario" defined as a YAML standardized format and turn it into /// an OSTk mission sequence object. @@ -212,7 +212,7 @@ class Parser }; } // namespace validation -} // namespace astro +} // namespace astrodynamics } // namespace ostk #endif diff --git a/validation/OpenSpaceToolkit/Astrodynamics/Parser.test.cpp b/validation/OpenSpaceToolkit/Astrodynamics/Parser.test.cpp index a0e4d4aa8..37d2e9351 100644 --- a/validation/OpenSpaceToolkit/Astrodynamics/Parser.test.cpp +++ b/validation/OpenSpaceToolkit/Astrodynamics/Parser.test.cpp @@ -4,11 +4,11 @@ #include -using ostk::astro::validation::Quantity; -using ostk::astro::validation::QuantityComparison; -using ostk::astro::validation::Tool; -using ostk::astro::validation::ToolComparison; -using ostk::astro::validation::Parser; +using ostk::astrodynamics::validation::Quantity; +using ostk::astrodynamics::validation::QuantityComparison; +using ostk::astrodynamics::validation::Tool; +using ostk::astrodynamics::validation::ToolComparison; +using ostk::astrodynamics::validation::Parser; using ostk::core::container::Array; using ostk::core::container::Table; @@ -51,30 +51,30 @@ using ostk::physics::time::Interval; using ostk::physics::time::Scale; using ostk::physics::unit::Mass; -using ostk::astro::Dynamics; -using ostk::astro::dynamics::AtmosphericDrag; -using ostk::astro::dynamics::CentralBodyGravity; -using ostk::astro::dynamics::PositionDerivative; -using ostk::astro::dynamics::ThirdBodyGravity; -using ostk::astro::dynamics::Thruster; -using ostk::astro::eventcondition::InstantCondition; -using ostk::astro::eventcondition::RealCondition; -using ostk::astro::flight::system::PropulsionSystem; -using ostk::astro::flight::system::SatelliteSystem; -using ostk::astro::guidancelaw::ConstantThrust; -using ostk::astro::trajectory::LocalOrbitalFrameDirection; -using ostk::astro::trajectory::LocalOrbitalFrameFactory; -using ostk::astro::trajectory::LocalOrbitalFrameTransformProvider; -using ostk::astro::trajectory::Propagator; -using ostk::astro::trajectory::Segment; -using ostk::astro::trajectory::Sequence; -using ostk::astro::trajectory::State; -using ostk::astro::trajectory::state::CoordinatesBroker; -using ostk::astro::trajectory::state::CoordinatesSubset; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianPosition; -using ostk::astro::trajectory::state::coordinatessubsets::CartesianVelocity; -using ostk::astro::trajectory::state::NumericalSolver; -using ostk::astro::trajectory::StateBuilder; +using ostk::astrodynamics::Dynamics; +using ostk::astrodynamics::dynamics::AtmosphericDrag; +using ostk::astrodynamics::dynamics::CentralBodyGravity; +using ostk::astrodynamics::dynamics::PositionDerivative; +using ostk::astrodynamics::dynamics::ThirdBodyGravity; +using ostk::astrodynamics::dynamics::Thruster; +using ostk::astrodynamics::eventcondition::InstantCondition; +using ostk::astrodynamics::eventcondition::RealCondition; +using ostk::astrodynamics::flight::system::PropulsionSystem; +using ostk::astrodynamics::flight::system::SatelliteSystem; +using ostk::astrodynamics::guidancelaw::ConstantThrust; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameDirection; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameFactory; +using ostk::astrodynamics::trajectory::LocalOrbitalFrameTransformProvider; +using ostk::astrodynamics::trajectory::Propagator; +using ostk::astrodynamics::trajectory::Segment; +using ostk::astrodynamics::trajectory::Sequence; +using ostk::astrodynamics::trajectory::State; +using ostk::astrodynamics::trajectory::state::CoordinateBroker; +using ostk::astrodynamics::trajectory::state::CoordinateSubset; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianPosition; +using ostk::astrodynamics::trajectory::state::coordinatesubset::CartesianVelocity; +using ostk::astrodynamics::trajectory::state::NumericalSolver; +using ostk::astrodynamics::trajectory::StateBuilder; class OpenSpaceToolkit_Astrodynamics_Validation_Parser : public ::testing::Test { @@ -130,9 +130,9 @@ TEST_F(OpenSpaceToolkit_Astrodynamics_Validation_Parser, CreateInitialState) { CartesianPosition::Default(), CartesianVelocity::Default(), - CoordinatesSubset::Mass(), - CoordinatesSubset::SurfaceArea(), - CoordinatesSubset::DragCoefficient(), + CoordinateSubset::Mass(), + CoordinateSubset::SurfaceArea(), + CoordinateSubset::DragCoefficient(), } ) .build(Instant::DateTime(DateTime(2023, 1, 1, 0, 0, 0), Scale::UTC), coordinates);