d8a2543cc59198187f13c7b6664aa91559ce0f79
[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                         simulation.simulate(new ApogeeEndListener());
26                         return simulation.getSimulatedData().getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE);
27                 } catch (SimulationException e) {
28                         throw new OptimizationException(e);
29                 }
30         }
31         
32 }