void OnThicknessSolveStop(ThicknessSolver solver) { string txt = "厚度求解器结束计算"; textBox2.Text += txt; textBox2.SelectionStart = textBox2.Text.Length; textBox2.ScrollToCaret(); }
private void THICKNESS_TUBBIN_C3_COM(object sender, EventArgs e) { List <Layer> layers = CreateTestTubbinessLayers(); Class3Boundary boundary = new Class3Boundary(10, 0.8, 25 + 273.15, TemperatureCalculate.OutsideArea(layers)); Model.TemperatureCalculate cal = new Model.TemperatureCalculate(1600 + 273.15, boundary, layers); SolverControlParameter par = new SolverControlParameter(SolverControlParameter.ConvergenceCriterionType.RESIDUAL_OR_MAXSTEP, 0.001, 50, 0); ThicknessCalculate tcal = new ThicknessCalculate(cal, 2, 394.94, par, par); ThicknessSolver solver = ThicknessSolverFactory.CreateSolver(tcal); solver.TemperatureSolver.UpdateTemperatureEndEvent += new UpdateTemperatureEndEventHandler(OnTemperatureSolverUpdate); solver.SolveStartEvent += new ThicknessSolverStartEventHandler(OnThicknessSolveStart); solver.SolveUpdateEvent += new ThicknessSolverUpdateEventHandler(OnThicknessSolveUpdate); solver.SolveStopEvent += new ThicknessSolverStopEventHandler(OnThicknessSolveStop); double lim = solver.LimitValue(); solver.Solve(); }
private void THICKNESS_PLATE_C2(object sender, EventArgs e) { List <Layer> layers = CreateTestLayers(); Class2Boundary boundary = new Class2Boundary(1038.09, 1); Model.TemperatureCalculate cal = new Model.TemperatureCalculate(1600 + 273.15, boundary, layers); SolverControlParameter par = new SolverControlParameter(SolverControlParameter.ConvergenceCriterionType.RESIDUAL_OR_MAXSTEP, 0.001, 50, 0); ThicknessCalculate tcal = new ThicknessCalculate(cal, 2, 273.15 + 100, par, par); //ThicknessCalculate tcal = new ThicknessCalculate(cal, 2, 273.15 + 900, par, par); ThicknessSolver solver = ThicknessSolverFactory.CreateSolver(tcal); solver.TemperatureSolver.UpdateTemperatureEndEvent += new UpdateTemperatureEndEventHandler(OnTemperatureSolverUpdate); solver.SolveStartEvent += new ThicknessSolverStartEventHandler(OnThicknessSolveStart); solver.SolveUpdateEvent += new ThicknessSolverUpdateEventHandler(OnThicknessSolveUpdate); solver.SolveStopEvent += new ThicknessSolverStopEventHandler(OnThicknessSolveStop); double lim = solver.LimitValue(); solver.Solve(); }
void PrintThicknessSolveInformation(ThicknessSolver solver) { string txt = ""; txt += String.Format("\r\n---------------第{0}次迭代---------------\r\n", solver.ThicknessSolveStep); txt += String.Format("残差:{0:0.0000}\r\n", solver.ThicknessSolverResidual); txt += String.Format("热流:{0:0000.00}\r\n", solver.ThicknessCalculate.Calculate.Boundary.Heatflow); for (int j = 0; j < solver.ThicknessCalculate.Calculate.LayerList.Count; j++) { if (solver.ThicknessCalculate.TargetLayerIndex == j) { txt += String.Format("**********************************\r\n第{0}层厚度:{1:0.000},热阻:{2:0.000}\r\n**********************************\r\n", j, solver.ThicknessCalculate.Calculate.LayerList[j].Thickness, solver.ThicknessCalculate.Calculate.LayerList[j].HeatResistance); } else { txt += String.Format("第{0}层厚度:{1:0.000},热阻:{2:0.000}\r\n", j, solver.ThicknessCalculate.Calculate.LayerList[j].Thickness, solver.ThicknessCalculate.Calculate.LayerList[j].HeatResistance); } } textBox2.Text += txt; }
void OnThicknessSolveStart(ThicknessSolver solver) { textBox2.Text = "厚度求解器开始计算"; chart1.Series.Clear(); chart2.Series.Clear(); chart3.Series.Clear(); Series s1 = new Series("温度求解器残差"); Series s2 = new Series("厚度求解器残差"); Series s3 = new Series("所求层厚度"); s1.ChartType = SeriesChartType.Spline; s1.BorderWidth = 2; s2.ChartType = SeriesChartType.Spline; s2.BorderWidth = 2; s3.ChartType = SeriesChartType.Spline; s3.BorderWidth = 2; chart1.Series.Add(s1); chart2.Series.Add(s2); chart3.Series.Add(s3); }
void OnThicknessSolveUpdate(ThicknessSolver solver) { chart2.Series[0].Points.AddY(solver.ThicknessSolverResidual); chart3.Series[0].Points.AddY(solver.ThicknessCalculate.Calculate.LayerList[solver.ThicknessCalculate.TargetLayerIndex].Thickness); PrintThicknessSolveInformation(solver); }