void OutputDebugInformation(TemperatureSolverC1 solver) { Console.WriteLine("----------------------------------第{0}次迭代------------------------------", solver.CurrentStep); Console.WriteLine("残差:{0:#.###}", solver.CurrentResidual); Console.WriteLine("热流:{0:####.###} ", solver.CurrentCalculate.Boundary.Heatflow); for (int j = 0; j < solver.CurrentCalculate.LayerList.Count; j++) { Console.WriteLine("第{0}层温度:{1:####} {2:####},热阻:{3:#.###}", j, solver.CurrentCalculate.LayerList[j].HighTemperature, solver.CurrentCalculate.LayerList[j].LowTemperature, solver.CurrentCalculate.LayerList[j].HeatResistance); } }
void OnInit(TemperatureSolverC1 solver) { chart1.Series[0].Points.Clear(); chart2.Series.Clear(); for (int i = 0; i < solver.CurrentCalculate.LayerList.Count; i++) { Series s = new Series("第" + i.ToString() + "层低温"); s.ChartType = SeriesChartType.Line; s.BorderWidth = 3; chart2.Series.Add(s); } textBox2.Text = "初始化完毕!!!\r\n"; }
private void CreateTestSolverAndRun(TemperatureCalculate cal) { TemperatureSolverC1 solver = TemperatureSolverFactory.CreateSolver(cal); solver.InitalizedTemperatureEndEvent += new InitalizedTemperatureEndEventHandler(OnInit); solver.UpdateTemperatureEndEvent += new UpdateTemperatureEndEventHandler(OnUpdate); solver.SolveEndEvent += new SolveEndEventHandler(OnEnd); solver.UpdateTemperatureEndEvent += new UpdateTemperatureEndEventHandler(OutputDebugInformation); solver.SolveStartEvent += new SolveStartEventHandler(OnStart); SolverControlParameter par = new SolverControlParameter(SolverControlParameter.ConvergenceCriterionType.RESIDUAL_OR_MAXSTEP, 0.01, 50, 0); solver.InitalizeTemperature(); solver.Solve(par); }
void OnUpdate(TemperatureSolverC1 solver) { chart1.Series[0].Points.AddXY(solver.CurrentStep, solver.CurrentResidual); for (int i = 0; i < solver.CurrentCalculate.LayerList.Count; i++) { chart2.Series[i].Points.AddXY(solver.CurrentStep, solver.CurrentCalculate.LayerList[i].LowTemperature);; } string txt = ""; txt += String.Format("\r\n---------------第{0}次迭代---------------\r\n", solver.CurrentStep); txt += String.Format("残差:{0:0.0000}\r\n", solver.CurrentResidual); txt += String.Format("热流:{0:0000.00}\r\n", solver.CurrentCalculate.Boundary.Heatflow); for (int j = 0; j < solver.CurrentCalculate.LayerList.Count; j++) { txt += String.Format("第{0}层温度:{1:0000.00} {2:0000.00},热阻:{3:0.000}\r\n", j, solver.CurrentCalculate.LayerList[j].HighTemperature, solver.CurrentCalculate.LayerList[j].LowTemperature, solver.CurrentCalculate.LayerList[j].HeatResistance); } textBox2.Text += txt; textBox2.SelectionStart = textBox2.Text.Length; textBox2.ScrollToCaret(); }
void OnStart(TemperatureSolverC1 solver) { textBox2.Text += "开始计算!!!\r\n"; }
void OnEnd(TemperatureSolverC1 solver) { textBox2.Text += "\r\n计算完毕!!!\r\n"; textBox2.SelectionStart = textBox2.Text.Length; textBox2.ScrollToCaret(); }
void OnTemperatureSolverUpdate(TemperatureSolverC1 solver) { chart1.Series[0].Points.AddY(solver.CurrentResidual); }