Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
        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");
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
        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;
        }