private void CalcButton_Click(object sender, EventArgs e) // This event will be handled by Plus,Minus,Devide and Multiply { Decimal.TryParse(txtDisplay.Text, out dMemory1); switch (((button)sender).Text) { case "+": status = CalcStatus.Plus; break; case "-": status = CalcStatus.Minus; break; case "/": status = CalcStatus.Divide; break; case "*": status = CalcStatus.Multiply; break; } bHasNewFlag = true; bHasEquals = false; dMemroy2 = 0M; }
private void EqualsTo_Click(object sender, EventArgs e) // This event will be handled by Equals To (=) { Decimal dVal = 0M; if (bHasEquals == false) { Decimal.TryParse(txtDisplay.Text, out dMemory1); } switch (status) { case "+": dVal = dMemory1 + dMemory2; break; case "-": status = CalcStatus.Minus; dVal = dMemory1 - dMemory2; break; case "/": dVal = dMemory1 / dMemory2; break; case "*": dVal = dMemory1 * dMemory2; break; } txtDisplay.Text = dVal; bHasEquals = true; }
public void SetCalcStatus(CalcStatus calcStatus, string message = null) { if (CalcQuantity == null) { CalcQuantity = new CalcQuantity(); } CalcQuantity.CalcStatus = calcStatus; if (message != null) { CalcQuantity.Message = message; } }
// ------------------------------------- public void Recalculate() { try { if (EqPreviewVariables.Count > 0) { if (_bCalculating) return; _bCalculating = true; UpdateCalcInputs(); ClearResults(); CalcStatus calcStatus = _currentEquationCalc.CalculateAll(); IList<FunCalcError> lowestErrors = new List<FunCalcError>(); IList<FunCalcError> allErrors = new List<FunCalcError>(); _currentEquationCalc.GetErrors(ref lowestErrors, ref allErrors, NumberFormat: NumberFormat); if (lowestErrors?.Count > 0) { _errorMessage = lowestErrors[0].Message; } else { foreach (var item in EqPreviewVariables) { if (item.UnExpectedDimensions) { _errorMessage = "Unexpected Dimensions in variables or results"; } } } OnMessagesChanged(); RefreshEqPreviewVariables(); SetMaxUOMLength(); CalculationFinished?.Invoke(this, null); } } catch (Exception ex) { Logging.LogException(ex); throw; } finally { _bCalculating = false; } }
////TEST BUTTON*************************************************************************************************************************************************** private void button11_Click(object sender, EventArgs e) { //個体値 Status StKotai = new Status((31, 31, 31, 31, 31, 31)); //努力値 Status StDoryoku = new Status((252, 252, 0, 0, 0, 0)); //ポケモン名+性格名+個体値+努力値 があれば、実数値が計算可能。 Status StRet = CalcStatus.CalcParam(998, 23, StKotai, StDoryoku); lbLog.Items.Add("\r\n" + "H=" + StRet.H.ToString()); lbLog.Items.Add("\r\n" + "A=" + StRet.A.ToString()); lbLog.Items.Add("\r\n" + "B=" + StRet.B.ToString()); lbLog.Items.Add("\r\n" + "C=" + StRet.C.ToString()); lbLog.Items.Add("\r\n" + "D=" + StRet.D.ToString()); lbLog.Items.Add("\r\n" + "S=" + StRet.S.ToString()); }
// ------------------------------ public void CheckParamTypes() { // Assign AnonUOM to each variable based on the param type UpdateInputsDimensions(); // Check the consistency of dimensions CalcStatus calcStatus = EquationCalc.CheckDimensionsAll(); if (calcStatus == CalcStatus.Bad) { ParamTypeMsg = "Parameter types have inconsisent dimensions"; } else { ParamTypeMsg = DefaultParamTypeMsg; } }
// ----------------------------------------- public static CalcQuantity NewMathResult(double value, AnonUOM anonUOM) { CalcStatus calcStatus = CalcStatus.Good; string message = ""; if (double.IsNaN(value) || double.IsInfinity(value)) { calcStatus = CalcStatus.Bad; message = "Math error"; } CalcQuantity result = new CalcQuantity( value: value, calcStatus: calcStatus, message: message, anonUOM: anonUOM); return(result); }
//public float Reservoir_Pressure; // Пластовое давление (начальное, пл.у.), атм //public float Reservoir_Temperature; // Пластовая температура (пл.у.), °C //public float Oil_VolumeFactor; // Объёмный фактор (коэффициент) нефти (пл.у.), м³/ м³ //public float Bubblepoint_Pressure; // Давление насыщения нефти (пл.у.), атм //public float Reservoir_SGOR; // Газосодержание нефти (пл.у.), м³/ м³ //public float Reservoir_GOR; // Газовый фактор нефти (пл.у.), м³/ м³ //public float Oil_Density; // Плотность нефти (с.у.), т/м³ //public float Water_Density; // Плотность воды (с.у.), т/м³ //public float Gas_Density; // Плотность газа (с.у.), кг/м³ //public float Oil_Viscosity; // Вязкость нефти (пл.у.), сПз //public float Water_Viscosity; // Вязкость воды (пл.у.), сПз public void Fill(PipeNetCalc.FluidInfo fi, double P0, double P1) { if (fi.IsEmpty || double.IsNaN(P0) || double.IsNaN(P1)) { CalcStatus = CalcStatus.NoData; } else { CalcStatus = CalcStatus.Success; fluid = fi; } //Reservoir_Pressure = (float)fi.Reservoir_Pressure__Atm; //Reservoir_Temperature = (float)fi.Temperature__C; //Oil_VolumeFactor = (float)fi.Oil_VolumeFactor; //Bubblepoint_Pressure = (float)fi.Bubblpnt_Pressure__Atm; //Reservoir_SGOR = (float)fi.Oil_GasFactor; //Oil_Density = (float)fi.Oil_Density; //Water_Density }
private static WorkflowStatus GetStatus(IEnumerable <WorkflowStatus> states, CalcStatus calc) { bool hasFailure = false; bool hasSuccess = false; bool hasRunning = false; bool hasUnknown = false; bool hasAny = false; foreach (var s in states) { hasFailure |= s == WorkflowStatus.Failure; hasSuccess |= s == WorkflowStatus.Success; hasRunning |= s == WorkflowStatus.Running; hasUnknown |= s == WorkflowStatus.Undetermined; hasAny = true; } return(calc(hasFailure, hasSuccess, hasRunning, hasUnknown, hasAny)); }
// ------------------------------------- public void Recalculate() { try { if (EqCalcVariables.Count > 0) { if (_bCalculating) { return; } _bCalculating = true; UpdateCalcInputs(); ClearResults(); CalcStatus calcStatus = CurrentEquationCalc.CalculateAll(); IList <FunCalcError> lowestErrors = new List <FunCalcError>(); IList <FunCalcError> allErrors = new List <FunCalcError>(); CurrentEquationCalc.GetErrors(ref lowestErrors, ref allErrors, NumberFormat: NumberFormat); if (lowestErrors?.Count > 0) { _errorMessage = lowestErrors[0].Message; } OnMessagesChanged(); RefreshEqCalcVariables(); SetMaxUOMLength(); CalculationFinished?.Invoke(this, null); } } catch (Exception ex) { Logging.LogException(ex); throw; } finally { _bCalculating = false; } }
private void UpdateStatus(Task task) { switch (task.Status) { case TaskStatus.RanToCompletion: Status = CalcStatus.Success; break; case TaskStatus.Canceled: Status = CalcStatus.Cancelled; break; case TaskStatus.Faulted: Status = CalcStatus.Error; break; default: throw new ApplicationException($"Task status {task.Status} not supported."); } }
public void Fill(NetCalc.FluidInfo fi, double P0, double P1) { if (!fi.IsEmpty) { fluid = fi; } bool noP0 = double.IsNaN(P0); bool noP1 = double.IsNaN(P1); switch (CalcStatus) { case CalcStatus._Started: case CalcStatus._Half: CalcStatus = CalcStatus.Failed; break; case CalcStatus._Full: CalcStatus = (noP0 || noP1) ? CalcStatus.Failed : CalcStatus.Success; break; case CalcStatus.Failed: break; default: if (noP0 && noP1) { CalcStatus = (fluid == null) ? CalcStatus.Virgin : CalcStatus.NoData; } else if (!noP0 && !noP1) { CalcStatus = CalcStatus.ExtraP; } else { CalcStatus = CalcStatus.NoData; } break; } }
private string FormattedInfoMessage(CalcStatus calcStatus) { if (_errorMessage.Length > 0) { string sMsg = _errorMessage?.Trim(); if ((sMsg?.Length > 0) && !(sMsg.Substring(sMsg.Length - 1).Equals("!"))) { sMsg += "!"; } return sMsg; } switch (calcStatus) { case CalcStatus.Good: return "OK"; case CalcStatus.Uknown: case CalcStatus.Bad: return "Unknown failure!"; default: return ""; } }
/// <summary> /// Calculating progress event handler /// /// IMPORTANT NOTE: Responding to progress events can significantly affect calculation performance! /// /// </summary> /// <param name="progressEvent">Event type</param> /// <param name="value">Event value</param> /// <param name="text">Event text (if applicable)</param> /// <param name="status">Return status</param> public void CalculatingProgress(CalcProgressEvent progressEvent, uint value, string text, ref CalcStatus status) { //Dispatch UI commands to the UI thread Dispatcher.Invoke(() => { switch (progressEvent) { case CalcProgressEvent.ProgressReset: _progressBar.Visibility = Visibility.Visible; _progressBar.Minimum = 0; _progressBar.Maximum = value; _progressBar.Value = 0; break; case CalcProgressEvent.ProgressSetPos: _progressBar.Value = value; break; case CalcProgressEvent.ProgressSetText: StatusText = text; break; case CalcProgressEvent.ProgressAddOutput: StatusText = $"{value}: {text}"; break; case CalcProgressEvent.ProgressShow: _progressBar.Visibility = Visibility.Visible; break; case CalcProgressEvent.ProgressFinished: case CalcProgressEvent.ProgressHide: _progressBar.Visibility = Visibility.Hidden; break; } }); //Change status to stop the calculation process //status = CalcStatus.Aborted; }
/// <summary> /// Calculation error event handler /// </summary> /// <param name="errorType">Type of error</param> /// <param name="errorCode">Unique error identifier code</param> /// <param name="context">Error context</param> /// <param name="message">Error message</param> /// <param name="expression">Expression which caused the error, limited to the first 1024 characters</param> /// <param name="options">Error options</param> /// <param name="status">Return status</param> private void CalculatingError(CalcErrorType errorType, uint errorCode, string context, string message, string expression, uint options, ref CalcStatus status) { MessageBoxButton button = (errorType == CalcErrorType.ErrorExpression) ? MessageBoxButton.OKCancel : MessageBoxButton.OK; MessageBoxResult result = MessageBoxResult.OK; //Dispatch UI commands to the UI thread Dispatcher.Invoke(() => { result = MessageBox.Show( this, $"An error has occurred whilst calculating\n\ncontext: {context}\nExpression: {expression}\n\n{message}\n", "Calculation Error", button, MessageBoxImage.Error); }); if (errorType == CalcErrorType.ErrorExpression && result != MessageBoxResult.OK) { status = CalcStatus.Aborted; //status = CalcStatus.Interrupted; //Interrupt to show the error in the output and keep the current variables } }
public Quantity(double value, CalcStatus calcStatus, string message) { Value = value; CalcStatus = calcStatus; Message = message; }
public Formula AddStatus(CalcStatus status) { Status = status; return(this); }
static void Main() { /**************** * 展示*/ double Actual_Q = 5000; // 实际入炉风量(m3/min) double[] d = { 0.12, 0.13 }; // 直径种类(m) int[] m = { 11, 17 }; // 各风口个数,它们的和为风口总数量 double[] mu = { 0.8186 * Sqrt(1.9), Sqrt(1.9) }; // 各支路流阻比;变直径系数sqrt((12+15/13+15)^5)=0.8337;或sqrt((12/13)^5)=0.8186 double T_Bl = 1200, P_Bl = 0.41; // 高炉入炉风温(°C); 风压(MPa) double phi_Bl_H2O = 24, OE = 5, m_Coal = 160, f_Coal_H2O = 2, V_Bl = 1080; // 鼓风湿度(g/m3), 富氧率(%), 吨铁喷煤量(kg/tHM), 煤粉含水量(%), 吨铁风量(m3/tHM) double M = 160, D_pc = 0.04, L = 0.55; // 煤比(kg/t),焦炭的平均粒度(m),风口长度(m) CalcStatus Calc = new CalcStatus(Actual_Q, T_Bl, P_Bl, d, m, mu); Calc.CalcWindSpeed(); Calc.CalcKineticEnergy(); Calc.CalcCombustionTemp(phi_Bl_H2O, OE, m_Coal, f_Coal_H2O, V_Bl); Calc.CalcRacewaySize(m_Coal, D_pc, L); Calc.Display(); /******************/ //using (StreamWriter sw = new StreamWriter(@"D:\WorkSpace\VS Project\Tuyeres-Status\v&KE&Q.txt", false)) //{ // sw.WriteLine("风口直径(m)\t标准风速(m/s)\t实际风速(m/s)\t鼓风动能(J/s)\t风口风量(m3/s)\t流阻比"); //} //for (double u = 0.1; u <= 1; u += 0.001) //{ // double Actual_Q = 6000; // 实际入炉风量 // double[] d = { 0.12, 0.13 }; // 直径种类 // int[] m = { 5, 27 }; // 各风口个数,它们的和为风口总数量 // double[] mu = { 0.8186 * u, u }; // 各支路流阻比;变直径系数sqrt((12+15/13+15)^5)=0.8337 // double T_Bl = 1200, P_Bl = 0.412; // 高炉入炉风温(°C); 风压(MPa) // double phi_Bl_H2O = 11.2, OE = 3.52, m_Coal = 193.8, f_Coal_H2O = 1.87, V_Bl = 1248; // // 鼓风湿度(g/m3), 富氧率(%), 吨铁喷煤量(kg/tHM), 煤粉含水量(%), 吨铁风量(m3/tHM) // CalcStatus calc = new CalcStatus(Actual_Q, d, m, mu, T_Bl, P_Bl, phi_Bl_H2O, OE, m_Coal, f_Coal_H2O, V_Bl); // // calcstatus calc = new calcstatus(2350, 0.12, 0.14, 18, 1, 1200, 0.3, 11.2, 3.52, 193.8, 1.87, 1248); // calc.CalcWindSpeed(); // calc.CalcKineticEnergy(); // calc.WriteTXT(); //} //for (int m_small = 0; m_small <= 32; m_small++) //{ // double Actual_Q = 6000; // 实际入炉风量 // double[] d = { 0.12, 0.13 }; // 直径种类 // int[] m = { m_small, 32 - m_small }; // 各风口个数,它们的和为风口总数量 // double[] mu = { 0.8337 * Sqrt(1.9), Sqrt(1.9) }; // 各支路流阻比;变直径系数sqrt((12+15/13+15)^5)=0.8337 // double T_Bl = 1180, P_Bl = 0.412; // 高炉入炉风温(°C); 风压(MPa) // double phi_Bl_H2O = 3, OE = 5, m_Coal = 155, f_Coal_H2O = 2, V_Bl = 1080; // // 鼓风湿度(g/m3), 富氧率(%), 吨铁喷煤量(kg/tHM), 煤粉含水量(%), 吨铁风量(m3/tHM) // double M = 160, D_pc = 0.04, L = 0.55; // 煤比,焦炭的平均粒度,风口长度 // CalcStatus Calc = new CalcStatus(Actual_Q, d, m, mu, T_Bl, P_Bl); // // CalcStatus Calc = new CalcStatus(2350, 0.12, 0.14, 18, 1, 1200, 0.3, 11.2, 3.52, 193.8, 1.87, 1248); // Calc.CalcWindSpeed(); // Calc.CalcKineticEnergy(); // Calc.CalcCombustionTemp(phi_Bl_H2O, OE, m_Coal, f_Coal_H2O, V_Bl); // Calc.CalcRacewaySize(M, D_pc, L); // Calc.WriteTXT(); //} }
public DisplayQuantity(double value, CalcStatus calcStatus, string message, KnownUOM kownUOM) : base(value, calcStatus, message) { KownUOM = kownUOM; }
public CalcQuantity(double value, CalcStatus calcStatus, string message, AnonUOM anonUOM) : base(value, calcStatus, message) { AnonUOM = anonUOM; }
private void TaskStatusUpdate(CalcStatus calcStatus) => _observer?.OnNext(calcStatus.ToString("G"));
public StatusAndMessage(CalcStatus calcStatus, string message) { CalcStatus = calcStatus; Message = message; }