bug fixes and rocket optimization
[debian/openrocket] / src / net / sf / openrocket / optimization / rocketoptimization / parameters / MaximumAltitudeParameter.java
1 package net.sf.openrocket.optimization.rocketoptimization.parameters;
2
3 import net.sf.openrocket.document.Simulation;
4 import net.sf.openrocket.optimization.general.OptimizationException;
5 import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameter;
6 import net.sf.openrocket.simulation.FlightDataType;
7 import net.sf.openrocket.simulation.exception.SimulationException;
8 import net.sf.openrocket.simulation.listeners.system.ApogeeEndListener;
9
10 /**
11  * An optimization parameter that computes the maximum altitude of a simulated flight.
12  * 
13  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
14  */
15 public class MaximumAltitudeParameter implements OptimizableParameter {
16         
17         @Override
18         public String getName() {
19                 return "Maximum altitude";
20         }
21         
22         @Override
23         public double computeValue(Simulation simulation) throws OptimizationException {
24                 try {
25                         System.out.println("Running simulation");
26                         simulation.simulate(new ApogeeEndListener());
27                         System.out.println("Maximum altitude was " + simulation.getSimulatedData().getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE));
28                         return simulation.getSimulatedData().getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE);
29                 } catch (SimulationException e) {
30                         throw new OptimizationException(e);
31                 }
32         }
33         
34 }