commit
7934f0beec
@ -1,27 +0,0 @@
|
|||||||
package net.sf.openrocket.file;
|
|
||||||
|
|
||||||
import net.sf.openrocket.aerodynamics.WarningSet;
|
|
||||||
import net.sf.openrocket.motor.Motor;
|
|
||||||
import net.sf.openrocket.motor.Motor.Type;
|
|
||||||
import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;
|
|
||||||
|
|
||||||
public class DatabaseMotorFinderWithMissingMotors extends DatabaseMotorFinder
|
|
||||||
implements MotorFinder {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This implementation returns a ThrustCurveMotorPlaceholder.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected Motor handleMissingMotor(Type type, String manufacturer, String designation, double diameter, double length, String digest, WarningSet warnings) {
|
|
||||||
Motor motor = new ThrustCurveMotorPlaceholder(type,
|
|
||||||
manufacturer,
|
|
||||||
designation,
|
|
||||||
diameter,
|
|
||||||
length,
|
|
||||||
digest,
|
|
||||||
/* delay */ Double.NaN,
|
|
||||||
/*launchMass*/ Double.NaN,
|
|
||||||
/*emptyMass*/ Double.NaN);
|
|
||||||
return motor;
|
|
||||||
}
|
|
||||||
}
|
|
@ -60,16 +60,6 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor>, Se
|
|||||||
|
|
||||||
ThrustCurveMotor motor = new ThrustCurveMotor();
|
ThrustCurveMotor motor = new ThrustCurveMotor();
|
||||||
|
|
||||||
public Builder setAverageThrustEstimate(double v) {
|
|
||||||
motor.averageThrust = v;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setBurnTimeEstimate(double v) {
|
|
||||||
motor.burnTimeEstimate = v;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setCaseInfo(String v) {
|
public Builder setCaseInfo(String v) {
|
||||||
motor.caseInfo = v;
|
motor.caseInfo = v;
|
||||||
return this;
|
return this;
|
||||||
@ -115,11 +105,6 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor>, Se
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setMaxThrustEstimate(double v) {
|
|
||||||
motor.maxThrust = v;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setMotorType(Motor.Type t) {
|
public Builder setMotorType(Motor.Type t) {
|
||||||
motor.type = t;
|
motor.type = t;
|
||||||
return this;
|
return this;
|
||||||
@ -145,11 +130,6 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor>, Se
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setTotalThrustEstimate(double v) {
|
|
||||||
motor.totalImpulse = v;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setAvailablity(boolean avail) {
|
public Builder setAvailablity(boolean avail) {
|
||||||
motor.available = avail;
|
motor.available = avail;
|
||||||
return this;
|
return this;
|
||||||
|
@ -1,239 +0,0 @@
|
|||||||
package net.sf.openrocket.motor;
|
|
||||||
|
|
||||||
import net.sf.openrocket.util.BugException;
|
|
||||||
|
|
||||||
public class ThrustCurveMotorPlaceholder implements Motor {
|
|
||||||
|
|
||||||
private final Motor.Type type;
|
|
||||||
private final String manufacturer;
|
|
||||||
private final String designation;
|
|
||||||
private final double diameter;
|
|
||||||
private final double length;
|
|
||||||
private final String digest;
|
|
||||||
private final double delay;
|
|
||||||
private final double launchMass;
|
|
||||||
private final double emptyMass;
|
|
||||||
|
|
||||||
|
|
||||||
public ThrustCurveMotorPlaceholder(Type type, String manufacturer, String designation, double diameter, double length,
|
|
||||||
String digest, double delay, double launchMass, double emptyMass) {
|
|
||||||
this.type = type;
|
|
||||||
this.manufacturer = manufacturer;
|
|
||||||
this.designation = designation;
|
|
||||||
this.diameter = diameter;
|
|
||||||
this.length = length;
|
|
||||||
this.digest = digest;
|
|
||||||
this.delay = delay;
|
|
||||||
this.launchMass = launchMass;
|
|
||||||
this.emptyMass = emptyMass;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Type getMotorType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getManufacturer() {
|
|
||||||
return manufacturer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDesignation() {
|
|
||||||
return designation;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDesignation(double designationDelay) {
|
|
||||||
return designation + "-" + ThrustCurveMotor.getDelayString(designationDelay);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDescription() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getDiameter() {
|
|
||||||
return diameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getLength() {
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getDigest() {
|
|
||||||
return digest;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getDelay() {
|
|
||||||
return delay;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Motor clone() {
|
|
||||||
throw new BugException("Called getInstance on PlaceholderMotor");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getBurnTimeEstimate() {
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getAverageThrustEstimate() {
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getMaxThrustEstimate() {
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getTotalImpulseEstimate() {
|
|
||||||
return Double.NaN;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = 1;
|
|
||||||
long temp;
|
|
||||||
temp = Double.doubleToLongBits(delay);
|
|
||||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
|
||||||
result = prime * result
|
|
||||||
+ ((designation == null) ? 0 : designation.hashCode());
|
|
||||||
temp = Double.doubleToLongBits(diameter);
|
|
||||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
|
||||||
result = prime * result + ((digest == null) ? 0 : digest.hashCode());
|
|
||||||
temp = Double.doubleToLongBits(emptyMass);
|
|
||||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
|
||||||
temp = Double.doubleToLongBits(launchMass);
|
|
||||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
|
||||||
temp = Double.doubleToLongBits(length);
|
|
||||||
result = prime * result + (int) (temp ^ (temp >>> 32));
|
|
||||||
result = prime * result
|
|
||||||
+ ((manufacturer == null) ? 0 : manufacturer.hashCode());
|
|
||||||
result = prime * result + ((type == null) ? 0 : type.hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj)
|
|
||||||
return true;
|
|
||||||
if (obj == null)
|
|
||||||
return false;
|
|
||||||
if (getClass() != obj.getClass())
|
|
||||||
return false;
|
|
||||||
ThrustCurveMotorPlaceholder other = (ThrustCurveMotorPlaceholder) obj;
|
|
||||||
if (Double.doubleToLongBits(delay) != Double
|
|
||||||
.doubleToLongBits(other.delay))
|
|
||||||
return false;
|
|
||||||
if (designation == null) {
|
|
||||||
if (other.designation != null)
|
|
||||||
return false;
|
|
||||||
} else if (!designation.equals(other.designation))
|
|
||||||
return false;
|
|
||||||
if (Double.doubleToLongBits(diameter) != Double
|
|
||||||
.doubleToLongBits(other.diameter))
|
|
||||||
return false;
|
|
||||||
if (digest == null) {
|
|
||||||
if (other.digest != null)
|
|
||||||
return false;
|
|
||||||
} else if (!digest.equals(other.digest))
|
|
||||||
return false;
|
|
||||||
if (Double.doubleToLongBits(emptyMass) != Double
|
|
||||||
.doubleToLongBits(other.emptyMass))
|
|
||||||
return false;
|
|
||||||
if (Double.doubleToLongBits(launchMass) != Double
|
|
||||||
.doubleToLongBits(other.launchMass))
|
|
||||||
return false;
|
|
||||||
if (Double.doubleToLongBits(length) != Double
|
|
||||||
.doubleToLongBits(other.length))
|
|
||||||
return false;
|
|
||||||
if (manufacturer == null) {
|
|
||||||
if (other.manufacturer != null)
|
|
||||||
return false;
|
|
||||||
} else if (!manufacturer.equals(other.manufacturer))
|
|
||||||
return false;
|
|
||||||
if (type != other.type)
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "ThrustCurveMotorPlaceholder [manufacturer=" + manufacturer
|
|
||||||
+ ", designation=" + designation + "]";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getLaunchCGx() {
|
|
||||||
return length / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getBurnoutCGx() {
|
|
||||||
return length / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getLaunchMass() {
|
|
||||||
return launchMass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getBurnoutMass() {
|
|
||||||
return emptyMass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getThrust(double pseudoIndex) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getAverageThrust(double startTime, double endTime) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getTotalMass(final double motorTime) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getPropellantMass( final Double motorTime){
|
|
||||||
return 0.;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getCMx(double pseudoIndex) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getBurnTime() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getUnitIxx() {
|
|
||||||
return 0.;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getUnitIyy() {
|
|
||||||
return 0.;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getUnitIzz(){
|
|
||||||
return 0.;
|
|
||||||
}
|
|
||||||
}
|
|
@ -177,8 +177,6 @@ public class MotorRowFilterTest {
|
|||||||
// create a motor with all fields explicitly defined
|
// create a motor with all fields explicitly defined
|
||||||
// This is the Aerotech H123 from thrustcurve.org, motor ID 917
|
// This is the Aerotech H123 from thrustcurve.org, motor ID 917
|
||||||
final ThrustCurveMotor fullMotor = new ThrustCurveMotor.Builder()
|
final ThrustCurveMotor fullMotor = new ThrustCurveMotor.Builder()
|
||||||
.setAverageThrustEstimate(83.5)
|
|
||||||
.setBurnTimeEstimate(2.5)
|
|
||||||
.setCaseInfo("Aerotech 38/240")
|
.setCaseInfo("Aerotech 38/240")
|
||||||
.setCGPoints(new Coordinate[] {new Coordinate(0.077, 0, 0, 125.0),
|
.setCGPoints(new Coordinate[] {new Coordinate(0.077, 0, 0, 125.0),
|
||||||
new Coordinate(0.077, 0, 0, 109.93),
|
new Coordinate(0.077, 0, 0, 109.93),
|
||||||
@ -199,13 +197,11 @@ public class MotorRowFilterTest {
|
|||||||
.setInitialMass(293.3)
|
.setInitialMass(293.3)
|
||||||
.setLength(0.152)
|
.setLength(0.152)
|
||||||
.setManufacturer(Manufacturer.getManufacturer("AeroTech"))
|
.setManufacturer(Manufacturer.getManufacturer("AeroTech"))
|
||||||
.setMaxThrustEstimate(174.2)
|
|
||||||
.setMotorType(Motor.Type.RELOAD)
|
.setMotorType(Motor.Type.RELOAD)
|
||||||
.setPropellantInfo("White Lightning")
|
.setPropellantInfo("White Lightning")
|
||||||
.setStandardDelays(new double[] {6, 10, 14})
|
.setStandardDelays(new double[] {6, 10, 14})
|
||||||
.setThrustPoints(new double[] {138.42, 116.45, 116.45, 112.18, 107.82, 86.29, 81.93, 64.72, 47.46, 43.15, 30.2, 0.0})
|
.setThrustPoints(new double[] {138.42, 116.45, 116.45, 112.18, 107.82, 86.29, 81.93, 64.72, 47.46, 43.15, 30.2, 0.0})
|
||||||
.setTimePoints(new double[] {0.0, 0.2, 0.6, 0.7, 0.8, 1.3, 1.5, 1.8, 2.1, 2.2, 2.3, 2.6})
|
.setTimePoints(new double[] {0.0, 0.2, 0.6, 0.7, 0.8, 1.3, 1.5, 1.8, 2.1, 2.2, 2.3, 2.6})
|
||||||
.setTotalThrustEstimate(211.4)
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// two search terms, both present, one only a substring of a column
|
// two search terms, both present, one only a substring of a column
|
||||||
|
Loading…
x
Reference in New Issue
Block a user