1
<?xml version='1.0' encoding='utf-8'?>
2
<shallow_water_options>
4
<string_value lines="1">blob</string_value>
8
<integer_value rank="0">3</integer_value>
10
<mesh name="CoordinateMesh">
11
<from_file file_name="sphere">
12
<format name="triangle"/>
14
<integer_value rank="0">2</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="SidesPeriodic">
49
<physical_boundary_ids>
50
<integer_value shape="1" rank="1">3</integer_value>
51
</physical_boundary_ids>
52
<aliased_boundary_ids>
53
<integer_value shape="1" rank="1">4</integer_value>
54
</aliased_boundary_ids>
56
<string_value lines="20" type="python">def val(x,t):
57
return [x[0]-2.0,x[1],x[2]]</string_value>
59
</periodic_boundary_conditions>
67
<integer_value rank="0">4</integer_value>
73
<string_value>vtk</string_value>
77
<real_value rank="0">0.0</real_value>
80
<output_mesh name="VelocityMesh"/>
84
<real_value rank="0">0.0</real_value>
87
<real_value rank="0">2500.0</real_value>
90
<real_value rank="0">0.5</real_value>
92
<nonlinear_iterations>
93
<integer_value rank="0">1</integer_value>
94
</nonlinear_iterations>
96
<real_value rank="0">10000.0</real_value>
102
<real_value rank="0">1.0</real_value>
104
<vector_field name="GravityDirection" rank="1">
106
<mesh name="CoordinateMesh"/>
107
<value name="WholeMesh">
109
<real_value shape="3" dim1="dim" rank="1">0.0 0.0 -1.0</real_value>
117
<exclude_from_detectors/>
126
<string_value lines="20" type="python">def val(X,t):
127
return 1.0</string_value>
129
</physical_parameters>
130
<material_phase name="Fluid">
131
<vector_field name="Velocity" rank="1">
133
<mesh name="VelocityMesh"/>
134
<equation name="ShallowWater"/>
135
<spatial_discretisation>
136
<discontinuous_galerkin>
140
</discontinuous_galerkin>
141
</spatial_discretisation>
142
<temporal_discretisation>
144
<real_value rank="0">1</real_value>
146
<discontinuous_galerkin>
147
<maximum_courant_number_per_subcycle>
148
<real_value rank="0">0.4</real_value>
149
</maximum_courant_number_per_subcycle>
150
</discontinuous_galerkin>
151
</temporal_discretisation>
153
<iterative_method name="gmres">
155
<integer_value rank="0">30</integer_value>
158
<preconditioner name="sor"/>
160
<real_value rank="0">1.0e-7</real_value>
163
<integer_value rank="0">2000</integer_value>
165
<never_ignore_solver_failures/>
170
<initial_condition name="WholeMesh">
173
<vector_field name="Source" rank="1">
175
<value name="WholeMesh">
177
<string_value lines="20" type="python">def val(X,t):
178
from spheretools import cart2polar, spherical_basis_vecs
179
from math import sin, cos, pi
180
from numpy import dot
181
[theta,phi]=cart2polar(X)
184
u0=2*pi*a/(12.0*24.0*60.0*60.0)
185
u=[u0*(cos(phi)*cos(alpha)+sin(phi)*cos(theta)*sin(alpha)),-u0*sin(theta)*sin(alpha)]
186
return dot(spherical_basis_vecs(X),u)</string_value>
187
<comment>The Williamson paper uses the notation (lambda, theta) instead of (theta, phi).</comment>
195
<exclude_from_detectors/>
204
<include_in_convergence/>
207
<include_in_detectors/>
210
<include_in_steady_state/>
212
<consistent_interpolation/>
215
<scalar_field name="LayerThickness" rank="0">
217
<mesh name="PressureMesh"/>
218
<spatial_discretisation>
219
<continuous_galerkin>
221
<exclude_advection_terms/>
223
</continuous_galerkin>
224
<conservative_advection>
225
<real_value rank="0">0.</real_value>
226
</conservative_advection>
227
</spatial_discretisation>
228
<temporal_discretisation/>
230
<iterative_method name="gmres">
232
<integer_value rank="0">30</integer_value>
235
<preconditioner name="sor"/>
237
<real_value rank="0">1.0E-6</real_value>
240
<integer_value rank="0">1000</integer_value>
242
<never_ignore_solver_failures/>
247
<initial_condition name="WholeMesh">
249
<string_value lines="20" type="python">def val(X,t):
250
from math import pi, sin, cos, acos
251
from spheretools import cart2polar
252
[theta,phi]=cart2polar(X)
258
rr=a*acos(sin(phi_c)*sin(phi)+cos(phi_c)*cos(phi)*cos(theta-theta_c))
260
return (h0/2.0)*(1+cos(pi*rr/R))
262
return 0.0</string_value>
265
<mean_layer_thickness>
266
<real_value rank="0">1000.0</real_value>
267
</mean_layer_thickness>
270
<consistent_interpolation/>
273
<scalar_field name="DG_CourantNumber" rank="0">
275
<algorithm name="Internal" material_phase_support="multiple"/>
276
<mesh name="VelocityMesh"/>
280
<include_in_convergence/>
283
<include_in_detectors/>
286
<include_in_steady_state/>
294
</shallow_water_options>