1
<?xml version='1.0' encoding='utf-8'?>
2
<shallow_water_options>
4
<string_value lines="1">bdfm1-nonlinear</string_value>
8
<integer_value rank="0">3</integer_value>
10
<mesh name="CoordinateMesh">
11
<from_file file_name="channel">
12
<format name="triangle"/>
14
<integer_value rank="0">2</integer_value>
21
<mesh name="VelocityMesh">
23
<mesh name="PeriodicMesh"/>
26
<integer_value rank="0">2</integer_value>
30
<string_value>discontinuous</string_value>
33
<string_value>BDFM</string_value>
35
<iterative_method name="preonly"/>
36
<preconditioner name="lu"/>
38
<real_value rank="0">1.0e-50</real_value>
41
<integer_value rank="0">1000</integer_value>
43
<never_ignore_solver_failures/>
54
<mesh name="PressureMesh">
56
<mesh name="PeriodicMesh"/>
59
<integer_value rank="0">1</integer_value>
63
<string_value>discontinuous</string_value>
70
<mesh name="VorticityMesh">
72
<mesh name="PeriodicMesh"/>
75
<integer_value rank="0">2</integer_value>
78
<string_value>bubble</string_value>
82
<string_value>continuous</string_value>
89
<mesh name="PeriodicMesh">
91
<mesh name="CoordinateMesh"/>
94
<integer_value rank="0">1</integer_value>
97
<periodic_boundary_conditions name="EndsMeet">
98
<physical_boundary_ids>
99
<integer_value shape="1" rank="1">1</integer_value>
100
</physical_boundary_ids>
101
<aliased_boundary_ids>
102
<integer_value shape="1" rank="1">2</integer_value>
103
</aliased_boundary_ids>
105
<string_value lines="20" type="code" language="python">def val(X,t):
107
result[0]=result[0]-6.283185307179586
108
return result</string_value>
110
</periodic_boundary_conditions>
111
<periodic_boundary_conditions name="TopBot">
112
<physical_boundary_ids>
113
<integer_value shape="1" rank="1">3</integer_value>
114
</physical_boundary_ids>
115
<aliased_boundary_ids>
116
<integer_value shape="1" rank="1">4</integer_value>
117
</aliased_boundary_ids>
119
<string_value lines="20" type="code" language="python">def val(X,t):
121
result[1]=result[1]-6.283185307179586
122
return result</string_value>
124
</periodic_boundary_conditions>
132
<integer_value rank="0">8</integer_value>
138
<string_value>vtk</string_value>
140
<dump_period_in_timesteps>
142
<integer_value rank="0">10</integer_value>
144
</dump_period_in_timesteps>
145
<output_mesh name="VelocityMesh"/>
149
<real_value rank="0">0.0</real_value>
152
<real_value rank="0">0.03141592653589793</real_value>
155
<real_value rank="0">0.55</real_value>
157
<nonlinear_iterations>
158
<integer_value rank="0">4</integer_value>
159
</nonlinear_iterations>
161
<real_value rank="0">3.141592653589793</real_value>
162
<comment>mode is sin(x+y) therefore |k| =|(1,1)|=2.
164
therefore, omega = 2, and time period = 2\pi/2 = \pi.</comment>
167
<physical_parameters>
170
<real_value rank="0">1.0</real_value>
171
<comment>4*pi**2</comment>
173
<vector_field name="GravityDirection" rank="1">
175
<mesh name="CoordinateMesh"/>
176
<value name="WholeMesh">
178
<real_value shape="3" dim1="dim" rank="1">0. 0. -1.</real_value>
186
<exclude_from_detectors/>
195
<string_value lines="20" type="code" language="python">def val(X,t):
197
return 0.</string_value>
198
<comment>2*pi</comment>
200
</physical_parameters>
201
<material_phase name="Fluid">
202
<vector_field name="Velocity" rank="1">
204
<mesh name="VelocityMesh"/>
205
<equation name="ShallowWater"/>
209
<spatial_discretisation>
210
<discontinuous_galerkin/>
211
</spatial_discretisation>
212
<temporal_discretisation>
214
<real_value rank="0">0.5</real_value>
216
<discontinuous_galerkin>
217
<maximum_courant_number_per_subcycle>
218
<real_value rank="0">0.1</real_value>
219
</maximum_courant_number_per_subcycle>
220
</discontinuous_galerkin>
221
</temporal_discretisation>
223
<iterative_method name="preonly"/>
224
<preconditioner name="lu"/>
226
<real_value rank="0">1.0e-7</real_value>
229
<integer_value rank="0">1000</integer_value>
231
<never_ignore_solver_failures/>
236
<initial_condition name="WholeMesh">
238
<real_value shape="3" dim1="dim" rank="1">0. 0. 0.</real_value>
243
<include_in_convergence/>
246
<include_in_detectors/>
249
<include_in_steady_state/>
251
<consistent_interpolation/>
254
<scalar_field name="LayerThickness" rank="0">
256
<mesh name="PressureMesh"/>
257
<spatial_discretisation>
258
<discontinuous_galerkin>
261
<exclude_advection_terms/>
263
<slope_limiter name="Vertex_Based"/>
264
</discontinuous_galerkin>
265
<conservative_advection>
266
<real_value rank="0">0.</real_value>
267
</conservative_advection>
269
</spatial_discretisation>
270
<temporal_discretisation>
271
<discontinuous_galerkin>
272
<maximum_courant_number_per_subcycle>
273
<real_value rank="0">0.1</real_value>
274
</maximum_courant_number_per_subcycle>
275
</discontinuous_galerkin>
276
</temporal_discretisation>
278
<iterative_method name="preonly"/>
279
<preconditioner name="lu"/>
281
<real_value rank="0">1.0e-7</real_value>
284
<integer_value rank="0">2000</integer_value>
286
<never_ignore_solver_failures/>
291
<initial_condition name="WholeMesh">
293
<string_value lines="20" type="code" language="python">def val(X,t):
299
return eps*sin(x+y)</string_value>
302
<mean_layer_thickness>
303
<real_value rank="0">1.0</real_value>
304
<comment>using a nondimensionalisation</comment>
305
</mean_layer_thickness>
308
<consistent_interpolation/>
311
<scalar_field name="PotentialVorticity" rank="0">
313
<mesh name="VorticityMesh"/>
314
<spatial_discretisation>
315
<continuous_galerkin/>
316
</spatial_discretisation>
318
<iterative_method name="gmres">
320
<integer_value rank="0">40</integer_value>
323
<preconditioner name="sor"/>
325
<real_value rank="0">1.0e-8</real_value>
328
<integer_value rank="0">1000</integer_value>
330
<never_ignore_solver_failures/>
340
<scalar_field name="Streamfunction" rank="0">
344
<string_value lines="20" type="code" language="python">def val(X,t):
345
from math import exp, pi, sin
348
deltaQ = (1.0/pi)*(y-pi)*exp(-2*(y-pi)**2)*(1.0+0.1*sin(2*x))
349
return 1.0/(1.0+deltaQ)</string_value>
352
<zero_bubble_component/>
353
<mesh name="VorticityMesh"/>
357
<scalar_field name="DG_CourantNumber" rank="0">
359
<algorithm name="Internal" material_phase_support="multiple"/>
360
<mesh name="PressureMesh"/>
364
<include_in_convergence/>
367
<include_in_detectors/>
370
<include_in_steady_state/>
377
<scalar_field name="StreamfunctionIn" rank="0">
379
<mesh name="PeriodicMesh"/>
380
<value name="WholeMesh">
382
<string_value lines="20" type="code" language="python">def val(X,t):
383
from math import exp, pi, sin
386
deltaQ = (1.0/pi)*(y-pi)*exp(-2*(y-pi)**2)*(1.0+0.1*sin(2*x))
387
return 1.0/(1.0+deltaQ)</string_value>
393
<exclude_from_detectors/>
402
<check_inverse_coriolis_matrix/>
406
</shallow_water_options>