26 max_flow_rate_kg_s: Optional[float] =
None,
27 burn_time_s: Optional[float] =
None,
30 Estimate COPV consumption coefficients from physical parameters.
37 Initial COPV pressure [psi]
39 Regulated pressure [psi]
40 max_flow_rate_kg_s : float, optional
41 Maximum expected flow rate from COPV [kg/s]
42 If None, estimated from typical values
43 burn_time_s : float, optional
44 Expected burn time [s]
45 If None, estimated from pressure drop
50 Dictionary with estimated coefficients:
51 - copv_cF: [Pa/s per unit u_F]
52 - copv_cO: [Pa/s per unit u_O]
54 - reg_ratio: P_reg / P_copv
56 V_copv_m3 = V_copv_L / 1000.0
57 P_copv_Pa = P_copv_psi * PSI_TO_PA
58 P_reg_Pa = P_reg_psi * PSI_TO_PA
61 reg_ratio = P_reg_Pa / P_copv_Pa
66 if max_flow_rate_kg_s
is None:
70 delta_P = P_copv_Pa - P_reg_Pa
72 max_flow_rate_kg_s = 0.001 * np.sqrt(delta_P)
80 m0 = (P_copv_Pa * V_copv_m3) / (R_N2 * T_N2)
84 dP_dt_max = -(R_N2 * T_N2 / V_copv_m3) * max_flow_rate_kg_s
90 copv_c = abs(dP_dt_max)
93 copv_cF = copv_c / 2.0
94 copv_cO = copv_c / 2.0
97 copv_loss = copv_c * 0.001
100 "copv_cF": float(copv_cF),
101 "copv_cO": float(copv_cO),
102 "copv_loss": float(copv_loss),
103 "reg_ratio": float(reg_ratio),
104 "estimated_max_flow_kg_s": float(max_flow_rate_kg_s),
105 "estimated_dP_dt_max_Pa_s": float(abs(dP_dt_max)),
113 regulator_Cv: Optional[float] =
None,
114 valve_Cv_F: Optional[float] =
None,
115 valve_Cv_O: Optional[float] =
None,
118 Calculate COPV coefficients from regulator and valve Cv values.
125 Initial COPV pressure [psi]
127 Regulated pressure [psi]
128 regulator_Cv : float, optional
129 Regulator flow coefficient Cv
130 valve_Cv_F : float, optional
131 Fuel valve flow coefficient Cv
132 valve_Cv_O : float, optional
133 Oxidizer valve flow coefficient Cv
138 Dictionary with calculated coefficients
140 V_copv_m3 = V_copv_L / 1000.0
141 P_copv_Pa = P_copv_psi * PSI_TO_PA
142 P_reg_Pa = P_reg_psi * PSI_TO_PA
148 if regulator_Cv
is None:
152 if valve_Cv_F
is None:
155 if valve_Cv_O
is None:
161 rho_N2_reg = P_reg_Pa / (R_N2 * T_N2)
164 delta_P_F = P_reg_Pa - 3e6
165 mdot_F_max = valve_Cv_F * 0.01 * np.sqrt(
max(delta_P_F, 0)) * rho_N2_reg
168 delta_P_O = P_reg_Pa - 3.5e6
169 mdot_O_max = valve_Cv_O * 0.01 * np.sqrt(
max(delta_P_O, 0)) * rho_N2_reg
172 dP_dt_F = -(R_N2 * T_N2 / V_copv_m3) * mdot_F_max
173 dP_dt_O = -(R_N2 * T_N2 / V_copv_m3) * mdot_O_max
175 copv_cF = abs(dP_dt_F)
176 copv_cO = abs(dP_dt_O)
177 copv_loss = (copv_cF + copv_cO) * 0.001
179 reg_ratio = P_reg_Pa / P_copv_Pa
182 "copv_cF": float(copv_cF),
183 "copv_cO": float(copv_cO),
184 "copv_loss": float(copv_loss),
185 "reg_ratio": float(reg_ratio),
186 "mdot_F_max_kg_s": float(mdot_F_max),
187 "mdot_O_max_kg_s": float(mdot_O_max),