示例#1
0
SRB = SolidPropellantBooster("b1", 39800)  # data from Isakowitz p. 31
core_vehicle = ExpendableBallisticStageLH2(
    "s1", 12200 - 1300)  # data from Isakowitz, less engine
vulcain_engine = CryoLH2TurboFed("e1", 1300)
stage2 = ExpendableBallisticStageStorable(
    "s2", 1200 + 1500 + 2025 + 716 - 111
)  # data from Isakowitz, including VEB, short fairing, SPELTRA, less engine
aestus_engine = StorablePressureFed("e2", 111)

ariane5_element_list = [
    SRB, core_vehicle, vulcain_engine, stage2, aestus_engine
]

ariane5G = LaunchVehicle(name="Ariane 5G",
                         M0=746,
                         N=4,
                         element_list=ariane5_element_list)
ariane_engines_dict = {'e1': 1, 'e2': 1, 'b1': 2}
ariane_f8_dict = {
    's1': 0.86,
    'e1': 0.86,
    's2': 0.86,
    'e2': 0.77,
    'b1': 0.86,
    'veh': 0.86,
    'ops': 0.86
}

ariane_uncertainty_list = [
    rdm.TriangularUncertainty('p_s1',
                              min_value=0.75,
示例#2
0
def construct_launch_vehicle(stage_type,
                             prop_choice,
                             portion_reused,
                             ab_rec,
                             num_ab_engines=None,
                             num_rocket_engines=9):
    """Create a LaunchVehicle object given strategy choices and element masses.

    Arguments:
        stage_type: type of first stage vehicle, choose from 'winged' or 'ballistic'
        prop_choice: propellant choice for first stage, choose from 'kerosene' or 'H2'
        portion_reused: portion of first stage that is reused, choose from 'full', 'partial', or 'none'
        ab_rec (boolean): specifies whether the recovery scheme is powered or not, True for powered
        masses_dict: dictionary mapping vehicle element names to their dry masses in kg,
            i.e. {'element_name': mass}

    Returns:
        instance of the LaunchVehicle class describing the launch vehicle
    """

    stage2 = ExpendableBallisticStageStorable(name='s2', m=0)
    stage2_engine = StorableTurboFed(name='e2', m=0)
    veh_element_list = [stage2, stage2_engine]

    if stage_type == 'ballistic' and prop_choice == 'H2' and portion_reused == 'none':
        stage1 = ExpendableBallisticStageLH2(name='s1', m=0)
        stage1_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_list = [stage1, stage1_engine]

    elif stage_type == 'ballistic' and prop_choice == 'H2' and portion_reused == 'full':
        stage1 = ReusableBallisticStageLH2(name='s1', m=0)
        stage1_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_list = [stage1, stage1_engine]

    elif stage_type == 'ballistic' and prop_choice == 'H2' and portion_reused == 'partial':
        stage1_rec = ReusableBallisticStageLH2(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_list = [stage1_rec, stage1_disp, stage1_engine]

    elif stage_type == 'ballistic' and prop_choice == 'kerosene' and portion_reused == 'none':
        stage1 = ExpendableBallisticStageStorable(name='s1', m=0)
        stage1_engine = StorableTurboFed(name='e1', m=0)
        stage1_list = [stage1, stage1_engine]

    elif stage_type == 'ballistic' and prop_choice == 'kerosene' and portion_reused == 'full':
        stage1 = ReusableBallisticStageStorable(name='s1', m=0)
        stage1_engine = StorableTurboFed(name='e1', m=0)
        stage1_list = [stage1, stage1_engine]

    elif stage_type == 'ballistic' and prop_choice == 'kerosene' and portion_reused == 'partial':
        stage1_rec = ReusableBallisticStageStorable(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_engine = StorableTurboFed(name='e1', m=0)
        stage1_list = [stage1_rec, stage1_disp, stage1_engine]

    elif stage_type == 'winged' and prop_choice == 'H2' and portion_reused == 'full' and ab_rec:
        stage1 = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_rocket_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_ab_engine = TurboJetEngine(name='ab', m=0)
        stage1_list = [stage1, stage1_rocket_engine, stage1_ab_engine]

    elif stage_type == 'winged' and prop_choice == 'H2' and portion_reused == 'full' and not ab_rec:
        stage1_rec = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_rocket_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_list = [stage1_rec, stage1_rocket_engine]

    elif stage_type == 'winged' and prop_choice == 'H2' and portion_reused == 'partial' and ab_rec:
        stage1_rec = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_rocket_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_ab_engine = TurboJetEngine(name='ab', m=0)
        stage1_list = [
            stage1_rec, stage1_disp, stage1_rocket_engine, stage1_ab_engine
        ]

    elif stage_type == 'winged' and prop_choice == 'H2' and portion_reused == 'partial' and not ab_rec:
        stage1_rec = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_rocket_engine = CryoLH2TurboFed(name='e1', m=0)
        stage1_list = [stage1_rec, stage1_disp, stage1_rocket_engine]

    elif stage_type == 'winged' and prop_choice == 'kerosene' and portion_reused == 'full' and ab_rec:
        stage1 = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_rocket_engine = StorableTurboFed(name='e1', m=0)
        stage1_ab_engine = TurboJetEngine(name='ab', m=0)
        stage1_list = [stage1, stage1_rocket_engine, stage1_ab_engine]

    elif stage_type == 'winged' and prop_choice == 'kerosene' and portion_reused == 'full' and not ab_rec:
        stage1 = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_rocket_engine = StorableTurboFed(name='e1', m=0)
        stage1_list = [stage1, stage1_rocket_engine]

    elif stage_type == 'winged' and prop_choice == 'kerosene' and portion_reused == 'partial' and ab_rec:
        stage1_rec = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_rocket_engine = StorableTurboFed(name='e1', m=0)
        stage1_ab_engine = TurboJetEngine(name='ab', m=0)
        stage1_list = [
            stage1_rec, stage1_disp, stage1_rocket_engine, stage1_ab_engine
        ]

    elif stage_type == 'winged' and prop_choice == 'kerosene' and portion_reused == 'partial' and not ab_rec:
        stage1_rec = VTOStageFlybackVehicle(name='s1', m=0)
        stage1_disp = ExpendableTank(name='d1', m=0)
        stage1_rocket_engine = StorableTurboFed(name='e1', m=0)
        stage1_list = [stage1_rec, stage1_disp, stage1_rocket_engine]

    veh_element_list += stage1_list

    if portion_reused == 'partial':
        N_veh = 3
    else:
        N_veh = 2

    launch_vehicle = LaunchVehicle(name='veh',
                                   M0=0,
                                   N=N_veh,
                                   element_list=veh_element_list)
    return launch_vehicle
示例#3
0
aestus_engine = CryoLH2TurboFed("HM7B", 165)
aestus_engine_CER_vals = CERValues(aestus_engine.dev_a, aestus_engine.dev_x,
                                   aestus_engine.prod_a, aestus_engine.prod_x)
aestus_engine_cost_factors = ElementCostFactors(f1=0.8,
                                                f2=1.0,
                                                f3=0.8,
                                                f8=0.77,
                                                f10=1.0,
                                                f11=1.0,
                                                p=0.9)

ariane5_element_list = [
    SRB, core_vehicle, vulcain_engine, stage2, aestus_engine
]
ariane5ECA = LaunchVehicle(name="ariane5ECA",
                           M0=791,
                           N=4,
                           element_list=ariane5_element_list)

ariane5ECA_element_map = {
    "P240": [SRB_CER_vals, SRB_cost_factors, 2],
    "H173": [core_veh_CER_vals, core_veh_cost_factors, 1],
    "vulcain2": [vulcain_engine_CER_vals, vulcain_engine_cost_factors, 1],
    "ESC-A": [stage2_CER_vals, stage2_cost_factors, 1],
    "HM7B": [aestus_engine_CER_vals, aestus_engine_cost_factors, 1]
}

ariane5_cost_factors = VehicleCostFactors(f0_dev=1.04**3,
                                          f0_prod=1.02,
                                          f6=1.0,
                                          f7=1.0,
                                          f8=0.86,
示例#4
0
from lvreuse.cost.vehicle import LaunchVehicle
from lvreuse.cost.indirect_ops import indirect_ops_cost

core = ExpendableBallisticStageStorable(
    "s1",
    27200 - 9 * 470)  # stage - 9 engines, from space launch report, wikipedia
core_engine = ModernTurboFed("e1", 470)  #
stage2 = ExpendableBallisticStageStorable(
    "s2", 4500 + 1900 -
    470)  # stage + fairing - engine, from spaceflight101, space launch report
stage2_engine = ModernTurboFed("e2", 470)  #

falcon_elements = [core, core_engine, stage2, stage2_engine]

falcon9_block3 = LaunchVehicle(
    name='Falcon 9 Block 3', M0=459.054, N=2,
    element_list=falcon_elements)  # mass from spaceX website
falcon9_engines_dict = {'e1': 9, 'e2': 1}
falcon9_f8_dict = {
    's1': 1.0,
    'e1': 1.0,
    's2': 1.0,
    'e2': 1.0,
    'veh': 1.0,
    'ops': 1.0
}
falcon_uncertainty_list = [
    rdm.TriangularUncertainty('p_s1',
                              min_value=0.75,
                              mode_value=0.8,
                              max_value=0.85),
示例#5
0
    def setUp(self):

        self.SRB = SolidPropellantBooster("SRB", 39300)
        self.SRB_CER_vals = CERValues(self.SRB.dev_a, self.SRB.dev_x,
                                      self.SRB.prod_a, self.SRB.prod_x)
        self.SRB_cost_factors = ElementCostFactors(f1=1.1,
                                                   f2=1.0,
                                                   f3=0.9,
                                                   f8=0.86,
                                                   f10=1.0,
                                                   f11=1.0,
                                                   p=0.9)

        self.core_vehicle = ExpendableBallisticStageLH2("core_vehicle", 13610)
        self.core_veh_CER_vals = CERValues(self.core_vehicle.dev_a,
                                           self.core_vehicle.dev_x,
                                           self.core_vehicle.prod_a,
                                           self.core_vehicle.prod_x)
        self.core_veh_cost_factors = ElementCostFactors(f1=1.1,
                                                        f2=1.16,
                                                        f3=0.85,
                                                        f8=0.86,
                                                        f10=1.0,
                                                        f11=1.0,
                                                        p=0.9)

        self.vulcain_engine = CryoLH2TurboFed("vulcain_engine", 1685)
        self.vulcain_engine_CER_vals = CERValues(self.vulcain_engine.dev_a,
                                                 self.vulcain_engine.dev_x,
                                                 self.vulcain_engine.prod_a,
                                                 self.vulcain_engine.prod_x)
        self.vulcain_engine_cost_factors = ElementCostFactors(f1=1.1,
                                                              f2=0.79,
                                                              f3=0.9,
                                                              f8=0.86,
                                                              f10=1.0,
                                                              f11=1.0,
                                                              p=0.9)

        self.stage2 = ExpendableBallisticStageStorable("stage2", 2500)
        self.stage2_CER_vals = CERValues(self.stage2.dev_a, self.stage2.dev_x,
                                         self.stage2.prod_a,
                                         self.stage2.prod_x)
        self.stage2_cost_factors = ElementCostFactors(f1=0.9,
                                                      f2=1.09,
                                                      f3=0.9,
                                                      f8=0.86,
                                                      f10=1.0,
                                                      f11=1.0,
                                                      p=0.9)

        self.aestus_engine = StorablePressureFed("aestus_engine", 119)
        self.aestus_engine_CER_vals = CERValues(self.aestus_engine.dev_a,
                                                self.aestus_engine.dev_x,
                                                self.aestus_engine.prod_a,
                                                self.aestus_engine.prod_x)
        self.aestus_engine_cost_factors = ElementCostFactors(f1=0.8,
                                                             f2=1.0,
                                                             f3=0.8,
                                                             f8=0.77,
                                                             f10=1.0,
                                                             f11=1.0,
                                                             p=0.9)

        ariane5_element_list = [
            self.SRB, self.core_vehicle, self.vulcain_engine, self.stage2,
            self.aestus_engine
        ]
        self.ariane5 = LaunchVehicle("ariane5", 777, 4, ariane5_element_list)

        self.ariane5_element_map = {
            "SRB": [self.SRB_CER_vals, self.SRB_cost_factors, 2],
            "core_vehicle":
            [self.core_veh_CER_vals, self.core_veh_cost_factors, 1],
            "vulcain_engine": [
                self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
                1
            ],
            "stage2": [self.stage2_CER_vals, self.stage2_cost_factors, 1],
            "aestus_engine":
            [self.aestus_engine_CER_vals, self.aestus_engine_cost_factors, 1]
        }

        self.ariane5_cost_factors = VehicleCostFactors(f0_dev=1.04**3,
                                                       f0_prod=1.025,
                                                       f6=1.0,
                                                       f7=1.0,
                                                       f8=0.86,
                                                       f9=1.07,
                                                       p=0.9)

        self.ariane_prod_nums = [1]
        self.ariane_prod_nums3 = [1, 2, 3]

        self.ariane5_ops_cost_factors = OperationsCostFactors(f5_dict={},
                                                              f8=0.86,
                                                              f11=1.0,
                                                              fv=0.9,
                                                              fc=0.85,
                                                              p=0.9)
        self.launch_rate = 7
        self.launch_nums_list = range(1, 10)

        self.ariane5_sum_QN = 1.6
示例#6
0
class TestVehicleClass(unittest.TestCase):
    def setUp(self):

        self.SRB = SolidPropellantBooster("SRB", 39300)
        self.SRB_CER_vals = CERValues(self.SRB.dev_a, self.SRB.dev_x,
                                      self.SRB.prod_a, self.SRB.prod_x)
        self.SRB_cost_factors = ElementCostFactors(f1=1.1,
                                                   f2=1.0,
                                                   f3=0.9,
                                                   f8=0.86,
                                                   f10=1.0,
                                                   f11=1.0,
                                                   p=0.9)

        self.core_vehicle = ExpendableBallisticStageLH2("core_vehicle", 13610)
        self.core_veh_CER_vals = CERValues(self.core_vehicle.dev_a,
                                           self.core_vehicle.dev_x,
                                           self.core_vehicle.prod_a,
                                           self.core_vehicle.prod_x)
        self.core_veh_cost_factors = ElementCostFactors(f1=1.1,
                                                        f2=1.16,
                                                        f3=0.85,
                                                        f8=0.86,
                                                        f10=1.0,
                                                        f11=1.0,
                                                        p=0.9)

        self.vulcain_engine = CryoLH2TurboFed("vulcain_engine", 1685)
        self.vulcain_engine_CER_vals = CERValues(self.vulcain_engine.dev_a,
                                                 self.vulcain_engine.dev_x,
                                                 self.vulcain_engine.prod_a,
                                                 self.vulcain_engine.prod_x)
        self.vulcain_engine_cost_factors = ElementCostFactors(f1=1.1,
                                                              f2=0.79,
                                                              f3=0.9,
                                                              f8=0.86,
                                                              f10=1.0,
                                                              f11=1.0,
                                                              p=0.9)

        self.stage2 = ExpendableBallisticStageStorable("stage2", 2500)
        self.stage2_CER_vals = CERValues(self.stage2.dev_a, self.stage2.dev_x,
                                         self.stage2.prod_a,
                                         self.stage2.prod_x)
        self.stage2_cost_factors = ElementCostFactors(f1=0.9,
                                                      f2=1.09,
                                                      f3=0.9,
                                                      f8=0.86,
                                                      f10=1.0,
                                                      f11=1.0,
                                                      p=0.9)

        self.aestus_engine = StorablePressureFed("aestus_engine", 119)
        self.aestus_engine_CER_vals = CERValues(self.aestus_engine.dev_a,
                                                self.aestus_engine.dev_x,
                                                self.aestus_engine.prod_a,
                                                self.aestus_engine.prod_x)
        self.aestus_engine_cost_factors = ElementCostFactors(f1=0.8,
                                                             f2=1.0,
                                                             f3=0.8,
                                                             f8=0.77,
                                                             f10=1.0,
                                                             f11=1.0,
                                                             p=0.9)

        ariane5_element_list = [
            self.SRB, self.core_vehicle, self.vulcain_engine, self.stage2,
            self.aestus_engine
        ]
        self.ariane5 = LaunchVehicle("ariane5", 777, 4, ariane5_element_list)

        self.ariane5_element_map = {
            "SRB": [self.SRB_CER_vals, self.SRB_cost_factors, 2],
            "core_vehicle":
            [self.core_veh_CER_vals, self.core_veh_cost_factors, 1],
            "vulcain_engine": [
                self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
                1
            ],
            "stage2": [self.stage2_CER_vals, self.stage2_cost_factors, 1],
            "aestus_engine":
            [self.aestus_engine_CER_vals, self.aestus_engine_cost_factors, 1]
        }

        self.ariane5_cost_factors = VehicleCostFactors(f0_dev=1.04**3,
                                                       f0_prod=1.025,
                                                       f6=1.0,
                                                       f7=1.0,
                                                       f8=0.86,
                                                       f9=1.07,
                                                       p=0.9)

        self.ariane_prod_nums = [1]
        self.ariane_prod_nums3 = [1, 2, 3]

        self.ariane5_ops_cost_factors = OperationsCostFactors(f5_dict={},
                                                              f8=0.86,
                                                              f11=1.0,
                                                              fv=0.9,
                                                              fc=0.85,
                                                              p=0.9)
        self.launch_rate = 7
        self.launch_nums_list = range(1, 10)

        self.ariane5_sum_QN = 1.6

    def test_element_dev_costs(self):

        SRB_dev_cost = self.SRB.element_development_cost(
            self.SRB_CER_vals, self.SRB_cost_factors)
        self.assertAlmostEqual(SRB_dev_cost, 5025, delta=1)

        core_veh_dev_cost = self.core_vehicle.element_development_cost(
            self.core_veh_CER_vals, self.core_veh_cost_factors)
        self.assertAlmostEqual(core_veh_dev_cost, 18092, delta=1)

        vulcain_engine_dev_cost = self.vulcain_engine.element_development_cost(
            self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors)
        self.assertAlmostEqual(vulcain_engine_dev_cost, 6592, delta=1)

        stage2_dev_cost = self.stage2.element_development_cost(
            self.stage2_CER_vals, self.stage2_cost_factors)
        self.assertAlmostEqual(stage2_dev_cost, 5750, delta=1)

        aestus_engine_dev_cost = self.aestus_engine.element_development_cost(
            self.aestus_engine_CER_vals, self.aestus_engine_cost_factors)
        self.assertAlmostEqual(aestus_engine_dev_cost, 438, delta=1)

    def test_vehicle_dev_cost(self):

        ariane5_dev_cost = self.ariane5.vehicle_development_cost(
            self.ariane5_cost_factors, self.ariane5_element_map)
        self.assertAlmostEqual(ariane5_dev_cost, 40379, delta=5)

    def test_element_prod_cost(self):

        SRB_prod_cost = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, self.ariane_prod_nums)
        self.assertAlmostEqual(SRB_prod_cost, 155, delta=1)

        SRB_prod_cost2 = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [1, 2])
        self.assertAlmostEqual(SRB_prod_cost2, 147, delta=1)

        core_veh_prod_cost = self.core_vehicle.average_element_production_cost(
            self.core_veh_CER_vals, self.core_veh_cost_factors,
            self.ariane_prod_nums)
        self.assertAlmostEqual(core_veh_prod_cost, 435, delta=1)

        vulcain_engine_prod_cost = self.vulcain_engine.average_element_production_cost(
            self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
            self.ariane_prod_nums)
        self.assertAlmostEqual(vulcain_engine_prod_cost, 144, delta=1)

        stage2_prod_cost = self.stage2.average_element_production_cost(
            self.stage2_CER_vals, self.stage2_cost_factors,
            self.ariane_prod_nums)
        self.assertAlmostEqual(stage2_prod_cost, 110, delta=1)

        aestus_engine_prod_cost = self.aestus_engine.average_element_production_cost(
            self.aestus_engine_CER_vals, self.aestus_engine_cost_factors,
            self.ariane_prod_nums)
        self.assertAlmostEqual(aestus_engine_prod_cost, 19, delta=1)

    def test_vehicle_prod_cost(self):

        ariane5_TFU_prod_cost = self.ariane5.average_vehicle_production_cost(
            self.ariane5_cost_factors, self.ariane_prod_nums,
            self.ariane5_element_map)
        self.assertAlmostEqual(ariane5_TFU_prod_cost, 1183, delta=1)

    def test_vehicle_prod_cost3(self):

        ariane5_first3_prod_cost = self.ariane5.average_vehicle_production_cost(
            self.ariane5_cost_factors, self.ariane_prod_nums3,
            self.ariane5_element_map)

        # vehicle1
        SRB_prod_cost = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [1])
        SRB_prod_cost2 = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [2])
        core_veh_prod_cost = self.core_vehicle.average_element_production_cost(
            self.core_veh_CER_vals, self.core_veh_cost_factors, [1])
        vulcain_engine_prod_cost = self.vulcain_engine.average_element_production_cost(
            self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
            [1])
        stage2_prod_cost = self.stage2.average_element_production_cost(
            self.stage2_CER_vals, self.stage2_cost_factors, [1])
        aestus_engine_prod_cost = self.aestus_engine.average_element_production_cost(
            self.aestus_engine_CER_vals, self.aestus_engine_cost_factors, [1])

        vehicle1_cost = SRB_prod_cost + SRB_prod_cost2 + core_veh_prod_cost + vulcain_engine_prod_cost + stage2_prod_cost + aestus_engine_prod_cost

        #vehicle2
        SRB_prod_cost = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [3])
        SRB_prod_cost2 = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [4])
        core_veh_prod_cost = self.core_vehicle.average_element_production_cost(
            self.core_veh_CER_vals, self.core_veh_cost_factors, [2])
        vulcain_engine_prod_cost = self.vulcain_engine.average_element_production_cost(
            self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
            [2])
        stage2_prod_cost = self.stage2.average_element_production_cost(
            self.stage2_CER_vals, self.stage2_cost_factors, [2])
        aestus_engine_prod_cost = self.aestus_engine.average_element_production_cost(
            self.aestus_engine_CER_vals, self.aestus_engine_cost_factors, [2])

        vehicle2_cost = SRB_prod_cost + SRB_prod_cost2 + core_veh_prod_cost + vulcain_engine_prod_cost + stage2_prod_cost + aestus_engine_prod_cost

        SRB_prod_cost = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [5])
        SRB_prod_cost2 = self.SRB.average_element_production_cost(
            self.SRB_CER_vals, self.SRB_cost_factors, [6])
        core_veh_prod_cost = self.core_vehicle.average_element_production_cost(
            self.core_veh_CER_vals, self.core_veh_cost_factors, [3])
        vulcain_engine_prod_cost = self.vulcain_engine.average_element_production_cost(
            self.vulcain_engine_CER_vals, self.vulcain_engine_cost_factors,
            [3])
        stage2_prod_cost = self.stage2.average_element_production_cost(
            self.stage2_CER_vals, self.stage2_cost_factors, [3])
        aestus_engine_prod_cost = self.aestus_engine.average_element_production_cost(
            self.aestus_engine_CER_vals, self.aestus_engine_cost_factors, [3])

        vehicle3_cost = SRB_prod_cost + SRB_prod_cost2 + core_veh_prod_cost + vulcain_engine_prod_cost + stage2_prod_cost + aestus_engine_prod_cost

        vehicle_avg = (
            vehicle1_cost + vehicle2_cost + vehicle3_cost
        ) / 3. * self.ariane5_cost_factors.f0_prod**self.ariane5.N * self.ariane5_cost_factors.f9

        self.assertAlmostEqual(ariane5_first3_prod_cost, vehicle_avg, delta=1)

    def test_preflight_ground_ops_cost(self):

        ariane5_preflight_ops_cost = self.ariane5.preflight_ground_ops_cost(
            self.launch_rate, self.ariane5_ops_cost_factors,
            self.launch_nums_list)
        self.assertAlmostEqual(ariane5_preflight_ops_cost, 169, delta=1)

    def test_flight_mission_ops_cost(self):

        ariane5_mission_ops_cost = self.ariane5.flight_mission_ops_cost(
            self.ariane5_sum_QN, self.launch_rate,
            self.ariane5_ops_cost_factors, self.launch_nums_list)
        self.assertAlmostEqual(ariane5_mission_ops_cost, 6.3, delta=0.1)

    def test_recovery_ops_cost(self):

        ariane5_booster_rec_cost = self.ariane5.recovery_ops_cost(
            37, self.launch_rate, self.ariane5_ops_cost_factors)
        self.assertAlmostEqual(ariane5_booster_rec_cost, 8.7, delta=0.1)
示例#7
0
from lvreuse.cost.tools import cost_reduction_factor
from lvreuse.cost.elements import ExpendableBallisticStageStorable, ModernTurboFed
from lvreuse.cost.vehicle import LaunchVehicle
from lvreuse.cost.indirect_ops import indirect_ops_cost

core = ExpendableBallisticStageStorable(
    "s1", 950 - 9 * 35)  # stage - 9 engines, from spacelaunchreport
core_engine = ModernTurboFed("e1", 35)  #
stage2 = ExpendableBallisticStageStorable(
    "s2", 250 + 44 -
    35)  # stage + fairing - engine, from spacelaunchreport, rocketlabs
stage2_engine = ModernTurboFed("e2", 35)  #

electron_elements = [core, core_engine, stage2, stage2_engine]
electron = LaunchVehicle(
    name='Electron', M0=13.0, N=2,
    element_list=electron_elements)  # mass from rocketlabs
electron_engines_dict = {'e1': 9, 'e2': 1}
electron_f8_dict = {'s1': 1.0, 'e1': 1.0, 's2': 1.0, 'e2': 1.0, 'veh': 1.0}
electron_uncertainty_list = [
    rdm.TriangularUncertainty('p_s1',
                              min_value=0.85,
                              mode_value=0.9,
                              max_value=0.95),
    rdm.TriangularUncertainty('p_e1',
                              min_value=0.85,
                              mode_value=0.9,
                              max_value=0.95),
    rdm.TriangularUncertainty('p_s2',
                              min_value=0.85,
                              mode_value=0.9,
示例#8
0
from lvreuse.cost.vehicle import LaunchVehicle
from lvreuse.cost.indirect_ops import indirect_ops_cost

core = ExpendableBallisticStageStorable(
    "s1", 20743 + 420 + 375 - 5480
)  # CCB, data from Isakowitz, p. 77, includes core, booster and interstage adapter
core_engine = StorableTurboFed("e1", 5480)  # RD-180
stage2 = ExpendableBallisticStageLH2(
    "s2", 1914 + 2085 -
    168)  # centaur, data from Isakowitz, stage + short fairing - engine
stage2_engine = CryoLH2TurboFed("e2", 168)  # RL-10A

atlas_elements = [core, core_engine, stage2, stage2_engine]

atlasV_401 = LaunchVehicle(name='Atlas V 401',
                           M0=334.5,
                           N=2,
                           element_list=atlas_elements)
atlasV_engines_dict = {'e1': 1, 'e2': 1}
atlasV_f8_dict = {
    's1': 1.0,
    'e1': 1.49,
    's2': 1.0,
    'e2': 1.0,
    'veh': 1.0,
    'ops': 1.0
}
atlas_uncertainty_list = [
    rdm.TriangularUncertainty('p_s1',
                              min_value=0.75,
                              mode_value=0.8,
                              max_value=0.85),
示例#9
0
import math
import matplotlib.pyplot as plt
import rhodium as rdm
import os.path
from lvreuse.cost.tools import cost_reduction_factor
from lvreuse.cost.elements import ExpendableBallisticStageStorable, SolidPropellantVehicleStage, StorableTurboFed
from lvreuse.cost.vehicle import LaunchVehicle
from lvreuse.cost.indirect_ops import indirect_ops_cost


core = ExpendableBallisticStageStorable("s1", 18800 - 2 * 2350) # stage - engines, from spacelaunchreport,
core_engine = StorableTurboFed("e1", 2350) # from russianspaceweb
stage2 = SolidPropellantVehicleStage("s2", 2100 + 972) # stage + fairing, from Isakowitz

antares_elements = [core, core_engine, stage2]
antares230 = LaunchVehicle(name='antares230', M0=286, N=2, element_list=antares_elements) # mass from spacelaunchreport
antares_engines_dict = {'e1': 2}
antares_f8_dict = {'s1': 1.0, 'e1': 1.49, 's2': 1.0, 'veh': 1.0, 'ops': 1.0}

antares_uncertainty_list = [
    rdm.TriangularUncertainty('p_s1', min_value=0.75, mode_value=0.8, max_value=0.85),
    rdm.TriangularUncertainty('p_e1', min_value=0.75, mode_value=0.8, max_value=0.85),
    rdm.TriangularUncertainty('p_s2', min_value=0.75, mode_value=0.8, max_value=0.85),
    rdm.TriangularUncertainty('f0_prod_veh', min_value=1.02, mode_value=1.025, max_value=1.03),
    rdm.TriangularUncertainty('f9_veh', min_value=1.03, mode_value=1.04, max_value=1.05),
    rdm.TriangularUncertainty('f10_s1', min_value=0.75, mode_value=0.8, max_value=0.85),
    rdm.TriangularUncertainty('f10_e1', min_value=0.75, mode_value=0.8, max_value=0.85),
    rdm.TriangularUncertainty('f10_s2', min_value=0.75, mode_value=0.8, max_value=0.85),
]

antares_ops_uncertainty_list =[