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
140
141
|
<?xml version = "1.0" encoding = "UTF-8" ?>
<testproblem>
<name>Advected top hat (CV with Sweby limiter)</name>
<owner userid="dham"/>
<tags>flml</tags>
<problem_definition length = "short" nprocs = "1">
<command_line>make clean-run; fluidity -v2 -l top_hat_cv.flml</command_line>
</problem_definition>
<variables>
<variable name = "times" language = "python">
import fluidity_tools
s = fluidity_tools.stat_parser("top_hat_cv.stat")
times = s["ElapsedTime"]["value"]
</variable>
<variable name = "solvers_converged" language = "python">
import os
files = os.listdir("./")
solvers_converged = not "matrixdump" in files and not "matrixdump.info" in files
</variable>
<variable name = "min_ts" language = "python">
import fluidity_tools
s = fluidity_tools.stat_parser("top_hat_cv.stat")
min_ts = s["Fluid"]["Tracer"]["min"]
</variable>
<variable name = "max_ts" language = "python">
import fluidity_tools
s = fluidity_tools.stat_parser("top_hat_cv.stat")
max_ts = s["Fluid"]["Tracer"]["max"]
</variable>
<variable name = "t_integrals" language = "python">
import fluidity_tools
s = fluidity_tools.stat_parser("top_hat_cv.stat")
t_integrals = s["Fluid"]["Tracer"]["integral"]
</variable>
<variable name = "initial_vtu" language = "python">
import fluidity.diagnostics.vtutools as vtktools
initial_vtu = vtktools.vtu("top_hat_cv_0.vtu")
initial_vtu = vtktools.PlanarVtuCut(initial_vtu, origin = (0.0, 0.5, 0.0), normal = (0.0, 1.0, 0.0))
</variable>
<variable name = "final_vtu" language = "python">
import fluidity.diagnostics.vtutools as vtktools
final_vtu = vtktools.vtu("top_hat_cv_80.vtu")
final_vtu = vtktools.PlanarVtuCut(final_vtu, origin = (0.0, 0.5, 0.0), normal = (0.0, 1.0, 0.0))
</variable>
</variables>
<pass_tests>
<test name = "Simulation completed" language = "python">
import fluidity_tools
fluidity_tools.compare_variable(times[-1], 80.0, 1.0e-6)
</test>
<test name = "Solvers converged" language = "python">
assert(solvers_converged)
</test>
<test name = "Bounded" language = "python">
min_t = min(min_ts)
max_t = max(max_ts)
print "Min T = ", min_t
print "Max T = ", max_t
assert(min_t >= 0.0)
assert(max_t <= 1.0)
</test>
<test name = "Conservative" language = "python">
import fluidity_tools
fluidity_tools.compare_variables(t_integrals, [0.25 for i in range(len(t_integrals))], 1.0e-10)
</test>
<test name = "Advected velocity" language = "python">
import fluidity_tools
initialCoords = initial_vtu.GetLocations()
finalCoords = final_vtu.GetLocations()
initialT = initial_vtu.GetScalarField("Tracer")
finalT = final_vtu.GetScalarField("Tracer")
initialX = 0.0
divisor = 0.0
for i, coord in enumerate(initialCoords[:-1]):
initialX += initialT[i] * coord[0]
divisor += initialT[i]
initialX /= divisor
print "Initial mean x = ", initialX
finalX = 0.0
divisor = 0.0
for i, coord in enumerate(finalCoords[:-1]):
finalX += finalT[i] * coord[0]
divisor += finalT[i]
finalX /= divisor
print "Final mean x = ", finalX
vel = (finalX - initialX) / (times[-1] - times[0])
vel = float(vel)
print "Mean velocity = ", vel
fluidity_tools.compare_variable(vel, (1.0 / 40.0) * 0.125, 0.02)
</test>
<test name = "Standard deviation" language = "python">
import math
import fluidity_tools
initialCoords = initial_vtu.GetLocations()
finalCoords = final_vtu.GetLocations()
initialT = initial_vtu.GetScalarField("Tracer")
finalT = final_vtu.GetScalarField("Tracer")
initialX = 0.0
initialTSum = 0.0
for i, coord in enumerate(initialCoords[:-1]):
initialX += initialT[i] * coord[0]
initialTSum += initialT[i]
initialX /= initialTSum
print "Initial mean x = ", initialX
finalX = 0.0
finalTSum = 0.0
for i, coord in enumerate(finalCoords[:-1]):
finalX += finalT[i] * coord[0]
finalTSum += finalT[i]
finalX /= finalTSum
print "Final mean x = ", finalX
initialSigmaX = 0.0
for i, coord in enumerate(initialCoords[:-1]):
initialSigmaX += initialT[i] * math.pow((coord[0] - initialX), 2.0)
initialSigmaX /= initialTSum
initialSigmaX = math.pow(initialSigmaX, 0.5)
print "Initial standard deviation = ", initialSigmaX
finalSigmaX = 0.0
for i, coord in enumerate(finalCoords[:-1]):
finalSigmaX += finalT[i] * math.pow((coord[0] - finalX), 2.0)
finalSigmaX /= finalTSum
finalSigmaX = math.pow(finalSigmaX, 0.5)
print "Final standard deviation = ", finalSigmaX
fluidity_tools.compare_variable(initialSigmaX, finalSigmaX, 0.2)
</test>
</pass_tests>
<warn_tests>
</warn_tests>
</testproblem>
|