public void Solve(string name, TData data, Func <double, double, double> fFunc, params IContinue[] continues) { Bundle bundle = new Bundle(name, data); try { bundle.BeginEdit(); bundle.Save(); double t = 0; int number = 0; var grid = bundle.GetGrid(); double dt = bundle.dt(); while (continues.All(c => c.Continue(bundle))) { double[] arrayValues = new double[grid.N]; for (int i = 0; i < grid.N; i++) { double x = grid[i]; arrayValues[i] = fFunc(x, t); } string layerName = GetLayerName(bundle, number); bundle.AddArray(layerName, number, arrayValues); t += dt; number++; } OnSolved(bundle, true); } catch (Exception exception) { OnSolved(bundle, false, exception); } }
public void Solve(string name, TData data, params Func <double, double>[] fFuncs) { Bundle bundle = new Bundle(name, data); try { bundle.BeginEdit(); bundle.Save(); int number = 0; var grid = bundle.GetGrid(); foreach (var func in fFuncs) { double[] arrayValues = new double[grid.N]; for (int i = 0; i < grid.N; i++) { double x = grid[i]; arrayValues[i] = func(x); } string layerName = GetLayerName(bundle, number); bundle.AddArray(layerName, number, arrayValues); number++; } OnSolved(bundle, true); } catch (Exception exception) { OnSolved(bundle, false, exception); } }
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); } } }