« GPManeuverSequence » : différence entre les versions
Ligne 66 : | Ligne 66 : | ||
== How to use it == | == How to use it == | ||
To get a <font color=# | To get a [[http://patrius.cnes.fr PATRIUS]] <font color=#4169E1>ManeuversSequence</font> object, we will just have to call for the <font color=#4169E1>getPatriusObject()</font> method as below: | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
ManeuversSequence seq = manSeq.getPatriusObject(); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
''<font color=#FF0000>Note : it | ''<font color=#FF0000>Note: for the previous '''<font color=#FF0000>V1.3(.1)</font>''' versions, it was mandatory to use the specific <font color=#556B2F>'''GENOPUS'''</font> [{{CurrentServer}}/uploads/JavaDocs/V1.3.1/fr/cnes/genopus/nonWidget/maneuvers/CustomManeuverSequence.html CustomManeuverSequence] class.</font>'' | ||
== How it is stored == | == How it is stored == |
Version du 9 octobre 2018 à 15:20
How to call it
For using the GPManeuverSequence class the developer has only to create such an object with these two possibilities:
- With just two boolean parameters to tell
- If the engines and tanks are locally managed or taken in an external data (as the vehicle one)
- to tell if the maneuvers will be displayed one below the other one or just one (false) by one (true)
manSeq = new GPManeuverSequence(true, true);
- Or with an additional parameter that corresponds to an absolute date which will be used as a reference date (for relative positioning of maneuvers).
AbsoluteDate date0 =
new AbsoluteDate(2010, 1, 1, TimeScalesFactory.getUTC());
manSeq = new GPManeuverSequence(date0, true, true);
Display
Reference date
First, the user will have to select a reference date. There are two possibilities:
- “custom”: a specific date will be entered by the user
- “external”: in that case no modification of the date is available as it corresponds to the date initially defined (note that this date may be automatically updated if the initial orbit date is modified).
Engines and Tanks
If the boolean setting the fact that the engines and tanks are locally managed, we will get these two buttons that will permit to get access to their definition. Note that the total available ergol mass is displayed (but not modifiable).
Then the user will have access to a list of maneuvers with all possibilities available with such lists (adding, removing, moving, duplicating …). Each maneuver may be an impulsive or a continuous constant thrust one.
Impulse maneuver
The user will have to define:
- The name of the maneuver
- The frame in which the maneuver is defined
- The maneuver components (Cartesian coordinates or a norm and two angles)
- The orbital event that will trigger the maneuver
- The engine used taken in the list defined in the vehicle characteristics tab
- The tank used taken in the list defined in the vehicle characteristics tab
Constant thrust maneuver
The user will have to define:
- The name of the maneuver
- The frame in which the maneuver is defined
- The maneuver direction (Cartesian coordinates or two angles)
- The orbital event that will trigger the maneuver
- The criteria to end the maneuver (by duration or thanks to another orbital event).
- The engine used taken in the list defined in the vehicle characteristics tab
- The tank used taken in the list defined in the vehicle characteristics tab
How to use it
To get a [PATRIUS] ManeuversSequence object, we will just have to call for the getPatriusObject() method as below:
ManeuversSequence seq = manSeq.getPatriusObject();
Note: for the previous V1.3(.1) versions, it was mandatory to use the specific GENOPUS CustomManeuverSequence class.
How it is stored
Here is the XML format for a sequence:
<ComponentList name="listOfEngines">
<!--Amount of items-->
<Integer name="nbItems">1</Integer>
<ComponentListItem name="Item_1">
<Engine name="Engine">
<String name="name">Engine1</String>
<Real name="isp" unit="s">3.2E2</Real>
<Real name="thrust" unit="N">4.0E2</Real>
</Engine>
</ComponentListItem>
</ComponentList>
<ComponentList name="listOfTanks">
<!--Amount of items-->
<Integer name="nbItems">1</Integer>
<ComponentListItem name="Item_1">
<FuelTank name="Fuel_Tank">
<String name="name">Fuel Tank1</String>
<Real name="propMass" unit="kg">1.0E2</Real>
</FuelTank>
</ComponentListItem>
</ComponentList>
<String name="dateMode">external</String>
<AbsoluteDate name="referenceDate">
<String name="date">01/01/2000 00h00m00s</String>
<String name="scale">UTC</String>
</AbsoluteDate>
<AbsoluteDate name="externalDate">
<String name="date">01/01/2010 00h00m00s</String>
<String name="scale">UTC</String>
</AbsoluteDate>
<!--Ergol mass:-->
<Real name="ergMass" unit="kg">1.0E2</Real>
<Real name="delayImp" unit="s">0.0E0</Real>
<Real name="delayConst" unit="s">0.0E0</Real>
<ComponentList name="ManCustom">
<!--Amount of items-->
<Integer name="nbItems">2</Integer>
<ComponentListItem name="Item_1">
<Maneuver name="Maneuver">
<String name="typeMan">Impulsive</String>
<String name="name">Maneuver1</String>
<ImpulseManeuver name="Impulse_maneuver">
<Frame name="frame">
<String name="frameType">Inertial Frame</String>
<Frame name="inertialType">
<String name="name">EME2000</String>
</Frame>
</Frame>
<AxisCoordinates name="dv">
<String name="type">Custom - Angular coordinates</String>
<Real name="alpha" unit="deg">0.0E0</Real>
<Real name="beta" unit="deg">0.0E0</Real>
<Real name="norm" unit="m/s">1.0E1</Real>
</AxisCoordinates>
<EventSelector name="event">
<String name="eventType">RELATIVE_DATE</String>
<RelativeDateDetector name="eventData">
<DateOffset name="relativeDate">0j00h00m35s</DateOffset>
<String name="actionData">STOP</String>
<Real name="maxCheck" unit="s">1.0E10</Real>
<Real name="threshold" unit="s">1.0E-9</Real>
</RelativeDateDetector>
</EventSelector>
</ImpulseManeuver>
<String name="engine">Engine1</String>
<String name="fuelTank">Fuel Tank1</String>
</Maneuver>
</ComponentListItem>
<ComponentListItem name="Item_2">
<Maneuver name="Maneuver">
<String name="typeMan">Continuous</String>
<String name="name">Maneuver2</String>
<ConstantManeuver name="Constant_maneuver">
<Frame name="frame">
<String name="frameType">Local Orbital Frame</String>
<String name="lofType">LVLH</String>
</Frame>
<AxisCoordinates name="thrustDir">
<String name="type">Custom - Angular coordinates</String>
<Real name="alpha" unit="deg">1.8E2</Real>
<Real name="beta" unit="deg">0.0E0</Real>
</AxisCoordinates>
<EventSelector name="thrustStart">
<String name="eventType">AOL</String>
<AOLDetector name="eventData">
<Real name="aol" unit="deg">1.8E2</Real>
<String name="aolType">true</String>
<Frame name="frameAol">
<String name="name">GCRF</String>
</Frame>
<Integer name="atOccurrence">1</Integer>
<String name="actionData">STOP</String>
<Real name="maxCheck" unit="s">6.0E2</Real>
<Real name="threshold" unit="s">1.0E-6</Real>
</AOLDetector>
</EventSelector>
<String name="Stop_maneuver:__">event</String>
<EventSelector name="thrustEnd">
<String name="eventType">AOL</String>
<AOLDetector name="eventData">
<Real name="aol" unit="deg">2.0E2</Real>
<String name="aolType">true</String>
<Frame name="frameAol">
<String name="name">GCRF</String>
</Frame>
<Integer name="atOccurrence">1</Integer>
<String name="actionData">STOP</String>
<Real name="maxCheck" unit="s">6.0E2</Real>
<Real name="threshold" unit="s">1.0E-6</Real>
</AOLDetector>
</EventSelector>
</ConstantManeuver>
<String name="engine">Engine1</String>
<String name="fuelTank">Fuel Tank1</String>
</Maneuver>
</ComponentListItem>
</ComponentList>