示例#1
0
 public override Dictionary <ChemEObject, float> CalculatePossiblePositions(Quantum quantum)
 {
     possiblePositions.Clear();
     for (int i = 0; i < NextPosition.Count; i++)
     {
         possiblePositions.Add(NextPosition.Keys.ElementAt(i), NextPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
     }
     return(possiblePositions);
 }
示例#2
0
 public virtual bool QuantumSpace(Quantum quantum)
 {
     // Before movement is initiated each Quantum checks whether there is pressure
     // and it needs to move in the first place. Default virtual function is used
     // in for simple instruments, like pipes, but when it comes to instruments
     // that operate with different molecules such instrument handles the space
     // for each molecule type (for example CO2 column)
     return(this.Quantums.Count > this.volume * SimulationModel.VolumeMultiplier);
 }
示例#3
0
 public override float QuantumProbabilityCalc(Quantum quantum)
 {
     if (Quantums.Count < volume * 2)
     {
         return(1f);
     }
     else
     {
         return(0f);
     }
 }
        public override Dictionary <ChemEObject, float> CalculatePossiblePositions(Quantum quantum)
        {
            possiblePositions.Clear();
            quantumPreviousPositionPoint = quantum.EntryPoint;
            for (int i = 0; i < NextPosition.Count; i++)
            {
                instrumentNextPositionPoint = PointOfExit2(NextPosition.Keys.ElementAt(i));
                Debug.Log(quantum.EntryPoint.ToString());
                if ((quantumPreviousPositionPoint == Inlet2 && instrumentNextPositionPoint == Outlet2) ||
                    (quantumPreviousPositionPoint == Outlet2 && instrumentNextPositionPoint == Inlet2))
                {
                    possiblePositions.Add(NextPosition.Keys.ElementAt(i), NextPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }

                if ((quantumPreviousPositionPoint == Inlet && instrumentNextPositionPoint == Outlet) ||
                    (quantumPreviousPositionPoint == Outlet && instrumentNextPositionPoint == Inlet))
                {
                    possiblePositions.Add(NextPosition.Keys.ElementAt(i), NextPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }

                if (quantumPreviousPositionPoint == instrumentNextPositionPoint)
                {
                    possiblePositions.Add(NextPosition.Keys.ElementAt(i), NextPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }
            }

            for (int i = 0; i < PreviousPosition.Count; i++)
            {
                instrumentNextPositionPoint = PointOfEntry2(PreviousPosition.Keys.ElementAt(i));
                if ((quantumPreviousPositionPoint == Inlet2 && instrumentNextPositionPoint == Outlet2) ||
                    (quantumPreviousPositionPoint == Outlet2 && instrumentNextPositionPoint == Inlet2))
                {
                    possiblePositions.Add(PreviousPosition.Keys.ElementAt(i), PreviousPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }

                if ((quantumPreviousPositionPoint == Inlet && instrumentNextPositionPoint == Outlet) ||
                    (quantumPreviousPositionPoint == Outlet && instrumentNextPositionPoint == Inlet))
                {
                    possiblePositions.Add(PreviousPosition.Keys.ElementAt(i), PreviousPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }

                if (quantumPreviousPositionPoint == instrumentNextPositionPoint)
                {
                    possiblePositions.Add(PreviousPosition.Keys.ElementAt(i), PreviousPosition.Keys.ElementAt(i).QuantumProbabilityCalc(quantum));
                }
            }
            return(possiblePositions);
        }
示例#5
0
 public override float QuantumProbabilityCalc(Quantum quantum)
 {
     return(1f);
 }
示例#6
0
 // Called by the Quanta inside the instrument
 public abstract Dictionary <ChemEObject, float> CalculatePossiblePositions(Quantum quantum);
示例#7
0
 // Called by the Quanta in the connected (previous or next) instrument
 public abstract float QuantumProbabilityCalc(Quantum quantum);
示例#8
0
 // The Generator?
 public override float QuantumProbabilityCalc(Quantum quantum)
 {
     return(0f);            // Acts as a stop plug
 }
示例#9
0
 public override float QuantumProbabilityCalc(Quantum quantum)
 {
     return(openValue);
 }
示例#10
0
 public override bool QuantumSpace(Quantum quantum)
 {
     // Should the quantum move out?
     return(this.Quantums.Count > this.volumeWater * SimulationModel.VolumeMultiplier);
 }