1
<?xml version='1.0' encoding='utf-8'?>
4
<string_value lines="1">viscous_fs_zhong_B</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="squareB">
15
<format name="triangle"/>
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>
59
<real_value rank="0">1000.0</real_value>
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">0.0625</real_value>
77
<real_value rank="0">10000.0</real_value>
81
<real_value rank="0">1.e-10</real_value>
89
<real_value rank="0">12.225727727</real_value>
90
<comment>solution.nond_factor()</comment>
92
<vector_field name="GravityDirection" rank="1">
94
<mesh name="CoordinateMesh"/>
95
<value name="WholeMesh">
97
<real_value shape="2" dim1="dim" rank="1">0.0 -1.0</real_value>
105
<exclude_from_detectors/>
110
</physical_parameters>
111
<material_phase name="Fluid">
116
<real_value rank="0">1.0</real_value>
118
<subtract_out_hydrostatic_level/>
122
<scalar_field name="Pressure" rank="0">
124
<mesh name="CoordinateMesh"/>
125
<spatial_discretisation>
126
<continuous_galerkin>
127
<remove_stabilisation_term/>
128
<integrate_continuity_by_parts/>
129
</continuous_galerkin>
130
</spatial_discretisation>
132
<poisson_pressure_solution>
133
<string_value lines="1">never</string_value>
134
</poisson_pressure_solution>
135
<use_projection_method>
136
<full_schur_complement>
137
<inner_matrix name="FullMomentumMatrix">
139
<iterative_method name="cg"/>
140
<preconditioner name="mg"/>
142
<real_value rank="0">1.e-7</real_value>
145
<integer_value rank="0">1000</integer_value>
147
<never_ignore_solver_failures/>
153
<preconditioner_matrix name="ScaledPressureMassMatrix"/>
154
</full_schur_complement>
155
</use_projection_method>
158
<iterative_method name="fgmres"/>
159
<preconditioner name="ksp">
161
<iterative_method name="cg"/>
162
<preconditioner name="sor"/>
164
<real_value rank="0">1.e-7</real_value>
167
<integer_value rank="0">1000</integer_value>
169
<never_ignore_solver_failures/>
176
<real_value rank="0">1.e-5</real_value>
179
<real_value rank="0">1.e-16</real_value>
182
<integer_value rank="0">1000</integer_value>
184
<never_ignore_solver_failures/>
192
<include_in_convergence/>
195
<exclude_from_detectors/>
198
<include_in_steady_state/>
203
<scalar_field name="Density" rank="0">
205
<algorithm name="Internal" material_phase_support="multiple"/>
206
<mesh name="CoordinateMesh"/>
210
<include_in_convergence/>
213
<include_in_detectors/>
216
<include_in_steady_state/>
220
<vector_field name="Velocity" rank="1">
222
<mesh name="VelocityMesh"/>
223
<equation name="LinearMomentum"/>
224
<spatial_discretisation>
225
<continuous_galerkin>
230
<exclude_mass_terms/>
233
<exclude_advection_terms/>
236
<partial_stress_form/>
238
</continuous_galerkin>
239
<conservative_advection>
240
<real_value rank="0">1.0</real_value>
241
</conservative_advection>
242
</spatial_discretisation>
243
<temporal_discretisation>
245
<real_value rank="0">1.0</real_value>
248
<real_value rank="0">1.0</real_value>
250
<theta_pressure_gradient>
251
<real_value rank="0">0.5</real_value>
252
</theta_pressure_gradient>
253
</temporal_discretisation>
254
<reference_coordinates>
255
<real_value shape="2" dim1="dim" rank="1">0.25 0.5</real_value>
258
</specify_components>
259
</reference_coordinates>
261
<iterative_method name="cg"/>
262
<preconditioner name="mg"/>
264
<real_value rank="0">1.e-7</real_value>
267
<integer_value rank="0">1000</integer_value>
269
<never_ignore_solver_failures/>
274
<initial_condition name="WholeMesh">
276
<real_value shape="2" dim1="dim" rank="1">0.0 0.0</real_value>
279
<boundary_conditions name="Sides">
281
<integer_value shape="2" rank="1">7 9</integer_value>
283
<type name="dirichlet">
284
<align_bc_with_cartesian>
287
<real_value rank="0">0.0</real_value>
290
</align_bc_with_cartesian>
292
</boundary_conditions>
293
<boundary_conditions name="Bottom">
295
<integer_value shape="1" rank="1">6</integer_value>
297
<type name="free_surface">
302
<real_value rank="0">2.0</real_value>
305
</boundary_conditions>
306
<boundary_conditions name="Top">
308
<integer_value shape="1" rank="1">8</integer_value>
310
<type name="free_surface">
315
</boundary_conditions>
316
<boundary_conditions name="Internal">
318
<integer_value shape="1" rank="1">10</integer_value>
321
<align_bc_with_cartesian>
324
<string_value lines="20" type="code" language="python">def val(X,t):
325
from math import pi, cos
327
k = solution.nond_wavenumber()
328
deltaT = solution.deltaT
329
alphag = solution.nond_factor()*solution.alpha*deltaT
330
return cos(k*X[0])*alphag/deltaT/2.0</string_value>
333
</align_bc_with_cartesian>
335
</boundary_conditions>
336
<tensor_field name="Viscosity" rank="2">
338
<value name="WholeMesh">
339
<anisotropic_symmetric>
341
<real_value symmetric="true" dim2="dim" shape="2 2" dim1="dim" rank="2">1.0 1.0 1.0 1.0</real_value>
343
</anisotropic_symmetric>
353
</previous_time_step>
359
<include_in_convergence/>
362
<include_in_detectors/>
365
<include_in_steady_state/>
367
<consistent_interpolation/>
370
<scalar_field name="FreeSurface" rank="0">
372
<mesh name="CoordinateMesh"/>
373
<initial_condition name="WholeMesh">
375
<string_value lines="20" type="code" language="python">import solution
382
if(X[1]>(1.-dx/2.)):
387
return 0.0</string_value>
391
<iterative_method name="cg"/>
392
<preconditioner name="sor"/>
394
<real_value rank="0">1.e-6</real_value>
397
<integer_value rank="0">1000</integer_value>
399
<never_ignore_solver_failures/>
406
<surface_integral type="value" name="Top">
408
<integer_value shape="1" rank="1">8</integer_value>
411
<surface_integral type="value" name="Bottom">
413
<integer_value shape="1" rank="1">6</integer_value>
418
<include_in_convergence/>
421
<include_in_detectors/>
424
<include_in_steady_state/>
426
<consistent_interpolation/>
429
<scalar_field name="AnalyticalFreeSurface" rank="0">
431
<mesh name="CoordinateMesh"/>
432
<value name="WholeMesh">
434
<string_value lines="20" type="code" language="python">import solution
441
if(X[1]>(1.-dx/2.)):
446
return 0.0</string_value>
452
<exclude_from_detectors/>
456
<scalar_field name="FreeSurfaceDifference" rank="0">
458
<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">
459
<absolute_difference/>
461
<mesh name="FreeSurfaceSquaredMesh"/>
465
<include_in_convergence/>
468
<include_in_detectors/>
471
<include_in_steady_state/>
475
<scalar_field name="DifferenceSquared" rank="0">
477
<algorithm name="scalar_python_diagnostic" material_phase_support="single">
478
<string_value lines="20" type="code" language="python">fsd = state.scalar_fields["FreeSurfaceDifference"]
480
assert(field.node_count==fsd.node_count)
482
for i in range(field.node_count):
483
field.set(i, fsd.node_val(i)*fsd.node_val(i))</string_value>
485
<string_value lines="1">FreeSurfaceDifference</string_value>
488
<mesh name="FreeSurfaceSquaredMesh"/>
491
<surface_integral type="value" name="SurfaceL2Norm">
493
<integer_value shape="1" rank="1">6 8</integer_value>
496
<surface_integral type="value" name="TopSurfaceL2Norm">
498
<integer_value shape="1" rank="1">8</integer_value>
501
<surface_integral type="value" name="BottomSurfaceL2Norm">
503
<integer_value shape="1" rank="1">6</integer_value>
508
<include_in_convergence/>
511
<include_in_detectors/>
514
<include_in_steady_state/>