Exemplo n.º 1
0
 public override bool DoPVFlash(bool showWarning = false)
 {
     CasterLogger.Debug("DoTVFFlash");
     if (_capeThermoMaterialObject == null)
     {
         return(false);
     }
     try
     {
         _capeThermoMaterialObject.CalcEquilibrium("PVF", null);
         //_alreadyFlashed = true;
     }
     catch (Exception e)
     {
         if (showWarning)
         {
             MessageBox.Show("Flash fails. " + e.Message);
         }
         CasterLogger.Error("Flash failed. " + e.Message);
         Debug.WriteLine("Flash fails. {0}", e.Message);
         return(false);
     }
     CasterLogger.Debug("Flash completed.");
     return(true);
 }
Exemplo n.º 2
0
        public override Type BindToType(string assemblyName, string typeName)
        {
            Type     type;
            Assembly unitCoreAsm = Assembly.GetExecutingAssembly();

            type = unitCoreAsm.GetType(typeName);
            if (type != null)
            {
                return(type);
            }

            var asms = AppDomain.CurrentDomain.GetAssemblies();

            foreach (var asm in asms)
            {
                if (asm.FullName == assemblyName)
                {
                    type = asm.GetType(typeName);
                    if (type != null)
                    {
                        return(type);
                    }
                }
            }

            CasterLogger.Error($"Type {typeName} in Assemly {assemblyName} is not found.");
            return(typeof(object));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Calculate or get property
        /// </summary>
        /// <param name="propName">property name, defined in CO reference</param>
        /// <param name="phases">empty means </param>
        /// <param name="basis"></param>
        /// <param name="calculate"></param>
        /// <returns></returns>
        protected double[] GetPropList(string propName, PropertyBasis basis, Phases[] phases = null, bool calculate = true)
        {
            object value = null;

            try
            {
                // overall don't need calculate
                if (calculate && phases != null && phases.Length != 0)
                {
                    CasterLogger.Debug($"Calculate property {propName} for {phases}");
                    _capeThermoMaterialObject.CalcProp(new[] { propName }, phases, "mixture");
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("Calculate single phase prop {0} fails. {1}", propName, e.Message);
            }
            if (phases == null || phases.Length == 0) // overall
            {
                CasterLogger.Debug($"Get property {propName} for overall phase");
                value = _capeThermoMaterialObject.GetProp(propName, "Overall", null, "mixture", basis.ToString());
            }
            else if (phases.Length == 1)  // one phase
            {
                CasterLogger.Debug($"Get property {propName} for {phases[0]}");
                value = _capeThermoMaterialObject.GetProp(propName, phases[0].Value, null, "mixture", basis.ToString());
            }
            else if (phases.Length == 2)  // two phases, example: kvalues
            {
                CasterLogger.Debug($"Get property {propName} for {phases[0]} and {phases[1]}");
                string phaseName = null;
                if (phases.Contains(Phases.Vapor) && phases.Contains(Phases.Liquid))
                {
                    phaseName = Phases.Vapor.Value + Phases.Liquid.Value;   // vapor in front
                }
                else
                {
                    phaseName = phases[0].Value + phases[1].Value;
                }
                value = _capeThermoMaterialObject.GetProp(propName, phaseName, null, "mixture", basis.ToString());
            }
            else
            {
                CasterLogger.Error($"Only support overall, 1 phase or 2 phases");
                throw new ArgumentOutOfRangeException($"Only support overall, 1 phase or 2 phases");
            }
            CasterLogger.Debug($"Get property {propName}: {value}");
            return(value as double[]);
        }
Exemplo n.º 4
0
 /// <summary>
 /// connect to stream, can be CO1.0 ICapeThermoMaterialObject or CO1.1 ICapeThermoMaterial
 /// </summary>
 public override void Connect(object objectToConnect)
 {
     CasterLogger.Debug($"Port {this.ComponentName} is connecting");
     Disconnect();
     if (objectToConnect is ICapeThermoMaterial)
     {
         _materialObject = new MaterialObject11(objectToConnect);
     }
     else if (objectToConnect is ICapeThermoMaterialObject)
     {
         _materialObject = new MaterialObject10(objectToConnect);
     }
     else
     {
         CasterLogger.Error("object connected to material port must be ICapeThermoMaterial or ICapeThermoMaterialObject");
         throw new ECapeUnknownException(this, "object connected to material port must be ICapeThermoMaterial or ICapeThermoMaterialObject");
     }
     CasterLogger.Debug($"Port {this.ComponentName} connected.");
 }
Exemplo n.º 5
0
 public override bool DoFlash(string[] flashSpec1, string[] flashSpec2, string solutionType, bool showWarning = false)
 {
     CasterLogger.Debug("DoFlash with " + flashSpec1.First());
     try
     {
         _capeThermoMaterialObject.CalcEquilibrium(flashSpec1.First(), null);
         //_alreadyFlashed = true;
     }
     catch (Exception e)
     {
         if (showWarning)
         {
             MessageBox.Show("Flash failed. " + e.Message);
         }
         CasterLogger.Error("Flash failed. " + e.Message);
         Debug.WriteLine("Flash failed. {0}", e.Message);
         return(false);
     }
     CasterLogger.Debug("Flash completed.");
     return(true);
 }
Exemplo n.º 6
0
 /// <summary>
 /// set property
 /// </summary>
 /// <param name="propName">property name, defined in CO reference</param>
 /// <param name="phases">empty means overall, if it's vapor and liquid, will be combined to "vaporliquid", otherwise, just add the names</param>
 /// <returns></returns>
 protected void SetPropList(string propName, PropertyBasis basis, IEnumerable <double> value, Phases[] phases = null)
 {
     CasterLogger.Debug($"Set property for {propName}: {value}");
     double[] temp = value as double[] ?? value.ToArray();
     if (phases == null || phases.Length == 0) // overall
     {
         CasterLogger.Debug($"Set property {propName} for overall phase");
         _capeThermoMaterialObject.SetProp(propName, "Overall", null, "mixture", basis.ToString(), temp);
     }
     else if (phases.Length == 1)  // one phase
     {
         CasterLogger.Debug($"Set property {propName} for {phases[0]}");
         _capeThermoMaterialObject.SetProp(propName, phases[0].Value, null, null, basis.ToString(), temp);
     }
     else if (phases.Length == 2)  // two phases
     {
         CasterLogger.Debug($"Set property {propName} for {phases[0]} and {phases[1]}");
         string phaseName = null;
         if (phases.Contains(Phases.Vapor) && phases.Contains(Phases.Liquid))
         {
             phaseName = Phases.Vapor.Value + Phases.Liquid.Value;   // vapor in front
         }
         else
         {
             phaseName = phases[0].Value + phases[1].Value;
         }
         _capeThermoMaterialObject.SetProp(propName, phaseName, null, "mixture", basis.ToString(), temp);
     }
     else
     {
         CasterLogger.Error($"Only support overall, 1 phase or 2 phases");
         throw new ArgumentOutOfRangeException($"Only support overall, 1 phase or 2 phases");
     }
     //_alreadyFlashed = false;
     CasterLogger.Debug($"Set property completed");
 }
Exemplo n.º 7
0
 public override void SetListOfPresentPhases(IEnumerable <Phases> presentPhases, IEnumerable <eCapePhaseStatus> presentPhasesStatus)
 {
     CasterLogger.Error("CO1.0 cannot set Present Phases");
     throw new Exception("CO1.0 cannot set Present Phases");
 }