public override double[] GetTwoPhasePropList(string propName, Phases phase1, Phases phase2, PropertyBasis basis, bool calculate = true) { CasterLogger.Debug($"Get property {propName} for phase {phase1} and {phase2}"); object value = null; if (PresentPhases.All(p => p.Value != phase1.Value) || PresentPhases.All(p => p.Value != phase2.Value)) { return(new double[CompoundNum]); } string[] phaseList = { phase1.Value, phase2.Value }; try { _capeThermoPropertyRoutine.CalcTwoPhaseProp(new[] { propName }, phaseList); } catch (Exception e) { Debug.WriteLine("Calculate two phase prop {0} fails. {1}", propName, e.Message); } _capeThermoMaterial.GetTwoPhaseProp(propName, phaseList, basis.ToString(), ref value); CasterLogger.Debug($"Property {propName} result: {value}"); return(value as double[]); }
public override double[] GetSinglePhasePropList(string propName, Phases phase, PropertyBasis basis, bool calculate = true) { CasterLogger.Debug($"Get property {propName} for phase {phase}"); object value = null; if (PresentPhases.All(p => p.Value != phase.Value)) { return(new double[CompoundNum]); //default is 0 for every element } try { if (calculate) { _capeThermoPropertyRoutine.CalcSinglePhaseProp(new[] { propName }, phase.Value); } } catch (Exception e) { CasterLogger.ErrorFormatted("Calculate single phase prop {0} fails. {1}", propName, e.Message); Debug.WriteLine("Calculate single phase prop {0} fails. {1}", propName, e.Message); } _capeThermoMaterial.GetSinglePhaseProp(propName, phase.Value, basis.ToString(), ref value); CasterLogger.Debug($"Property {propName} result: {value}"); return(value as double[]); }
/// <summary> /// get single phase property, return a double number, will try to calculate property first, if not present, return 0; if property is an array, throw exception /// </summary> public double GetSinglePhasePropDouble(string propName, Phases phase, PropertyBasis basis, bool calculate = true) { CasterLogger.Debug($"GetSinglePhasePropDouble for {propName} in {phase} Calculate: {calculate}"); if (PresentPhases.All(p => p.Value != phase.Value)) { return(0); } var result = GetSinglePhasePropList(propName, phase, basis, calculate).SingleOrDefault(); CasterLogger.Debug($"GetSinglePhasePropDouble result: {result}"); return(result); }
public override void SetSinglePhasePropList(string propName, Phases phase, PropertyBasis basis, IEnumerable <double> value) { CasterLogger.Debug($"Set property {propName} for phase {phase}: {value}"); if (PresentPhases.All(p => p.Value != phase.Value)) { PresentPhases = AllowedPhases; } double[] temp = value as double[] ?? value.ToArray(); _capeThermoMaterial.SetSinglePhaseProp(propName, phase.Value, basis.ToString(), temp); //_alreadyFlashed = false; CasterLogger.Debug($"Set property complete"); }