~amcg-stokes/fluidity/multimaterial_diagnostic_dependencies

« back to all changes in this revision

Viewing changes to tests/viscous_fs_simpletopbottom_varrho/calculate_order_simpletopbottom_varrho.py

  • Committer: Cian Wilson
  • Date: 2012-12-10 20:21:07 UTC
  • mfrom: (4132.1.7 fluidity)
  • Revision ID: cwilson@ldeo.columbia.edu-20121210202107-5wppwqcba4bfd1r3
Merging in changes from lp:fluidity.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
import solution
 
3
from fluidity_tools import stat_parser as stat
 
4
from math import log, sqrt
 
5
from scipy.integrate import quad
 
6
 
 
7
def report_convergence(file1, file2):
 
8
  print file1, "->", file2
 
9
  
 
10
  stat1 = stat(file1)
 
11
  stat2 = stat(file2)
 
12
 
 
13
  print stat1["dt"]["value"][0], "->", stat2["dt"]["value"][0]
 
14
  
 
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)
 
18
 
 
19
  print '  convergencetop_l2 = ', convergencetop_l2
 
20
  print '    errortop_l2_1 = ', errortop_l2_1
 
21
  print '    errortop_l2_2 = ', errortop_l2_2
 
22
  
 
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)
 
26
 
 
27
  print '  convergencebottom_l2 = ', convergencebottom_l2
 
28
  print '    errorbottom_l2_1 = ', errorbottom_l2_1
 
29
  print '    errorbottom_l2_2 = ', errorbottom_l2_2
 
30
  
 
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)
 
34
 
 
35
  print '  convergence_l2 = ', convergence_l2
 
36
  print '    error_l2_1 = ', error_l2_1
 
37
  print '    error_l2_2 = ', error_l2_2
 
38
  
 
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)
 
42
 
 
43
  print '  convergence_linf = ', convergence_linf
 
44
  print '    error_linf_1 = ', error_linf_1
 
45
  print '    error_linf_2 = ', error_linf_2
 
46
 
 
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)
 
52
 
 
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], ')'
 
56
 
 
57
  return [convergencetop_l2, convergencebottom_l2, convergence_linf]
 
58