From 07a740aec3325345812a6bb878789d1db449920f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20H=C3=B6rl?= <maximilian.hoerl@mathematik.uni-stuttgart.de> Date: Fri, 20 Mar 2020 12:34:19 +0100 Subject: [PATCH] fix EOC, now using the largest edge length --- src/convergenceTest.py | 11 ++++++----- src/dg.cc | 9 ++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/convergenceTest.py b/src/convergenceTest.py index f542831..2048858 100644 --- a/src/convergenceTest.py +++ b/src/convergenceTest.py @@ -1,4 +1,5 @@ import numpy as np +from os import mkdir, remove from os.path import join, exists from subprocess import call from math import log @@ -50,15 +51,15 @@ def readData(): # create directory for the plots if necessary if not exists("plots"): - os.mkdir("plots") + mkdir("plots") # number of runs from which the run times are taken as mean value numberOfMeans = 3 # numbers of grid elements per direction -numElemsPerDir = [1, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] +numElemsPerDir = [1, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130] -dimensions = [1, 2] +dimensions = [1,2] for dim in dimensions: # storage for errors, run times and largestEdgeLength @@ -91,7 +92,7 @@ for dim in dimensions: for i in range(len(numElemsPerDir) - 1): if data[i, 0] != 0: EOC[i] = log(data[i, 0] / data[i+1, 0]) / \ - log(data[i+1, 2] / data[i, 2]) + log(data[i, 2] / data[i+1, 2]) else: EOC[i] = -1.0*float('inf') # end for i @@ -108,4 +109,4 @@ for dim in dimensions: # end for dim # remove output files -os.remove("convergenceData") +remove("convergenceData") diff --git a/src/dg.cc b/src/dg.cc index 4eb8d25..60d8760 100644 --- a/src/dg.cc +++ b/src/dg.cc @@ -95,9 +95,16 @@ int main(int argc, char** argv) //write error, runtime and number of grid elements to file std::ofstream errorFile("convergenceData", std::ios::out | std::ios::trunc); + //determine maximum edge length + double largestEdgeLength = 0.; + for (const auto& edge : edges(gridView)) + { + largestEdgeLength = std::max(largestEdgeLength, edge.geometry().volume()); + } + if (errorFile.is_open()) { - errorFile << error << "\n" << timeTotal << "\n" << gridView.size(0); + errorFile << error << "\n" << timeTotal << "\n" << largestEdgeLength;//gridView.size(0); errorFile.close(); } else -- GitLab