ImpulsiveBurn Feature Spec and Test Procedures Lead: Steve C Developer: Darrel STE/GUI Tester: Shawn Explore Failing Tests Other Findings Requirements Interface/Functional Spec Overview Description Fields GUI Remarks Examples Test Procedures Assumptions Existing Tests Recommended Additional Tests Appendix A - Miscellaneous Data Maneuver Test Object Definitions Re: Maneuver Test Object Definitions Re: Maneuver Test Object Definitions Re: Maneuver Test Object Definitions GMAT Math Specs for Thruster/ISP Polynomials STK GUI Screen Snaps: NOTES Explore Known bugs/issues committed in JIRA against this feature: JIRA ID Summary Comment GMT-2674 Report Command Does Not Get New Name for Renamed Impulsive burn Objects. Closed 7/2/12 by anonymous. GMT-2615 User allowed to delete Impulsive Burn being used by Report command Closed 7/19/12. GMT-399 Review To/FromMJ2000Eq uses Still open as of 11/27/12, assigned to SPH. Note that GMT-2589 is the ImpulsiveBurn QA task (not a bug). Failing Tests All the ImpulsiveBurn test names begin with either IBurn or ImpulsiveBurn. Run Identification: [Gmat-buildtest] Test results: 2012-06-18 (Win7-64/GMAT-32/M2010a/VS) These tests run to completion but fail: ImpulsiveBurn_Validation_Isp_7 (script) [no error or exception] Comments/Actions Taken: ● ImpulsiveBurn_Validation_Isp_7.script: %--- Initialize objects and user-defined quantities Create ImpulsiveBurn ImpulsiveBurn1 Create Variable var Create String str Create Array arr[3,3] var = 5 str = 'myStr' arr(2,1) = 3 ImpulsiveBurn1.Isp = 0; BeginMissionSequence ■ ISP is allowed to be zero according to GUI error message. Change ISP value to -1 in the GMAT script. Test now passes. (i.e., error message received). ImpulsiveBurn_Validation_GravitationalAccel_7 (script) [no error or exception] Comments/Actions Taken: ● ImpulsiveBurn_Validation_GravitationalAccel_7.script: %--- Initialize objects and user-defined quantities Create ImpulsiveBurn ImpulsiveBurn1 Create Variable var Create String str Create Array arr[3,3] var = 5 str = 'myStr' arr(2,1) = 3 ImpulsiveBurn1.GravitationalAccel = 0; BeginMissionSequence ● GravitationalAccel is not allowed to be 0 or negative. In GUI, this restriction is implemented but not in the script. Submitted bug, GMT-2865 which was closed 11/27/12. Other Findings Submitted bug, GMT-2860, LVLH Definition. Resolution: Closed 8/16/12. Submitted bug, GMT-2865, Validation fails for ImpulsiveBurn GravitationalAccel field. Resolution: Closed 11/27/12. Submitted bug, GMT-2908, Issue with Decrement Mass for Impulsive Maneuver. Resolution: Closed 8/16/12. Recommendations/Questions 1 In the GUI display, should ThrustDirection1,2,3 be replaced by Element1,2,3? If so, change ToolTips accordingly as well. (Replace thrust by DeltaV). a Update 11/27/12. ThrustDirection has been replaced by Element. Should “Thrust Vector” be replaced by “Delta-V Vector?” If so, change tool tips as well. Submitted bug, GMT-3409, Suggested changes to Impulsive Burn GUI panel 2 See two questions on FRR-11.4.1 in the Requirements section. Requirements These are working requirements. They are included here for review and convenience purposes. After review, requirements are maintained in the formal SRS located at SourceForge in /trunk/doc/SystemDocs/Requirements. ID Requirements FRR-11.1.0 The impulsive burn model shall allow the user to define the maneuver vector in the following coordinate systems: FRR-11.1.1 1) Any coordinate system defined in 2) Local systems based on a user- FRR-35 FRR-11.1.2.0 provided central body FRR-11.1.2.1 1) Local VNB FRR-11.1.2.2 2) LVLH, FRR-11.1.2.3 3) MJ2000Eq 4) Spacecraft body coordinate FRR-11.1.2.4 system FRR-11.2.0 FRR-11.2.1 The impulsive burn model shall allow the user to specify the thrust vector using the following vector formats: 1) Cartesian FRR-11.3 The impulsive burn model shall allow the user to either decrement mass during a maneuver or leave mass unchanged. FRR-11.4.0 The impulsive burn model shall allow the user to specify the following parameters for use in calculating mass depletion due to an impulsive burn: FRR-11.4.1 1) Gravitational acceleration FRR-11.4.2 2) Isp FRR-11.4.3 3) Tank Interface/Functional Spec Overview An impulsive maneuver. Description The impulsive burn object allows the spacecraft to undergo an instantaneous Delta-v (ΔV), as opposed to a finite burn which is not instantaneous, by specifying the three vector components of the delta-v. The user can configure the burn by defining its coordinate system and vector component values. For Local coordinate systems, the user can choose the origin and type of axes. Depending on the mission, it may be simpler to use one coordinate system over another. Fields See the User Interface Spec spreadsheet for reference information for fields. GUI Introduction The ImpulsiveBurn dialog box allows you to specify properties of an impulsive burn including DeltaV component values and choice of coordinate system. If you choose to model fuel loss associated with an impulsive burn, you must specify choice of fuel tank as well as ISP value and gravitational acceleration used to calculate fuel use. The layout of the ImpulsiveBurn dialog box is shown below. The “Origin” and “Axes” fields are only relevant if “Coordinate System” is set to Local. See the Remarks for more detail on local coordinate systems. If “Decrement Mass” is checked, then you can select the desired FuelTank used as the fuel supply for mass depletion. Remarks Local Coordinate Systems Here, a Local coordinate system is defined as one that we configure "locally" using the thruster object interface as opposed to defining a coordinate system using the Coordinate Systems folder in the Resources Tree. To configure a Local coordinate system, you must specify the coordinate system of the input DeltaV vector, Element1-3. If you choose a local coordinate system, the four choices available, as given by the Axes sub-field, are VNB, LVLH, MJ2000Eq, and SpacecraftBody. VNB or VelocityNormal-Binormal is a non-inertial coordinate system based upon the motion of the spacecraft with respect to the Origin sub-field. For example, if the Origin is chosen as Earth, then the X-axis of this coordinate system is the along the velocity of the spacecraft with respect to the Earth, the Y- axis is along the instantaneous orbit normal (with respect to the Earth) of the spacecraft, and the Zaxis points away from the Earth as much as possible while remaining orthogonal to the other two axes, completing the right-handed set. Similarly, Local Vertical Local Horizontal or LVLH is a non-inertial coordinate system based upon the motion of the spacecraft with respect to the body specified in the Origin sub-field. If you choose Earth as the origin, then the X-axis of this coordinate system points from the center of the Earth to the spacecraft, the Z-axis is along the instantaneous orbit normal (with respect to the Earth) of the spacecraft, and the Y-axis completes the right-handed set. For typical bound orbits, the Y-axis is approximately aligned with the velocity vector. In the event of a perfectly circular orbit, the Y axis is exactly along the velocity vector. MJ2000Eq is the J2000-based Earth-centered Earth mean equator inertial coordinate system. Note that the Origin sub-field is not needed to define this coordinate system. SpacecraftBody is the coordinate system used by the spacecraft. Since the thrust is applied in this system, GMAT uses the attitude of the spacecraft, a spacecraft attribute, to determine the inertial thrust direction. Note that the Origin sub-field is not needed to define this coordinate system. Interactions Spacecraft resource Must be created in order to apply any burn. FuelTank resource If you want to model mass depletion for an impulsive maneuver, attach a FuelTank to the maneuvered spacecraft as a source of fuel mass. Maneuver command Must use the Maneuver command to apply an impulsive burn to a spacecraft. Vary command If user wants to allow the impulsive burn components to vary in order to achieve some goal, then the Vary command, as part of a Target or Optimize command sequence, must be used. Examples Create a default FuelTank and an ImpulsiveBurn that allows for fuel depletion, assign the ImpulsiveBurn the default FuelTank, attach the FuelTank to a Spacecraft, and apply the ImpulsiveBurn to the Spacecraft. % Create the FuelTank Object Create FuelTank FuelTank1; GMAT FuelTank1.AllowNegativeFuelMass = false; GMAT FuelTank1.FuelMass = 756; GMAT FuelTank1.Pressure = 1500; GMAT FuelTank1.Temperature = 20; GMAT FuelTank1.RefTemperature = 20; GMAT FuelTank1.Volume = 0.75; GMAT FuelTank1.FuelDensity = 1260; GMAT FuelTank1.PressureModel = PressureRegulated; Create ImpulsiveBurn DefaultIB; GMAT DefaultIB.CoordinateSystem = Local; GMAT DefaultIB.Origin = Earth; GMAT DefaultIB.Axes = VNB; GMAT DefaultIB.Element1 = 0.001; GMAT DefaultIB.Element2 = 0; GMAT DefaultIB.Element3 = 0; GMAT DefaultIB.DecrementMass = true; GMAT DefaultIB.Tank = {FuelTank1}; GMAT DefaultIB.Isp = 300; GMAT DefaultIB.GravitationalAccel = 9.810000000000001; % Add the the FuelTank to a Spacecraft GMAT Create Spacecraft DefaultSC; GMAT DefaultSC.Tanks = {FuelTank1}; BeginMissionSequence Maneuver DefaultIB(DefaultSC); Test Procedures Assumptions None. Existing Tests There are 785 files of the form *.tc. Test Name Description IBurn*_Sc*_IB*_CS*_Tank*.tc The file name specifies the central body used for integration, the spacecraft, impulsive burn configuration, coordinate system, and Tank configuration according to the forum entry by JTichy. There are 728 *.tc files of this type. Eight of the 728 file names of this type have the form, IBurn*_Sc*_IB*_CS*_Tank*cmd*.tc which means that they test commands in the mission sequence. *validation*.tc Validation type tests. There are 57 tests of this type. According to the table above, there are 728 + 57 = 785 files accounted for which agrees with the known number of test cases. Recommended Additional Tests 1 Added tests of local (LVLH and VNB, both default and user defined) coordinate systems. Quantities varied are (a) Origin used to input initial state and (b) Body used to define LVLH and VNB. ○ IBurn_Impulsive_Burn_Permutations_LVLH ○ IBurn_Impulsive_Burn_Permutations_VNB Unique Validation Test Name Summary ImpulsiveBurn_Validation_Tank_Attach Test ImpulsiveBurn DecrementMass = true when no ment tank is added to the s/c. Clear error message should be thrown. Will verify bug, GMT-2908, Issue with Decrement Mass for Impulsive Maneuver, is fixed. ImpulsiveBurn_Validation_Tank_Attach Test ImpulsiveBurn DecrementMass = true when no ment_1 tank is added to ImpulsiveBurn. Clear error message should be thrown. (tank is attached to s/c). Test currently passes. ImpulsiveBurn_Validation_Tank_Attach Test ImpulsiveBurn DecrementMass = true when no ment_2 tank is added to ImpulsiveBurn. Clear error message should be thrown. (tank is not attached to s/c). Test currently passes. Unique Mode Tests Test Name Summary IBurn_Mars_ScA_IBF_CS4_TankA_cmd Impulsive Burn and associated sub-objects, all with non-default values, are created in command mode. Test currently fails. (Sc.TankA.PressureModel = PressureRegulated; command is the issue) Appendix A - Miscellaneous Data Note that this data is primarily for the internal use of the feature lead. It does not need to be reviewed by the SDE and STE. Maneuver Test Object Definitions Spacecraft Definitions ScA is the Baseline spacecraft with the following definition Sc.CentralBody = Planet; '//State information'; 'Sc.Epoch = 21545.000000000;' '//Physical Information'; 'Sc.VehicleDryMass = 850;' 'Sc.Cd = 2.2;' 'Sc.Cr = 1.8;' 'Sc.DragArea = 15;' 'Sc.SRPArea = 1;' '//Attitude'; 'Sc.AttitudeRefFrame = ''MJ2000Eq'';' 'Sc.Q1 = 0;' 'Sc.Q2 = 0;' 'Sc.Q3 = 0;' 'Sc.Q4 = 1;' ScB has drymass increased to 1000kg ScC has a lower Cd value and should not change the script in any way because drag is not modeled ScD has a lower Cr and should also not affect the output of the scripts due to not being modeled ScE has a higher drag area and should not affect the output due to not being modeled ScF has Sc.Q1 as the main direction of the attitude ScG has Sc.Q2 ScH has Sc.Q3 ScI has higher SRP area and should never affect the outcome of the results JTichy Posts: 26 Joined: Tue May 12, 2009 5:02 pm Top Re: Maneuver Test Object Definitions by JTichy » Thu Oct 08, 2009 3:38 pm Tank Definitions TankA being the baseline tank with the following values '// Tank A Baseline Tank'; 'TankA.TankMass = 725;' 'TankA.TankPressure = 1200;' 'TankA.TankTemperature = 20;' 'TankA.TankRefTemperature= 12;' 'TankA.TankVolume = 0.8;' 'TankA.TankFuelDensity = 1029;' 'TankA.TankPressureControl = 1;' TankB has the tank filled at Maximum Capacity for the given parameters where Tank Mass = 820 TankC has ultra high pressure of 2500 TankD has lower pressure of 725 TankE has extremely high temp of 200 TankF has a low temperature of 2 TankG has a high ref temp of 100 TankH has a low ref temp of 2 TankI has a large tank Volume = 80 TankJ has a low fuel density and altered tank volume to compensate TankK has extremely high fuel density 2500 L - V are same as above except with Blowdown modeled for pressure regulation JTichy Posts: 26 Joined: Tue May 12, 2009 5:02 pm Top Re: Maneuver Test Object Definitions by JTichy » Tue Oct 13, 2009 9:30 am Thruster Definitions Thruster A is the chosen baseline thruster and has the following definition ThrusterA.CoordinateSystem = ',CoordSys,' ThrusterA.Origin = ',Planet,' ThrusterA.Axes = 'AxesCode' ThrusterA.Element1 = 1 ThrusterA.Element2 = 0 ThrusterA.Element3 = 0 ThrusterA.DutyCycle = 1 ThrusterA.ThrustScaleFactor = 1 ThrusterA.DecrementMass = true ThrusterA.Tank = {'tanksin'} ThrusterA.GravitationalAccel = 9.81 ThrusterA.C1 = 10 ThrusterA.C2 = 0.25 ThrusterA.C3 = 0.25 ThrusterA.C4 = 0 ThrusterA.C5 = 0 ThrusterA.C6 = 0 ThrusterA.C7 = 0 ThrusterA.C8 = 0 ThrusterA.C9 = 0 ThrusterA.C10 = 0 ThrusterA.C11 = 0 ThrusterA.C12 = 0 ThrusterA.C13 = 0 ThrusterA.C14 = 0 ThrusterA.C15 = 0 ThrusterA.C16 = 0 ThrusterA.K1 = 300 ThrusterA.K2 = 0.25 ThrusterA.K3 = 0.25 ThrusterA.K4 = 0 ThrusterA.K5 = 0 ThrusterA.K6 = 0 ThrusterA.K7 = 0 ThrusterA.K8 = 0 ThrusterA.K9 = 0 ThrusterA.K10 = 0 ThrusterA.K11 = 0 ThrusterA.K12 = 0 ThrusterA.K13 = 0 ThrusterA.K14 = 0 ThrusterA.K15 = 0 ThrusterA.K16 = 0 Thruster B has its direction equally spaced in all directions of the coordinate system where X = Y = Z = 0.5774 Thruster C has a low duty cycle of 0.1 Thruster D has a low thrust scale factor of 0.1 Thruster E has an alternate g_accel of 12.14 Thruster F has a loaded thruster polynomial which evaluates to 10 Newtons when coupled with Tank A Thruster G has a loaded Isp polynomial which evaluates to 300 seconds when coupled with Tank A Thruster H has decrement mass turned off JTichy Posts: 26 Joined: Tue May 12, 2009 5:02 pm Top Re: Maneuver Test Object Definitions by JTichy » Tue Oct 13, 2009 9:35 am Coordinate Systems CS0 is Mean of J2000 Equatorial CS1 is VNB CS2 is LVLH where X_GMAT = Z_FreeFlyer; Y_GMAT = Y_FreeFlyer; Z_GMAT = -X_FreeFlyer CS3 is Spacecraft Body Coordinate System CS4 is a custom defined VNB frame and compared against FreeFlyers regular VNB for accuracy (CS1 and CS4 scripts should produce the same output) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GMAT Math Specs for Thruster/ISP Polynomials STK GUI Screen Snaps: Pressure in Pascals (Pa), Thrust in Newtons, ISP in seconds, and temperature in Kelvin. NOTES 1 Error below only gets caught at run time: Report rf SC.garbage.X