/// <summary> /// [計算開始]ボタン押下イベントハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCalc_Click(object sender, EventArgs e) { if (SolverThread != null && SolverThread.IsAlive) { if (!Solver.IsCalcAborted) { if (MessageBox.Show("計算をキャンセルしますか", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { // 2重チェック if (SolverThread != null && SolverThread.IsAlive) { new Thread(new ThreadStart(delegate() { Solver.IsCalcAborted = true; SolverThread.Join(); SolverThread = null; })).Start(); } } } return; } if (CadLgc.IsBackupFile) { MessageBox.Show("このファイルはバックアップファイルです。計算できません" + System.Environment.NewLine + "名前を付けて保存で別名の新規ファイルを作成してください"); return; } if (CadLgc.IsEditing) { MessageBox.Show("編集中は計算できません"); return; } // 計算範囲ダイアログを表示する CalcSettingFrm calcSettingFrm = new CalcSettingFrm( Solver.FirstNormalizedFreq, Solver.LastNormalizedFreq, Solver.CalcFreqCnt, Solver.ElemShapeDvToBeSet, Solver.ElemOrderToBeSet, Solver.LsEqnSolverDv); DialogResult result = calcSettingFrm.ShowDialog(); if (result != DialogResult.OK) { return; } // 要素形状、次数の設定をSolverに格納する Solver.ElemShapeDvToBeSet = calcSettingFrm.ElemShapeDv; Solver.ElemOrderToBeSet = calcSettingFrm.ElemOrder; // Cadデータ保存&Fem入力データ作成保存 doSave(true); if (FemInputDatFilePath == "") { return; } // 解析機へ入力データを読み込む Solver.Load(FemInputDatFilePath); // 解析機の情報が確定したので、計算範囲画面で設定した計算範囲をファイルへ書き込み Solver.UpdateAndSaveToInputFile(FemInputDatFilePath, calcSettingFrm.NormalizedFreq1, calcSettingFrm.NormalizedFreq2, calcSettingFrm.CalcFreqCnt, calcSettingFrm.LsEqnSolverDv); // 計算処理 doCalc(); }
/// <summary> /// [計算開始]ボタン押下イベントハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCalc_Click(object sender, EventArgs e) { if (SolverThread != null && SolverThread.IsAlive) { if (!Solver.IsCalcAborted) { if (MessageBox.Show("計算をキャンセルしますか", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { // 2重チェック if (SolverThread != null && SolverThread.IsAlive) { new Thread(new ThreadStart(delegate() { Solver.IsCalcAborted = true; SolverThread.Join(); SolverThread = null; })).Start(); } } } return; } if (CadLgc.IsBackupFile) { MessageBox.Show("このファイルはバックアップファイルです。計算できません" + System.Environment.NewLine + "名前を付けて保存で別名の新規ファイルを作成してください"); return; } if (CadLgc.IsEditing) { MessageBox.Show("編集中は計算できません"); return; } // 自動計算モードを解除する chkboxAutoCalc.CheckedChanged -= chkboxAutoCalc_CheckedChanged; chkboxAutoCalc.Checked = false; IsAutoCalc = false; PostPro.IsAutoCalc = IsAutoCalc; chkboxAutoCalc.CheckedChanged += chkboxAutoCalc_CheckedChanged; // 計算範囲ダイアログを表示する CalcSettingFrm calcSettingFrm = new CalcSettingFrm( Solver.FirstNormalizedFreq, Solver.LastNormalizedFreq, Solver.CalcFreqCnt, Solver.WGStructureDv, Solver.WaveModeDv, Solver.ElemShapeDvToBeSet, Solver.ElemOrderToBeSet, Solver.LsEqnSolverDv, Solver.WaveguideWidthForEPlane); DialogResult result = calcSettingFrm.ShowDialog(); if (result != DialogResult.OK) { return; } // 要素形状、次数の設定をSolverに格納する Solver.ElemShapeDvToBeSet = calcSettingFrm.ElemShapeDv; Solver.ElemOrderToBeSet = calcSettingFrm.ElemOrder; // ソルバーに計算範囲画面で設定した情報をセットする Solver.SetNormalizedFreqRange(calcSettingFrm.NormalizedFreq1, calcSettingFrm.NormalizedFreq2, calcSettingFrm.CalcFreqCnt); Solver.WGStructureDv = calcSettingFrm.WGStructureDv; Solver.WaveModeDv = calcSettingFrm.WaveModeDv; Solver.LsEqnSolverDv = calcSettingFrm.LsEqnSolverDv; Solver.WaveguideWidthForEPlane = calcSettingFrm.WaveguideWidthForEPlane; // Cadデータ保存&Fem入力データ作成保存 doSave(true); if (FemInputDatFilePath == "") { return; } // 解析機へ入力データを読み込む Solver.Load(FemInputDatFilePath); // 計算処理 doCalc(); }