shadowmage45 / SSTULabs

Dev repository for testing/unfinished KSP parts/plugins/etc.
Other
62 stars 41 forks source link

RCS fuel switch ISP #659

Closed Jimbodiah closed 6 years ago

Jimbodiah commented 6 years ago

Is there a way to have different ISPs on the RCS unit's fuel switch? I'd like to patch them to use 3rd party fuels (mainly NF prop to replace the NFP rcs blocks, I wantz mah rekoloring). Right now I've patched a clone for this, but was wondering if it was functionality of the current part.

shadowmage45 commented 6 years ago

Not currently.

In the upcoming reworked modules, you'll be able to specify the ISP at the RCS-model level, so each block can have its own thrust/isp values. Might add a secondary control to adjust the ISP based on the fuel as well (e.g. for specific handling of Xenon/electric RCS ports).

shadowmage45 commented 6 years ago

Hmmm... This feature is proving to be problematic, due to ideally needing to use inputs from two entirely different sources (models, fuel), from two separate modules (model-switch, fuel-type switch), and no realistic functions that would allow for combining the two.

ISP is a function of both the physical geometry and plumbing -and- the fuel type being used. Unfortunately, we can only use one -or- the other of those as a source of ISP manipulation (trying to manipulate ISP from separate modules will never work).

So -- what should influence RCS port ISPs? Fuel type, or the model?

Jimbodiah commented 6 years ago

I can see one model being more efficient with the same fuel as another model, but that would not work when you go to a different fuel (as we can't have isp based on both).

My original reason for asking was to change it out to match NF propulsion, ie with Xenon+Ec. This has nothing to do with SSTU parts however so I can understand you not taking this as a condition :) I have a cloned set running on Xe/Li/Ar at the moment and have no issues with that. I think I would be more interested in having the RCS units be able to consume Ec as well somehow?

shadowmage45 commented 6 years ago

I can see one model being more efficient with the same fuel as another model, but that would not work when you go to a different fuel (as we can't have isp based on both).

Yep, exactly the problem. Undoubtedly some models/geometries (and plumbing systems; pressure fed vs others) will be more efficient than others for a given fuel type. And there are obviously going to be differences in ISP based on the fuel type as well.

I think in this case that the fuel type will likely have the largest influence over the ISP, so I think I would be fine with tying the ISP to fuel type alone. Makes sense in context as well, as all of the SSTU RCS parts (and integrated RCS) have roughly the same ISP regardless of the specific model in use.

I think I would be more interested in having the RCS units be able to consume Ec as well somehow?

AFAIK that is determined entirely by the PROPELLANT defined in the ModuleRCS. If it includes EC... it'll consume it. Unless it is not supported by stock, in which case there is naught that I can do to fix it. (how do the NF electric-rcs parts setup their resources?)

Jimbodiah commented 6 years ago

Nf uses two input resources, but uses it's own rcs module iirc. Haven't really checked if this would work with the current sstu rcs units.

Jimbodiah commented 6 years ago

Re the current RCS module...

This uses FUELTYPE, is there a way to define the resources in those? I found the SSTU_FUELTYPE definitions for the MFT, but not so much the fueltypes for RCS. Or is this the same thing that is linked in the plugin? I want to try to add Ec to this, just like Hyper

shadowmage45 commented 6 years ago

Same things. The FUELTYPE referenced in the current SSTUModularRCS PartModule simply points towards the resource names and ratios specified in the global SSTU_FUELTYPE that is already used by the tanks for resource switching. Specify the ratios/names once, and re-use them wherever 'FUELTYPE' is supported.


The ISP-swapping support has not yet been developed, so I'm not sure where that value will live in the config files. I'll likely be working on this later this week/weekend, and will let you know what I come up with.

Obviously it would be incorrect to put it with the global SSTU_FUELTYPE, so it will likely be specified in SSTURCSFuelSelection PartModule definition in the part config file. (note that the fuel-selection has been moved to its own module, for easier integration into other parts)

So most likely it will be here -- https://github.com/shadowmage45/SSTULabs/blob/dev/GameData/SSTU/Parts/General/Rcs/SSTU-GEN-MRCS.cfg#L110-L117 Probably defined such as (isp values chosen random, not representative of the final configs):

MODULE
{
    name = SSTURCSFuelSelection
    currentFuelType = MP
    FUELTYPE
    {
        name = MP
        isp = 260
    }
    FUELTYPE
    {
        name = Hypergolic
        isp = 280
    }
}
Jimbodiah commented 6 years ago

Adding SSTU-FUELTYPE for my own patch and an extra button showing up in the MFT gui is not a problem. The same reason I just cloned the parts into a high-ISP version that uses Li/Ar/Xe.

Seperating the two fueltypes in the new version would be a nicer way indeed, at least there will be no extra buttons showing up in the MFT gui when custom fueltypes are patched in. The ISP definition in your example also looks awesome :)))

Love your work, Mage!!!!! :100:

Jimbodiah commented 6 years ago

BTW I got the 1.3.1 rcs units to use propellant+Ec by defining seperate fueltypes for it as mentioned. Not much use for 1.4.x though ;)

shadowmage45 commented 6 years ago

Good to know.

At this point in the dev version, you should be able to add those fuel-types to the 'SSTUFuelSelection' module that can be found in RCS equipped parts.

You can even add ISP manipulation to the configs, and it might be good to test that feature as well. Let me know if you would like more information on how to set these up for testing.