public void updateIspEngineParams()
        {
            // recaculate ISP based on power and core temp available
            FloatCurve newISP = new FloatCurve();
            FloatCurve vCurve = new FloatCurve();

            maxISP = (float)(Math.Sqrt((double)myAttachedReactor.getCoreTemp()) * isp_temp_rat * ispMultiplier);
            if (!currentpropellant_is_jet)
            {
                minISP = maxISP * 0.4f;
                newISP.Add(0, maxISP, 0, 0);
                newISP.Add(1, minISP, 0, 0);
                myAttachedEngine.useVelocityCurve      = false;
                myAttachedEngine.useEngineResponseTime = false;
            }
            else
            {
                if (myAttachedReactor.shouldScaleDownJetISP())
                {
                    maxISP = maxISP * 2.0f / 3.0f;
                    if (maxISP > 300)
                    {
                        maxISP = maxISP / 2.5f;
                    }
                }
                newISP.Add(0, maxISP * 4.5f / 5.0f);
                newISP.Add(0.10f, maxISP);
                newISP.Add(0.3f, maxISP * 4.0f / 5.0f);
                newISP.Add(1, maxISP * 2.0f / 3.0f);
                vCurve.Add(0, 1.0f);
                vCurve.Add((float)(maxISP * g0 * 1.0 / 3.0), 1.0f);
                vCurve.Add((float)(maxISP * g0), 1.0f);
                vCurve.Add((float)(maxISP * g0 * 4.0 / 3.0), 0);
                myAttachedEngine.useVelocityCurve      = true;
                myAttachedEngine.useEngineResponseTime = true;
                myAttachedEngine.ignitionThreshold     = 0.01f;
            }

            myAttachedEngine.atmosphereCurve = newISP;
            myAttachedEngine.velocityCurve   = vCurve;
            assThermalPower = myAttachedReactor.getThermalPower();
            if (myAttachedReactor is FNFusionReactor)
            {
                assThermalPower = assThermalPower * 0.95f;
            }
        }
        public void updateGeneratorPower()
        {
            hotBathTemp = myAttachedReactor.getCoreTemp();
            float heat_exchanger_thrust_divisor = 1;

            if (radius > myAttachedReactor.getRadius())
            {
                heat_exchanger_thrust_divisor = myAttachedReactor.getRadius() * myAttachedReactor.getRadius() / radius / radius;
            }
            else
            {
                heat_exchanger_thrust_divisor = radius * radius / myAttachedReactor.getRadius() / myAttachedReactor.getRadius();
            }
            if (myAttachedReactor.getRadius() <= 0 || radius <= 0)
            {
                heat_exchanger_thrust_divisor = 1;
            }
            maxThermalPower = myAttachedReactor.getThermalPower() * heat_exchanger_thrust_divisor;
            maxChargedPower = myAttachedReactor.getChargedPower() * heat_exchanger_thrust_divisor;
            coldBathTemp    = (float)FNRadiator.getAverageRadiatorTemperatureForVessel(vessel);
        }