public double PAitkenL2() { var currentMaxSquare = TriangleNetHandler.MaxSquare; TriangleNetHandler.MaxSquare = currentMaxSquare / 2; var dataInitializer = new DataInitializer(TriangleNetHandler, Points, Equation); var firstNewFemContext = dataInitializer.GetInitialData(); CalculateAreas(firstNewFemContext); CalculateLength(firstNewFemContext); var fem = new FEMSolver.FEMSolver(firstNewFemContext); TriangleNetHandler.MaxSquare = currentMaxSquare / 4; dataInitializer = new DataInitializer(TriangleNetHandler, Points, Equation); var secondNewFemContext = dataInitializer.GetInitialData(); CalculateAreas(secondNewFemContext); CalculateLength(secondNewFemContext); fem = new FEMSolver.FEMSolver(secondNewFemContext); var pL2 = Math.Abs(Math.Log(Math.Abs(NormaL2(firstNewFemContext) - NormaL2(CurrentFEMContext))) - Math.Log(Math.Abs(NormaL2(secondNewFemContext) - NormaL2(firstNewFemContext)))) / Math.Log(2); TriangleNetHandler.MaxSquare = currentMaxSquare; return(pL2); }
public double PL2() { var currentMaxSquare = TriangleNetHandler.MaxSquare; TriangleNetHandler.MaxSquare = currentMaxSquare / 2; var dataInitializer = new DataInitializer(TriangleNetHandler, Points, Equation); var newFemContext = dataInitializer.GetInitialData(); CalculateAreas(newFemContext); CalculateLength(newFemContext); var fem = new FEMSolver.FEMSolver(newFemContext); var pL2 = Math.Abs(Math.Log(NormaErrorL2(Functions.U, CurrentFEMContext)) - Math.Log(NormaErrorL2(Functions.U, newFemContext))) / Math.Log(2); TriangleNetHandler.MaxSquare = currentMaxSquare; return(pL2); }