Jump to content

Making an RD-701 tripropellant engine work in KSP


nilof

Recommended Posts

Hi there!

I've been playing around changing configs around to make historical engines for realism overhaul. One engine that I'd love to play around with is the RD-701, which could switch from a 330s seal level/415 vaccum isp mode which used a dense Oxygen + Hydrogen + Kerosene tripropellant configuration, and a 460 vac isp mode which used ordinary hydrolox. Basically a better RD-180 which can also transform into an SSME mid-flight.

I've tried modifying the config of the stock RAPIER to do what I want(I don't care much about looks for now) but I couldn't get it to stop requiring inlet air even when removing intake air from the list of resources. How do I get it to work? Closed cycle works like a charm even with real fuels though. Is there a simpler way to make the mode switching work if I don't need/want air-breathing without messing with an air-breathing engine?

Edited by nilof
Link to comment
Share on other sites

Hmm! I don't have a KSP install nearby, but I love config files, so this is relevant to my interests :P Let's see, what would be my first try...

 

Spoiler

PART
{
	name = RD-701

	// Blah blah various things

	MODULE
	{
		name = MultiModeEngine
		primaryEngineID = Tripropellant
		secondaryEngineID = Bipropellant
	}

	MODULE
	{
		name = ModuleEnginesFX
		engineID = Tripropellant
		
		// Stuff

		PROPELLANT
		{
			name = LiquidFuel
			ratio = 1
			DrawGauge = True
		}

		PROPELLANT
		{
			name = Oxidizer
			ratio = 1
			DrawGauge = True
		}

		PROPELLANT
		{
			name = LqdHydrogen
			ratio = 1
			DrawGauge = True
		}

		atmosphereCurve
		{
			key = 0 415
			key = 1 330
		}

	}

	MODULE
	{
		name = ModuleEnginesFX
		engineID = Bipropellant

		// Stuff

		PROPELLANT
		{
			name = Oxidizer
			ratio = 1
			DrawGauge = True
		}

		PROPELLANT
		{
			name = LqdHydrogen
			ratio = 1
			DrawGauge = True
		}

		atmosphereCurve
		{
			key = 0 460
			key = 1 200
			key = 4 0.001
		}
	}

	// Etcetera

}

 

That should, in my amateurish mind, implement a dualmode tripropellant/bipropellant rocket engine. You'll have to add all the ancillary info like mass, cost, description, engine thrust and heat, sound and graphics, gimbal and so on yourself, but most of that is pure copy&paste while adjusting some numbers.

Also, since I don't know enough about RealFuels, I just used stock/CRP resources. And didn't worry about ratios. You'll have to adjust those to your liking as well. All ratios are mass flow rates relative to the first PROPELLANT node specified. In other words, ratio 1 for all three propellants would mean equal mass flow rates for all three propellants, while 1, 1, 0.5 would result in a 40%, 40%, 20% split. Total consumption is computed off of Isp alone and not specified anywhere else in the config.

Hope that helps :)

 

Link to comment
Share on other sites

//  ==================================================
//  NPO Energomash RD-701 engine.

//  Using the stock RAPIER model as a template.

//  Dimensions: 5 m x 3.81 m
//  Inert Mass: 4150 Kg
//  Throttle Range: 32% to 100%
//  Burn Time: -
//  O/F Ratio: 6.1 (Vacuum Mode)

//  Source 1: http://www.buran.ru/htm/rd-701.htm
//  Source 2: http://www.b14643.de/Spacerockets/Diverse/Russian_Rocket_engines/engines.htm
//  ==================================================

+PART[RAPIER]:FIRST
{
    @name = RO-RD-701
    %RSSROConfig = True

    !mesh = NULL

    @MODEL
    {
        scale = 1.0, 1.0, 1.0
    }

    @scale = 1.0
    %rescaleFactor = 1.0

    @node_stack_top = 0.0, 0.741, 0.0, 0.0, 1.0, 0.0, 1
    @node_stack_bottom = 0.0, -0.205, 0.0, 0.0, -1.0, 0.0, 1

    @title = RD-701
    @manufacturer = NPO Energomash [Glushko]
    @description = A staged combustion tripropellant liquid fuel engine using Kerosene, liquid Hydrogen and liquid Oxygen. Originally developed for the MAKS space plane. In the early phases of the ascent it uses a mixture of Kerosene with liquid Hydrogen and it switches to pure Hydrogen for vacuum conditions.

    @mass = 4.15
    @crashTolerance = 12
    %breakingForce = 250
    %breakingTorque = 250
    @maxTemp = 1023.15
    %skinMaxTemp = 1773.15
    !CoMOffset = NULL

    @MODULE[MultiModeEngine]
    {
        @primaryEngineID = SurfaceMode
        @secondaryEngineID = VacuumMode
    }

    @MODULE[ModuleEngines*]:HAS[#engineID[AirBreathing]]
    {
        @engineID = SurfaceMode
        @ignitionThreshold = 0.1
        @minThrust = 1281
        @maxThrust = 4003
        @heatProduction = 100
        @useEngineResponseTime = False
        !engineAccelerationSpeed = NULL
        !engineDecelerationSpeed = NULL
        !useVelocityCurve = NULL
        !spoolEffectName = NULL
        !engineSpoolIdle = NULL
        !engineSpoolTime = NULL
        !atmChangeFlow = NULL
        !useVelCurve = NULL
        !useAtmCurve = NULL
        !flowMultCap = NULL
        %ullage = True
        %pressureFed = False
        %ignitions = 1

        !velCurve{}

        !atmCurve{}

        IGNITOR_RESOURCE
        {
            name = ElectricCharge
            amount = 0.5
        }

        IGNITOR_RESOURCE
        {
            name = Kerosene
            amount = 0.126
        }

        IGNITOR_RESOURCE
        {
            name = LqdHydrogen
            amount = 0.06
        }

        IGNITOR_RESOURCE
        {
            name = LqdOxygen
            amount = 0.814
        }

        @PROPELLANT[LiquidFuel]
        {
            @name = Kerosene
            @ratio = 0.126
            !resourceFlowMode = NULL
        }

        @PROPELLANT[IntakeAir]
        {
            @name = LqdHydrogen
            @ratio = 0.06
            !ignoreForIsp = NULL
        }

        PROPELLANT
        {
            name = LqdOxygen
            ratio = 0.814
            DrawGauge = False
        }

        @atmosphereCurve
        {
            @key,0 = 0 415
            key = 1 330
        }
    }

    @MODULE[ModuleEngines*]:HAS[#engineID[ClosedCycle]]
    {
        @engineID = VacuumMode
        @minThrust = 918.9
        @maxThrust = 2871.6
        @heatProduction = 100
        %ullage = True
        %pressureFed = False
        %ignitions = 1

        IGNITOR_RESOURCE
        {
            name = ElectricCharge
            amount = 0.5
        }

        IGNITOR_RESOURCE
        {
            name = LqdHydrogen
            amount = 0.725
        }

        IGNITOR_RESOURCE
        {
            name = LqdOxygen
            amount = 0.275
        }

        @PROPELLANT[LiquidFuel]
        {
            @name = LqdHydrogen
            @ratio = 0.725
            !resourceFlowMode = NULL
        }

        @PROPELLANT[Oxidizer]
        {
            @name = LqdOxygen
            @ratio = 0.275
            !resourceFlowMode = NULL
        }

        @atmosphereCurve
        {
            @key,0 = 0 460
            @key,1 = 1 330
        }
    }

    @MODULE[ModuleGimbal]
    {
        @gimbalRange = 5.0
        %useGimbalResponseSpeed = True
        @gimbalResponseSpeed = 16
    }
}

 

Edited by Phineas Freak
Link to comment
Share on other sites

Thanks a lot for the config file! That is exactly what I needed!

I'm having a weird bug though. It seems to require LqdOxygen twice instead of requiring LqdOxygen and Kerosene, even though the config file clearly specifies the latter. :huh: This doesn't affect gameplay too much since Kerosene and LOX have similar densities, but I can't figure out why the game does this.

Edited by nilof
Link to comment
Share on other sites

Huh. If your install has kerosene working, I'll try this with a fresh install. Thanks again!

If you are still editing the config file you posted, I'd suggest also swapping the thrusts in case someone else grabs this config. The kerosene-burning mode is supposed to have the higher thrust. :P

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...