package net.sf.openrocket.simulation.listeners;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.simulation.AccelerationData;
import net.sf.openrocket.simulation.MassData;
import net.sf.openrocket.simulation.SimulationStatus;
import net.sf.openrocket.simulation.exception.SimulationException;
import net.sf.openrocket.util.Coordinate;
/**
* An interface containing listener callbacks relating to different computational aspects performed
* during flight.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public interface SimulationComputationListener extends SimulationListener {
//////// Computation/modeling related callbacks ////////
public AccelerationData preAccelerationCalculation(SimulationStatus status) throws SimulationException;
public AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration)
throws SimulationException;
public AtmosphericConditions preAtmosphericModel(SimulationStatus status)
throws SimulationException;
public AtmosphericConditions postAtmosphericModel(SimulationStatus status, AtmosphericConditions atmosphericConditions)
throws SimulationException;
public Coordinate preWindModel(SimulationStatus status) throws SimulationException;
public Coordinate postWindModel(SimulationStatus status, Coordinate wind) throws SimulationException;
public double preGravityModel(SimulationStatus status) throws SimulationException;
public double postGravityModel(SimulationStatus status, double gravity) throws SimulationException;
public FlightConditions preFlightConditions(SimulationStatus status)
throws SimulationException;
public FlightConditions postFlightConditions(SimulationStatus status, FlightConditions flightConditions)
throws SimulationException;
public AerodynamicForces preAerodynamicCalculation(SimulationStatus status)
throws SimulationException;
public AerodynamicForces postAerodynamicCalculation(SimulationStatus status, AerodynamicForces forces)
throws SimulationException;
public MassData preMassCalculation(SimulationStatus status) throws SimulationException;
public MassData postMassCalculation(SimulationStatus status, MassData massData) throws SimulationException;
public double preSimpleThrustCalculation(SimulationStatus status) throws SimulationException;
public double postSimpleThrustCalculation(SimulationStatus status, double thrust) throws SimulationException;
}