bug fixes

This commit is contained in:
Sampo Niskanen 2010-03-06 09:02:36 +00:00
parent bdbf3ee9dd
commit 6a4ee4702b
14 changed files with 679 additions and 56 deletions

View File

@ -1,3 +1,11 @@
2010-03-05 Sampo Niskanen
* [BUG] Fixed exception for fins with small root chord
2010-02-26 Sampo Niskanen
* Simulation panel max.acceleration now from flight stage only
2010-02-17 Sampo Niskanen
* Released version 0.9.6

4
TODO
View File

@ -7,7 +7,7 @@ Must-have:
- Go through thrust curves and select best ones
- Updated splash screen
- BUG: Invalid fin points possible when removing points
Maybe:
@ -167,3 +167,5 @@ In 0.9.6:
exponential growth until time step is reached (t1 = 1.5*t0)
- Limit time step during while on launch rod
- Re-investigate 15% reduction of three-fin CNa
In 0.9.7:
- BUG: Simulation table max. acceleration takes into account parachute deceleration

91
doc/simulation-2.0.uml Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<uml:Package xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_J062EPIyEd6814i1KDlzfw" name="net.sf.openrocket.simulation">
<elementImport xmi:id="_J8VFoPIyEd6814i1KDlzfw">
<importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</elementImport>
<elementImport xmi:id="_J8VFofIyEd6814i1KDlzfw">
<importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</elementImport>
<elementImport xmi:id="_J8VssPIyEd6814i1KDlzfw">
<importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</elementImport>
<elementImport xmi:id="_J8VssfIyEd6814i1KDlzfw">
<importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</elementImport>
<packagedElement xmi:type="uml:Class" xmi:id="_Tba2QPIyEd6814i1KDlzfw" name="BasicSimulationEngine" clientDependency="_-iWDsPIzEd6814i1KDlzfw">
<interfaceRealization xmi:id="_-iWDsPIzEd6814i1KDlzfw" supplier="_cpXMgPIyEd6814i1KDlzfw" client="_Tba2QPIyEd6814i1KDlzfw" contract="_cpXMgPIyEd6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_cpXMgPIyEd6814i1KDlzfw" name="SimulationEngine">
<ownedOperation xmi:id="_f7S3UPIyEd6814i1KDlzfw" name="simulate">
<ownedParameter xmi:id="_lcXTMPIyEd6814i1KDlzfw" direction="return"/>
<ownedParameter xmi:id="_lcX6QPIyEd6814i1KDlzfw" name="SimulationConditions"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_E_lM4PI0Ed6814i1KDlzfw" name="SimulationCalculator">
<ownedOperation xmi:id="_Zi4R0PI0Ed6814i1KDlzfw" name="step">
<ownedParameter xmi:id="_ag6nYPI0Ed6814i1KDlzfw" direction="return"/>
<ownedParameter xmi:id="_ag6nYfI0Ed6814i1KDlzfw" name="SimulationStatus"/>
</ownedOperation>
<ownedOperation xmi:id="_4Xf1kPI0Ed6814i1KDlzfw" name="initialize">
<ownedParameter xmi:id="_5bYUcPI0Ed6814i1KDlzfw" direction="return"/>
<ownedParameter xmi:id="_5bY7gPI0Ed6814i1KDlzfw" name="SimulationStatus"/>
</ownedOperation>
<ownedOperation xmi:id="_5w4qYPI0Ed6814i1KDlzfw" name="store">
<ownedParameter xmi:id="_6n_4kPI0Ed6814i1KDlzfw" direction="return"/>
<ownedParameter xmi:id="_6oAfoPI0Ed6814i1KDlzfw" name="SimulationStatus"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_GxqOgPI0Ed6814i1KDlzfw" name="CartesianCalculator" clientDependency="_SwleoPI0Ed6814i1KDlzfw">
<interfaceRealization xmi:id="_SwleoPI0Ed6814i1KDlzfw" supplier="_E_lM4PI0Ed6814i1KDlzfw" client="_GxqOgPI0Ed6814i1KDlzfw" contract="_E_lM4PI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_JF1QkPI0Ed6814i1KDlzfw" name="CartesianLaunchCalculator">
<generalization xmi:id="_PK6YcPI0Ed6814i1KDlzfw" general="_GxqOgPI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_LMYtYPI0Ed6814i1KDlzfw" name="CartesianFlightCalculator">
<generalization xmi:id="_PzSAAPI0Ed6814i1KDlzfw" general="_GxqOgPI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MplrMPI0Ed6814i1KDlzfw" name="CartesianLandingCalculator">
<generalization xmi:id="_QQTTMPI0Ed6814i1KDlzfw" general="_GxqOgPI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_TpljMPI0Ed6814i1KDlzfw" name="SphericalCalculator" clientDependency="_Vi51QPI0Ed6814i1KDlzfw">
<interfaceRealization xmi:id="_Vi51QPI0Ed6814i1KDlzfw" supplier="_E_lM4PI0Ed6814i1KDlzfw" client="_TpljMPI0Ed6814i1KDlzfw" contract="_E_lM4PI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_dO-wIPI0Ed6814i1KDlzfw" name="AbstractSimulationStatus (?)" clientDependency="_WkCPYPJmEd6814i1KDlzfw" isAbstract="true">
<interfaceRealization xmi:id="_WkCPYPJmEd6814i1KDlzfw" supplier="_CNJOwPJmEd6814i1KDlzfw" client="_dO-wIPI0Ed6814i1KDlzfw" contract="_CNJOwPJmEd6814i1KDlzfw"/>
<ownedOperation xmi:id="_fWLGIPI0Ed6814i1KDlzfw" name="getPosition">
<ownedParameter xmi:id="_hKvbEPI0Ed6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_hhJI4PI0Ed6814i1KDlzfw" name="getAltitude">
<ownedParameter xmi:id="_iJ4j4PI0Ed6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_inlMgPI0Ed6814i1KDlzfw" name="getOrientation">
<ownedParameter xmi:id="_jSE7API0Ed6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_1aRPcPI0Ed6814i1KDlzfw" name="getConfiguration">
<ownedParameter xmi:id="_2T4YAPI0Ed6814i1KDlzfw" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_oIIrAPI0Ed6814i1KDlzfw" name="CartesianSimulationStatus">
<generalization xmi:id="_qQ68cPI0Ed6814i1KDlzfw" general="_dO-wIPI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_GqNGMPI1Ed6814i1KDlzfw" name="SphericalSimulationStatus">
<generalization xmi:id="_JAnj8PI1Ed6814i1KDlzfw" general="_dO-wIPI0Ed6814i1KDlzfw"/>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_CNJOwPJmEd6814i1KDlzfw" name="SimulationStatus">
<ownedOperation xmi:id="_EEdVsPJmEd6814i1KDlzfw" name="getAltitude">
<ownedParameter xmi:id="_FBjQEPJmEd6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_FUn9EPJmEd6814i1KDlzfw" name="getPosition">
<ownedParameter xmi:id="_F9Z0UPJmEd6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_GxzFsPJmEd6814i1KDlzfw" name="getVelocity">
<ownedParameter xmi:id="_HuFu0PJmEd6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_IGCUwPJmEd6814i1KDlzfw" name="getSpeed">
<ownedParameter xmi:id="_IfWzsPJmEd6814i1KDlzfw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_JT0WgPJmEd6814i1KDlzfw" name="getConfiguration">
<ownedParameter xmi:id="_J4oTwPJmEd6814i1KDlzfw" direction="return"/>
</ownedOperation>
</packagedElement>
</uml:Package>

479
doc/simulation-2.0.umlclass Normal file
View File

@ -0,0 +1,479 @@
<?xml version="1.0" encoding="UTF-8"?>
<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_J8WTwPIyEd6814i1KDlzfw" type="UMLClass" name="simulation-2.0.umlclass" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_PJd44PIyEd6814i1KDlzfw" type="2014">
<children xmi:type="notation:Node" xmi:id="_PJfHAPIyEd6814i1KDlzfw" type="5020"/>
<children xmi:type="notation:Node" xmi:id="_PJfHAfIyEd6814i1KDlzfw" type="7032">
<styles xmi:type="notation:DrawerStyle" xmi:id="_PJfHAvIyEd6814i1KDlzfw" collapsed="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_PJfHA_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_PJfuEPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_PJfuEfIyEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_PJd44fIyEd6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Package" href="simulation-2.0.uml#_J062EPIyEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_PJef8PIyEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Tns-wPIyEd6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_Tnx3QPIyEd6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_TrWvsPIyEd6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_TnzFYPIyEd6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_Tn2vwPIyEd6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Tn2vwfIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Tn2vwvIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Tn2vw_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Tn2vxPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Tn2vxfIyEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_ToC9APIyEd6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_ToC9AfIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_ToC9AvIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_ToC9A_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_ToC9BPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_ToC9BfIyEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_ToFZQPIyEd6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_ToFZQfIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_ToFZQvIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_ToFZQ_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_ToFZRPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_ToFZRfIyEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_Tns-wfIyEd6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Tns-wvIyEd6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_Tba2QPIyEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tns-w_IyEd6814i1KDlzfw" x="24" y="264"/>
</children>
<children xmi:type="notation:Node" xmi:id="_cqKdwPIyEd6814i1KDlzfw" type="2013">
<children xmi:type="notation:Node" xmi:id="_cqM6APIyEd6814i1KDlzfw" type="5018"/>
<children xmi:type="notation:Node" xmi:id="_cqTAoPIyEd6814i1KDlzfw" type="7029">
<styles xmi:type="notation:DrawerStyle" xmi:id="_cqTAofIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_cqTAovIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_cqTAo_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_cqTnsPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_cqTnsfIyEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_cqWrAPIyEd6814i1KDlzfw" type="7030">
<children xmi:type="notation:Node" xmi:id="_f8HWsPIyEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_f7S3UPIyEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_f8HWsfIyEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_cqWrAfIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_cqXSEPIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_cqXSEfIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_cqXSEvIyEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_cqgcAPIyEd6814i1KDlzfw" type="7031">
<styles xmi:type="notation:TitleStyle" xmi:id="_cqgcAfIyEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_cqgcAvIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_cqgcA_IyEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_cqgcBPIyEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_cqKdwfIyEd6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Interface" href="simulation-2.0.uml#_cpXMgPIyEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_cqKdwvIyEd6814i1KDlzfw" x="12" y="96"/>
</children>
<children xmi:type="notation:Node" xmi:id="_FAHYYPI0Ed6814i1KDlzfw" type="2013">
<children xmi:type="notation:Node" xmi:id="_FAJNkPI0Ed6814i1KDlzfw" type="5018"/>
<children xmi:type="notation:Node" xmi:id="_FALCwPI0Ed6814i1KDlzfw" type="7029">
<styles xmi:type="notation:DrawerStyle" xmi:id="_FALCwfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_FALCwvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_FALCw_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_FALCxPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_FALCxfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_FAMQ4PI0Ed6814i1KDlzfw" type="7030">
<children xmi:type="notation:Node" xmi:id="_ZjnRoPI0Ed6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_Zi4R0PI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZjnRofI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_4X6sUPI0Ed6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_4Xf1kPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_4X6sUfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_5xThIPI0Ed6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_5w4qYPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_5xThIfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_FAMQ4fI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_FAMQ4vI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_FAMQ4_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_FAMQ5PI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_FANfAPI0Ed6814i1KDlzfw" type="7031">
<styles xmi:type="notation:TitleStyle" xmi:id="_FANfAfI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_FANfAvI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_FANfA_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_FANfBPI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_FAHYYfI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Interface" href="simulation-2.0.uml#_E_lM4PI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_FAHYYvI0Ed6814i1KDlzfw" x="420" y="103"/>
</children>
<children xmi:type="notation:Node" xmi:id="_GyzeAPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_Gy0sIPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_GzGY8PI0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gy1TMPI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_Gy16QPI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gy16QfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gy16QvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gy16Q_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gy16RPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gy16RfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gy2hUPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gy2hUfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gy2hUvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gy2hU_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gy2hVPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gy2hVfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gy3vcPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gy3vcfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gy3vcvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gy3vc_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gy3vdPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gy3vdfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_GyzeAfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_GyzeAvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_GxqOgPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_GyzeA_I0Ed6814i1KDlzfw" x="367" y="344"/>
</children>
<children xmi:type="notation:Node" xmi:id="_JGxEsPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_JGyS0PI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_JHBjYPI0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_JGy54PI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_JGy54fI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_JGy54vI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_JGy54_I0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_JGy55PI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_JGy55fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_JGy55vI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_JG0IAPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_JG0IAfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_JG0IAvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_JG0IA_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_JG0IBPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_JG0IBfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_JG0vEPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_JG0vEfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_JG0vEvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_JG0vE_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_JG0vFPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_JG0vFfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_JGxEsfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_JGxEsvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_JF1QkPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_JGxEs_I0Ed6814i1KDlzfw" x="201" y="498"/>
</children>
<children xmi:type="notation:Node" xmi:id="_LNeSgPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_LNfgoPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_LNm1YPI0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_LNfgofI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_LNgHsPI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_LNgHsfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_LNgHsvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_LNgHs_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LNgHtPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_LNgHtfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_LNguwPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_LNguwfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_LNguwvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_LNguw_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LNguxPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_LNguxfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_LNhV0PI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_LNhV0fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_LNh84PI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_LNh84fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_LNh84vI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_LNh84_I0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_LNeSgfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_LNeSgvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_LMYtYPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_LNeSg_I0Ed6814i1KDlzfw" x="359" y="597"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Mqo0EPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_MqqCMPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_Mqx-API0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_MqqpQPI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_MqqpQfI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_MqqpQvI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_MqqpQ_I0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_MqqpRPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_MqqpRfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_MqqpRvI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_MqrQUPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_MqrQUfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_MqrQUvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_MqrQU_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Mqr3YPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Mqr3YfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_MqsecPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_MqsecfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_MqsecvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Mqsec_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_MqsedPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_MqsedfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_Mqo0EfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Mqo0EvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_MplrMPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mqo0E_I0Ed6814i1KDlzfw" x="511" y="486"/>
</children>
<children xmi:type="notation:Node" xmi:id="_TqEEUPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_TqF5gPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_TqNOQPI0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_TqF5gfI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_TqGgkPI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_TqGgkfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_TqGgkvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_TqGgk_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_TqGglPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_TqGglfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_TqHHoPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_TqHHofI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_TqHHovI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_TqHHo_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_TqHHpPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_TqHHpfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_TqHusPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_TqIVwPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_TqIVwfI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_TqIVwvI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_TqIVw_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_TqIVxPI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_TqErYPI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_TqErYfI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_TpljMPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TqErYvI0Ed6814i1KDlzfw" x="600" y="348" height="37"/>
</children>
<children xmi:type="notation:Node" xmi:id="_dPmbMPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_dPnpUPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_dPvlIPI0Ed6814i1KDlzfw" bold="true" italic="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_dPoQYPI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_dPoQYfI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_dPoQYvI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_dPoQY_I0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_dPoQZPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_dPoQZfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_dPoQZvI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_dPo3cPI0Ed6814i1KDlzfw" type="7002">
<children xmi:type="notation:Node" xmi:id="_fW2bkPI0Ed6814i1KDlzfw" type="3002">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_fWLGIPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_fW2bkfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_hh9BMPI0Ed6814i1KDlzfw" type="3002">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_hhJI4PI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_hh9BMfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_ioBRYPI0Ed6814i1KDlzfw" type="3002">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_inlMgPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ioBRYfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_1asGMPI0Ed6814i1KDlzfw" type="3002">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_1aRPcPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_1asGMfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:DrawerStyle" xmi:id="_dPo3cfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_dPo3cvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_dPpegPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_dPpegfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_dPpegvI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_dPqFkPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_dPqFkfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_dPqFkvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_dPqFk_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_dPqFlPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_dPqFlfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_dPmbMfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_dPmbMvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_dO-wIPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_dPmbM_I0Ed6814i1KDlzfw" x="900" y="324"/>
</children>
<children xmi:type="notation:Node" xmi:id="_oI5gAPI0Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_oI6uIPI0Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_oJCp8PI0Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_oI7VMPI0Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_oI78QPI0Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_oI78QfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_oI78QvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_oI78Q_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_oI78RPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_oI78RfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_oI8jUPI0Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_oI8jUfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_oI8jUvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_oI8jU_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_oI8jVPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_oI8jVfI0Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_oI9KYPI0Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_oI9KYfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_oI9KYvI0Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_oI9KY_I0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_oI9KZPI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_oI9KZfI0Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_oI5gAfI0Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_oI5gAvI0Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_oIIrAPI0Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_oI5gA_I0Ed6814i1KDlzfw" x="840" y="504"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gq8GAPI1Ed6814i1KDlzfw" type="2001">
<children xmi:type="notation:Node" xmi:id="_Gq9UIPI1Ed6814i1KDlzfw" type="5003">
<styles xmi:type="notation:FontStyle" xmi:id="_GrF3API1Ed6814i1KDlzfw" bold="true"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gq97MPI1Ed6814i1KDlzfw" type="5019"/>
<children xmi:type="notation:Node" xmi:id="_Gq97MfI1Ed6814i1KDlzfw" type="7001">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gq97MvI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gq97M_I1Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gq97NPI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gq97NfI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gq97NvI1Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gq-iQPI1Ed6814i1KDlzfw" type="7002">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gq-iQfI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gq-iQvI1Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gq_JUPI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gq_JUfI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gq_JUvI1Ed6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Gq_wYPI1Ed6814i1KDlzfw" type="7003">
<styles xmi:type="notation:DrawerStyle" xmi:id="_Gq_wYfI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_Gq_wYvI1Ed6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_Gq_wY_I1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_Gq_wZPI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gq_wZfI1Ed6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_Gq8GAfI1Ed6814i1KDlzfw" fontName="Sans"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_Gq8GAvI1Ed6814i1KDlzfw"/>
<element xmi:type="uml:Class" href="simulation-2.0.uml#_GqNGMPI1Ed6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gq8GA_I1Ed6814i1KDlzfw" x="1068" y="504"/>
</children>
<children xmi:type="notation:Node" xmi:id="_CNqMIPJmEd6814i1KDlzfw" type="2013">
<children xmi:type="notation:Node" xmi:id="_CNqzMPJmEd6814i1KDlzfw" type="5018"/>
<children xmi:type="notation:Node" xmi:id="_CNraQPJmEd6814i1KDlzfw" type="7029">
<styles xmi:type="notation:DrawerStyle" xmi:id="_CNraQfJmEd6814i1KDlzfw"/>
<styles xmi:type="notation:TitleStyle" xmi:id="_CNraQvJmEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_CNraQ_JmEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_CNraRPJmEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_CNraRfJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_CNsoYPJmEd6814i1KDlzfw" type="7030">
<children xmi:type="notation:Node" xmi:id="_EE720PJmEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_EEdVsPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_EE720fJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_FVAXkPJmEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_FUn9EPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_FVAXkfJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_GyMHQPJmEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_GxzFsPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_GyMHQfJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_IGb9YPJmEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_IGCUwPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_IGb9YfJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_JUPNQPJmEd6814i1KDlzfw" type="3029">
<element xmi:type="uml:Operation" href="simulation-2.0.uml#_JT0WgPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_JUPNQfJmEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_CNsoYfJmEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_CNsoYvJmEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_CNsoY_JmEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_CNsoZPJmEd6814i1KDlzfw"/>
</children>
<children xmi:type="notation:Node" xmi:id="_CNtPcPJmEd6814i1KDlzfw" type="7031">
<styles xmi:type="notation:TitleStyle" xmi:id="_CNtPcfJmEd6814i1KDlzfw" showTitle="true"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_CNtPcvJmEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_CNtPc_JmEd6814i1KDlzfw"/>
<styles xmi:type="notation:CanonicalStyle" xmi:id="_CNtPdPJmEd6814i1KDlzfw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_CNqMIfJmEd6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Interface" href="simulation-2.0.uml#_CNJOwPJmEd6814i1KDlzfw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_CNqMIvJmEd6814i1KDlzfw" x="936" y="60"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_J8WTwfIyEd6814i1KDlzfw"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_J8WTwvIyEd6814i1KDlzfw"/>
<element xmi:type="uml:Package" href="simulation-2.0.uml#_J062EPIyEd6814i1KDlzfw"/>
<edges xmi:type="notation:Edge" xmi:id="_-ifNoPIzEd6814i1KDlzfw" type="4008" source="_Tns-wPIyEd6814i1KDlzfw" target="_cqKdwPIyEd6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_-ifNofIzEd6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_-ifNovIzEd6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:InterfaceRealization" href="simulation-2.0.uml#_-iWDsPIzEd6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-ifNo_IzEd6814i1KDlzfw" points="[5, -45, -11, 193]$[42, -185, 26, 53]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_PK-p4PI0Ed6814i1KDlzfw" type="4001" source="_JGxEsPI0Ed6814i1KDlzfw" target="_GyzeAPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_PK-p4fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_PK-p4vI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Generalization" href="simulation-2.0.uml#_PK6YcPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PK-p4_I0Ed6814i1KDlzfw" points="[43, -45, -98, 109]$[227, -155, 86, -1]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_PzUcQPI0Ed6814i1KDlzfw" type="4001" source="_LNeSgPI0Ed6814i1KDlzfw" target="_GyzeAPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_PzUcQfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_PzUcQvI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Generalization" href="simulation-2.0.uml#_PzSAAPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PzUcQ_I0Ed6814i1KDlzfw" points="[-1, -45, 11, 208]$[74, -250, 86, 3]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_QQVIYPI0Ed6814i1KDlzfw" type="4001" source="_Mqo0EPI0Ed6814i1KDlzfw" target="_GyzeAPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_QQVIYfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_QQVIYvI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Generalization" href="simulation-2.0.uml#_QQTTMPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QQVIY_I0Ed6814i1KDlzfw" points="[-55, -45, 117, 97]$[-94, -96, 78, 46]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_Sw0IIPI0Ed6814i1KDlzfw" type="4008" source="_GyzeAPI0Ed6814i1KDlzfw" target="_FAHYYPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_Sw0IIfI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_Sw0IIvI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:InterfaceRealization" href="simulation-2.0.uml#_SwleoPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sw0II_I0Ed6814i1KDlzfw" points="[9, -45, -37, 196]$[70, -286, 24, -45]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_VjKT8PI0Ed6814i1KDlzfw" type="4008" source="_TqEEUPI0Ed6814i1KDlzfw" target="_FAHYYPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_VjKT8fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_VjKT8vI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:InterfaceRealization" href="simulation-2.0.uml#_Vi51QPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VjKT8_I0Ed6814i1KDlzfw" points="[-54, -45, 191, 161]$[-210, -184, 35, 22]"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VjhgUPI0Ed6814i1KDlzfw" id="(0.7358491,0.7582418)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_qQ-m0PI0Ed6814i1KDlzfw" type="4001" source="_oI5gAPI0Ed6814i1KDlzfw" target="_dPmbMPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_qQ-m0fI0Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_qQ-m0vI0Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Generalization" href="simulation-2.0.uml#_qQ68cPI0Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qQ-m0_I0Ed6814i1KDlzfw" points="[-15, -45, 39, 153]$[-127, -249, -73, -51]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_JArOUPI1Ed6814i1KDlzfw" type="4001" source="_Gq8GAPI1Ed6814i1KDlzfw" target="_dPmbMPI0Ed6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_JArOUfI1Ed6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_JArOUvI1Ed6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:Generalization" href="simulation-2.0.uml#_JAnj8PI1Ed6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JArOU_I1Ed6814i1KDlzfw" points="[-67, -45, 173, 129]$[-313, -171, -73, 3]"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_WkRf8PJmEd6814i1KDlzfw" type="4008" source="_dPmbMPI0Ed6814i1KDlzfw" target="_CNqMIPJmEd6814i1KDlzfw">
<styles xmi:type="notation:ConnectorStyle" xmi:id="_WkRf8fJmEd6814i1KDlzfw"/>
<styles xmi:type="notation:FontStyle" xmi:id="_WkRf8vJmEd6814i1KDlzfw" fontName="Sans"/>
<element xmi:type="uml:InterfaceRealization" href="simulation-2.0.uml#_WkCPYPJmEd6814i1KDlzfw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WkRf8_JmEd6814i1KDlzfw" points="[-15, -75, 42, 229]$[-58, -221, -1, 83]"/>
</edges>
</notation:Diagram>

BIN
html/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
pix-src/icon/icon-web.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -763,21 +763,32 @@ public class FinSetCalc extends RocketComponentCalc {
double lead = component.toRelative(Coordinate.NUL, parent)[0].x;
double trail = component.toRelative(new Coordinate(component.getLength()),
parent)[0].x;
/*
* The counting fails if the fin root chord is very small, in that case assume
* no other fin interference than this fin set.
*/
if (trail-lead < 0.007) {
interferenceFinCount = component.getFinCount();
} else {
interferenceFinCount = 0;
for (RocketComponent c: parent.getChildren()) {
if (c instanceof FinSet) {
double finLead = c.toRelative(Coordinate.NUL, parent)[0].x;
double finTrail = c.toRelative(new Coordinate(c.getLength()), parent)[0].x;
interferenceFinCount = 0;
for (RocketComponent c: parent.getChildren()) {
if (c instanceof FinSet) {
double finLead = c.toRelative(Coordinate.NUL, parent)[0].x;
double finTrail = c.toRelative(new Coordinate(c.getLength()), parent)[0].x;
if ((finLead < trail - 0.005) && (finTrail > lead + 0.005)) {
interferenceFinCount += ((FinSet)c).getFinCount();
// Compute overlap of the fins
if ((finLead < trail - 0.005) && (finTrail > lead + 0.005)) {
interferenceFinCount += ((FinSet)c).getFinCount();
}
}
}
}
if (interferenceFinCount < component.getFinCount()) {
throw new BugException("Counted " + interferenceFinCount + " parallel fins, " +
"when component itself has " + component.getFinCount());
"when component itself has " + component.getFinCount() +
", fin points=" + Arrays.toString(component.getFinPoints()));
}
}
return interferenceFinCount;

View File

@ -149,12 +149,18 @@ public class ExceptionHandler implements Thread.UncaughtExceptionHandler {
return;
}
// Create the message
String msg = e.getClass().getSimpleName() + ": " + e.getMessage();
if (msg.length() > 90) {
msg = msg.substring(0, 80) + "...";
}
// Unknown Error
if (!(e instanceof Exception)) {
JOptionPane.showMessageDialog(null,
new Object[] {
"An unknown Java error occurred:",
e.getMessage(),
msg,
"<html>You should immediately close unnecessary design windows,<br>" +
"save any unsaved designs and restart OpenRocket!"
}, "Unknown Java error", JOptionPane.ERROR_MESSAGE);
@ -162,13 +168,7 @@ public class ExceptionHandler implements Thread.UncaughtExceptionHandler {
}
// Normal exception, show question dialog
String msg = e.getClass().getSimpleName() + ": " + e.getMessage();
if (msg.length() > 90) {
msg = msg.substring(0, 80) + "...";
}
// Normal exception, show question dialog
int selection = JOptionPane.showOptionDialog(null, new Object[] {
"OpenRocket encountered an uncaught exception. This typically signifies " +
"a bug in the software.",

View File

@ -750,34 +750,7 @@ public class SimulationEditDialog extends JDialog {
return noDataPanel();
}
if (true)
return new SimulationPlotPanel(simulation);
JPanel panel = new JPanel(new MigLayout("fill"));
JButton button = new JButton("test");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
PlotConfiguration config = new PlotConfiguration();
config.addPlotDataType(FlightDataBranch.TYPE_ALTITUDE);
config.addPlotDataType(FlightDataBranch.TYPE_VELOCITY_Z);
config.addPlotDataType(FlightDataBranch.TYPE_ACCELERATION_Z);
config.addPlotDataType(FlightDataBranch.TYPE_ACCELERATION_TOTAL);
config.setDomainAxisType(FlightDataBranch.TYPE_TIME);
performPlot(config);
}
});
panel.add(button);
return panel;
return new SimulationPlotPanel(simulation);
}

View File

@ -323,6 +323,8 @@ public class SimulationPanel extends JPanel {
if (data==null)
return null;
// TODO: CRITICAL: Show getMaxAcceleration if branches not available!
return UnitGroup.UNITS_ACCELERATION.getDefaultUnit().toStringUnit(
data.getMaxAcceleration());
}

View File

@ -1,7 +1,9 @@
package net.sf.openrocket.rocketcomponent;
import java.util.ArrayList;
import java.util.Arrays;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Coordinate;
@ -19,12 +21,8 @@ public class FreeformFinSet extends FinSet {
}
public FreeformFinSet(Coordinate[] finpoints) {
points.clear();
for (Coordinate c: finpoints) {
points.add(c);
}
this.length = points.get(points.size()-1).x - points.get(0).x;
public FreeformFinSet(Coordinate[] finpoints) throws IllegalFinPointException {
setPoints(finpoints);
}
/*
@ -73,7 +71,13 @@ public class FreeformFinSet extends FinSet {
// Create the freeform fin set
Coordinate[] finpoints = finset.getFinPoints();
freeform = new FreeformFinSet(finpoints);
try {
freeform = new FreeformFinSet(finpoints);
} catch (IllegalFinPointException e) {
throw new BugException("Illegal fin points when converting existing fin to " +
"freeform fin, fin=" + finset + " points="+Arrays.toString(finpoints),
e);
}
// Copy component attributes
freeform.copyFrom(finset);
@ -134,6 +138,7 @@ public class FreeformFinSet extends FinSet {
if (index == 0 || index == points.size()-1) {
throw new IllegalFinPointException("cannot remove first or last point");
}
// TODO: CRITICAL: Can result in invalid fin points
points.remove(index);
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
}
@ -144,7 +149,7 @@ public class FreeformFinSet extends FinSet {
}
public void setPoints(Coordinate[] p) throws IllegalFinPointException {
if (p[0].x != 0 || p[0].y != 0 || p[p.length-1].y != 0) {
if (p[0].x != 0 || p[0].y != 0 || p[p.length-1].x < 0 || p[p.length-1].y != 0) {
throw new IllegalFinPointException("Start or end point illegal.");
}
for (int i=0; i < p.length-1; i++) {

View File

@ -5,6 +5,7 @@ import java.util.List;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.util.MathUtil;
import net.sf.openrocket.util.Pair;
public class FlightData {
@ -128,6 +129,9 @@ public class FlightData {
return maxVelocity;
}
/**
* NOTE: This value will also contain any possible acceleration peak when opening a parachute!
*/
public double getMaxAcceleration() {
return maxAcceleration;
}
@ -161,7 +165,6 @@ public class FlightData {
FlightDataBranch branch = branches.get(0);
maxAltitude = branch.getMaximum(FlightDataBranch.TYPE_ALTITUDE);
maxVelocity = branch.getMaximum(FlightDataBranch.TYPE_VELOCITY_TOTAL);
maxAcceleration = branch.getMaximum(FlightDataBranch.TYPE_ACCELERATION_TOTAL);
maxMachNumber = branch.getMaximum(FlightDataBranch.TYPE_MACH_NUMBER);
flightTime = branch.getLast(FlightDataBranch.TYPE_TIME);
@ -177,6 +180,7 @@ public class FlightData {
if (time == null || altitude == null) {
timeToApogee = Double.NaN;
maxAcceleration = Double.NaN;
return;
}
int index = 0;
@ -192,6 +196,13 @@ public class FlightData {
timeToApogee = time.get(index);
else
timeToApogee = Double.NaN;
// Max. acceleration (must be after apogee time)
if (branch.get(FlightDataBranch.TYPE_ACCELERATION_TOTAL) != null) {
maxAcceleration = calculateMaxAcceleration();
} else {
maxAcceleration = Double.NaN;
}
}
@ -203,4 +214,41 @@ public class FlightData {
}
/**
* Find the maximum acceleration before apogee.
*/
private double calculateMaxAcceleration() {
// End check at first recovery device deployment
double endTime = Double.MAX_VALUE;
FlightDataBranch branch = this.getBranch(0);
for (Pair<Double, FlightEvent> event: branch.getEvents()) {
if (event.getV().getType() == FlightEvent.Type.RECOVERY_DEVICE_DEPLOYMENT) {
if (event.getV().getTime() < endTime) {
endTime = event.getV().getTime();
}
}
}
List<Double> time = branch.get(FlightDataBranch.TYPE_TIME);
List<Double> acceleration = branch.get(FlightDataBranch.TYPE_ACCELERATION_TOTAL);
if (time == null || acceleration == null) {
return Double.NaN;
}
double max = 0;
for (int i=0; i<time.size(); i++) {
if (time.get(i) >= endTime) {
break;
}
double a = acceleration.get(i);
if (a > max)
max = a;
}
return max;
}
}

View File

@ -426,4 +426,8 @@ public class FlightDataBranch {
public boolean isMutable() {
return mutable;
}
}

View File

@ -71,7 +71,7 @@ public class ComponentCompareTest {
@Test
public void testComponentSimilarity() {
public void testComponentSimilarity() throws IllegalFinPointException {
FinSet trap = new TrapezoidFinSet(
5, // fins
5.0, // root