Esempio n. 1
0
    public static void ElectricityOutput(VIRCurrent Current,
                                         ElectricalOIinheritance SourceInstance,
                                         IntrinsicElectronicData Thiswire)
    {
        //Logger.Log("4 > " + Current);
        //Logger.Log("poke > " + SourceInstance.InData.Data.SupplyDependent[SourceInstance].ToString());
        var        OutputSupplyingUsingData = Thiswire.Data.SupplyDependent[SourceInstance];
        VIRCurrent SupplyingCurrent         = null;
        float      Divider = (ElectricityFunctions.WorkOutResistance(OutputSupplyingUsingData.ResistanceComingFrom));

        foreach (KeyValuePair <IntrinsicElectronicData, VIRResistances> JumpTo in OutputSupplyingUsingData
                 .ResistanceComingFrom)
        {
            if (OutputSupplyingUsingData.ResistanceComingFrom.Count > 1)
            {
                SupplyingCurrent = Current.SplitCurrent(Divider / JumpTo.Value.Resistance());
            }
            else
            {
                SupplyingCurrent = Current;
            }

            OutputSupplyingUsingData.CurrentGoingTo[JumpTo.Key] = SupplyingCurrent;
            if (JumpTo.Key != null && JumpTo.Key.Categorytype != PowerTypeCategory.DeadEndConnection)
            {
                JumpTo.Key.ElectricityInput(SupplyingCurrent, SourceInstance, Thiswire);
            }
        }
    }
    public static void ElectricityInput(VIRCurrent Current,
                                        ElectricalOIinheritance SourceInstance,
                                        IntrinsicElectronicData ComingFrom,
                                        IntrinsicElectronicData Thiswire)
    {
        //Logger.Log("ElectricityInput" + Thiswire + "  ComingFrom  > " + ComingFrom);
        //Logger.Log("5 > " + Current + "  Categorytype > " + Thiswire.Categorytype + "  ComingFrom  > " + ComingFrom.Categorytype);
        //Logger.Log("poke > " + SourceInstance.InData.Data.SupplyDependent[SourceInstance].ToString());
        if (!Thiswire.Data.SupplyDependent[SourceInstance].CurrentComingFrom.ContainsKey(ComingFrom))
        {
            Thiswire.Data.SupplyDependent[SourceInstance].CurrentComingFrom[ComingFrom] = Current;
        }
        else
        {
            //Logger.Log("AADD");
            Thiswire.Data.SupplyDependent[SourceInstance].CurrentComingFrom[ComingFrom].addCurrent(Current);
        }



        if (!(Thiswire.Data.SupplyDependent[SourceInstance].ResistanceComingFrom.Count > 0))
        {
            var sync = ElectricalManager.Instance.electricalSync;
            sync.StructureChange = true;
            sync.NUStructureChangeReact.Add(Thiswire.ControllingDevice);
            sync.NUResistanceChange.Add(Thiswire.ControllingDevice);
            sync.NUCurrentChange.Add(Thiswire.ControllingDevice);
            Logger.LogErrorFormat("Resistance isn't initialised on", Category.Electrical);
            return;
        }

        Thiswire.Data.SupplyDependent[SourceInstance].SourceVoltage = (float)Current.Current() * (ElectricityFunctions.WorkOutResistance(Thiswire.Data.SupplyDependent[SourceInstance].ResistanceComingFrom));
        //ELCurrent.CurrentWorkOnNextListADD(Thiswire);
        Thiswire.ElectricityOutput(Current, SourceInstance);
    }
Esempio n. 3
0
 public override void ElectricityOutput(VIRCurrent Current,
                                        ElectricalOIinheritance SourceInstance)
 {
     Current = InData.ControllingDevice.ModifyElectricityOutput(Current, SourceInstance);
     if (Logall)
     {
         Logger.Log("this > " + this + "ElectricityOutput, Current > " + Current + " SourceInstance  > " + SourceInstance, Category.Electrical);
     }
     InputOutputFunctions.ElectricityOutput(Current, SourceInstance, InData);
 }
Esempio n. 4
0
    public static VIRCurrent ElectricalStageTransformerCalculate(TransformerModule TransformInformation,
                                                                 VIRCurrent Current,
                                                                 float ResistanceModified,
                                                                 float inVoltage,
                                                                 bool FromHighSide = false)
    {
        double TurnRatio = TransformInformation.TurnRatio;

        if (!FromHighSide)
        {
            TurnRatio = 1 / TransformInformation.TurnRatio;
        }

        double Voltage = (Current.Current() * ResistanceModified);

        //Logger.Log("Current.Current() > " + Current.Current() + " ResistanceModified > " + ResistanceModified);

        //Logger.Log(TransformInformation.TurnRatio + " < TurnRatio " + TransformInformation.VoltageLimiting + " < VoltageLimiting " + TransformInformation.VoltageLimitedTo + " < VoltageLimitedTo ");
        if (Voltage != 0)
        {
            double offcut = 0;

            //double V2 = Voltage / TurnRatio;
            //double R2 = V2 / ((Voltage / V2) * (Voltage / ResistanceModified));
            //double R2 = (ResistanceModified / Math.Pow(TurnRatio, 2.0));

            double V2 = Voltage / TurnRatio;
            double R2 = V2 / ((Voltage / V2) * (Voltage / ResistanceModified));
            //Logger.Log(R2 + " < R2 " + V2 + " < V2 " + ResistanceModified + " < ResistanceModified" + TurnRatio + " < TurnRatio " + Voltage + " < Voltage ");
            if (!(TransformInformation.VoltageLimiting == 0))
            {             //if Total Voltage greater than that then  Push some of it to ground  to == VoltageLimitedTo And then everything after it to ground/
                          //float VVoltage = ElectricityFunctions.WorkOutVoltage(TransformInformation.ControllingNode.Node);
                if (V2 + inVoltage > TransformInformation.VoltageLimiting)
                {
                    offcut = ((V2 + inVoltage) - TransformInformation.VoltageLimitedTo);
                    V2     = V2 - offcut;
                    if (V2 < 0)
                    {
                        V2 = 0;
                    }
                }
            }

            //inVoltage
            TurnRatio = TurnRatio * (V2 / (Voltage / TurnRatio));

            //Logger.Log("V2 " + V2.ToString());
            //Logger.Log("I2 " + I2.ToString());
            //Logger.Log("Current.Current() " + Current.Current().ToString());
            var ReturnCurrent = Current.SplitCurrent((float)TurnRatio);
            //Logger.Log("ReturnCurrent " + ReturnCurrent.Current().ToString());
            return(ReturnCurrent);
        }
        return(Current);
    }
Esempio n. 5
0
 public override VIRCurrent ModifyElectricityOutput(VIRCurrent current, ElectricalOIinheritance sourceInstance)
 {
     if (sourceInstance != ControllingNode.Node)
     {
         if (!ElectricalManager.Instance.electricalSync.NUCurrentChange.Contains(ControllingNode))
         {
             ElectricalManager.Instance.electricalSync.NUCurrentChange.Add(ControllingNode);
         }
     }
     return(current);
 }
Esempio n. 6
0
 public VIRCurrent ModifyElectricityOutput(VIRCurrent Current, ElectricalOIinheritance SourceInstance)
 {
     if (UpdateRequestDictionary.TryGetValue(ElectricalUpdateTypeCategory.ModifyElectricityOutput, out HashSet <ElectricalModuleTypeCategory> updateRequest))
     {
         foreach (ElectricalModuleTypeCategory Module in updateRequest)
         {
             Current = UpdateDelegateDictionary[Module].ModifyElectricityOutput(Current, SourceInstance);
         }
     }
     return(Current);
 }
 /// <summary>
 ///The function for out putting current into other nodes (Basically doing ElectricityInput On another one)
 /// </summary>
 public virtual void ElectricityOutput(VIRCurrent Current,
                                       ElectricalOIinheritance SourceInstance)
 {
     if (Logall)
     {
         Logger.Log("this > " + this
                    + "ElectricityOutput, Current > " + Current
                    + " SourceInstance  > " + SourceInstance, Category.Electrical);
     }
     InputOutputFunctions.ElectricityOutput(Current, SourceInstance, InData);
 }
 public VIRCurrent UpModifyElectricityOutput(VIRCurrent Current, ElectricalOIinheritance SourceInstance)
 {
     if (UpdateRequestDictionary.ContainsKey(ElectricalUpdateTypeCategory.ModifyElectricityOutput))
     {
         foreach (ElectricalModuleTypeCategory Module in UpdateRequestDictionary[ElectricalUpdateTypeCategory.ModifyElectricityOutput])
         {
             Current = UpdateDelegateDictionary[Module].ModifyElectricityOutput(Current, SourceInstance);
         }
     }
     return(Current);
 }
 /// <summary>
 ///The function for out putting current into other nodes (Basically doing ElectricityInput On another one)
 /// </summary>
 public virtual void ElectricityOutput(VIRCurrent Current,
                                       ElectricalOIinheritance SourceInstance)
 {
     if (Present != null)
     {
         Present.ElectricityOutput(Current, SourceInstance);
     }
     else
     {
         InputOutputFunctions.ElectricityOutput(Current, SourceInstance, this);
     }
 }
Esempio n. 10
0
 /// <summary>
 /// Inputs a current from a device, with the supply
 /// </summary>
 public virtual void ElectricityInput(VIRCurrent Current,
                                      ElectricalOIinheritance SourceInstance,
                                      IntrinsicElectronicData ComingFrom)
 {
     if (Logall)
     {
         Logger.Log("this > " + this
                    + "ElectricityInput, Current > " + Current
                    + " SourceInstance  > " + SourceInstance
                    + " ComingFrom > " + ComingFrom, Category.Electrical);
     }
     InputOutputFunctions.ElectricityInput(Current, SourceInstance, ComingFrom, InData);
 }
 /// <summary>
 /// Inputs a current from a device, with the supply
 /// </summary>
 public virtual void ElectricityInput(VIRCurrent Current,
                                      ElectricalOIinheritance SourceInstance,
                                      IntrinsicElectronicData ComingFrom)
 {
     if (Present != null)
     {
         Present.ElectricityInput(Current, SourceInstance, ComingFrom);
     }
     else
     {
         InputOutputFunctions.ElectricityInput(Current, SourceInstance, ComingFrom, this);
     }
 }
Esempio n. 12
0
 public VIRCurrent UpModifyElectricityInput(VIRCurrent Current,
                                            ElectricalOIinheritance SourceInstance,
                                            IntrinsicElectronicData ComingFromm)
 {
     if (UpdateRequestDictionary.TryGetValue(ElectricalUpdateTypeCategory.ModifyElectricityInput, out HashSet <ElectricalModuleTypeCategory> updateRequest))
     {
         foreach (ElectricalModuleTypeCategory Module in updateRequest)
         {
             Current = UpdateDelegateDictionary[Module].ModifyElectricityInput(Current, SourceInstance, ComingFromm);
         }
     }
     return(Current);
 }
Esempio n. 13
0
 public void addCurrent(VIRCurrent NewWrapCurrent)
 {
     foreach (var inCurrent in NewWrapCurrent.CurrentSources)
     {
         foreach (var wrapCurrent in CurrentSources)
         {
             if (wrapCurrent.Current == inCurrent.Current)
             {
                 //wrapCurrent.CombineCurrent(inCurrent);
                 return;
             }
         }
         CurrentSources.Add(inCurrent);
     }
 }
Esempio n. 14
0
        public override VIRCurrent ModifyElectricityInput(VIRCurrent Current,
                                                          ElectricalOIinheritance SourceInstance,
                                                          IntrinsicElectronicData ComingFromm)
        {
            float Resistance = ElectricityFunctions.WorkOutResistance(ControllingNode.Node.InData.Data.SupplyDependent[SourceInstance].ResistanceGoingTo);
            var   Voltage    = ElectricityFunctions.WorkOutVoltage(ControllingNode.Node);

            VIRCurrent Currentout =
                TransformerCalculations.ElectricalStageTransformerCalculate(this,
                                                                            Current,
                                                                            Resistance,
                                                                            Voltage,
                                                                            HighsideConnections.Contains(ComingFromm.Categorytype));

            return(Currentout);
        }
Esempio n. 15
0
 public virtual VIRCurrent  ModifyElectricityOutput(VIRCurrent Current, ElectricalOIinheritance SourceInstance)
 {
     return(Current);
 }
Esempio n. 16
0
 public virtual VIRCurrent  ModifyElectricityInput(VIRCurrent Current,
                                                   ElectricalOIinheritance SourceInstance,
                                                   IntrinsicElectronicData ComingFromm)
 {
     return(Current);
 }
Esempio n. 17
0
 public VIRCurrent ModifyElectricityOutput(VIRCurrent Current, ElectricalOIinheritance SourceInstance)
 {
     return(UpModifyElectricityOutput(Current, SourceInstance));
 }