reilleya / openMotor

An open-source internal ballistics simulator for rocket motor experimenters
GNU General Public License v3.0
351 stars 69 forks source link

Pressure transients #34

Open reilleya opened 5 years ago

reilleya commented 5 years ago

Do some research into loosening the assumption that pressure is at steady state. It would be cool to (optionally) simulate things like startup pressure from a known igniter or burst disk, and also to estimate how pressure drops off after all propellant has been consumed.

adam-aitoumez commented 5 years ago

Steady-state assumption is generally alright, but limits the modeling of burst disk or chamber filling/blowdown effects as you mentioned, as well as analyzing motor sensitivity to things like rapid increase in burning area or decrease in throat area. A better method is to use

where Rg is the combustion products specific gas constant, Tf is the combustion temperature, Vc is chamber free volume, and ρg is combustion gas density, all of which either products of grain geometry or pressure and propellant-dependent constants that come from an equilibrium combustion solver.

reilleya commented 5 years ago

Thanks for doing the research for me! Are you interested in implementing this? I will if you don't, but it would be nice to have additional collaborators.

PS: Congrats on the space shot! I have been following RPL for a few years now and was very excited to see that it finally worked out.

adam-aitoumez commented 5 years ago

I am interested - I see this going hand-in-hand with implementing lookup of tabular thermochemistry data as alluded to in https://github.com/reilleya/openMotor/issues/31#issuecomment-484758401, so I can take a crack at doing both of those. I personally only use CEA so I think my parser/interpolated lookup may be different from what's needed for ProPEP parsing, but it shouldn't be too hard to make it extensible to that case.

I'll dig into how y'all currently implement the steady-state pressure calculation, may have to play around with how the motor is initialized to get the time-unsteady equation working. It would also be good to implement a variable time step solver akin to MATLAB's ode45 in conjunction with this, because in even the largest amateur motors chamber filling takes very little time (<0.1 sec for USCRPL's Traveler 3-class motor). Blow down is a little longer, but regardless a tiny time step is necessary to accurately capture transients whereas a larger time step can be used for steady-state operation.

Also, thank you!! It's been a deeply exciting several years to be a part of the team, and it's always quite cool to hear that folks have been following our journey and all of its ups and downs.