public void VehicleCapability() { //Arrange var range = new PayloadRange(1250, 5000); var trajectory = new Trajectory(11475000, 150000, 22.0, 7400, "GTO"); var vehicle = new LaunchVehicle(); var vehicleCapability = new VehicleCapability(range, trajectory); vehicle.Capability.Add(trajectory.Name, vehicleCapability); var expectedName = "GTO"; var expectedRange = range; var expectedTrajectory = trajectory; //Act var vCapability = vehicle.Capability; var actualName = vCapability.Keys.ElementAt(0); var actualRange = vCapability.Values.ElementAt(0).PayloadRange; var actualTrajectory = vCapability.Values.ElementAt(0).Trajectory; //Assert Assert.AreEqual(expectedName, actualName); Assert.AreEqual(expectedRange, actualRange); Assert.AreEqual(expectedTrajectory, actualTrajectory); }
public void VehicleFairings() { // Arrange var vehicle = new LaunchVehicle(); var fairing = new Fairing(6.3, 1.5, 220); vehicle.Fairings.Add("M", fairing); var expectedName = "M"; var expectedLength = 6.3; var expectedDiameter = 1.5; var expectedMass = 220; //Act var vFairings = vehicle.Fairings; var actualName = vFairings.Keys.ElementAt(0); var actualLength = vFairings.Values.ElementAt(0).Length; var actualDiameter = vFairings.Values.ElementAt(0).Diameter; var actualMass = vFairings.Values.ElementAt(0).Mass; //Assert Assert.AreEqual(expectedName, actualName); Assert.AreEqual(expectedLength, actualLength); Assert.AreEqual(expectedDiameter, actualDiameter); Assert.AreEqual(expectedMass, actualMass); }
/// <summary> /// Start and execute the flight sequence /// <param name="countdown"></param> /// </summary> public void Execute(bool countdown = true) { if (countdown) { LaunchWithCountdown(); } else { LaunchWithoutCountdown(); } while (UpperStage == null) { new LaunchGuidance.LiftOff(LaunchVehicle, 1, 0).Execute(until: () => LaunchVehicle.VerticalSpeed > 100); new LaunchGuidance.GravityTurn(LaunchVehicle, 1, 1).Execute(until: () => LaunchVehicle.MeanAltitude > _meco); var ss = new LaunchGuidance.StageSeparation(LaunchVehicle, 1, 2); ss.OnComplete += (s, e) => UpperStage = ss.GetNextStage(); } UpperStage.AutoPilot.Engage(); LaunchVehicle.AutoPilot.Engage(); LaunchVehicle.Control.RCS = true; LaunchVehicle.AutoPilot.TargetPitchAndHeading(-5, 270); LaunchVehicle.ActivateCenterEngines(); while (Math.Abs(LaunchVehicle.Flight(LaunchVehicle.Orbit.Body.ReferenceFrame).Heading - 270) < 10) { ; } UpperStage.Control.Throttle = 1; LaunchVehicle.Control.Throttle = 1; }
public double ProgradePitch() { var tempRF = LaunchVehicle.AutoPilot.ReferenceFrame; LaunchVehicle.AutoPilot.ReferenceFrame = LaunchVehicle.SurfaceVelocityReferenceFrame; var result = LaunchVehicle.Flight(LaunchVehicle.SurfaceVelocityReferenceFrame).Prograde; throw new NotImplementedException(); }
private void GravityTurn(ref int runmode) { //LaunchVehicle.AutoPilot.TargetPitchAndHeading(Math.Max(5, (float)InterpolatePitch(LaunchVehicle.MeanAltitude)), 90); LaunchVehicle.AutoPilot.TargetPitchAndHeading(Math.Max(5, (float)VelocityAnglePitch()), 90); Print("Altitude: " + LaunchVehicle.MeanAltitude, 1, 0); Print("Pitch to: " + InterpolatePitch(LaunchVehicle.MeanAltitude), 2, 0); if (LaunchVehicle.MeanAltitude >= _meco) { LaunchVehicle.Control.Throttle = 0; //runmode++; //LaunchVehicle.Control.ActivateNextStage(); LaunchVehicle.ActivateCenterEngines(); Thread.Sleep(4000); LaunchVehicle.Control.Throttle = 1; } }
public void VehiclePacificationOption() { //Arrange var vehicle = new LaunchVehicle(); var option = new PacificationOption(PacificationType.GraveyardOrbit, 325); vehicle.PacificationOptions.Add("GraveYard", option); var expectedName = "GraveYard"; var expectedType = PacificationType.GraveyardOrbit; var expectedDeltaV = 325; //Act var vOptions = vehicle.PacificationOptions; var actualName = vOptions.Keys.ElementAt(0); var actualType = vOptions.Values.ElementAt(0).PacificationType; var actualDeltaV = vOptions.Values.ElementAt(0).RequiredDeltaV; //Assert Assert.AreEqual(expectedName, actualName); Assert.AreEqual(expectedType, actualType); Assert.AreEqual(expectedDeltaV, actualDeltaV); }