Launch rod velocity in FlightData
This commit is contained in:
parent
6615103e8f
commit
f535b8caf0
@ -1,3 +1,8 @@
|
|||||||
|
2010-09-04 Sampo Niskanen
|
||||||
|
|
||||||
|
* Added launch rod velocity to FlightData
|
||||||
|
* [BUG] Total velocity was measured from airspeed
|
||||||
|
|
||||||
2010-09-03 Sampo Niskanen
|
2010-09-03 Sampo Niskanen
|
||||||
|
|
||||||
* Released version 1.1.1
|
* Released version 1.1.1
|
||||||
|
@ -1534,8 +1534,9 @@ class FlightDataHandler extends ElementHandler {
|
|||||||
} catch (NumberFormatException ignore) {
|
} catch (NumberFormatException ignore) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: HIGH: Store and load launchRodVelocity
|
||||||
data = new FlightData(maxAltitude, maxVelocity, maxAcceleration, maxMach,
|
data = new FlightData(maxAltitude, maxVelocity, maxAcceleration, maxMach,
|
||||||
timeToApogee, flightTime, groundHitVelocity);
|
timeToApogee, flightTime, groundHitVelocity, Double.NaN);
|
||||||
}
|
}
|
||||||
|
|
||||||
data.getWarningSet().addAll(warningSet);
|
data.getWarningSet().addAll(warningSet);
|
||||||
|
@ -4,6 +4,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
import net.sf.openrocket.aerodynamics.WarningSet;
|
||||||
|
import net.sf.openrocket.logging.LogHelper;
|
||||||
|
import net.sf.openrocket.startup.Application;
|
||||||
import net.sf.openrocket.util.MathUtil;
|
import net.sf.openrocket.util.MathUtil;
|
||||||
import net.sf.openrocket.util.Mutable;
|
import net.sf.openrocket.util.Mutable;
|
||||||
|
|
||||||
@ -21,6 +23,7 @@ import net.sf.openrocket.util.Mutable;
|
|||||||
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
||||||
*/
|
*/
|
||||||
public class FlightData {
|
public class FlightData {
|
||||||
|
private static final LogHelper log = Application.getLogger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An immutable FlightData object with NaN data.
|
* An immutable FlightData object with NaN data.
|
||||||
@ -45,6 +48,7 @@ public class FlightData {
|
|||||||
private double timeToApogee = Double.NaN;
|
private double timeToApogee = Double.NaN;
|
||||||
private double flightTime = Double.NaN;
|
private double flightTime = Double.NaN;
|
||||||
private double groundHitVelocity = Double.NaN;
|
private double groundHitVelocity = Double.NaN;
|
||||||
|
private double launchRodVelocity = Double.NaN;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,10 +70,11 @@ public class FlightData {
|
|||||||
* @param timeToApogee time to apogee.
|
* @param timeToApogee time to apogee.
|
||||||
* @param flightTime total flight time.
|
* @param flightTime total flight time.
|
||||||
* @param groundHitVelocity ground hit velocity.
|
* @param groundHitVelocity ground hit velocity.
|
||||||
|
* @param launchRodVelocity TODO
|
||||||
*/
|
*/
|
||||||
public FlightData(double maxAltitude, double maxVelocity, double maxAcceleration,
|
public FlightData(double maxAltitude, double maxVelocity, double maxAcceleration,
|
||||||
double maxMachNumber, double timeToApogee, double flightTime,
|
double maxMachNumber, double timeToApogee, double flightTime,
|
||||||
double groundHitVelocity) {
|
double groundHitVelocity, double launchRodVelocity) {
|
||||||
this.maxAltitude = maxAltitude;
|
this.maxAltitude = maxAltitude;
|
||||||
this.maxVelocity = maxVelocity;
|
this.maxVelocity = maxVelocity;
|
||||||
this.maxAcceleration = maxAcceleration;
|
this.maxAcceleration = maxAcceleration;
|
||||||
@ -77,6 +82,7 @@ public class FlightData {
|
|||||||
this.timeToApogee = timeToApogee;
|
this.timeToApogee = timeToApogee;
|
||||||
this.flightTime = flightTime;
|
this.flightTime = flightTime;
|
||||||
this.groundHitVelocity = groundHitVelocity;
|
this.groundHitVelocity = groundHitVelocity;
|
||||||
|
this.launchRodVelocity = launchRodVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -161,6 +167,10 @@ public class FlightData {
|
|||||||
return groundHitVelocity;
|
return groundHitVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getLaunchRodVelocity() {
|
||||||
|
return launchRodVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -183,6 +193,7 @@ public class FlightData {
|
|||||||
groundHitVelocity = Double.NaN;
|
groundHitVelocity = Double.NaN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Time to apogee
|
// Time to apogee
|
||||||
List<Double> time = branch.get(FlightDataType.TYPE_TIME);
|
List<Double> time = branch.get(FlightDataType.TYPE_TIME);
|
||||||
List<Double> altitude = branch.get(FlightDataType.TYPE_ALTITUDE);
|
List<Double> altitude = branch.get(FlightDataType.TYPE_ALTITUDE);
|
||||||
@ -206,12 +217,40 @@ public class FlightData {
|
|||||||
else
|
else
|
||||||
timeToApogee = Double.NaN;
|
timeToApogee = Double.NaN;
|
||||||
|
|
||||||
|
|
||||||
|
// Launch rod velocity
|
||||||
|
eventloop: for (FlightEvent event : branch.getEvents()) {
|
||||||
|
if (event.getType() == FlightEvent.Type.LAUNCHROD) {
|
||||||
|
double t = event.getTime();
|
||||||
|
List<Double> velocity = branch.get(FlightDataType.TYPE_VELOCITY_TOTAL);
|
||||||
|
if (velocity == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < velocity.size(); i++) {
|
||||||
|
if (time.get(i) >= t) {
|
||||||
|
launchRodVelocity = velocity.get(i);
|
||||||
|
break eventloop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Max. acceleration (must be after apogee time)
|
// Max. acceleration (must be after apogee time)
|
||||||
if (branch.get(FlightDataType.TYPE_ACCELERATION_TOTAL) != null) {
|
if (branch.get(FlightDataType.TYPE_ACCELERATION_TOTAL) != null) {
|
||||||
maxAcceleration = calculateMaxAcceleration();
|
maxAcceleration = calculateMaxAcceleration();
|
||||||
} else {
|
} else {
|
||||||
maxAcceleration = Double.NaN;
|
maxAcceleration = Double.NaN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.info("Computed flight values:" +
|
||||||
|
" maxAltitude=" + maxAltitude +
|
||||||
|
" maxVelocity=" + maxVelocity +
|
||||||
|
" maxAcceleration=" + maxAcceleration +
|
||||||
|
" maxMachNumber=" + maxMachNumber +
|
||||||
|
" timeToApogee=" + timeToApogee +
|
||||||
|
" flightTime=" + flightTime +
|
||||||
|
" groundHitVelocity=" + groundHitVelocity +
|
||||||
|
" launchRodVelocity=" + launchRodVelocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (store.flightConditions != null) {
|
if (store.flightConditions != null) {
|
||||||
data.setValue(FlightDataType.TYPE_VELOCITY_TOTAL, store.flightConditions.getVelocity());
|
data.setValue(FlightDataType.TYPE_VELOCITY_TOTAL, status.getRocketVelocity().length());
|
||||||
data.setValue(FlightDataType.TYPE_MACH_NUMBER, store.flightConditions.getMach());
|
data.setValue(FlightDataType.TYPE_MACH_NUMBER, store.flightConditions.getMach());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user