public OutputData GetResult() { var res = new OutputData { tf = tf, S = S }; if (t2 < 0) { res.Info = "Не успеет остановиться"; } for (double t = 0; t < tf; t += DeltaT) { var f1 = engine1.GetForce(t); var f2 = engine2.GetForce(t); var f3 = engine3.GetForce(t); var f4 = engine4.GetForce(t); res.F1Max = Math.Max(res.F1Max, f1); res.F2Max = Math.Max(res.F2Max, f2); res.F3Max = Math.Max(res.F3Max, f3); res.F4Max = Math.Max(res.F4Max, f4); res.F1Min = Math.Min(res.F1Min, f1); res.F2Min = Math.Min(res.F2Min, f2); res.F3Min = Math.Min(res.F3Min, f3); res.F4Min = Math.Min(res.F4Min, f4); res.P1Max = Math.Max(res.P1Max, Math.Abs(engine1.GetPower(t))); res.P2Max = Math.Max(res.P2Max, Math.Abs(engine2.GetPower(t))); res.P3Max = Math.Max(res.P3Max, Math.Abs(engine3.GetPower(t))); res.P4Max = Math.Max(res.P4Max, Math.Abs(engine4.GetPower(t))); } res.PSum = res.P1Max + res.P2Max + res.P3Max + res.P4Max; return(res); }
protected override double GetForceForCurrent(double t) { var f1 = engine1.GetForce(t); var f2 = engine2.GetForce(t); var a = vars.R * cables.CosA + vars.N * cables.CosB + cables.CosD; var d = vars.R * vars.I - vars.N * vars.J + vars.L; var e = vars.P * vars.I - vars.M * vars.J + vars.K; var f = vars.P * cables.CosA + vars.M * cables.CosB + cables.CosD; var dif = a * e - f * d; if (Math.Abs(dif) <= 0.0001) { return(inputdata.k * inputdata.M * g / 4 * cables.CosB - inputdata.Fn); } return(-inputdata.Fn + inputdata.k * f1 * vars.M + inputdata.k * f2 * vars.N - inputdata.k * vars.M * vars.O); }