public void TestOldDG() { DGController controller = new DGController(); controller.createDGElements(8, IntegrationMode.GaussLobatto, 3, 0.0, 1.0); controller.computeSolution(1.0, 0.001); Console.Write(controller.getCompleteSolution().toString(15)); }
public void analyseCellElements(double error) { Console.WriteLine("Start computation for No. Cell Elements..."); IntegrationMode mode = IntegrationMode.GaussLobatto; int[] polynomOrders = {1,3, 7 }; Vector CFLMapping = GetCFL(mode); double computedError = 0.0; int noElements ; for (int i = 0; i < polynomOrders.Length; i++) { noElements = 1; int polynomOrder = polynomOrders [i]; Stopwatch sw = new Stopwatch(); sw.Start(); do{ Console.Write("N = " + polynomOrder + " - N_Q = " + noElements); DGController dgController = new DGController(); dgController.createDGElements(noElements, mode, polynomOrder, leftSpaceBorder, rightSpaceBorder); timeStep = dgController.ComputeTimeStep(CFLMapping[polynomOrders[i] - 1]); computedError = dgController.computeSolution(endTime, timeStep); Console.Write(" - L2 Error: " + computedError); Console.WriteLine(" - PassedTime: " + sw.Elapsed); noElements++; }while(computedError > error); sw.Stop(); GeneralHelper.WriteOutputText(Directory.GetCurrentDirectory() + "\\timeAndCells_N= " + polynomOrder + ".txt", "NoCells:" + (--noElements) + " - Time:" + sw.Elapsed); } Console.WriteLine("Analyse Cell Elements finished"); }
public void analyseCellAndPolynomOrderCombination() { Console.WriteLine("Start computation for No. Cell Elements..."); IntegrationMode mode = IntegrationMode.GaussLobatto; int[] polynomOrders = { 1, 3, 7 }; int[] elements = { 512, 256, 128 }; Vector CFLMapping = GetCFL(mode); double computedError = 0.0; for (int i = 0; i < polynomOrders.Length; i++) { int polynomOrder = polynomOrders[i]; Stopwatch sw = new Stopwatch(); sw.Start(); Console.Write("N = " + polynomOrder + " - N_Q = " + elements[i]); DGController dgController = new DGController(); dgController.createDGElements(elements[i], mode, polynomOrder, leftSpaceBorder, rightSpaceBorder); timeStep = dgController.ComputeTimeStep(CFLMapping[polynomOrders[i] - 1]); computedError = dgController.computeSolution(endTime, timeStep); Console.Write(" - L2 Error: " + computedError); sw.Stop(); GeneralHelper.WriteOutputText(Directory.GetCurrentDirectory() + "\\AufgabeC_II_N= " + polynomOrder + "_NQ=" + elements[i] + ".txt", "Error:" + computedError + " - Time:" + sw.Elapsed); } Console.WriteLine("Analyse Cell Elements finished"); }
public void analyseTime(double maxTime) { Console.WriteLine("Start time computation for No. Cell Elements..."); IntegrationMode mode = IntegrationMode.GaussLobatto; int[] polynomOrders = { 1, 3, 7 }; Vector CFLMapping = GetCFL(mode); double computedError = 0.0; double passedTime; int noElements; for (int i = 0; i < polynomOrders.Length; i++) { noElements = 1; int polynomOrder = polynomOrders[i]; StringBuilder sb = new StringBuilder(); do { Stopwatch sw = new Stopwatch(); sw.Start(); Console.Write("N = " + polynomOrder + " - N_Q = " + noElements); sb.Append("N = " + polynomOrder + " & N_Q = " + noElements); DGController dgController = new DGController(); dgController.createDGElements(noElements, mode, polynomOrder, leftSpaceBorder, rightSpaceBorder); timeStep = dgController.ComputeTimeStep(CFLMapping[polynomOrders[i] - 1]); computedError = dgController.computeSolution(endTime, timeStep); Console.Write(" - L2 Error = " + computedError); Console.WriteLine(" - PassedTime = " + sw.Elapsed); sb.Append(" & L2 Error = " + computedError).Append(" & PassedTime = " + sw.Elapsed).Append(@"\\").AppendLine(); noElements += 1; sw.Stop(); passedTime = sw.Elapsed.TotalMilliseconds; } while (passedTime <= maxTime); GeneralHelper.WriteOutputText(Directory.GetCurrentDirectory() + "\\TimePassedAndError= " + polynomOrder + ".txt", sb.ToString()); } Console.WriteLine("Analyse Cell Elements finished"); }
private void ComputeSolutionForUnsteady(IntegrationMode mode) { Console.WriteLine("Start computation for Unsteady Solution..."); int[] elementNumber = {50}; int[] polynomOrders = { 1, 3, 7 }; Vector CFLMapping = GetCFL(mode); Matrix errorList = new Matrix(elementNumber.Length, polynomOrders.Length); for (int i = 0; i < polynomOrders.Length; i++) { int polynomOrder = polynomOrders[i]; for (int k = 0; k < elementNumber.Length; k++) { Console.WriteLine("N = " + polynomOrder + " - N_Q = " + elementNumber[k]); DGController dgController = new DGController(); dgController.createDGElements(elementNumber[k], mode, polynomOrder, leftSpaceBorder, rightSpaceBorder); timeStep = dgController.ComputeTimeStep(CFLMapping[polynomOrders[i] - 1]); errorList[k, i] = dgController.computeSolution(endTime, timeStep); Vector space = dgController.getOriginSpace(); Vector sol = dgController.getCompleteSolution(); string plotString = NSharp.Converter.MatLabConverter.ConvertToMatLabPlotStringWithAxisLabelAndTitle(space, sol, "X-Achse", "u approx", "Approximation mit NQ = " + elementNumber[k] + " N = " + polynomOrder); GeneralHelper.WriteOutputText(Directory.GetCurrentDirectory() + "\\" + mode.ToString() + "_PLOT_N =" + polynomOrder + ".txt", plotString); } } Console.WriteLine("Unsteady Solution finished"); }
private Matrix computeErrorList(IntegrationMode mode) { Console.WriteLine("Start computation for Error List..."); int[] elementNumber = {2,4,8,16,32}; int[] polynomOrders = {1,3,7}; Vector CFLMapping = GetCFL(mode); Matrix errorList = new Matrix(elementNumber.Length, polynomOrders.Length); for (int i = 0; i < polynomOrders.Length; i++) { int polynomOrder = polynomOrders[i]; for (int k = 0; k < elementNumber.Length; k++) { Console.Write("N = " + polynomOrder + " - N_Q = " + elementNumber[k]); Stopwatch sw = new Stopwatch(); sw.Start(); DGController dgController = new DGController(); dgController.createDGElements(elementNumber[k], mode, polynomOrder, leftSpaceBorder, rightSpaceBorder); timeStep = dgController.ComputeTimeStep(CFLMapping[polynomOrders[i]-1]); errorList[k, i] = dgController.computeSolution(endTime, timeStep); sw.Stop(); Console.Write(" - L2 Error: " + errorList[k, i]); Console.WriteLine(" - PassedTime: " + sw.Elapsed); } } Console.WriteLine("Error Computation finished"); return errorList; }