示例#1
0
文件: AJERotor.cs 项目: camlost2/AJE
        public override void OnStart(StartState state)
        {
            if (state == StartState.Editor)
            {
                return;
            }
            if (vessel == null)
            {
                return;
            }
            engine = new EngineWrapper(part);
            engine.IspMultiplier    = IspMultiplier;
            engine.idle             = idle;
            engine.useVelocityCurve = false;
            engine.ThrustUpperLimit = maxThrust;
            float omega = rpm * 0.1047f;

//            power *= 745.7f;
            aje  = new AJERotorSolver(omega, r, weight, power * 745.7f, 1.2f, VTOLbuff);
            sas  = (ModuleReactionWheel)part.Modules["ModuleReactionWheel"];
            sasP = sas.PitchTorque;
            sasY = sas.YawTorque;
            sasR = sas.RollTorque;
        }
示例#2
0
文件: AJERotor.cs 项目: nimaroth/AJE
 public override void OnStart(StartState state)
 {
     if (state == StartState.Editor)
         return;
     if (vessel == null)
         return;
     engine = new EngineWrapper(part);
     engine.IspMultiplier = IspMultiplier;
     engine.idle = idle;
     engine.useVelocityCurve = false;
     engine.ThrustUpperLimit = maxThrust;
     float omega = rpm * 0.1047f;
     //            power *= 745.7f;
     aje = new AJERotorSolver(omega, r, weight, power * 745.7f, 1.2f, VTOLbuff);
     sas = (ModuleReactionWheel)part.Modules["ModuleReactionWheel"];
     sasP = sas.PitchTorque;
     sasY = sas.YawTorque;
     sasR = sas.RollTorque;
 }
示例#3
0
文件: AJEModule.cs 项目: nimaroth/AJE
        public override void OnStart(StartState state)
        {
            if (state == StartState.Editor)
            {
                Need_Area = acore * (1 + byprat);
                return;
            }
            if (vessel == null)
                return;
            engine = new EngineWrapper(part);
            engine.useVelocityCurve = false;
            engine.IspMultiplier = IspMultiplier;
            engine.idle = idle;
            engine.ThrustUpperLimit = maxThrust;
            part.maxTemp = 1800f;
            if(tt4 >0)
                part.maxTemp = (tt4-32f) * (1f/1.8f);
            engine.heatProduction = part.maxTemp * 0.1f;
            aje = new AJESolver();
            aje.setDefaults();

            switch (defaultentype)
            {
                case 1:
                    aje.loadJ85();
                    break;
                case 2:
                    aje.loadF100();
                    break;
                case 3:
                    aje.loadCF6();
                    break;
                case 4:
                    aje.loadRamj();
                    break;
            }
            if (true)
            {
                if (acore != -1 && byprat != -1)
                {
                    aje.areaCore = acore;
                    aje.byprat = byprat;
                    aje.areaFan = acore * (1.0 + byprat);
                    aje.a2d = aje.a2 = aje.areaFan;

                }
                if (tt4 != -1)
                    aje.tt[4] = aje.tt4 = aje.tt4d = tt4;
                if (prat3 != -1)
                    aje.prat[3] = aje.p3p2d = prat3;
                if (prat13 != -1)
                    aje.prat[13] = aje.p3fp2d = prat13;
                if (tcomp != -1)
                    aje.tcomp = tcomp;
                if (fhv != -1)
                    aje.fhvd = aje.fhv = fhv;
                if (tt7 != -1)
                    aje.tt[7] = aje.tt7 = aje.tt7d = tt7;
                if (eta2 != -1)
                    aje.eta[2] = eta2;
                if (prat2 != -1)
                    aje.prat[2] = prat2;
                if (prat4 != -1)
                    aje.prat[4] = prat4;
                if (eta3 != -1)
                    aje.eta[3] = eta3;
                if (eta4 != -1)
                    aje.eta[4] = eta4;
                if (eta5 != -1)
                    aje.eta[5] = eta5;
                if (eta7 != -1)
                    aje.eta[7] = eta7;
                if (eta13 != -1)
                    aje.eta[13] = eta13;
                if (tinlt != -1)
                    aje.tinlt = tinlt;
                if (tfan != -1)
                    aje.tfan = tfan;
                if (tcomp != -1)
                    aje.tcomp = tcomp;
                if (abflag != -1)
                    aje.abflag = abflag;
            }
            if (aje.abflag == 1 && (!isReactionEngine))
            {
                useAB = true;
                ABmax = (float)aje.tt7;
                ABmin = (float)(aje.tt4);
            }
            if (part.partInfo.partPrefab.Modules.Contains("AJEModule"))
            {
                AJEModule a = (AJEModule)part.partInfo.partPrefab.Modules["AJEModule"];
                usePrat3Curve = a.usePrat3Curve;
                prat3Curve = a.prat3Curve;
            }
            if (usePrat3Curve)
            {
                print("AJE OnStart for part " + part.name + " found prat3Curve");
                float min, max;
                prat3Curve.FindMinMaxValue(out min, out max);
                print("curve: " + prat3Curve.minTime + ": " + min + "; " + prat3Curve.maxTime + ": " + max);
                aje.fsmach = 0.0;
                aje.prat[3] = aje.p3p2d = prat3Curve.Evaluate(0.0f);
            }

            engine.engineDecelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat));
            engine.engineAccelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat));
        }
示例#4
0
        public override void OnStart(StartState state)
        {
            if (state == StartState.Editor)
                return;
            if (vessel == null)
                return;
            engine = new EngineWrapper(part);
            engine.IspMultiplier = IspMultiplier;
            engine.idle = idle;
            engine.useVelocityCurve = false;
            engine.ThrustUpperLimit = maxThrust;
            engine.useEngineResponseTime = false;

            part.maxTemp = 200f;
            engine.heatProduction = 10f;
            //v0 *= 0.5144f;
            //omega0 *= 0.1047f;
            //power0 *= 745.7f;
            //omega *= 0.1047f;
            //power *= 745.7f;

            //propeller = new AJEPropellerSolver(r0, v0 * 0.5144f, omega0 * PistonEngine.RPM2RADPS, rho0, power0 * PistonEngine.HP2W);
            pistonengine = new PistonEngine(power * PistonEngine.HP2W, maxRPM * PistonEngine.RPM2RADPS, BSFC);
            pistonengine._hasSuper = boost0 > 0;
            pistonengine.setBoostParams(wastegateMP * INHG2PA, boost0 * INHG2PA, boost1 * INHG2PA, rated0, rated1, cost1 * PistonEngine.HP2W, switchAlt, turbo);
            if (displacement > 0)
                pistonengine._displacement = displacement * PistonEngine.CIN2CM;
            pistonengine._compression = compression;
            pistonengine._coolerEffic = coolerEffic;
            pistonengine._coolerMin = coolerMin + CTOK;
            pistonengine._ramAir = ramAir;

            propJSB = new AJEPropJSB(propName, minRPM * gearratio, maxRPM * gearratio, propDiam, propIxx);

            if(propJSB.GetConstantSpeed() == 0)
                Fields["propPitch"].guiActive = false;
            if (exhaustThrust <= 0f)
                Fields["netExhaustThrust"].guiActive = false;
            if (meredithEffect <= 0f)
                Fields["netMeredithEffect"].guiActive = false;

            pistonengine.ComputeVEMultiplier(); // given newly-set stats

            omega = 30; // start slow
        }
示例#5
0
        public override void OnStart(StartState state)
        {
            if (state == StartState.Editor)
            {
                Need_Area = acore * (1 + byprat);
                return;
            }
            if (vessel == null)
            {
                return;
            }
            engine = new EngineWrapper(part);
            engine.useVelocityCurve = false;
            engine.IspMultiplier    = IspMultiplier;
            engine.idle             = idle;
            engine.ThrustUpperLimit = maxThrust;
            part.maxTemp            = 1800f;
            if (tt4 > 0)
            {
                part.maxTemp = (tt4 - 32f) * (1f / 1.8f);
            }
            engine.heatProduction = part.maxTemp * 0.1f;
            aje = new AJESolver();
            aje.setDefaults();

            switch (defaultentype)
            {
            case 1:
                aje.loadJ85();
                break;

            case 2:
                aje.loadF100();
                break;

            case 3:
                aje.loadCF6();
                break;

            case 4:
                aje.loadRamj();
                break;
            }
            if (true)
            {
                if (acore != -1 && byprat != -1)
                {
                    aje.areaCore = acore;
                    aje.byprat   = byprat;
                    aje.areaFan  = acore * (1.0 + byprat);
                    aje.a2d      = aje.a2 = aje.areaFan;
                }
                if (tt4 != -1)
                {
                    aje.tt[4] = aje.tt4 = aje.tt4d = tt4;
                }
                if (prat3 != -1)
                {
                    aje.prat[3] = aje.p3p2d = prat3;
                }
                if (prat13 != -1)
                {
                    aje.prat[13] = aje.p3fp2d = prat13;
                }
                if (tcomp != -1)
                {
                    aje.tcomp = tcomp;
                }
                if (fhv != -1)
                {
                    aje.fhvd = aje.fhv = fhv;
                }
                if (tt7 != -1)
                {
                    aje.tt[7] = aje.tt7 = aje.tt7d = tt7;
                }
                if (eta2 != -1)
                {
                    aje.eta[2] = eta2;
                }
                if (prat2 != -1)
                {
                    aje.prat[2] = prat2;
                }
                if (prat4 != -1)
                {
                    aje.prat[4] = prat4;
                }
                if (eta3 != -1)
                {
                    aje.eta[3] = eta3;
                }
                if (eta4 != -1)
                {
                    aje.eta[4] = eta4;
                }
                if (eta5 != -1)
                {
                    aje.eta[5] = eta5;
                }
                if (eta7 != -1)
                {
                    aje.eta[7] = eta7;
                }
                if (eta13 != -1)
                {
                    aje.eta[13] = eta13;
                }
                if (tinlt != -1)
                {
                    aje.tinlt = tinlt;
                }
                if (tfan != -1)
                {
                    aje.tfan = tfan;
                }
                if (tcomp != -1)
                {
                    aje.tcomp = tcomp;
                }
                if (abflag != -1)
                {
                    aje.abflag = abflag;
                }
            }
            if (aje.abflag == 1 && (!isReactionEngine))
            {
                useAB = true;
                ABmax = (float)aje.tt7;
                ABmin = (float)(aje.tt4);
            }
            if (part.partInfo.partPrefab.Modules.Contains("AJEModule"))
            {
                AJEModule a = (AJEModule)part.partInfo.partPrefab.Modules["AJEModule"];
                usePrat3Curve = a.usePrat3Curve;
                prat3Curve    = a.prat3Curve;
            }
            if (usePrat3Curve)
            {
                print("AJE OnStart for part " + part.name + " found prat3Curve");
                float min, max;
                prat3Curve.FindMinMaxValue(out min, out max);
                print("curve: " + prat3Curve.minTime + ": " + min + "; " + prat3Curve.maxTime + ": " + max);
                aje.fsmach  = 0.0;
                aje.prat[3] = aje.p3p2d = prat3Curve.Evaluate(0.0f);
            }

            engine.engineDecelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat));
            engine.engineAccelerationSpeed = 1 / (float)(aje.areaCore * (1 + aje.byprat));
        }