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