~reducedmodelling/fluidity/ROM_Non-intrusive-ann

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?xml version="1.0" encoding="UTF-8" ?>

<testproblem>
  <name>lock exchange 2d</name>
  <owner userid="hhiester"/>
  <tags>flml 2dadapt</tags>
    <problem_definition length="medium" nprocs="1">
    <command_line>fluidity -v3 -l  lock_exchange_2d_cg.flml </command_line>
  </problem_definition>  
  <variables>  
     <variable name="temp_bin_lower_0" language="python"> 
from fluidity_tools import stat_parser
stat = stat_parser("lock_exchange_2d.stat")
temp_bin_lower_0 = stat['fluid']['Temperature']['mixing_bins%cv_normalised'][0,0]
    </variable>
     <variable name="temp_bin_upper_0" language="python"> 
from fluidity_tools import stat_parser
stat = stat_parser("lock_exchange_2d.stat")
temp_bin_upper_0 =  stat['fluid']['Temperature']['mixing_bins%cv_normalised'][1,0]
    </variable>
     <variable name="temp_bin_total_0" language="python"> 
from fluidity_tools import stat_parser
stat = stat_parser("lock_exchange_2d.stat")
temp_bin_total_0 = sum(stat['fluid']['Temperature']['mixing_bins%cv_normalised'][:,0])
    </variable>
     <variable name="temp_bin_total_end" language="python"> 
from fluidity_tools import stat_parser
stat = stat_parser("lock_exchange_2d.stat")
last_val = len(stat["ElapsedTime"]["value"])-1 
temp_bin_total_end = sum(stat['fluid']['Temperature']['mixing_bins%cv_normalised'][:,last_val])
    </variable>
    <variable name="hartel_no_slip_head_speed" language="python">
hartel_no_slip_head_speed = 0.0128350
    </variable>
    <variable name="hartel_free_slip_head_speed" language="python">
hartel_free_slip_head_speed = 0.01509346
    </variable>
 <variable name="results_head_speed" language="python">

import vtk
import glob
import sys
import os
import scipy.stats

hartel_no_slip_head_speed = 0.0128350
hartel_free_slip_head_speed = 0.01509346

def get_head_speed(filelist, timdum=0.25):
  mins = []
  maxs = []
  nums = []
  for file in filelist:
    try:
      os.stat(file)
    except:
      print "No such file: %s" % file
      sys.exit(1)
    num = int(file.split(".vtu")[0].split('_')[-1])
    if num>2:
      nums.append(num)
      reader = vtk.vtkXMLUnstructuredGridReader();
      reader.SetFileName(file)
      reader.Update()
      data = reader.GetOutput()
      data.GetPointData().SetActiveScalars("Temperature")
#      bbox = data.GetBounds()
#      centre = (bbox[4]+bbox[5])/2.0
#      plane = vtk.vtkPlane()
#      plane.SetOrigin(0.0, 0.0, centre)
#      plane.SetNormal(0.0, 0.0, 1.0)
#      cutter = vtk.vtkCutter()
#      cutter.SetCutFunction(plane)
#      cutter.SetInput(data)
#      cutter.Update()
      contour = vtk.vtkContourFilter ()
#      contour.SetInput(cutter.GetOutput())
      contour.SetInput(data)
      contour.SetValue(0, 0.0)
      contour.Update()
      polydata = contour.GetOutput()
      bounding_box = polydata.GetBounds()
      (minx, maxx) = bounding_box[0:2]
      mins.append(minx); maxs.append(maxx)
  results = []
  for y in [mins, maxs]:
    x = [(nums[i] * timdum)-0.025 for i in range(len(nums))]
    r = scipy.stats.linregress(x, y)[0]
    print x,y
    results.append(abs(r))
  results.append(abs(hartel_free_slip_head_speed - results[0]))
  results.append(abs(hartel_no_slip_head_speed -  results[1]))
  return results
  
filelist = glob.glob("*[1-2][0-9].vtu")
filelist.sort()
print filelist
results_head_speed = get_head_speed(filelist)
print "Speed of free slip head, no slip head and errors from literature values"
print results_head_speed
    </variable>
 </variables>    
 <pass_tests> 
<test name ="check cg lower 2 mixing bins have roughly half material at t=0 (tol = 1e-3)" language="python">
print (abs(temp_bin_lower_0 - 0.5))
assert (abs(temp_bin_lower_0 - 0.5) &lt; 1e-3)
</test>
    <test name ="check cg upper mixing bin has half material at t=0 (tol= 1e-3)" language="python">
print (abs(temp_bin_upper_0 - 0.5))
assert (abs(temp_bin_upper_0 - 0.5) &lt; 1e-3)
</test>
   <test name="check cg mixing bins of temp sum to 1 at t=0 (tol = 1e-4)" language="python">
print (abs(temp_bin_total_0 - 1.0))
assert (abs(temp_bin_total_0 - 1.0) &lt; 1e-4)
    </test>
    <test name="check cg mixing bins of temp sum to 1 at final step (tol = 1e-5)" language="python">
print (abs(temp_bin_total_end - 1.0))
assert (abs(temp_bin_total_end - 1.0) &lt; 1e-5)
    </test>
    <test name="Speed of head at no slip boundaries (20%)" language="python">
print (abs((hartel_no_slip_head_speed -  results_head_speed[1])/hartel_no_slip_head_speed))
assert((abs((hartel_no_slip_head_speed -  results_head_speed[1])/hartel_no_slip_head_speed)) &lt; 0.2)
    </test>
    <test name="Speed of head at free slip boundaries (20%)" language="python">
print (abs((hartel_free_slip_head_speed -  results_head_speed[0])/hartel_free_slip_head_speed))
assert((abs((hartel_free_slip_head_speed -  results_head_speed[0])/hartel_free_slip_head_speed)) &lt; 0.2)
    </test>
  </pass_tests>
  <warn_tests>
    <test name="Speed of head at no slip boundaries (15%)" language="python">
print (abs((hartel_no_slip_head_speed -  results_head_speed[1])/hartel_no_slip_head_speed))
assert((abs((hartel_no_slip_head_speed -  results_head_speed[1])/hartel_no_slip_head_speed)) &lt; 0.15)
    </test>
    <test name="Speed of head at free slip boundaries (15%)" language="python">
print (abs((hartel_free_slip_head_speed -  results_head_speed[0])/hartel_free_slip_head_speed))
assert((abs((hartel_free_slip_head_speed -  results_head_speed[0])/hartel_free_slip_head_speed)) &lt; 0.15)
    </test>
  </warn_tests>
</testproblem>