Beispiel #1
0
 /// <summary>
 /// Creates a MVTracker with a full complement of parameters.
 /// </summary>
 /// <param name="initial">The initial mixture.</param>
 /// <param name="inflow">The inflowing mixture.</param>
 /// <param name="outflow">The outflowing mixture.</param>
 /// <param name="capacity">The capacity of the vessel.</param>
 /// <param name="rp">The ReactionProcessor that knows of any reactions that will take place. Can be null.</param>
 public MassVolumeTracker(Mixture initial, Mixture inflow, Mixture outflow, double capacity, ReactionProcessor rp)
 {
     m_massHistory   = new DoubleTracker();
     m_volumeHistory = new DoubleTracker();
     SetInitialMixture(initial == null ? new Mixture() : (Mixture)initial.Clone());
     SetInflowMixture(inflow == null ? new Mixture() : (Mixture)inflow.Clone());
     SetOutflowMixture(outflow == null ? new Mixture() : (Mixture)outflow.Clone());
     m_reactionProcessor = rp;
     m_capacity          = capacity;
     m_cyclical          = true;
     m_inflowFirst       = true;
 }
            private void Initialize(BasicReactionSupporter brs)
            {
                MaterialCatalog   mcat = brs.MyMaterialCatalog;
                ReactionProcessor rp   = brs.MyReactionProcessor;

                //                        Model  Name    Guid           SpecGrav SpecHeat
                mcat.Add(new MaterialType(null, "Water", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Hydrochloric Acid", Guid.NewGuid(), 1.1890, 2.5500, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Caustic Soda", Guid.NewGuid(), 2.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Sodium Chloride", Guid.NewGuid(), 2.1650, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Sulfuric Acid 98%", Guid.NewGuid(), 1.8420, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Potassium Hydroxide", Guid.NewGuid(), 1.3000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Potassium Sulfate", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Nitrous Acid", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Sodium Nitrite", Guid.NewGuid(), 2.3800, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Potassium Nitrite", Guid.NewGuid(), 1.9150, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Aluminum Hydroxide", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Ammonia", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Ammonium Hydroxide", Guid.NewGuid(), 1.0000, 4.1800, MaterialState.Liquid));
                mcat.Add(new MaterialType(null, "Bromine", Guid.NewGuid(), 3.1200, 4.1800, MaterialState.Liquid));

                Reaction r1 = new Reaction(null, "Reaction 1", Guid.NewGuid());

                r1.AddReactant(mcat["Caustic Soda"], 0.5231);
                r1.AddReactant(mcat["Hydrochloric Acid"], 0.4769);
                r1.AddProduct(mcat["Water"], 0.2356);
                r1.AddProduct(mcat["Sodium Chloride"], 0.7644);
                rp.AddReaction(r1);

                Reaction r2 = new Reaction(null, "Reaction 2", Guid.NewGuid());

                r2.AddReactant(mcat["Sulfuric Acid 98%"], 0.533622);
                r2.AddReactant(mcat["Potassium Hydroxide"], 0.466378);
                r2.AddProduct(mcat["Water"], 0.171333);
                r2.AddProduct(mcat["Potassium Sulfate"], 0.828667);
                rp.AddReaction(r2);

                Reaction r3 = new Reaction(null, "Reaction 3", Guid.NewGuid());

                r3.AddReactant(mcat["Caustic Soda"], 0.459681368);
                r3.AddReactant(mcat["Nitrous Acid"], 0.540318632);
                r3.AddProduct(mcat["Water"], 0.207047552);
                r3.AddProduct(mcat["Sodium Nitrite"], 0.792952448);
                rp.AddReaction(r3);

                Reaction r4 = new Reaction(null, "Reaction 4", Guid.NewGuid());

                r4.AddReactant(mcat["Potassium Hydroxide"], 0.544102);
                r4.AddReactant(mcat["Nitrous Acid"], 0.455898);
                r4.AddProduct(mcat["Water"], 0.174698);
                r4.AddProduct(mcat["Potassium Nitrite"], 0.825302);
                rp.AddReaction(r4);
            }
Beispiel #3
0
 /// <summary>
 /// Creates a MVTracker without initial mixture, transfers or capacity specified. The way this
 /// is used is to turn off level tracking in a mixture/vessel, then add &amp; remove what is specified (add, then remove),
 /// then log the tracker's high and low marks, and finally turn level tracking back on.
 /// Note - this is done inside the SOMTask's DoOperations(...) method, and takes the form of<p></p>
 /// <code>this.GetSOD(graphContext).SetChangeLogging(true);</code>
 /// </summary>
 /// <param name="vesselCapacity">The capacity of the vessel in which the mixture is being handled.</param>
 /// <param name="rp">The ReactionProcessor that knows of any reactions that will take place. Can be null.</param>
 public MassVolumeTracker(ReactionProcessor rp, double vesselCapacity) : this(null, null, null, vesselCapacity, rp)
 {
 }
Beispiel #4
0
 /// <summary>
 /// Creates a MVTracker without initial mixture, transfers or capacity specified. The way this
 /// is used is to turn off level tracking in a mixture/vessel, then add &amp; remove what is specified (add, then remove),
 /// then log the tracker's high and low marks, and finally turn level tracking back on.
 /// Note - this is done inside the SOMTask's DoOperations(...) method, and takes the form of<p></p>
 /// <code>this.GetSOD(graphContext).SetChangeLogging(true);</code>
 /// </summary>
 /// <param name="rp">The ReactionProcessor that knows of any reactions that will take place. Can be null.</param>
 public MassVolumeTracker(ReactionProcessor rp) : this(null, null, null, double.NaN, rp)
 {
 }