create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / simulation / SimulationStepper.java
1 package net.sf.openrocket.simulation;
2
3 import net.sf.openrocket.simulation.exception.SimulationException;
4
5 public interface SimulationStepper {
6         
7         /**
8          * Initialize a simulation using this simulation stepper based on the provided
9          * current simulation status and launch conditions.
10          * 
11          * @param status                the current simulation status.
12          * @return                              a SimulationStatus suitable for simulating with this simulation stepper.
13          */
14         public SimulationStatus initialize(SimulationStatus status) throws SimulationException;
15         
16         /**
17          * Perform one simulation time step.
18          * 
19          * @param status                the current simulation status, of a type returned by {@link #initialize(SimulationStatus)}.
20          * @param maxTimeStep   the maximum time step to take.  This is an upper bound and can be used to limit a stepper
21          *                                              from stepping over upcoming flight events (motor ignition etc).
22          */
23         public void step(SimulationStatus status, double maxTimeStep) throws SimulationException;
24         
25 }