Unstable (#6)
* Fix Average Thrust Calculation (fixes issue #441) Remove test for short time interval before first data point in thrust curve. Comment said it was for numerical stability; multiplying by a small number and then adding doesn't introduce any instabilities I'm aware of in this code. Add parentheses to clarify that values are being multiplied by time intervals, not divided. * Code clarification; should make no difference to results * [refactor] fixed warnings and made variable names more explicit in [Freeform]FinSetConfig Dialogs - de-duped writeCSVFile methods * [Fixes #424] Respaced FinSetConfig Window: Resolved some sources of phantom whitespace; Spacing on component configuration windows is now generally tighter. * [cleanup] Refactored naming in ScaleSelector to be more consistent 'Zoom' -> 'Scale' * [refactor] updated BoundingBox class to be more useful - FlightConfiguration now exposes the BoundingBox method for its rocket * [refactor] Reduce redundant methods in Scalefigures, and harmonize common function names - removed interface that was only inherited by the single AbstractBaseClass - harmonizes the border pixels variables in the scalefigure package * [rm] excised EXTRA_SCALE (==S) factor in ScaleFigure Code * [fix] FinPointFigure now auto-scales correctly - auto-zooms on startup - ScaleSelector Text updates with +/- buttons - adjusts fin-point drawing code * [feat] FinPointFigure draws its parent/mounting half-body (w/front & back terminators) * [fixes #425] FinPointFigure ScrollBars now adjust with zoom in/out * [fix] clicking away from points now longer causes an exception * Version Bump to Alpha 8 * [fixes #424] Addes back in ConfigDialog outside spacing. * [feature][Resolves #426] implemented FinPoint SelectedIndex Indicators - figure and table update each other * [fixes #419] Clicking in fin-point figure now calculates closest segment correctly * [fixes #431] Fins default to instance count / fin count == 1 - Fixed init bug - added unittests for fin count loading/saving/creation * [fix] Revert patch 6289aef0... which introduced simulation anomalies * [resolves #423][partial] BarrowmanCalculator no longer multiplies instanced leaf nodes. * [fix] Fixes the way BarrowmanCalculator handles instancing, particularly for ComponentAssemblies * [test] Moved fins from core-body to booster-body; (they are now doubly-instanced); adjusted tests to accept this. * [refactor] renamed FinSet#fins => FinSet#finCount to make it's meaning more explicit * [minor][debug][oneline] removed excess sys.err debug line * [fixes #439] May now delete points again, in the FreeformFinSetConfig window * [fix] AbstractScaleFigure now stores (& requires!) the visible bounds when setting zoom/scale. - if the visible bounds are larger than the requested scale bounds, then the figure is expanded to match. * [fixes #436] Rocket figures now center as desired. * [fixes #425][fixes #440] FinPointFigure contents are bottom-aligned, properly sized. * [refactor] separated FinSet Tests into files corresponding to FinSet, TrapezoidalFinSet, and FreeformFinSet * [fixes #419] Adding new points to FreeformFins are now placed at the mouse cursor * Little bit more massaging for clarity (replace avgImpulse with impulse) * [fixes #426] reworks FreeformFinSet Selected point display... it is now a second, expanded, different colored box. * missed reversing the operands in the calculation of last bit of impulse * [build] Updated dependencies for running from intellij * [feat] added shared build configurations for Intellij at .idea/runConfigurations/*" * [fix][config] rename Run Target Configurations * [build] added jar artifact for IDEA Intellij build * [fix] run configuration and jar paths are now cross-platform * [fix] may now create and drag a point in one click. * [fix] cleanup up unused imports in core/test/net/sf/openrocket/rocketcomponent/* * [cleanup] removed dead code, and fixed javadocs * [refactor] tightened access specifiers in FinSet.java * [fix][Refactor] rocketcomponent.position.RadiusMethod to be clearer 1. renamed getOuterRadius() => getBoundingRadius() Previous function did not make sense, where implemented in FinSet. 2. Changed implementation of RadiusMethod.*.getRadius() now fails a bit more gracefully. * [fix] Fixes repeated bug in Presets/Material Loading -- inconsistent test criteria * Closes 443 When the events STAGE_SEPARATION and EJECTION_CHARGE are both triggered by BURNOUT, both events occur simultaneously and either can be inserted in EventQueue first. If STAGE_SEPARATION is inserted first, the filter in BasicEventSimulationEngine.java ignoring events from components that are no longer attached to the rocket drops ignores EJECTION_CHARGE. If second stage IGNITION is triggered by EJECTION_CHARGE it is filtered out, and second stage IGNITION fails to happen. This can be seen in the following snippet of a log file: 10592 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=BURNOUT,time=1.03,source=Body tube,data=B4] 10592 DEBUG [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - detected Motor Burnout for motor B4@ 1.03 on stage 1: Stage 10592 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=STAGE_SEPARATION,time=1.03,source=Stage,data=null] 10592 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=EJECTION_CHARGE,time=1.0311458852237796,source=Stage,data=B4], FlightEvent[type=ALTITUDE,time=1.0311458852237796,source=Rocket,data=[25.502739793351193;25.603323566419885]]] 10592 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=STAGE_SEPARATION,time=1.03,source=Stage,data=null] 10592 INFO [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - ==>> @ 1.03115; from Branch: Sustainer ---- Branching: Stage ---- 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=EJECTION_CHARGE,time=1.0311458852237796,source=Stage,data=B4] 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=ALTITUDE,time=1.0311458852237796,source=Rocket,data=[25.502739793351193;25.603323566419885]]] 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Ignoring event from unattached componenent 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=ALTITUDE,time=1.0311458852237796,source=Rocket,data=[25.502739793351193;25.603323566419885]] 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [] 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=ALTITUDE,time=1.0311458852237796,source=Rocket,data=[25.502739793351193;25.603323566419885]] 10593 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Taking simulation step at t=1.0311458852237796 altitude 25.603323566419885 10593 TRACE [pool-4-thread-1] n.s.o.s.RK4SimulationStepper - Too small time step 0.0014030377018961126 (limiting factor 5), using 0.0025 instead. 10593 TRACE [pool-4-thread-1] n.s.o.s.RK4SimulationStepper - Thrust = 0.0 Note here that there was no IGNITION in the sustainer branch, and the Thrust is 0.0 at the end of the snippet. Moving the test for ignition events ahead of the filter assures the IGNITION is scheduled, as seen in this log file snippet: 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=BURNOUT,time=1.03,source=Body tube,data=B4] 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]]] 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=BURNOUT,time=1.03,source=Body tube,data=B4] 8994 DEBUG [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - detected Motor Burnout for motor B4@ 1.03 on stage 1: Stage 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=STAGE_SEPARATION,time=1.03,source=Stage,data=null] 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=EJECTION_CHARGE,time=1.0302951181945657,source=Stage,data=B4], FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]]] 8994 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=STAGE_SEPARATION,time=1.03,source=Stage,data=null] 8995 INFO [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - ==>> @ 1.03030; from Branch: Sustainer ---- Branching: Stage ---- 8995 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=EJECTION_CHARGE,time=1.0302951181945657,source=Stage,data=B4] 8995 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]]] 8995 INFO [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Queueing Ignition Event for: Body tube/334ebb79 / A8 - Armed @: 1.0302951181945657 8995 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Ignoring event from unattached componenent 8995 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=IGNITION,time=1.0302951181945657,source=Body tube,data=A8] 8995 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]]] 8996 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=IGNITION,time=1.0302951181945657,source=Body tube,data=A8] 8996 INFO [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Igniting motor: Body tube/334ebb79 / A8 - Armed @1.0302951181945657 8996 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Obtained event from queue: FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]] 8996 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Remaining EventQueue = [FlightEvent[type=BURNOUT,time=1.7602951181945656,source=Body tube,data=A8]] 8996 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Handling event FlightEvent[type=ALTITUDE,time=1.0302951181945657,source=Rocket,data=[25.478255057184594;25.5788943164009]] 8996 TRACE [pool-4-thread-1] n.s.o.s.BasicEventSimulationEngine - Taking simulation step at t=1.0302951181945657 altitude 25.5788943164009 8996 TRACE [pool-4-thread-1] n.s.o.s.RK4SimulationStepper - Too small time step 0.0012514398786730699 (limiting factor 5), using 0.0025 instead. 8996 TRACE [pool-4-thread-1] n.s.o.s.RK4SimulationStepper - Thrust = 0.015609756097560644 Here, the IGNITION does take place, and Thrust is non-zero. Displaying a plot of the flight, and saving CSV files, shows a normal two-stage flight profile. This commit does two things: (1) adds a little more logging, in particular logging what event has been obtained from EventQueue and logging when that event is ignored. (2) moves the motor ignition events test ahead of the filter, as described above. * Correct active stages after STAGE_SEPARATION event * oops, didn't want to keep the extra debugging log entries * more fixes to stage ignition: now also pays attention to ignition type and additional delay
This commit is contained in:
parent
c7b3466dd5
commit
ac5d71966e