package net.sf.openrocket.simulation;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.motor.MotorInstanceConfiguration;
import net.sf.openrocket.rocketcomponent.Configuration;
import net.sf.openrocket.util.Coordinate;
public class RK4SimulationStatus extends SimulationStatus implements Cloneable {
private Coordinate launchRodDirection;
private double previousAcceleration = 0;
private AtmosphericConditions previousAtmosphericConditions;
// Used for determining when to store aerodynamic computation warnings:
private double maxZVelocity = 0;
private double startWarningTime = -1;
public RK4SimulationStatus(Configuration configuration,
MotorInstanceConfiguration motorConfiguration,
SimulationConditions simulationConditions ) {
super(configuration, motorConfiguration, simulationConditions);
}
public RK4SimulationStatus( SimulationStatus other ) {
super(other);
if ( other instanceof RK4SimulationStatus ) {
this.launchRodDirection = ((RK4SimulationStatus) other).launchRodDirection;
this.previousAcceleration = ((RK4SimulationStatus) other).previousAcceleration;
this.maxZVelocity = ((RK4SimulationStatus) other).maxZVelocity;
this.startWarningTime = ((RK4SimulationStatus) other).startWarningTime;
this.previousAtmosphericConditions = ((RK4SimulationStatus) other).previousAtmosphericConditions;
}
}
public void setLaunchRodDirection(Coordinate launchRodDirection) {
this.launchRodDirection = launchRodDirection;
}
public Coordinate getLaunchRodDirection() {
return launchRodDirection;
}
public double getPreviousAcceleration() {
return previousAcceleration;
}
public void setPreviousAcceleration(double previousAcceleration) {
this.previousAcceleration = previousAcceleration;
}
public AtmosphericConditions getPreviousAtmosphericConditions() {
return previousAtmosphericConditions;
}
public void setPreviousAtmosphericConditions(
AtmosphericConditions previousAtmosphericConditions) {
this.previousAtmosphericConditions = previousAtmosphericConditions;
}
public double getMaxZVelocity() {
return maxZVelocity;
}
public void setMaxZVelocity(double maxZVelocity) {
this.maxZVelocity = maxZVelocity;
}
public double getStartWarningTime() {
return startWarningTime;
}
public void setStartWarningTime(double startWarningTime) {
this.startWarningTime = startWarningTime;
}
@Override
public RK4SimulationStatus clone() {
return (RK4SimulationStatus) super.clone();
}
}