Trajectory tool
Model API name: trajectory
Orbit generator
Version: v1
Input group: trajectory / multiplicity: one
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
orbitTitle | Orbit title |
note: text |
orbit_title | text |
mission definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
missionTitle | Mission title |
note: text |
mission_title | text |
epoch | Mission epoch |
|
startDate | text |
startDate | Start date |
min: unbounded max: unbounded note: ISO date format |
NOW | text |
stopDate | Stop date |
min: unbounded max: unbounded note: ISO date format |
STARTDATE+DURATION | text |
duration | Duration of the representative orbit |
min: 0 max: unbounded |
1 | dt_duration |
orbit definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
orbitSpecificationCode | Orbit specification |
NEI=Near-Earth interplanetary (SAPRE backwards compatability) HEL=Sun synchronous circular orbit for altitude circularAltitude and local solar time SOLARTIME (only available for Earth, Mars, Jupiter, Saturn, Uranus and Neptune). See code 230. GEO=Body stationary equatorial circular orbit (e.g. geosynchronous) at specified longitude. See code 220. 201=Use osculating elements (A, E, inclination, raan, argumentOfPerigee, trueAnomaly). Circular (E=0), elliptical (E<1), parabolic (E=1) and hyperbolic (E>1) orbits are supported. 202=Use osculating elements (A, E, inclination, raan, argumentOfPerigee, trueAnomaly); not compatible with parabolic and hyperbolic trajectories 205=Use osculating elements (periapsis, apoapsis, inclination, longitudeOfApoapsis, argumentOfPerigee, trueAnomaly). Heights above the mean radius of the central body 210=Same as 201, but RAAN is replaced by longitude of apoapsis (longitudeOfApoapsis); not compatible with parabolic and hyperbolic trajectories 220=Body stationary equatorial circular orbit (e.g. geosynchronous) at specified longitude 230=Sun synchronous circular orbit for altitude circularAltitude and local solar time SOLARTIME (only available for Earth, Mars, Jupiter, Saturn, Uranus and Neptune). See code 230. 300=Read an OEM file (ORBITFILE). Trajectory segments for central body BODY or NAIFBODY will be selected 301=Read an OEM file (ORBITFILE). All trajectory segments are read and converted to EME2000 coordinates wrt the Sun 310=Read a TLE file (ORBITFILE) 330=User defined file (ORBITFILE) |
205 | number |
orbitFile |
Trajectory upload
Used if orbitSpecificationCode==310 |
note: text |
text | |
circularAltitude | Circular altitude. |
min: 0 max: unbounded |
2000 | altitude |
longitude | Longitude |
min: 0 max: unbounded |
0 | planar_angle |
localTimeAscendingNode | Local solar time of the ascending node of a Sun synchronous circular orbit |
min: 0 max: 23 |
0.0 | time |
semiMajorAxis |
Semi-major axis)
Used if orbitSpecificationCode==201 or orbitSpecificationCode==202 or orbitSpecificationCode==203 |
min: 0 max: unbounded |
0 | length |
eccentricity |
Eccentricity
Used if orbitSpecificationCode==201 or orbitSpecificationCode==202 or orbitSpecificationCode==203 |
min: 0 max: 1 |
0 | 1 |
perigeeAltitude |
Perigee altitude.
Used if orbitSpecificationCode==205 or orbitSpecificationCode==206 or orbitSpecificationCode==207 |
min: 0 max: unbounded |
800 | altitude |
apogeeAltitude |
Apogee altitude.
Used if orbitSpecificationCode==205 or orbitSpecificationCode==206 or orbitSpecificationCode==207 |
min: 0 max: unbounded |
36000 | altitude |
inclination |
Orbit inclination
Used if orbitSpecificationCode==201 or orbitSpecificationCode==202 or orbitSpecificationCode==203 or orbitSpecificationCode==205 or orbitSpecificationCode==206 or orbitSpecificationCode==207 or orbitSpecificationCode==210 or orbitSpecificationCode==211 or orbitSpecificationCode==212 |
min: 0 max: 180 |
0.0 | plane_angle |
raan | Right ascension of the ascending node |
min: 0 max: 360 |
208.0109 | number |
argumentOfPerigee | Argument of perigee. |
min: 0 max: 360 |
104.622 | plane_angle |
longitudeOfApoapsis | Longitude of apoapsis |
min: 0 max: 360 |
0.0 | plane_angle |
longitudeOfPeriapsis | Longitude of periapsis |
min: 0 max: 360 |
0.0 | plane_angle |
trueAnomaly | True anomaly |
min: 0 max: 360 |
0.0 | plane_angle |
naifCode | Central body |
values: [399, 499, 599] |
399 | number |
includeSolarRadiationPurtubation | Flag for switching off (0) or on (1) perturbations by solar C radiation pressure. |
min: 0 max: 1 |
0 | number |
solarRadiationCrossSection | Cross section for solar radiation pressure. |
min: 0 max: unbounded |
0.0 | number |
includeAtmosphericFrictionPurtubation | Flag for switching off (0) or on (1) perturbations by atmospheric (Earth) friction. |
min: 0 max: 1 |
0 | number |
atmosphericFrictionCrossSection | Cross section for atmospheric friction. |
min: 0 max: unbounded |
0.0 | number |
F107 | Daily value of the F10.7 solar radiation index (W m^-2). |
min: 0 max: unbounded |
150 | irradiance |
F107A | 90 day running average of the F10.7 solar radiation index. |
min: 0 max: unbounded |
150 | irradiance |
timeSteps | Timestep |
min: 0 max: unbounded |
[60, 240, 3600] | dt_duration |
altitudeSteps | Altitude steps for timestep control |
min: 0 max: unbounded |
[20000, 80000] | altitude |
Input group: mission / multiplicity: one
mission definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
missionDuration | Duration of the mission segment |
min: 0 max: unbounded |
1 | dt_duration |
missionStartDate | Start date |
min: unbounded max: unbounded note: ISO date format |
NOW | text |
missionStopDate | Stop date |
min: unbounded max: unbounded note: ISO date format |
STARTDATE+DURATION | text |
|
Model example
# coding=utf-8
from nom_client.nom_client import NoMClient
from nom_client.utils.file_util import read_file_into_array
import matplotlib.pyplot as plt
nom_client = NoMClient(project_name="GREET example",
default_server_id="ext_rest_server")
greet_model = nom_client.get_model('trajectory')
greet_model.set_params(orbitSpecificationCode=210,
epoch="2020-01-01 00:00:00",
startDate="2020-01-01 00:00:00",
missionDuration=30,
naifCode=599,
circularAltitude=200000)
greet_result = nom_client.run_model(greet_model)
print(greet_result)
iso_15390_model = nom_client.get_model('iso_15390')
iso_15390_model.set_external_input(external_input_name="trajectory", external_input=greet_result)
iso_15390_results = nom_client.run_model(iso_15390_model)
print(iso_15390_results)
print(iso_15390_results["particle_spectrum"]["integral_flux"].values)
print(greet_result.file_outputs.keys())
trajectory = greet_result.get_model_result_by_name(result_name="trajectory")
mjd = trajectory.get_variable_data(variable_name="mjd")
altitude = trajectory.get_variable_data(variable_name="altitude")
plt.semilogy(mjd.T, altitude.T, linewidth=2.0, markersize=12.0, label='Altitude')
plt.title('Altitude', fontsize=18)
plt.grid(True)
plt.xlabel("mjd")
plt.ylabel("Altitude (km)")
plt.show()
Model references
No references