X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fnet%2Fsf%2Fopenrocket%2Foptimization%2Frocketoptimization%2Fparameters%2FMaximumAltitudeParameter.java;h=f427d7fca533253498d8f196f918a925e43947d6;hb=879b214e60c09d53b18f24116fbfae08fa10604c;hp=7498ed118665f15884479f545f36754678447332;hpb=aba2f5f25981c5b24ca4d9c6a63ab381482f9e01;p=debian%2Fopenrocket diff --git a/src/net/sf/openrocket/optimization/rocketoptimization/parameters/MaximumAltitudeParameter.java b/src/net/sf/openrocket/optimization/rocketoptimization/parameters/MaximumAltitudeParameter.java index 7498ed11..f427d7fc 100644 --- a/src/net/sf/openrocket/optimization/rocketoptimization/parameters/MaximumAltitudeParameter.java +++ b/src/net/sf/openrocket/optimization/rocketoptimization/parameters/MaximumAltitudeParameter.java @@ -1,17 +1,10 @@ package net.sf.openrocket.optimization.rocketoptimization.parameters; -import net.sf.openrocket.document.Simulation; import net.sf.openrocket.l10n.Translator; -import net.sf.openrocket.logging.LogHelper; -import net.sf.openrocket.optimization.general.OptimizationException; -import net.sf.openrocket.optimization.rocketoptimization.OptimizableParameter; +import net.sf.openrocket.simulation.FlightData; import net.sf.openrocket.simulation.FlightDataType; -import net.sf.openrocket.simulation.exception.MotorIgnitionException; -import net.sf.openrocket.simulation.exception.SimulationCancelledException; -import net.sf.openrocket.simulation.exception.SimulationException; -import net.sf.openrocket.simulation.exception.SimulationLaunchException; +import net.sf.openrocket.simulation.listeners.SimulationListener; import net.sf.openrocket.simulation.listeners.system.ApogeeEndListener; -import net.sf.openrocket.simulation.listeners.system.InterruptListener; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -20,9 +13,8 @@ import net.sf.openrocket.unit.UnitGroup; * * @author Sampo Niskanen */ -public class MaximumAltitudeParameter implements OptimizableParameter { +public class MaximumAltitudeParameter extends SimulationBasedParameter { - private static final LogHelper log = Application.getLogger(); private static final Translator trans = Application.getTranslator(); @Override @@ -31,24 +23,13 @@ public class MaximumAltitudeParameter implements OptimizableParameter { } @Override - public double computeValue(Simulation simulation) throws OptimizationException, InterruptedException { - try { - log.debug("Running simulation to evaluate apogee altitude"); - simulation.simulate(new ApogeeEndListener(), new InterruptListener()); - log.debug("Maximum altitude was " + simulation.getSimulatedData().getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE)); - return simulation.getSimulatedData().getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE); - } catch (MotorIgnitionException e) { - // A problem with motor ignition will cause optimization to fail - throw new OptimizationException(e); - } catch (SimulationLaunchException e) { - // Other launch exceptions result in zero altitude - return 0.0; - } catch (SimulationCancelledException e) { - throw (InterruptedException) new InterruptedException("Optimization was interrupted").initCause(e); - } catch (SimulationException e) { - // Other exceptions fail - throw new OptimizationException(e); - } + protected SimulationListener[] getSimulationListeners() { + return new SimulationListener[] { new ApogeeEndListener() }; + } + + @Override + protected double getResultValue(FlightData simulatedData) { + return simulatedData.getBranch(0).getMaximum(FlightDataType.TYPE_ALTITUDE); } @Override