1
1
<?xml version='1.0' encoding='utf8'?>
2
2
<shallow_water_options>
4
<string_value lines="1">wave_D</string_value>
4
<string_value lines="1">wave_D</string_value>
8
<integer_value rank="0">3</integer_value>
10
<mesh name="CoordinateMesh">
11
<from_file file_name="src/mesh_D">
12
<format name="triangle"/>
8
<integer_value rank="0">3</integer_value>
14
<integer_value rank="0">1</integer_value>
10
<mesh name="CoordinateMesh">
11
<from_file file_name="src/mesh_D">
12
<format name="triangle"/>
14
<integer_value rank="0">1</integer_value>
21
<mesh name="VelocityMesh">
23
<mesh name="PeriodicMesh"/>
25
<string_value>discontinuous</string_value>
32
<mesh name="PressureMesh">
34
<mesh name="PeriodicMesh"/>
37
<integer_value rank="0">2</integer_value>
45
<mesh name="PeriodicMesh">
47
<mesh name="CoordinateMesh"/>
48
<periodic_boundary_conditions name="periodicity">
49
<physical_boundary_ids>
50
<integer_value rank="1" shape="1">1</integer_value>
51
</physical_boundary_ids>
52
<aliased_boundary_ids>
53
<integer_value rank="1" shape="1">2</integer_value>
54
</aliased_boundary_ids>
56
<string_value lines="20" type="python">def val(X,t):
21
<mesh name="VelocityMesh">
23
<mesh name="PeriodicMesh"/>
25
<string_value>discontinuous</string_value>
32
<mesh name="PressureMesh">
34
<mesh name="PeriodicMesh"/>
37
<integer_value rank="0">2</integer_value>
45
<mesh name="PeriodicMesh">
47
<mesh name="CoordinateMesh"/>
48
<periodic_boundary_conditions name="periodicity">
49
<physical_boundary_ids>
50
<integer_value shape="1" rank="1">1</integer_value>
51
</physical_boundary_ids>
52
<aliased_boundary_ids>
53
<integer_value shape="1" rank="1">2</integer_value>
54
</aliased_boundary_ids>
56
<string_value lines="20" type="python">def val(X,t):
58
58
result[0]=result[0]-1.0
59
59
return result</string_value>
61
</periodic_boundary_conditions>
69
<integer_value rank="0">4</integer_value>
75
<string_value>vtk</string_value>
77
<dump_period_in_timesteps>
61
</periodic_boundary_conditions>
69
<integer_value rank="0">4</integer_value>
75
<string_value>vtk</string_value>
77
<dump_period_in_timesteps>
79
<integer_value rank="0">1</integer_value>
81
</dump_period_in_timesteps>
82
<output_mesh name="CoordinateMesh"/>
86
<real_value rank="0">0</real_value>
89
<real_value rank="0">0.03125</real_value>
92
<real_value rank="0">0.5</real_value>
94
<nonlinear_iterations>
95
<integer_value rank="0">1</integer_value>
96
</nonlinear_iterations>
98
<real_value rank="0">1</real_value>
101
<physical_parameters>
104
<real_value rank="0">1</real_value>
106
<vector_field name="GravityDirection" rank="1">
108
<mesh name="CoordinateMesh"/>
109
<value name="WholeMesh">
79
<integer_value rank="0">1</integer_value>
111
<real_value shape="3" dim1="dim" rank="1">0 0 -1</real_value>
81
</dump_period_in_timesteps>
82
<output_mesh name="CoordinateMesh"/>
119
<exclude_from_detectors/>
127
</physical_parameters>
128
<material_phase name="Fluid">
129
<vector_field name="Velocity" rank="1">
131
<mesh name="VelocityMesh"/>
132
<equation name="ShallowWater"/>
133
<spatial_discretisation>
134
<discontinuous_galerkin>
138
</discontinuous_galerkin>
139
</spatial_discretisation>
140
<temporal_discretisation>
142
<real_value rank="0">1.0</real_value>
144
</temporal_discretisation>
146
<iterative_method name="preonly"/>
147
<preconditioner name="lu"/>
149
<real_value rank="0">1e-07</real_value>
152
<integer_value rank="0">500</integer_value>
154
<never_ignore_solver_failures/>
159
<initial_condition name="WholeMesh">
161
<string_value lines="20" type="python">def val(X, t):
162
import shallow_water_optimisation_bounds as constants
163
return constants.u_exact(X[0], t)</string_value>
168
<include_in_convergence/>
171
<include_in_detectors/>
174
<include_in_steady_state/>
176
<consistent_interpolation/>
179
<scalar_field name="LayerThickness" rank="0">
181
<mesh name="PressureMesh"/>
182
<spatial_discretisation>
183
<continuous_galerkin>
185
<exclude_advection_terms/>
187
</continuous_galerkin>
188
<conservative_advection>
86
189
<real_value rank="0">0</real_value>
89
<real_value rank="0">0.03125</real_value>
91
<nonlinear_iterations>
92
<integer_value rank="0">1</integer_value>
93
</nonlinear_iterations>
95
<real_value rank="0">1</real_value>
101
<real_value rank="0">1</real_value>
103
<vector_field name="GravityDirection" rank="1">
105
<mesh name="CoordinateMesh"/>
106
<value name="WholeMesh">
108
<real_value rank="1" shape="3" dim1="dim">0 0 -1</real_value>
116
<exclude_from_detectors/>
124
</physical_parameters>
125
<material_phase name="Fluid">
126
<vector_field name="Velocity" rank="1">
128
<mesh name="VelocityMesh"/>
129
<equation name="ShallowWater"/>
130
<spatial_discretisation>
131
<discontinuous_galerkin>
135
</discontinuous_galerkin>
136
<conservative_advection>
137
<real_value rank="0">0</real_value>
138
</conservative_advection>
139
</spatial_discretisation>
141
<iterative_method name="preonly"/>
142
<preconditioner name="lu"/>
144
<real_value rank="0">1e-07</real_value>
147
<integer_value rank="0">500</integer_value>
149
<never_ignore_solver_failures/>
154
<initial_condition name="WholeMesh">
156
<string_value lines="20" type="python">def val(X, t):
157
import shallow_water_optimisation_bounds as constants
158
return constants.u_exact(X[0], t)</string_value>
166
</previous_time_step>
172
<include_in_convergence/>
175
<include_in_detectors/>
178
<include_in_steady_state/>
180
<consistent_interpolation/>
183
<scalar_field name="LayerThickness" rank="0">
185
<mesh name="PressureMesh"/>
186
<spatial_discretisation>
187
<continuous_galerkin>
189
<exclude_advection_terms/>
191
</continuous_galerkin>
192
<conservative_advection>
193
<real_value rank="0">0</real_value>
194
</conservative_advection>
195
</spatial_discretisation>
196
<temporal_discretisation>
198
<real_value rank="0">0.5</real_value>
201
<real_value rank="0">1</real_value>
203
</temporal_discretisation>
205
<iterative_method name="preonly"/>
206
<preconditioner name="lu"/>
208
<real_value rank="0">1e-07</real_value>
211
<integer_value rank="0">500</integer_value>
213
<never_ignore_solver_failures/>
214
<cache_solver_context/>
219
<initial_condition name="WholeMesh">
221
<string_value lines="20" type="python">def val(X, t):
190
</conservative_advection>
191
</spatial_discretisation>
192
<temporal_discretisation/>
194
<iterative_method name="preonly"/>
195
<preconditioner name="lu"/>
197
<real_value rank="0">1e-07</real_value>
200
<integer_value rank="0">500</integer_value>
202
<never_ignore_solver_failures/>
203
<cache_solver_context/>
208
<initial_condition name="WholeMesh">
210
<string_value lines="20" type="python">def val(X, t):
222
211
import shallow_water_optimisation_bounds as constants
223
212
#return constants.eta_exact(X[0], t)
224
213
# Instead of prescribing the exact eta we will optimise to it
225
214
return 0.0</string_value>
228
<mean_layer_thickness>
229
<real_value rank="0">1</real_value>
230
</mean_layer_thickness>
233
<consistent_interpolation/>
236
<scalar_field name="AnalyticalLayerThickness" rank="0">
238
<mesh name="PressureMesh"/>
239
<value name="WholeMesh">
241
<string_value lines="20" type="python">def val(X,t):
217
<mean_layer_thickness>
218
<real_value rank="0">1</real_value>
219
</mean_layer_thickness>
222
<consistent_interpolation/>
225
<scalar_field name="AnalyticalLayerThickness" rank="0">
227
<mesh name="PressureMesh"/>
228
<value name="WholeMesh">
230
<string_value lines="20" type="python">def val(X,t):
242
231
import shallow_water_optimisation_bounds as constants
244
233
return constants.eta_exact(x, t)</string_value>
250
<exclude_from_detectors/>
257
<scalar_field name="LayerThicknessError" rank="0">
259
<algorithm name="scalar_difference" source_field_2_type="scalar" source_field_1_name="LayerThickness" source_field_2_name="AnalyticalLayerThickness" material_phase_support="single" source_field_1_type="scalar">
260
<absolute_difference/>
262
<mesh name="PressureMesh"/>
266
<include_in_convergence/>
269
<include_in_detectors/>
272
<include_in_steady_state/>
279
<scalar_field name="InitEta_UpperBound" rank="0">
281
<mesh name="PressureMesh"/>
282
<value name="WholeMesh">
284
<real_value rank="0">1.1</real_value>
290
<exclude_from_detectors/>
297
<scalar_field name="InitEta_LowerBound" rank="0">
299
<mesh name="PressureMesh"/>
300
<value name="WholeMesh">
302
<real_value rank="0">-1.1</real_value>
308
<exclude_from_detectors/>
315
<vector_field name="AnalyticalVelocity" rank="1">
317
<mesh name="VelocityMesh"/>
318
<value name="WholeMesh">
320
<string_value lines="20" type="python">def val(X,t):
239
<exclude_from_detectors/>
246
<scalar_field name="LayerThicknessError" rank="0">
248
<algorithm source_field_2_type="scalar" name="scalar_difference" source_field_1_name="LayerThickness" source_field_2_name="AnalyticalLayerThickness" material_phase_support="single" source_field_1_type="scalar">
249
<absolute_difference/>
251
<mesh name="PressureMesh"/>
255
<include_in_convergence/>
258
<include_in_detectors/>
261
<include_in_steady_state/>
268
<scalar_field name="InitEta_UpperBound" rank="0">
270
<mesh name="PressureMesh"/>
271
<value name="WholeMesh">
273
<real_value rank="0">1.1</real_value>
279
<exclude_from_detectors/>
286
<scalar_field name="InitEta_LowerBound" rank="0">
288
<mesh name="PressureMesh"/>
289
<value name="WholeMesh">
291
<real_value rank="0">-1.1</real_value>
297
<exclude_from_detectors/>
304
<vector_field name="AnalyticalVelocity" rank="1">
306
<mesh name="VelocityMesh"/>
307
<value name="WholeMesh">
309
<string_value lines="20" type="python">def val(X,t):
321
310
import shallow_water_optimisation_bounds as constants
323
312
return constants.u_exact(x, t)</string_value>
331
<exclude_from_detectors/>
338
<vector_field name="VelocityError" rank="1">
340
<algorithm name="vector_difference" source_field_2_type="vector" source_field_1_name="Velocity" source_field_2_name="AnalyticalVelocity" material_phase_support="single" source_field_1_type="vector">
341
<absolute_difference/>
343
<mesh name="VelocityMesh"/>
349
<include_in_convergence/>
352
<include_in_detectors/>
355
<include_in_steady_state/>
364
<functional name="integral_eta_t1">
366
<algorithm name="functional_value">
367
<string_value lines="20" type="python">J = 0.0
320
<exclude_from_detectors/>
327
<vector_field name="VelocityError" rank="1">
329
<algorithm source_field_2_type="vector" name="vector_difference" source_field_1_name="Velocity" source_field_2_name="AnalyticalVelocity" material_phase_support="single" source_field_1_type="vector">
330
<absolute_difference/>
332
<mesh name="VelocityMesh"/>
338
<include_in_convergence/>
341
<include_in_detectors/>
344
<include_in_steady_state/>
353
<functional name="integral_eta_t1">
355
<algorithm name="functional_value">
356
<string_value lines="20" type="python">J = 0.0
368
357
T = 1.0 # the time at which to evaluate
369
358
if time < T <= time+dt: