Merge pull request #2297 from JoePfeiffer/always-extras

Remove capability to not compute and save "extra" simulation parameters
This commit is contained in:
Joe Pfeiffer 2023-08-22 15:25:36 -06:00 committed by GitHub
commit c49e859eba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 97 deletions

View File

@ -126,7 +126,6 @@ public abstract class AbstractEulerStepper extends AbstractSimulationStepper {
// Store data // Store data
FlightDataBranch data = status.getFlightData(); FlightDataBranch data = status.getFlightData();
boolean extra = status.getSimulationConditions().isCalculateExtras();
data.addPoint(); data.addPoint();
data.setValue(FlightDataType.TYPE_TIME, status.getSimulationTime()); data.setValue(FlightDataType.TYPE_TIME, status.getSimulationTime());
@ -135,7 +134,7 @@ public abstract class AbstractEulerStepper extends AbstractSimulationStepper {
data.setValue(FlightDataType.TYPE_POSITION_Y, status.getRocketPosition().y); data.setValue(FlightDataType.TYPE_POSITION_Y, status.getRocketPosition().y);
airSpeed = status.getRocketVelocity().add(windSpeed); airSpeed = status.getRocketVelocity().add(windSpeed);
if (extra) {
data.setValue(FlightDataType.TYPE_POSITION_XY, data.setValue(FlightDataType.TYPE_POSITION_XY,
MathUtil.hypot(status.getRocketPosition().x, status.getRocketPosition().y)); MathUtil.hypot(status.getRocketPosition().x, status.getRocketPosition().y));
data.setValue(FlightDataType.TYPE_POSITION_DIRECTION, data.setValue(FlightDataType.TYPE_POSITION_DIRECTION,
@ -152,7 +151,6 @@ public abstract class AbstractEulerStepper extends AbstractSimulationStepper {
status.getConfiguration().getLengthAerodynamic() / status.getConfiguration().getLengthAerodynamic() /
atmosphere.getKinematicViscosity(); atmosphere.getKinematicViscosity();
data.setValue(FlightDataType.TYPE_REYNOLDS_NUMBER, Re); data.setValue(FlightDataType.TYPE_REYNOLDS_NUMBER, Re);
}
data.setValue(FlightDataType.TYPE_LATITUDE, status.getRocketWorldPosition().getLatitudeRad()); data.setValue(FlightDataType.TYPE_LATITUDE, status.getRocketWorldPosition().getLatitudeRad());

View File

@ -523,7 +523,7 @@ public class BasicEventSimulationEngine implements SimulationEngine {
currentStatus.setApogeeReached(true); currentStatus.setApogeeReached(true);
currentStatus.getFlightData().addEvent(event); currentStatus.getFlightData().addEvent(event);
// This apogee event might be the optimum if recovery has not already happened. // This apogee event might be the optimum if recovery has not already happened.
if (currentStatus.getSimulationConditions().isCalculateExtras() && currentStatus.getDeployedRecoveryDevices().size() == 0) { if (currentStatus.getDeployedRecoveryDevices().size() == 0) {
currentStatus.getFlightData().setOptimumAltitude(currentStatus.getMaxAlt()); currentStatus.getFlightData().setOptimumAltitude(currentStatus.getMaxAlt());
currentStatus.getFlightData().setTimeToOptimumAltitude(currentStatus.getMaxAltTime()); currentStatus.getFlightData().setTimeToOptimumAltitude(currentStatus.getMaxAltTime());
} }
@ -559,7 +559,7 @@ public class BasicEventSimulationEngine implements SimulationEngine {
// If we haven't already reached apogee, then we need to compute the actual coast time // If we haven't already reached apogee, then we need to compute the actual coast time
// to determine the optimum altitude. // to determine the optimum altitude.
if (currentStatus.getSimulationConditions().isCalculateExtras() && !currentStatus.isApogeeReached()) { if (!currentStatus.isApogeeReached()) {
FlightData coastStatus = computeCoastTime(); FlightData coastStatus = computeCoastTime();
currentStatus.getFlightData().setOptimumAltitude(coastStatus.getMaxAltitude()); currentStatus.getFlightData().setOptimumAltitude(coastStatus.getMaxAltitude());

View File

@ -551,7 +551,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
private void storeData(RK4SimulationStatus status, DataStore store) { private void storeData(RK4SimulationStatus status, DataStore store) {
FlightDataBranch data = status.getFlightData(); FlightDataBranch data = status.getFlightData();
boolean extra = status.getSimulationConditions().isCalculateExtras();
data.addPoint(); data.addPoint();
data.setValue(FlightDataType.TYPE_TIME, status.getSimulationTime()); data.setValue(FlightDataType.TYPE_TIME, status.getSimulationTime());
@ -565,7 +564,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
data.setValue(FlightDataType.TYPE_CORIOLIS_ACCELERATION, store.coriolisAcceleration.length()); data.setValue(FlightDataType.TYPE_CORIOLIS_ACCELERATION, store.coriolisAcceleration.length());
} }
if (extra) {
data.setValue(FlightDataType.TYPE_POSITION_XY, data.setValue(FlightDataType.TYPE_POSITION_XY,
MathUtil.hypot(status.getRocketPosition().x, status.getRocketPosition().y)); MathUtil.hypot(status.getRocketPosition().x, status.getRocketPosition().y));
data.setValue(FlightDataType.TYPE_POSITION_DIRECTION, data.setValue(FlightDataType.TYPE_POSITION_DIRECTION,
@ -587,7 +585,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
store.flightConditions.getAtmosphericConditions().getKinematicViscosity()); store.flightConditions.getAtmosphericConditions().getKinematicViscosity());
data.setValue(FlightDataType.TYPE_REYNOLDS_NUMBER, Re); data.setValue(FlightDataType.TYPE_REYNOLDS_NUMBER, Re);
} }
}
data.setValue(FlightDataType.TYPE_VELOCITY_Z, status.getRocketVelocity().z); data.setValue(FlightDataType.TYPE_VELOCITY_Z, status.getRocketVelocity().z);
if (store.linearAcceleration != null) { if (store.linearAcceleration != null) {
@ -664,8 +661,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
data.setValue(FlightDataType.TYPE_AOA, store.flightConditions.getAOA()); data.setValue(FlightDataType.TYPE_AOA, store.flightConditions.getAOA());
} }
if (extra) {
Coordinate c = status.getRocketOrientationQuaternion().rotateZ(); Coordinate c = status.getRocketOrientationQuaternion().rotateZ();
double theta = Math.atan2(c.z, MathUtil.hypot(c.x, c.y)); double theta = Math.atan2(c.z, MathUtil.hypot(c.x, c.y));
double phi = Math.atan2(c.y, c.x); double phi = Math.atan2(c.y, c.x);
@ -673,7 +668,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
phi = Math.PI; phi = Math.PI;
data.setValue(FlightDataType.TYPE_ORIENTATION_THETA, theta); data.setValue(FlightDataType.TYPE_ORIENTATION_THETA, theta);
data.setValue(FlightDataType.TYPE_ORIENTATION_PHI, phi); data.setValue(FlightDataType.TYPE_ORIENTATION_PHI, phi);
}
data.setValue(FlightDataType.TYPE_WIND_VELOCITY, store.windSpeed); data.setValue(FlightDataType.TYPE_WIND_VELOCITY, store.windSpeed);

View File

@ -59,10 +59,6 @@ public class SimulationConditions implements Monitorable, Cloneable {
private double timeStep = RK4SimulationStepper.RECOMMENDED_TIME_STEP; private double timeStep = RK4SimulationStepper.RECOMMENDED_TIME_STEP;
private double maximumAngleStep = RK4SimulationStepper.RECOMMENDED_ANGLE_STEP; private double maximumAngleStep = RK4SimulationStepper.RECOMMENDED_ANGLE_STEP;
/* Whether to calculate additional data or only primary simulation figures */
private boolean calculateExtras = true;
private List<SimulationListener> simulationListeners = new ArrayList<SimulationListener>(); private List<SimulationListener> simulationListeners = new ArrayList<SimulationListener>();
@ -257,18 +253,6 @@ public class SimulationConditions implements Monitorable, Cloneable {
} }
public boolean isCalculateExtras() {
return calculateExtras;
}
public void setCalculateExtras(boolean calculateExtras) {
this.calculateExtras = calculateExtras;
this.modID++;
}
public int getRandomSeed() { public int getRandomSeed() {
return randomSeed; return randomSeed;
} }

View File

@ -80,9 +80,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
private int randomSeed = new Random().nextInt(); private int randomSeed = new Random().nextInt();
private boolean calculateExtras = true;
private List<EventListener> listeners = new ArrayList<EventListener>(); private List<EventListener> listeners = new ArrayList<EventListener>();
public SimulationOptions() { public SimulationOptions() {
@ -353,23 +350,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
fireChangeEvent(); fireChangeEvent();
} }
public boolean getCalculateExtras() {
return calculateExtras;
}
public void setCalculateExtras(boolean calculateExtras) {
if (this.calculateExtras == calculateExtras)
return;
this.calculateExtras = calculateExtras;
fireChangeEvent();
}
public int getRandomSeed() { public int getRandomSeed() {
return randomSeed; return randomSeed;
} }
@ -468,10 +448,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
isChanged = true; isChanged = true;
this.windTurbulence = src.windTurbulence; this.windTurbulence = src.windTurbulence;
} }
if (this.calculateExtras != src.calculateExtras) {
isChanged = true;
this.calculateExtras = src.calculateExtras;
}
if (this.timeStep != src.timeStep) { if (this.timeStep != src.timeStep) {
isChanged = true; isChanged = true;
this.timeStep = src.timeStep; this.timeStep = src.timeStep;
@ -511,8 +487,7 @@ public class SimulationOptions implements ChangeSource, Cloneable {
MathUtil.equals(this.timeStep, o.timeStep) && MathUtil.equals(this.timeStep, o.timeStep) &&
MathUtil.equals(this.windAverage, o.windAverage) && MathUtil.equals(this.windAverage, o.windAverage) &&
MathUtil.equals(this.windTurbulence, o.windTurbulence) && MathUtil.equals(this.windTurbulence, o.windTurbulence) &&
MathUtil.equals(this.windDirection, o.windDirection) && MathUtil.equals(this.windDirection, o.windDirection));
this.calculateExtras == o.calculateExtras && this.randomSeed == o.randomSeed);
} }
/** /**
@ -581,8 +556,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
conditions.setTimeStep(getTimeStep()); conditions.setTimeStep(getTimeStep());
conditions.setMaximumAngleStep(getMaximumStepAngle()); conditions.setMaximumAngleStep(getMaximumStepAngle());
conditions.setCalculateExtras(getCalculateExtras());
return conditions; return conditions;
} }
@ -605,7 +578,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
.concat(String.format(" launchPressure: %f\n", launchPressure)) .concat(String.format(" launchPressure: %f\n", launchPressure))
.concat(String.format(" timeStep: %f\n", timeStep)) .concat(String.format(" timeStep: %f\n", timeStep))
.concat(String.format(" maximumAngle: %f\n", maximumAngle)) .concat(String.format(" maximumAngle: %f\n", maximumAngle))
.concat(String.format(" calculateExtras: %b\n", calculateExtras))
.concat("]\n"); .concat("]\n");
} }