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);
                }
            }
        }
Example #2
0
        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);
                }
            }
        }