예제 #1
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
 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);
     }
 }
예제 #2
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
 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";
 }
예제 #3
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
        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);
        }
예제 #4
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
        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();
        }
예제 #5
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
 void OnStart(TemperatureSolverC1 solver)
 {
     textBox2.Text += "开始计算!!!\r\n";
 }
예제 #6
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
 void OnEnd(TemperatureSolverC1 solver)
 {
     textBox2.Text          += "\r\n计算完毕!!!\r\n";
     textBox2.SelectionStart = textBox2.Text.Length;
     textBox2.ScrollToCaret();
 }
예제 #7
0
파일: Form1.cs 프로젝트: Netkidxp/phtc
 void OnTemperatureSolverUpdate(TemperatureSolverC1 solver)
 {
     chart1.Series[0].Points.AddY(solver.CurrentResidual);
 }