~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
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 &gt;= 0.0)
assert(max_t &lt;= 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>