ferram4 / ProcEngines

Procedural Engines for Kerbal Space Program
MIT License
5 stars 2 forks source link

Propellant Wishlist #1

Open ferram4 opened 7 years ago

ferram4 commented 7 years ago

The options that this project are based on how many propellant mixtures we have to work with. If you'd like to help, please check out the WIP propellant config tutorial.

If there is something you're interested in working on, please comment. These configs are a lot of work and I would like to avoid duplicating work if possible. Once you begin work on a mixture config, please make an issue for that mixture and link it below, so that things can be organized well.


So far we have 3 necessary configs that need to be completed:

With these completed we will be able to create a reasonable simile of every in-common use engine that has flown.


There are several uncommon propellant combos that we can use that aren't in common use that would also be nice that the above 3 combos can not stand in for. They are, in order of desirability:


There are several other combos (mostly hypergolics) that would be nice to have but are sufficiently similar to UDMH + NTO that I won't list them here as they aren't a priority. If you've got some weird love for one of them, I'll still accept the configs, but there are higher priorities.

Tyaedalis commented 7 years ago

I'll take on LH2 + LOX, and possibly more.

I wrote a quick little Python script to extract relevant data from text files generated by RPA:

from os import walk

files = []
for (dirpath, dirnames, filenames) in walk('./data/'):
    files.extend(filenames)
    break

data = []
OFratio = None
for file in files:
    t = []
    with open('./data/' + file) as f:
        for i, line in enumerate(f):
            if i in [15, 24, 25, 31, 34, 39]:
                t.append(line.split())

    OFratio = t[0][2]
    Pc = t[1][1]
    Tc = t[2][1]
    Te = t[2][4]
    Pe = t[1][4]
    MW = t[4][4]
    gamma = t[3][4]
    Mach = t[5][5]

    data.append([Pc, Tc, Te, Pe, MW, gamma, Mach])

if len(data) < 15:
    print('[WRN] Less than 15 keys!')

block = ''.join(['MixtureRatioData\n{\n  OFratio =', OFratio,
        '\n  PressureData\n  {\n',
        ''.join(['    key = {}, {}, {}, {}, {}, {}, {}\n'.format(*line) for line in data]),
        '  }\n}'])

with open('results.txt', 'a') as f:
    f.write(block)

It assumes you are saving the generated text files in the same directory as the script, named data.txt. It will append results.txt with a new line each time it is run. Only run it once per set of data.

There is an up-to-date version of this script and more info in issue #3!

ferram4 commented 7 years ago

If you'd like to get started with LH2 + LOX, go ahead; the extra instructions for handling rich mixtures doesn't apply for LH2 + LOX given the lack of carbon. Also, thanks!

Tyaedalis commented 7 years ago

Ah, thanks. I was wondering why I kept getting weird data. It seems LH2/LOX has a huge range of operable ratios, from 1-204 by my guess. Does that seem correct to you?

Happy to help. I've been wanting procedural engines for some time! On Mon, Jul 31, 2017 at 8:49 AM ferram4 notifications@github.com wrote:

If you'd like to get started with LH2 + LOX, go ahead; the extra instructions for handling rich mixtures doesn't apply for LH2 + LOX given the lack of carbon.

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/ferram4/ProcEngines/issues/1#issuecomment-319111336, or mute the thread https://github.com/notifications/unsubscribe-auth/AA9nSKEmCDTBBeuLLaQeA_bPXF5BywXGks5sTfecgaJpZM4On0Af .

ferram4 commented 7 years ago

I'd go for lower O/F ratios, actually. Hydrolox engines tend to run really fuel-rich, and their preburners/gas generators even more so, so I'd take the O/F down to 0.1 at least. Maybe a little lower. As for the high end, 204 is probably a little extreme; I believe the numbers, but I know that no engine has ever run that O/F at any condition, so you can probably pick a lower range to start off with.

Tell you what, start by going up to ~20, and if needed we can fill in the higher range later and limit hydrolox to fuel-rich only. Your optimal range should be from ~4-6, and the performance should be nice and smooth through there.

Go make an issue for adding hydrolox and link it here; I'll add a note to the top that when someone starts work on a mixture they should make a new issue and link it here, so that I can link to it in the OP in case others want to help and for specific discussions of pressure ranges, O/Fs, etc.

ferram4 commented 7 years ago

@Tyaedalis Hey, I hate to bug you after all you've done, but I think I'll need an extra pair of value for these configs. It turns out that the specific heat capacity calculated by RPA is significantly different (like, >100% error in some cases O_o) than the one I calculate using the ideal gas laws and what's already in the configs.

If you have the time and willingness, could you go and re-run the sims and append Specific Heat (const=p) entries from the "injector" and "nozzle exit" columns to each of the PressureMixtureData keys?

Tyaedalis commented 7 years ago

I should have kept all the data! I'll work on it.

dgeastman commented 7 years ago

I'm working on methalox.