1"""Test coupled blowdown solver with mock engine callback."""
4from types
import SimpleNamespace
6sys.path.insert(0,
'/home/adnan/EngineDesign')
11mock_config = SimpleNamespace(
13 'oxidizer': SimpleNamespace(density=1140.0),
14 'fuel': SimpleNamespace(density=800.0)
16 lox_tank=SimpleNamespace(tank_volume_m3=0.1, mass=50.0),
17 fuel_tank=SimpleNamespace(tank_volume_m3=0.1, mass=40.0)
24 mdot_lox = 1.0 * np.sqrt(P_lox / P_ref)
25 mdot_fuel = 0.8 * np.sqrt(P_fuel / P_ref)
26 return mdot_lox, mdot_fuel
29times = np.linspace(0, 5, 51)
30results = simulate_coupled_blowdown(
32 evaluate_engine_fn=mock_engine_evaluator,
33 P_lox_initial_Pa=600 * 6894.76,
34 P_fuel_initial_Pa=600 * 6894.76,
39print(
"\nā Coupled Blowdown Solver Test")
40print(
"------------------------------")
41print(f
"Time steps: {len(times)}")
42print(f
"LOX Pressure: {results['lox']['P_Pa'][0]/6894.76:.1f} -> {results['lox']['P_Pa'][-1]/6894.76:.1f} psi")
43print(f
"Fuel Pressure: {results['fuel']['P_Pa'][0]/6894.76:.1f} -> {results['fuel']['P_Pa'][-1]/6894.76:.1f} psi")
44print(f
"LOX Mass: {results['lox']['m_prop_kg'][0]:.1f} -> {results['lox']['m_prop_kg'][-1]:.1f} kg")
47mdot_0 = results[
'lox'][
'mdot_kg_s'][0]
48mdot_end = results[
'lox'][
'mdot_kg_s'][-1]
49print(f
"LOX Flow Rate: {mdot_0:.3f} -> {mdot_end:.3f} kg/s")
52 print(
"ā Flow rate decreased with pressure (Coupling verified)")
54 print(
"ā Flow rate did not decrease correctly!")
57assert results[
'lox'][
'P_Pa'][0] > results[
'lox'][
'P_Pa'][-1],
"Pressure should decrease"
58assert results[
'lox'][
'm_prop_kg'][0] > results[
'lox'][
'm_prop_kg'][-1],
"Mass should decrease"
mock_engine_evaluator(P_lox, P_fuel)