public IEnumerable <LoadState> Broadcast() { ILinearSolver mK0 = Info.Stiffness(State.Displacement); Vector <double> Dv0 = mK0.Solve(Info.ReferenceLoad); double k0 = Info.ReferenceLoad.DotProduct(Dv0); while (true) { LoadIncrementalState prediction = Predictor.Predict(State, k0, Info); State = State.Add(prediction); Result <LoadIncrementalState> correctionResult = Corrector.Correct(State, prediction, Info); if (correctionResult.IsSuccess) { State = State.Add(correctionResult.Value); yield return(State); } else { break; } } }