def define_onera_physical_hycom_14_test_combustion_object():
    """ Define the ONERA physical test CombustionObject for Hycom 14 test
    :return combustion object
    """

    # ------------ Generate the data layer:

    json_interpreter = generate_data_layer("DataLayerONERATests_Hycom14.json")
    # Use same data-layer used for Griffon (same pressure)
    combustion_table = json_interpreter.return_combustion_table()

    # ------------ Define parameters:

    geometric_params = {
        'L': 0.130,
        'rintInitial': 13.30e-3 / 2,
        'rext0': 94.5e-3 / 2,
        'regressionModel':
        Reg.TwoRegimesMarxmanAndFloodedModel(**combustion_table)
    }

    nozzle_params = {
        'At': (np.pi / 4) * 7.25e-3**2,
        'expansion': 6.3,
        'lambda_e': 0.98,
        'erosion': 0
    }

    simulation_params = {
        'ox_flow': 0.080,
        'safety_thickness': 0.005,
        'dt': 0.01,
        'max_burn_time': 8.5
    }

    # ------------- Generate objects:

    geometry_obj = Geom.OneCircularPort(**geometric_params)
    nozzle_obj = Noz.Nozzle(**nozzle_params)

    # Instantiate the combustion module
    combustion_object = CombustionObjectClassic(
        json_interpreter=json_interpreter,
        geometry_object=geometry_obj,
        nozzle_object=nozzle_obj)

    # -------------- Run simulation & Plot:

    combustion_object.run_simulation_constant_fuel_sliver(**simulation_params)

    # Return the combustion object
    return combustion_object
Esempio n. 2
0
def test_onera_physical_test_2():
    """ Study the potential evolution of the geometry associated to the 2nd physical test
        to be performed at ONERA. The characteristics of the Test are:
        1. Single Port Geometry
        2. Go range: [100, 500] kg/m^2/sec
        3. Chamber pressure: 36 bar, closest possible to the target pressure of Griffon.
    """

    # ------------ Generate the data layer:

    json_interpreter = generate_data_layer()                    # Use same data-layer used for Griffon (same pressure)
    combustion_table = json_interpreter.return_combustion_table()

    # ------------ Define parameters:

    geometric_params = {'L': 0.157,
                        'rintInitial': 0.007465,
                        'rext0': 0.041,
                        'regressionModel': Reg.TwoRegimesMarxmanAndFloodedModel(**combustion_table)}

    nozzle_params = {'At': 0.000038, 'expansion': 6.3, 'lambda_e': 0.98, 'erosion': 0}

    simulation_params = {'ox_flow': 0.0876, 'safety_thickness': 0.005, 'dt': 0.01, 'max_burn_time': 8}

    # ------------- Generate objects:

    geometry_obj = Geom.OneCircularPort(**geometric_params)
    nozzle_obj = Noz.Nozzle(**nozzle_params)
    json_interpreter = generate_data_layer(data_file="Thermodynamic Data Onera 41 bar H2O2 87_5.json")

    # Instantiate the combustion module
    combustion_obj = CombustionObjectClassic(json_interpreter=json_interpreter,
                                      geometry_object=geometry_obj,
                                      nozzle_object=nozzle_obj)

    # -------------- Run simulation & Plot:

    combustion_obj.run_simulation_constant_fuel_sliver(**simulation_params)

    # Print the module
    print(combustion_obj)

    # Plot the results
    combustion_obj.plot_results()
def define_onera_physical_hycom_16_test_combustion_object():
    """ Define the ONERA physical test CombustionObject for Hycom 16 test
    :return combustion object
    """

    # ------------ Generate the data layer:

    json_interpreter = generate_data_layer("DataLayerONERATests_Hycom16.json")
    # Use same data-layer used for Griffon (same pressure)
    combustion_table = json_interpreter.return_combustion_table()

    # ------------ Define parameters:

    shape_params = {
        'polynom': [-0.2701822916666667, 0.15625, 0],
        'baseRadius': 0.02,
        'branches': 5,
        'n': 50
    }

    geometric_params = {
        'L': 0.130,
        'externalRadius': 74.5 / 2000,
        'imagePixelSize': 2048,
        'imageMeterSize': 0.09,
        'regressionModel':
        Reg.TwoRegimesMarxmanAndFloodedModel(**combustion_table)
    }

    nozzle_params = {
        'At': 4.243e-5,
        'expansion': 6.3,
        'lambda_e': 0.98,
        'erosion': 0
    }

    simulation_params = {
        'ox_flow': 0.0975,
        'safety_thickness': 0.005,
        'max_burn_time': 7.5
    }

    # ------------- Generate objects:

    geometry_obj = Geom.SinglePortImageGeometry(**geometric_params)
    geometry_obj.generatePolynom(**shape_params)
    nozzle_obj = Noz.Nozzle(**nozzle_params)

    # Instantiate the combustion module
    combustion_object = CombustionObjectImage(
        json_interpreter=json_interpreter,
        geometry_object=geometry_obj,
        nozzle_object=nozzle_obj)

    # -------------- Run simulation & Plot:

    combustion_object.run_simulation_constant_fuel_sliver_image_geometry(
        **simulation_params)

    # Return the combustion object
    return combustion_object