public void KITFixedUpdate(IResourceManager resMan)
        {
            double global_rate_multipliers = 1;

            crew_capacity_ratio     = part.protoModuleCrew.Count / ((float)part.CrewCapacity);
            global_rate_multipliers = global_rate_multipliers * crew_capacity_ratio;

            if (!IsEnabled)
            {
                return;
            }

            /*
             * if (active_mode == 0)  // Research
             * {
             *  var powerRequest = powerReqMult * PluginHelper.BasePowerConsumption * TimeWarp.fixedDeltaTime;
             *
             *  double electrical_power_provided = CheatOptions.InfiniteElectricity
             *      ? powerRequest
             *      : consumeFNResource(powerRequest, ResourceManager.FNRESOURCE_MEGAJOULES);
             *
             *  electrical_power_ratio = electrical_power_provided / TimeWarp.fixedDeltaTime / PluginHelper.BasePowerConsumption / powerReqMult;
             *  global_rate_multipliers = global_rate_multipliers * electrical_power_ratio;
             *
             *  double kerbalScienceSkillFactor = part.protoModuleCrew.Sum(proto_crew_member => GetKerbalScienceFactor(proto_crew_member) / 2f);
             *  double altitude_multiplier = Math.Max(vessel.altitude / (vessel.mainBody.Radius), 1);
             *
             *  science_rate_f = (kerbalScienceSkillFactor * GameConstants.baseScienceRate * PluginHelper.getScienceMultiplier(vessel)
             *      / PluginHelper.SecondsInDay * global_rate_multipliers
             *      / (Math.Sqrt(altitude_multiplier)));
             *
             *  if (ResearchAndDevelopment.Instance != null && !double.IsNaN(science_rate_f) && !double.IsInfinity(science_rate_f))
             *  {
             *      science_to_add += science_rate_f * TimeWarp.fixedDeltaTime;
             *  }
             * }
             * else
             */
            if (active_mode == 1) // Fuel Reprocessing
            {
                var powerRequest = powerReqMult * PluginSettings.Config.BasePowerConsumption;

                double electrical_power_provided = resMan.Consume(ResourceName.ElectricCharge, powerRequest);

                electrical_power_ratio = electrical_power_provided / PluginSettings.Config.BasePowerConsumption / powerReqMult;

                var productionModifier = global_rate_multipliers;
                global_rate_multipliers = global_rate_multipliers * electrical_power_ratio;
                reprocessor.UpdateFrame(resMan, global_rate_multipliers, electrical_power_ratio, productionModifier, true);

                if (reprocessor.GetActinidesRemovedPerHour() > 0)
                {
                    reprocessing_rate_f = reprocessor.GetRemainingAmountToReprocess() / reprocessor.GetActinidesRemovedPerHour();
                }
                else
                {
                    IsEnabled = false;
                }
            }
            else if (active_mode == 2) //Antimatter
            {
                var powerRequestInMegajoules = powerReqMult * PluginSettings.Config.BaseAMFPowerConsumption;

                var energy_provided_in_megajoules = resMan.Consume(ResourceName.ElectricCharge, powerRequestInMegajoules);

                electrical_power_ratio = powerRequestInMegajoules > 0 ? energy_provided_in_megajoules / powerRequestInMegajoules : 0;
                antimatterGenerator.Produce(energy_provided_in_megajoules * global_rate_multipliers);
                antimatter_rate_f = antimatterGenerator.ProductionRate;
            }
            else if (active_mode == 3)
            {
                IsEnabled = false;
            }
            else if (active_mode == 4) // Centrifuge
            {
                if (vessel.Splashed)
                {
                    var powerRequest = powerReqMult * PluginSettings.Config.BaseCentriPowerConsumption;

                    double electrical_power_provided = resMan.Consume(ResourceName.ElectricCharge, powerRequest);

                    electrical_power_ratio  = electrical_power_provided / PluginSettings.Config.BaseCentriPowerConsumption / powerReqMult;
                    global_rate_multipliers = global_rate_multipliers * electrical_power_ratio;
                    double deut_produced = global_rate_multipliers * GameConstants.DeuteriumTimescale * GameConstants.DeuteriumAbudance * 1000.0f;
                    deut_rate_f = -part.RequestResource(KITResourceSettings.DeuteriumLqd, -deut_produced);
                }
                else
                {
                    ScreenMessages.PostScreenMessage(Localizer.Format("#LOC_KSPIE_ScienceModule_Postmsg"), 5.0f, ScreenMessageStyle.UPPER_CENTER);//"You must be splashed down to perform this activity."
                    IsEnabled = false;
                }
            }

            if (electrical_power_ratio <= 0)
            {
                deut_rate_f         = 0;
                electrolysis_rate_f = 0;
                science_rate_f      = 0;
                antimatter_rate_f   = 0;
                reprocessing_rate_f = 0;
            }
        }