// >0 if it is more mass in source volume // TIME IS APPLIED public float GetMassBalance(ChemVolume receiverVol) { ChemVolume sourceVol = GetSourceForReceiver(receiverVol); if (sourceVol.name == "SteamStorage") { int x = 0; } float res = (sourceVol.Pressure - receiverVol.Pressure) * Kmass * gateGap * plant.PlantDeltaTime; if (res > 0) { float probableMass = GasUtils.CalculateMass(sourceVol.Pressure, receiverVol.Volume, sourceVol.Mix.Temp); float dm = probableMass - receiverVol.Mix.Mass; if (dm > 0 && res > dm) { res = dm; } } if (float.IsNaN(res) || float.IsInfinity(res)) { throw new UnityException("GetMassBalance result is Nan or Infinity"); } return(res); }
// Use this for initialization void Start() { float m = GasUtils.CalculateMass(Constants.WorldPressure, volume.Volume, Constants.WorldTemp); volume.Mix.AddFraction(new ChemFraction(O2, m * frO2)); volume.Mix.AddFraction(new ChemFraction(N2, m * frN2)); volume.Mix.AddFraction(new ChemFraction(CO2, m * frCO2)); volume.Mix.AddFraction(new ChemFraction(InertGas, m * (1 - frO2 - frN2 - frCO2))); volume.Mix.Heat = m * volume.Mix.HeatCapacity * Constants.WorldTemp; volume.Mix.Infinite = true; }