1
<?xml version='1.0' encoding='utf-8'?>
3
<name>water collapse 2d</name>
4
<owner userid="cwilson"/>
5
<tags>flml algencan 2dadapt</tags>
6
<problem_definition length="medium" nprocs="1">
7
<command_line>fluidity -v2 -l water_collapse.flml</command_line>
10
<variable name="solvers_converged" language="python">
12
files = os.listdir("./")
13
solvers_converged = not "matrixdump" in files and not "matrixdump.info" in files
15
<variable name="finishtime" language="python">from fluidity_tools import stat_parser as stat
16
finishtime= stat("water_collapse.stat")["ElapsedTime"]["value"][-1]</variable>
17
<variable name="mindivergence" language="python">from fluidity_tools import stat_parser as stat
18
mindivergence= max(abs(stat("water_collapse.stat")["Dense"]["ControlVolumeDivergence"]["min"]))</variable>
19
<variable name="minvfrac" language="python">from fluidity_tools import stat_parser as stat
20
minvfrac= max(stat("water_collapse.stat")["Dense"]["MaterialVolumeFraction"]["min"])</variable>
21
<variable name="maxdivergence" language="python">from fluidity_tools import stat_parser as stat
22
maxdivergence= max(stat("water_collapse.stat")["Dense"]["ControlVolumeDivergence"]["max"])</variable>
23
<variable name="maxvfrac" language="python">from fluidity_tools import stat_parser as stat
24
maxvfrac = max(stat("water_collapse.stat")["Dense"]["MaterialVolumeFraction"]["max"])</variable>
25
<variable name="vfracintstart" language="python">from fluidity_tools import stat_parser as stat
26
vfracintstart= stat("water_collapse.stat")["Dense"]["MaterialVolumeFraction"]["integral"][0]</variable>
27
<variable name="vfracintend" language="python">from fluidity_tools import stat_parser as stat
28
vfracintend= stat("water_collapse.stat")["Dense"]["MaterialVolumeFraction"]["integral"][-1]</variable>
29
<variable name="nodesstart" language="python">from fluidity_tools import stat_parser as stat
30
nodesstart= stat("water_collapse.stat")["CoordinateMesh"]["nodes"][0]</variable>
31
<variable name="nodesend" language="python">from fluidity_tools import stat_parser as stat
32
nodesend= stat("water_collapse.stat")["CoordinateMesh"]["nodes"][-1]</variable>
33
<variable name="lower_contour_bounds" language="python">import vtk
41
filelist = glob.glob('water_collapse_*[0-9].vtu')
43
for i in range(len(filelist)):
44
nums.append([i, int(filelist[i].split(".vtu")[0].split("_")[-1])])
45
nums.sort(key=operator.itemgetter(1))
46
return filelist[nums[-1][0]]
48
def get_head_pos(file):
52
print "No such file: %s" % file
54
reader = vtk.vtkXMLUnstructuredGridReader();
55
reader.SetFileName(file)
57
data = reader.GetOutput()
58
data.GetPointData().SetActiveScalars("Dense::MaterialVolumeFraction")
59
contour = vtk.vtkContourFilter ()
60
contour.SetInput(data)
61
contour.SetValue(0, 0.025)
63
polydata = contour.GetOutput()
64
bounding_box = polydata.GetBounds()
67
lower_contour_bounds= get_head_pos(get_last_dump())</variable>
68
<variable name="mid_contour_bounds" language="python">import vtk
76
filelist = glob.glob('water_collapse_*[0-9].vtu')
78
for i in range(len(filelist)):
79
nums.append([i, int(filelist[i].split(".vtu")[0].split("_")[-1])])
80
nums.sort(key=operator.itemgetter(1))
81
return filelist[nums[-1][0]]
83
def get_head_pos(file):
87
print "No such file: %s" % file
89
reader = vtk.vtkXMLUnstructuredGridReader();
90
reader.SetFileName(file)
92
data = reader.GetOutput()
93
data.GetPointData().SetActiveScalars("Dense::MaterialVolumeFraction")
94
contour = vtk.vtkContourFilter ()
95
contour.SetInput(data)
96
contour.SetValue(0, 0.5)
98
polydata = contour.GetOutput()
99
bounding_box = polydata.GetBounds()
102
mid_contour_bounds= get_head_pos(get_last_dump())</variable>
103
<variable name="upper_contour_bounds" language="python">import vtk
111
filelist = glob.glob('water_collapse_*[0-9].vtu')
113
for i in range(len(filelist)):
114
nums.append([i, int(filelist[i].split(".vtu")[0].split("_")[-1])])
115
nums.sort(key=operator.itemgetter(1))
116
return filelist[nums[-1][0]]
118
def get_head_pos(file):
122
print "No such file: %s" % file
124
reader = vtk.vtkXMLUnstructuredGridReader();
125
reader.SetFileName(file)
127
data = reader.GetOutput()
128
data.GetPointData().SetActiveScalars("Dense::MaterialVolumeFraction")
129
contour = vtk.vtkContourFilter ()
130
contour.SetInput(data)
131
contour.SetValue(0, 0.975)
133
polydata = contour.GetOutput()
134
bounding_box = polydata.GetBounds()
137
upper_contour_bounds= get_head_pos(get_last_dump())</variable>
138
<variable name="insidecolumn" language="python">from fluidity_tools import stat_parser as stat
139
insidecolumn= min(stat("water_collapse.detectors")["Dense"]["MaterialVolumeFraction"]["WaterColumn"])</variable>
142
<test name="Solvers converged" language="python">
143
assert(solvers_converged)
145
<test name="check finish time reached" language="python">assert finishtime >= 0.11768586779393897</test>
146
<test name="check water was conserved" language="python">print 'mass loss = ', abs(vfracintend-vfracintstart)
147
assert abs(vfracintend-vfracintstart) < max(maxdivergence, mindivergence)</test>
148
<test name="check that reasonable tolerance is being used to test conservation" language="python">print 'divergence tolerance = ', max(maxdivergence, mindivergence)
149
assert max(maxdivergence, mindivergence) < 1.E-5</test>
150
<test name="check max volume fraction bound" language="python">assert abs(maxvfrac-1.0) < 1.E-10</test>
151
<test name="check min volume fraction bound" language="python">assert abs(minvfrac) < 1.E-10</test>
152
<test name="check water column has travelled max x" language="python">assert mid_contour_bounds[1] < -0.08</test>
153
<test name="check water column has travelled min x" language="python">assert mid_contour_bounds[1] > -0.12</test>
154
<test name="check water column has travelled max y" language="python">assert mid_contour_bounds[3] < 0.0</test>
155
<test name="check water column has travelled min y" language="python">assert mid_contour_bounds[3] > -0.1</test>
156
<test name="check contours are tight lower x" language="python">print abs(mid_contour_bounds[1]-lower_contour_bounds[1])
157
assert abs(mid_contour_bounds[1]-lower_contour_bounds[1]) < 0.015</test>
158
<test name="check contours are tight upper x" language="python">print abs(mid_contour_bounds[1]-upper_contour_bounds[1])
159
assert abs(mid_contour_bounds[1]-upper_contour_bounds[1]) < 0.015</test>
160
<test name="check contours are tight lower y" language="python">print abs(mid_contour_bounds[3]-lower_contour_bounds[3])
161
assert abs(mid_contour_bounds[3]-lower_contour_bounds[3]) < 0.015</test>
162
<test name="check contours are tight upper y" language="python">print abs(mid_contour_bounds[3]-upper_contour_bounds[3])
163
assert abs(mid_contour_bounds[3]-upper_contour_bounds[3]) < 0.015</test>
164
<test name="check no. nodes has increased" language="python">assert nodesend > nodesstart</test>
167
<test name="check water columns is still 1 inside" language="python">assert abs(insidecolumn-1.0) < 1E-10</test>