3
from fluidity_tools import stat_parser as stat
4
from math import log, sqrt
5
from scipy.integrate import quad
7
def report_convergence(file1, file2):
8
print file1, "->", file2
13
print stat1["dt"]["value"][0], "->", stat2["dt"]["value"][0]
15
errortop_l2_1 = sqrt(sum(stat1["Fluid"]["DifferenceSquared"]["surface_integral%TopSurfaceL2Norm"][1:]*stat1["dt"]["value"][1:]))
16
errortop_l2_2 = sqrt(sum(stat2["Fluid"]["DifferenceSquared"]["surface_integral%TopSurfaceL2Norm"][1:]*stat2["dt"]["value"][1:]))
17
convergencetop_l2 = log((errortop_l2_1/errortop_l2_2), 2)
19
print ' convergencetop_l2 = ', convergencetop_l2
20
print ' errortop_l2_1 = ', errortop_l2_1
21
print ' errortop_l2_2 = ', errortop_l2_2
23
errorbottom_l2_1 = sqrt(sum(stat1["Fluid"]["DifferenceSquared"]["surface_integral%BottomSurfaceL2Norm"][1:]*stat1["dt"]["value"][1:]))
24
errorbottom_l2_2 = sqrt(sum(stat2["Fluid"]["DifferenceSquared"]["surface_integral%BottomSurfaceL2Norm"][1:]*stat2["dt"]["value"][1:]))
25
convergencebottom_l2 = log((errorbottom_l2_1/errorbottom_l2_2), 2)
27
print ' convergencebottom_l2 = ', convergencebottom_l2
28
print ' errorbottom_l2_1 = ', errorbottom_l2_1
29
print ' errorbottom_l2_2 = ', errorbottom_l2_2
31
error_l2_1 = sqrt(sum(stat1["Fluid"]["DifferenceSquared"]["surface_integral%SurfaceL2Norm"][1:]*stat1["dt"]["value"][1:]))
32
error_l2_2 = sqrt(sum(stat2["Fluid"]["DifferenceSquared"]["surface_integral%SurfaceL2Norm"][1:]*stat2["dt"]["value"][1:]))
33
convergence_l2 = log((error_l2_1/error_l2_2), 2)
35
print ' convergence_l2 = ', convergence_l2
36
print ' error_l2_1 = ', error_l2_1
37
print ' error_l2_2 = ', error_l2_2
39
error_linf_1 = stat1["Fluid"]["FreeSurfaceDifference"]["max"].max()
40
error_linf_2 = stat2["Fluid"]["FreeSurfaceDifference"]["max"].max()
41
convergence_linf = log((error_linf_1/error_linf_2), 2)
43
print ' convergence_linf = ', convergence_linf
44
print ' error_linf_1 = ', error_linf_1
45
print ' error_linf_2 = ', error_linf_2
47
quad1 = quad(lambda t: solution.nond_error_amp(stat1, t)**2, stat1["ElapsedTime"]["value"][0], stat1["ElapsedTime"]["value"][-1], limit=1000)
48
quad2 = quad(lambda t: solution.nond_error_amp(stat2, t)**2, stat2["ElapsedTime"]["value"][0], stat2["ElapsedTime"]["value"][-1], limit=1000)
49
errormaxfs_l2_1 = sqrt(quad1[0])
50
errormaxfs_l2_2 = sqrt(quad2[0])
51
convergencemaxfs_l2 = log((errormaxfs_l2_1/errormaxfs_l2_2), 2)
53
print ' convergencemaxfs_l2 = ', convergencemaxfs_l2
54
print ' errormaxfs_l2_1 = ', errormaxfs_l2_1, '(', quad1[1], ')'
55
print ' errormaxfs_l2_2 = ', errormaxfs_l2_2, '(', quad2[1], ')'
57
return [convergencetop_l2, convergencebottom_l2, convergence_linf]