private void OnCalculateAlphaClicked(object sender, EventArgs e) { var solutionItem = View.SelectedItem; if (solutionItem != null) { PulsationAlphaSolver solver = new PulsationAlphaSolver(); using (CalculationDbContext db = new CalculationDbContext()) { var group = db.GetBundle(solutionItem.Id); var pulsationData = group.GetData <PulsationData>(); PulsationAlphaData data = new PulsationAlphaData(pulsationData, group); solver.Solve("Alpha", data); } } }
public void Solve(string name, PulsationAlphaData data) { using (CalculationDbContext context = new CalculationDbContext()) { var bundle = context.GetBundle(data.GroupId); int NPeriod = bundle.PeriodN(); var grid = bundle.GetGrid(); var alphaGroup = new Bundle("Нахождение коэффициентов alpha", data); int Nt = bundle.GetCount(); context.SaveChanges(); try { IIntegrator integrator = new SimpsonIntegrator(); var lastPeriodLayers = bundle.GetArrays(Nt - NPeriod, NPeriod); int number = 0; for (int deg = 2; deg <= 3; deg++) { double[] alphaValues = new double[NPeriod]; for (int i = 0; i < NPeriod; i++) { alphaValues[i] = CalculateAlpha(integrator, deg, lastPeriodLayers[i], grid.Values, grid.h, NPeriod); } alphaGroup.AddArray(string.Format("alpha{0}", number + 1), number, alphaValues); number++; } OnSolved(true); } catch (Exception exception) { OnSolved(false, exception); } } }