50 """profile_points > 0 runs the Python march; the solver's (compiled) path must give the same."""
52 streams = [{
"name":
"O",
"mass_fraction": 0.6,
"D32": 90e-6,
"rho_l": 1100.0,
"cp_l": 1700.0,
53 "T0": 90.0,
"T_s": 140.0,
"h_fg": 1.3e5},
54 {
"name":
"F",
"mass_fraction": 0.4,
"D32": 150e-6,
"rho_l": 750.0,
"cp_l": 2600.0,
55 "T0": 293.0,
"T_s": 460.0,
"h_fg": 5.4e5}]
56 kw = dict(Pc=2.6e6, Tc=3200.0, gamma=1.14, R=350.0, m_dot_total=3.0, Ac=0.0127, L_chamber=0.18,
57 u_drop0=25.0, rr_q=3.0)
58 a = spray_vaporization_march(streams, **kw)
59 b = spray_vaporization_march(streams, **kw, profile_points=40)
60 assert "profile" not in a
and len(b[
"profile"][
"F"]) > 20
62 assert b[
"frac_vaporized"][n] == pytest.approx(a[
"frac_vaporized"][n], rel=1e-9)
63 assert b[
"profile"][
"F"][-1][1] == pytest.approx(b[
"frac_vaporized"][
"F"], rel=1e-12)
68 march = {
"L_chamber": 0.2,
"x_drop_formation": 0.01,
"streams": {
69 "O": {
"instant":
False,
"x95": 0.05,
"frac_end": 1.0,
"profile": [[0.0, 0.0], [0.2, 1.0]]},
70 "F": {
"instant":
False,
"x95":
None,
"frac_end": 0.9,
"profile": [[0.0, 0.0], [0.2, 0.9]]}}}
71 inp = {
"D32_O": 9e-5,
"D32_F": 1.5e-4,
"tau_conv_O": 0.01,
"tau_conv_F": 0.02,
"tau_sens": 0.003}
72 vap = _vaporization_profile(inp, 2.6e6, march=march)
73 assert vap[
"rate_limiting_stream"] ==
"F" and vap[
"L_vap_m"]
is None
74 assert vap[
"vaporized_in_chamber"]
is False
76 assert _radar(1.5, ac, vap, 1.05)[
"values"][3] == pytest.approx(0.9 / 0.95)