1
<?xml version='1.0' encoding='utf-8'?>
4
<string_value lines="1">viscous_fs_top_G</string_value>
7
<string_value lines="1">stokes</string_value>
11
<integer_value rank="0">2</integer_value>
13
<mesh name="CoordinateMesh">
14
<from_file file_name="src/square">
21
<mesh name="VelocityMesh">
23
<mesh name="CoordinateMesh"/>
26
<integer_value rank="0">2</integer_value>
34
<mesh name="FreeSurfaceSquaredMesh">
36
<mesh name="CoordinateMesh"/>
39
<integer_value rank="0">2</integer_value>
49
<integer_value rank="0">5</integer_value>
55
<string_value>vtk</string_value>
57
<dump_period_in_timesteps>
59
<integer_value rank="0">1</integer_value>
61
</dump_period_in_timesteps>
62
<output_mesh name="CoordinateMesh"/>
65
<output_before_adapts/>
66
<output_after_adapts/>
71
<real_value rank="0">0.0</real_value>
74
<real_value rank="0">1</real_value>
77
<real_value rank="0">500</real_value>
83
<real_value rank="0">1.0</real_value>
85
<vector_field name="GravityDirection" rank="1">
87
<mesh name="CoordinateMesh"/>
88
<value name="WholeMesh">
90
<real_value shape="2" dim1="dim" rank="1">0.0 -1.0</real_value>
98
<exclude_from_detectors/>
103
</physical_parameters>
104
<material_phase name="Fluid">
109
<real_value rank="0">1.0</real_value>
111
<subtract_out_hydrostatic_level/>
115
<scalar_field name="Pressure" rank="0">
117
<mesh name="CoordinateMesh"/>
118
<spatial_discretisation>
119
<continuous_galerkin>
120
<remove_stabilisation_term/>
121
<integrate_continuity_by_parts/>
122
</continuous_galerkin>
123
</spatial_discretisation>
125
<poisson_pressure_solution>
126
<string_value lines="1">never</string_value>
127
</poisson_pressure_solution>
128
<use_projection_method>
129
<full_schur_complement>
130
<inner_matrix name="FullMomentumMatrix">
132
<iterative_method name="cg"/>
133
<preconditioner name="mg"/>
135
<real_value rank="0">1.e-12</real_value>
138
<integer_value rank="0">1000</integer_value>
140
<never_ignore_solver_failures/>
146
<preconditioner_matrix name="ScaledPressureMassMatrix"/>
147
</full_schur_complement>
148
</use_projection_method>
151
<iterative_method name="fgmres"/>
152
<preconditioner name="ksp">
154
<iterative_method name="cg"/>
155
<preconditioner name="sor"/>
157
<real_value rank="0">1.e-12</real_value>
160
<integer_value rank="0">1000</integer_value>
162
<never_ignore_solver_failures/>
169
<real_value rank="0">1.e-10</real_value>
172
<real_value rank="0">1.e-16</real_value>
175
<integer_value rank="0">1000</integer_value>
177
<never_ignore_solver_failures/>
185
<include_in_convergence/>
188
<exclude_from_detectors/>
191
<include_in_steady_state/>
196
<scalar_field name="Density" rank="0">
198
<algorithm name="Internal" material_phase_support="multiple"/>
199
<mesh name="CoordinateMesh"/>
203
<include_in_convergence/>
206
<include_in_detectors/>
209
<include_in_steady_state/>
213
<vector_field name="Velocity" rank="1">
215
<mesh name="VelocityMesh"/>
216
<equation name="LinearMomentum"/>
217
<spatial_discretisation>
218
<continuous_galerkin>
223
<exclude_mass_terms/>
226
<exclude_advection_terms/>
229
<partial_stress_form/>
231
</continuous_galerkin>
232
<conservative_advection>
233
<real_value rank="0">1.0</real_value>
234
</conservative_advection>
235
</spatial_discretisation>
236
<temporal_discretisation>
238
<real_value rank="0">1.0</real_value>
241
<real_value rank="0">1.0</real_value>
243
</temporal_discretisation>
245
<iterative_method name="cg"/>
246
<preconditioner name="mg"/>
248
<real_value rank="0">1.e-12</real_value>
251
<integer_value rank="0">1000</integer_value>
253
<never_ignore_solver_failures/>
258
<initial_condition name="WholeMesh">
260
<real_value shape="2" dim1="dim" rank="1">0.0 0.0</real_value>
263
<boundary_conditions name="Sides">
265
<integer_value shape="2" rank="1">7 9</integer_value>
267
<type name="dirichlet">
268
<align_bc_with_cartesian>
271
<real_value rank="0">0.0</real_value>
274
</align_bc_with_cartesian>
276
</boundary_conditions>
277
<boundary_conditions name="Bottom">
279
<integer_value shape="1" rank="1">6</integer_value>
281
<type name="dirichlet">
282
<align_bc_with_cartesian>
285
<real_value rank="0">0.0</real_value>
288
</align_bc_with_cartesian>
290
</boundary_conditions>
291
<boundary_conditions name="Top">
293
<integer_value shape="1" rank="1">8</integer_value>
295
<type name="free_surface">
298
</boundary_conditions>
299
<tensor_field name="Viscosity" rank="2">
301
<value name="WholeMesh">
302
<anisotropic_symmetric>
304
<real_value symmetric="true" dim2="dim" shape="2 2" dim1="dim" rank="2">1.0 1.0 1.0 1.0</real_value>
306
</anisotropic_symmetric>
316
</previous_time_step>
322
<include_in_convergence/>
325
<include_in_detectors/>
328
<include_in_steady_state/>
330
<consistent_interpolation/>
333
<scalar_field name="FreeSurface" rank="0">
335
<mesh name="CoordinateMesh"/>
336
<initial_condition name="WholeMesh">
338
<string_value lines="20" type="code" language="python">def val(X,t):
339
from math import pi, cos, sin, cosh, sinh, exp
346
if(X[1]>(1.-dx/2.)):
349
return 0.0</string_value>
353
<iterative_method name="cg"/>
354
<preconditioner name="sor"/>
356
<real_value rank="0">1.e-6</real_value>
359
<integer_value rank="0">1000</integer_value>
361
<never_ignore_solver_failures/>
368
<surface_integral type="value" name="Top">
370
<integer_value shape="1" rank="1">8</integer_value>
373
<surface_integral type="value" name="Bottom">
375
<integer_value shape="1" rank="1">6</integer_value>
380
<include_in_convergence/>
383
<include_in_detectors/>
386
<include_in_steady_state/>
388
<consistent_interpolation/>
391
<scalar_field name="AnalyticalFreeSurface" rank="0">
393
<mesh name="CoordinateMesh"/>
394
<value name="WholeMesh">
396
<string_value lines="20" type="code" language="python">def val(X,t):
397
from math import pi, cos, sin, cosh, sinh, exp
406
relaxation_time = 2.0*(D*k + sinh(D*k)*cosh(D*k))*k/(rhog*sinh(D*k)**2)
407
F = exp(-t/relaxation_time)*F0
408
if(X[1]>(1.-dx/2.)):
411
return 0.0</string_value>
417
<exclude_from_detectors/>
421
<scalar_field name="FreeSurfaceDifference" rank="0">
423
<algorithm source_field_2_type="scalar" name="scalar_difference" source_field_1_name="FreeSurface" source_field_2_name="AnalyticalFreeSurface" material_phase_support="single" source_field_1_type="scalar">
424
<absolute_difference/>
426
<mesh name="FreeSurfaceSquaredMesh"/>
430
<include_in_convergence/>
433
<include_in_detectors/>
436
<include_in_steady_state/>
440
<scalar_field name="DifferenceSquared" rank="0">
442
<algorithm name="scalar_python_diagnostic" material_phase_support="single">
443
<string_value lines="20" type="code" language="python">fsd = state.scalar_fields["FreeSurfaceDifference"]
445
assert(field.node_count==fsd.node_count)
447
for i in range(field.node_count):
448
field.set(i, fsd.node_val(i)*fsd.node_val(i))</string_value>
450
<string_value lines="1">FreeSurfaceDifference</string_value>
453
<mesh name="FreeSurfaceSquaredMesh"/>
456
<surface_integral type="value" name="SurfaceL2Norm">
458
<integer_value shape="1" rank="1">6 8</integer_value>
461
<surface_integral type="value" name="TopSurfaceL2Norm">
463
<integer_value shape="1" rank="1">8</integer_value>
466
<surface_integral type="value" name="BottomSurfaceL2Norm">
468
<integer_value shape="1" rank="1">6</integer_value>
473
<include_in_convergence/>
476
<include_in_detectors/>
479
<include_in_steady_state/>