Jump to content

Isp dependent on velocity


Recommended Posts

I'm altering the config file on an electric aircraft propeller, and was almost done.

So I want specific impulse on the engine to be dependent on velocity so that I can force a constant fuel flow and still get a sharp drop off in force past mach 0.85 as if the propeller tips are going super sonic.

I did a similar thing with Atmosphere here.

		name = ModuleEnginesFX
		...

		atmosphereCurve
		{
			key = 0 800 0 1000000
			key = 0.000001 0 0 0.3012048
			key = 0.5 789.496 0.02686068 0.02686068
			key = 20 960 0 0
   	 	}

		// Jet Params
		...

		atmCurve
		{
			key = 0 0 0 0			
			key = 0.000001 0 0 0.3012048
			key = 0.5 0.98687 0.02686068 0.02686068
			key = 20 1.2 0 0
		}

Basically force and isp drop off equally with altitude so that the fuel flow remains the same, but the engine is less effective as air gets thinner.

I tried doing a similar thing with velocity using:

		name = ModuleEnginesFX
		...

		velocityCurve
		{
			key = 0 600 0 0
			key = 0.5 800 0 0
			key = 0.85 400 -2.055445 -10.22015
			key = 1 0 0 0
		}

		// Jet Params
		...

		velCurve
		{
			key = 0 0.75 0 0
			key = 0.5 1 0 0
			key = 0.85 0.5 -2.055445 -10.22015
			key = 1 0 0 0
		}

But it seems the game recognizes velCurve but doesn't do anything with velocityCurve

Is my syntax a little off, or am I completely off the mark, or is this impossible?

 

 

 

Here's the whole module:

MODULE
{
	name = ModuleEnginesFX
	thrustVectorTransformName = thrustTransform
	exhaustDamage = False
	ignitionThreshold = 0.1
	minThrust = 0
	maxThrust = 50
	heatProduction = 8
	useEngineResponseTime = True
	engineAccelerationSpeed = 20
	engineDecelerationSpeed = 20
	useVelocityCurve = True
	EngineType = Turbine
	PROPELLANT
	{
		name = ElectricCharge
		ratio = 0.4
		DrawGauge = True
	}
	PROPELLANT
	{
		name = FSCoolant
		ignoreForIsp = True
		ratio = 0.01
	}
    	atmosphereCurve
    	{
			key = 0 800 0 1000000
			key = 0.000001 0 0 0.3012048
			key = 0.5 789.496 0.02686068 0.02686068
			key = 20 960 0 0
    	}
		velocityCurve
		{
			key = 0 600 0 0
			key = 0.5 800 0 0
			key = 0.85 400 -2.055445 -10.22015
			key = 1 0 0 0
		}

		// Jet params
		atmChangeFlow = False
		useVelCurve = True
		useAtmCurve = True
		flameoutBar = 0.001
		flowCapMult = 1.0
		//machLimit = 2
		machHeatMult = 10

		atmCurve
		{
			key = 0 0 0 0
			key = 0.000001 0 0 0.3012048
			key = 0.5 0.98687 0.02686068 0.02686068
			key = 20 1.2 0 0
		}
		velCurve
		{
			key = 0 0.75 0 0
			key = 0.5 1 0 0
			key = 0.85 0.5 -2.055445 -10.22015
			key = 1 0 0 0
		}
}

 

Link to comment
Share on other sites

Pretty sure the only thing the velocity curve scales is thrust, not Isp. In fact, atmospheric engines have stopped scaling by Isp completely in 1.0+. They just use a fixed value that never changes.

The reason for that is, in an environment where you must constantly apply power to maintain your speed against drag, thrust and Isp are directly related in ways you would never consider them for rocket engines in space.

Imagine the following: you set your throttle to 100%. This sets a certain fuel flow rate depending on your Isp. Because that is fixed, the fuel flow rate never changes, no matter what you do. Let's say that for this example, you have enough fuel for 10 minutes of constant engine operation at this throttle setting. (And when I say fuel, you can substitute any resource here, even electric charge.)

You are in level flight. Depending on your plane's drag characteristics and your current altitude, you should eventually reach your top speed, the point where the drag you experience exactly cancels out the thrust of your engine. Then that speed, multiplied by the runtime of your engines, becomes the distance you can travel. The actual measure of your plane's reach, as opposed to its dV, which is meaningless for planes. If you can increase that top speed at the same throttle setting, you can go further; you have better fuel economy. You could, for instance, try to go higher up, where there is less drag.

However! Your engine thrust output scales with altitude. By going higher, you have less drag, but also less thrust. The important part to keep in mind is: because your Isp still never changes, your fuel flow rate i still constant. And here's the clincher: if your thrust drops faster than the drag drops, because you are already exceeding the engine's optimal altitude, then you may actually get worse fuel economy - you get less total range traveled, because your top speed starts dropping while your fuel consumption stays constant.

As you can see, for an atmospheric engine, scaling the thrust with certain factors (like altitude and speed) directly and completely replaces Isp as the main way to control how fuel efficient you are in various flight regimes. If your engine has 5000s Isp, and you are flying in a regime where only 50% of your total thrust is available, you now have a virtual, "effective Isp" of only 2500s. That's because to get back to nominal thrust, you would have to throttle up to 200%, which means 200% fuel flow rate.

 

TL;DR: set your Isp to a constant value and scale thrust only. It does everything you need. :P
 

Edited by Streetwind
Link to comment
Share on other sites

Your're talking to me as if i'm asking how to make a space plane. Yes, I understand how the engine mechanics work, and they work perfectly for rockets, and are a decent approximation for jets. I, however, am making a propeller engine, which should dramatically lose thrust past mach 0.85, produce no net thrust at about mach 0.90 and produce negative thrust past mach 1; all while the engine is at full throttle. I can do this with the velCurve, but it changes force by making the engine use less electricity, not by making it less efficient. An engine at full throttle using no electricity (mach 0.90) makes no sense, and an engine at full throttle producing excess electricity while it should be breaking apart (mach 1) makes no sense either.

My question was: is there a way to alter engine efficiency over velocity or is it impossible using stock game mechanics?

Edited by JediMasterSterling1
miss-spelling
Link to comment
Share on other sites

1 hour ago, JediMasterSterling1 said:

Your're talking to me as if i'm asking how to make a space plane. Yes, I understand how the engine mechanics work, and they work perfectly for rockets, and are a decent approximation for jets. I, however, am making a propeller engine, which should dramatically lose thrust past mach 0.85, produce no net thrust at about mach 0.90 and produce negative thrust past mach 1; all while the engine is at full throttle. I can do this with the velCurve, but it changes force by making the engine use less electricity, not by making it less efficient. An engine at full throttle using no electricity (mach 0.90) makes no sense, and an engine at full throttle producing excess electricity while it should be breaking apart (mach 1) makes no sense either.

My question was: is there a way to alter engine efficiency over velocity or is it impossible using stock game mechanics?

Hmmm, I'm trying to recall, but I don't think I've ever seen an engine with an Isp velocity curve. Even before the rework, jet engines scaled Isp by altitude only, like all other engines. Maybe the module is deprecated?

Link to comment
Share on other sites

useVelCurveIsp = True

velCurveIsp

{

key = mach0 multiplier0 intangent0 outtangent0

key = mach1 multiplier1 intangent1 outtangent1

....

}

 

There's also an atmCurveIsp if you want an Isp multiplier based on density. You should set a fixed single-value atmosphereCurve and then use atmCurveIsp (and useAtmCurveIsp = true) to vary Isp with density, since prop performance varies with density not pressure.

Link to comment
Share on other sites

22 hours ago, NathanKell said:

useVelCurveIsp = True

velCurveIsp

{

key = mach0 multiplier0 intangent0 outtangent0

key = mach1 multiplier1 intangent1 outtangent1

....

}

 

There's also an atmCurveIsp if you want an Isp multiplier based on density. You should set a fixed single-value atmosphereCurve and then use atmCurveIsp (and useAtmCurveIsp = true) to vary Isp with density, since prop performance varies with density not pressure.

IT WORKS!

Thanks, I would never have found these parameters on my own.

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...