我正在试图建模火箭中火箭的轨迹。我已经成功完成了此操作,现在我正在尝试查看蒙特卡洛模拟。

问题描述 投票:0回答:1
# Imports from rocketpy import Environment, SolidMotor, Rocket, Flight, MonteCarlo from rocketpy.stochastic import ( StochasticEnvironment, StochasticSolidMotor, StochasticRocket, StochasticFlight, ) import numpy as np # Date: import datetime %matplotlib widget # Environment env = Environment(latitude=67.89325597913002,longitude=21.065756056273834, elevation=300) tomorrow = datetime.date.today() + datetime.timedelta(days=1) env.set_date((tomorrow.year, tomorrow.month, tomorrow.day, 12)) env.set_atmospheric_model(type="Ensemble", file="GEFS") # Motor RedMotor = SolidMotor( thrust_source=r"...\Python Modelling\Thrust curves\RedMotor.eng", burn_time=13.1, # s dry_mass=1.815, # kg dry_inertia=(1.86, 1.86, 0.13), center_of_dry_mass_position=0, grains_center_of_mass_position=0, grain_number=1, grain_separation=0, grain_density=1750, # kg/m^3 grain_outer_radius=0.2612, # m grain_initial_inner_radius=0.0726, # m grain_initial_height=2.6072, # m nozzle_radius=0.235, # m throat_radius=0.0726, # m interpolation_method="linear", nozzle_position=2.1, # from CG of motor coordinate_system_orientation="combustion_chamber_to_nozzle", # combustion_chamber_to_nozzle" ) # Rocket RedRocket = Rocket( radius=0.23, mass=184.77, inertia=(1315, 1315, 14.1155), power_off_drag=r"...\\Python Modelling\\Drag curves\\Cesaroni_6026M1670_PpowerOffDragCurve.eng", power_on_drag=r"...\\Python Modelling\\Drag curves\\Cesaroni_6026M1670_PpowerOnDragCurve.eng", center_of_mass_without_motor=4.45, coordinate_system_orientation="nose_to_tail", ) rail_buttons = RedRocket.set_rail_buttons( upper_button_position=3.8, lower_button_position=1.5, ) RedRocket.add_motor(RedMotor, position=6.6428125) nose_cone = RedRocket.add_nose(length=0.9375, kind="ogive", position=0) fin_set = RedRocket.add_trapezoidal_fins( n=4, root_chord=0.703125, tip_chord=0.703125, span=0.546875, position=8.01, ) transition = RedRocket.add_tail( top_radius=0.23, bottom_radius=0.2795, length=0.705625, position=4.57, ) Main = RedRocket.add_parachute( "Main", cd_s=2.2 * np.pi * (120 * 25.4 / 1000) * (120 * 25.4 / 1000) / 4, trigger=167.64, sampling_rate=105, lag=1, noise=(0, 8.3, 0.5), ) Drogue = RedRocket.add_parachute( "Drogue", cd_s=1.5 * np.pi * (24 * 25.4 / 1000) * (24 * 25.4 / 1000) / 4, trigger="apogee", sampling_rate=105, lag=1, noise=(0, 8.3, 0.5), ) # Flight test_flight = Flight( rocket=RedRocket, environment=env, rail_length=5.2, inclination=60, heading=0, ) test_flight.all_info()

随机部分:

# Stochastic Environment stochastic_env = StochasticEnvironment( environment=env, ensemble_member=list(range(env.num_ensemble_members)), ) stochastic_env.visualize_attributes() # Stochastic Motor stochastic_motor = StochasticSolidMotor( solid_motor=RedMotor, burn_start_time=(0, 0.1, "binomial"), grains_center_of_mass_position=0.001, grain_density=50, grain_separation=0.001, grain_initial_height=0.001, grain_initial_inner_radius= 0.00038, grain_outer_radius= 0.00038, total_impulse=(1.07*(RedMotor.total_impulse), (RedMotor.total_impulse/10)), throat_radius= 0.0005, nozzle_radius= 0.0005, nozzle_position=0.001, ) stochastic_motor.visualize_attributes() # Stochastic Rocket stochastic_rocket = StochasticRocket( rocket=RedRocket, radius=0.23, mass= 184.77, inertia_11= (1325.502, 0), inertia_22= (1325.502,0.01000), inertia_33= 0.01, center_of_mass_without_motor=4.45, ) stochastic_rocket.visualize_attributes() # Stochastic flight stochastic_flight = StochasticFlight( flight=test_flight, inclination=(60, 1), heading=(0, 2), ) stochastic_flight.visualize_attributes()
所有这些都可以,但我无法使蒙特卡洛模拟有效:

# Monte Carlo Simulations test_dispersion = MonteCarlo( filename="monte_carlo_analysis_outputs/monte_carlo_class_example", environment=stochastic_env, rocket=stochastic_rocket, flight=stochastic_flight, ) test_dispersion.simulate( number_of_simulations=1000, append=False)
当我获得“飞行”对象没有属性“ apogee”错误时。我在做什么错?
below是推力曲线:

; Red Rocket Motor Thrust Curve RedRocket 559 3440 0 914 1176 0.05 180952.4 0.2381 180952.4 1.8929 202975.0 1.9524 202975.0 3 204762.5 3.5 205952.4 4.4762 207440.0 4.5357 208927.5 4.5952 207440.0 4.71 205952.4 4.7143 200000 4.8929 186905.0 5 180952.4 5.298 175000 7.0595 138392.5 7.2381 137202.5 10.5 130952.4 12.0476 125000 12.3571 126487.5 12.5357 114880 12.7143 92857.5 13 25000 13.1190 5952.4 ;
当我在

test_dispersion.prints.all()

之前打电话时,这就是结果:
test_dispersion.simulate

看起来像您的随机细节一样,无法正确创建,就像我们从“ test_dispersion.prints.all()”中看到的那样
在此处进行复杂文档 - >
对于随机的envorienment

,这可能是由于缺乏随机细节所致 请尝试

Monte Carlo Simulation by RocketPy
Data Source:  monte_carlo_analysis_outputs/monte_carlo_class_example
Number of simulations:  0
Results: 

                Parameter            Mean       Std. Dev.
------------------------------------------------------------
如果您再也没有看到任何细节,那么在

部分之前很可能缺少数据
stochastic_motor.visualize_attributes()
print(total_impulse)
stochastic_rocket.visualize_attributes()
stochastic_flight.visualize_attributes()
python simulation montecarlo
1个回答
0
投票

test_dispersion = MonteCarlo( filename="monte_carlo_analysis_outputs/monte_carlo_class_example", environment=stochastic_env, rocket=stochastic_rocket, flight=stochastic_flight, )

在第一行中可以看到蜜蜂的地方。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.