1
<?xml version='1.0' encoding='utf-8'?>
4
<string_value lines="1">mphase_wen_yu_drag_correlation</string_value>
7
<string_value lines="1">multiphase</string_value>
11
<integer_value rank="0">2</integer_value>
13
<mesh name="CoordinateMesh">
14
<from_file file_name="mphase_wen_yu_drag_correlation">
15
<format name="triangle"/>
21
<mesh name="VelocityMesh">
23
<mesh name="CoordinateMesh"/>
29
<mesh name="PressureMesh">
31
<mesh name="CoordinateMesh"/>
39
<integer_value rank="0">3</integer_value>
45
<string_value>vtk</string_value>
49
<real_value rank="0">0.0</real_value>
52
<output_mesh name="VelocityMesh"/>
57
<real_value rank="0">0</real_value>
60
<real_value rank="0">0.001</real_value>
63
<real_value rank="0">5.0</real_value>
67
<real_value rank="0">1.0e-7</real_value>
78
<real_value rank="0">9.8</real_value>
80
<vector_field name="GravityDirection" rank="1">
82
<mesh name="CoordinateMesh"/>
83
<value name="WholeMesh">
85
<real_value shape="2" dim1="dim" rank="1">0.0 -1.0</real_value>
93
<exclude_from_detectors/>
98
</physical_parameters>
99
<material_phase name="Water">
104
<real_value rank="0">1000.0</real_value>
109
<scalar_field name="Pressure" rank="0">
110
<aliased material_phase_name="Tephra" field_name="Pressure"/>
112
<scalar_field name="Density" rank="0">
114
<algorithm name="Internal" material_phase_support="multiple"/>
115
<mesh name="VelocityMesh"/>
119
<include_in_convergence/>
122
<include_in_detectors/>
125
<include_in_steady_state/>
129
<vector_field name="Velocity" rank="1">
131
<mesh name="VelocityMesh"/>
132
<equation name="LinearMomentum"/>
133
<spatial_discretisation>
134
<continuous_galerkin>
138
<nu_scale name="0.5">
139
<real_value shape="1" rank="0">0.5</real_value>
150
</continuous_galerkin>
151
<conservative_advection>
152
<real_value rank="0">0.0</real_value>
153
</conservative_advection>
154
</spatial_discretisation>
155
<temporal_discretisation>
157
<real_value rank="0">1.0</real_value>
160
<real_value rank="0">0.5</real_value>
162
</temporal_discretisation>
164
<iterative_method name="gmres">
166
<integer_value rank="0">30</integer_value>
169
<preconditioner name="sor"/>
171
<real_value rank="0">1.0e-6</real_value>
174
<integer_value rank="0">1000</integer_value>
176
<never_ignore_solver_failures/>
181
<initial_condition name="WholeMesh">
183
<real_value shape="2" dim1="dim" rank="1">0.0 0.0</real_value>
186
<boundary_conditions name="Sides">
188
<integer_value shape="1" rank="1">666</integer_value>
190
<type name="no_normal_flow"/>
191
</boundary_conditions>
192
<boundary_conditions name="Bottom">
194
<integer_value shape="1" rank="1">444</integer_value>
196
<type name="no_normal_flow"/>
197
</boundary_conditions>
198
<boundary_conditions name="Top">
200
<integer_value shape="1" rank="1">333</integer_value>
202
<type name="no_normal_flow"/>
203
</boundary_conditions>
204
<tensor_field name="Viscosity" rank="2">
206
<value name="WholeMesh">
209
<real_value rank="0">0.001</real_value>
221
</previous_time_step>
227
<include_in_convergence/>
230
<include_in_detectors/>
233
<include_in_steady_state/>
235
<consistent_interpolation/>
238
<scalar_field name="PhaseVolumeFraction" rank="0">
240
<mesh name="VelocityMesh"/>
241
<algorithm name="Internal" material_phase_support="multiple"/>
245
<exclude_from_detectors/>
249
<real_value rank="0">1.0</real_value>
252
<real_value rank="0">0.0</real_value>
258
<material_phase name="Tephra">
263
<real_value rank="0">2340.0</real_value>
268
<scalar_field name="Pressure" rank="0">
270
<mesh name="PressureMesh"/>
271
<spatial_discretisation>
272
<continuous_galerkin>
273
<remove_stabilisation_term/>
274
<integrate_continuity_by_parts/>
275
</continuous_galerkin>
276
</spatial_discretisation>
278
<integer_value rank="0">1</integer_value>
281
<poisson_pressure_solution>
282
<string_value lines="1">only first timestep</string_value>
283
</poisson_pressure_solution>
284
<use_projection_method/>
287
<iterative_method name="cg"/>
288
<preconditioner name="mg"/>
290
<real_value rank="0">1.0e-6</real_value>
293
<integer_value rank="0">1000</integer_value>
295
<never_ignore_solver_failures/>
303
<include_in_convergence/>
306
<exclude_from_detectors/>
309
<exclude_from_steady_state/>
314
<scalar_field name="Density" rank="0">
316
<algorithm name="Internal" material_phase_support="multiple"/>
317
<mesh name="VelocityMesh"/>
321
<include_in_convergence/>
324
<include_in_detectors/>
327
<include_in_steady_state/>
331
<vector_field name="Velocity" rank="1">
333
<mesh name="VelocityMesh"/>
334
<equation name="LinearMomentum"/>
335
<spatial_discretisation>
336
<continuous_galerkin>
340
<nu_scale name="0.5">
341
<real_value shape="1" rank="0">0.5</real_value>
352
</continuous_galerkin>
353
<conservative_advection>
354
<real_value rank="0">0.0</real_value>
355
</conservative_advection>
356
</spatial_discretisation>
357
<temporal_discretisation>
359
<real_value rank="0">1.0</real_value>
362
<real_value rank="0">0.5</real_value>
364
</temporal_discretisation>
366
<iterative_method name="gmres">
368
<integer_value rank="0">30</integer_value>
371
<preconditioner name="sor"/>
373
<real_value rank="0">1.0e-6</real_value>
376
<integer_value rank="0">1000</integer_value>
378
<never_ignore_solver_failures/>
383
<initial_condition name="WholeMesh">
385
<real_value shape="2" dim1="dim" rank="1">0.0 0.0</real_value>
388
<boundary_conditions name="Sides">
390
<integer_value shape="1" rank="1">666</integer_value>
392
<type name="no_normal_flow"/>
393
</boundary_conditions>
394
<boundary_conditions name="Bottom">
396
<integer_value shape="1" rank="1">444</integer_value>
398
<type name="no_normal_flow"/>
399
</boundary_conditions>
400
<boundary_conditions name="Top">
402
<integer_value shape="1" rank="1">333</integer_value>
404
<type name="no_normal_flow"/>
405
</boundary_conditions>
406
<tensor_field name="Viscosity" rank="2">
408
<value name="WholeMesh">
411
<real_value rank="0">0.001</real_value>
423
</previous_time_step>
429
<include_in_convergence/>
432
<include_in_detectors/>
435
<include_in_steady_state/>
437
<consistent_interpolation/>
440
<scalar_field name="PhaseVolumeFraction" rank="0">
442
<mesh name="VelocityMesh"/>
443
<equation name="AdvectionDiffusion"/>
444
<spatial_discretisation>
446
<face_value name="FirstOrderUpwind"/>
447
<diffusion_scheme name="ElementGradient"/>
449
<conservative_advection>
450
<real_value rank="0">1.0</real_value>
451
</conservative_advection>
452
</spatial_discretisation>
453
<temporal_discretisation>
455
<real_value rank="0">1.0</real_value>
457
</temporal_discretisation>
459
<iterative_method name="gmres">
461
<integer_value rank="0">30</integer_value>
464
<preconditioner name="sor"/>
466
<real_value rank="0">1.0e-7</real_value>
469
<integer_value rank="0">1000</integer_value>
471
<never_ignore_solver_failures/>
476
<initial_condition name="WholeMesh">
478
<real_value rank="0">0.05</real_value>
484
<include_in_convergence/>
487
<include_in_detectors/>
490
<include_in_steady_state/>
492
<consistent_interpolation/>
495
<scalar_field name="ParticleReynoldsNumber" rank="0">
497
<algorithm name="particle_reynolds_number" material_phase_support="multiple">
499
<string_value lines="1">Water::Velocity,Tephra::Velocity,Water::Density</string_value>
502
<real_value rank="0">1e-3</real_value>
504
<continuous_phase_name>Water</continuous_phase_name>
506
<mesh name="VelocityMesh"/>
510
<include_in_convergence/>
513
<include_in_detectors/>
516
<include_in_steady_state/>
520
<scalar_field name="DragCoefficient" rank="0">
522
<algorithm name="scalar_python_diagnostic" material_phase_support="multiple">
523
<string_value type="code" lines="20" language="python">from math import sqrt, pi
524
vfrac_tephra = states["Tephra"].scalar_fields["PhaseVolumeFraction"]
525
vfrac_water = states["Water"].scalar_fields["PhaseVolumeFraction"]
527
velocity_tephra = states["Tephra"].vector_fields["Velocity"]
528
velocity_water = states["Water"].vector_fields["Velocity"]
530
density_tephra = states["Tephra"].scalar_fields["Density"]
531
density_water = states["Water"].scalar_fields["Density"]
533
viscosity_water = states["Water"].tensor_fields["Viscosity"]
538
for i in range(field.node_count):
540
Re = (vfrac_water.node_val(i)*density_water.node_val(i)*sqrt((velocity_water.node_val(i)[0] - velocity_tephra.node_val(i)[0])**2 + (velocity_water.node_val(i)[1] - velocity_tephra.node_val(i)[1])**2)*d)/viscosity_water.node_val(0)[0][0]
544
C = (24.0/Re)*(1.0 + 0.15*Re**0.687)
552
field.set(i, C)</string_value>
554
<mesh name="VelocityMesh"/>
558
<include_in_convergence/>
561
<include_in_detectors/>
564
<include_in_steady_state/>
568
<vector_field name="DragForce" rank="1">
570
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
571
<string_value lines="20" type="code" language="python">## Calculates the fluid-particle drag force interaction term
572
from math import sqrt, pi
574
vfrac_tephra = states["Tephra"].scalar_fields["PhaseVolumeFraction"]
575
vfrac_water = states["Water"].scalar_fields["PhaseVolumeFraction"]
577
velocity_tephra = states["Tephra"].vector_fields["Velocity"]
578
velocity_water = states["Water"].vector_fields["Velocity"]
580
density_tephra = states["Tephra"].scalar_fields["Density"]
581
density_water = states["Water"].scalar_fields["Density"]
583
viscosity_water = states["Water"].tensor_fields["Viscosity"]
588
for i in range(field.node_count):
591
Re = (vfrac_water.node_val(i)*density_water.node_val(i)*sqrt((velocity_water.node_val(i)[0] - velocity_tephra.node_val(i)[0])**2 + (velocity_water.node_val(i)[1] - velocity_tephra.node_val(i)[1])**2)*d)/viscosity_water.node_val(0)[0][0]
595
C = (24.0/Re)*(1.0 + 0.15*Re**0.687)
603
magnitude = sqrt((velocity_water.node_val(i)[0] - velocity_tephra.node_val(i)[0])**2 + (velocity_water.node_val(i)[1] - velocity_tephra.node_val(i)[1])**2)
605
K = (3.0/4.0)*C*(vfrac_tephra.node_val(i)*vfrac_water.node_val(i)*density_water.node_val(i)*magnitude)/(d*vfrac_water.node_val(i)**2.7)
607
Force = K*(velocity_tephra.node_val(i) - velocity_water.node_val(i))
609
field.set(i, -Force)</string_value>
611
<string_value lines="1">Tephra::PhaseVolumeFraction,Tephra::Density,Tephra::Velocity,Water::PhaseVolumeFraction,Water::Density,Water::Velocity</string_value>
614
<mesh name="VelocityMesh"/>
620
<include_in_convergence/>
623
<include_in_detectors/>
626
<include_in_steady_state/>
630
<vector_field name="BuoyancyForce" rank="1">
632
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
633
<string_value lines="20" type="code" language="python">## Calculates the fluid-particle drag force interaction term
634
from math import sqrt, pi
636
vfrac_tephra = states["Tephra"].scalar_fields["PhaseVolumeFraction"]
637
vfrac_water = states["Water"].scalar_fields["PhaseVolumeFraction"]
639
velocity_tephra = states["Tephra"].vector_fields["Velocity"]
640
velocity_water = states["Water"].vector_fields["Velocity"]
642
density_tephra = states["Tephra"].scalar_fields["Density"]
643
density_water = states["Water"].scalar_fields["Density"]
645
viscosity_water = states["Water"].tensor_fields["Viscosity"]
650
for i in range(field.node_count):
652
Force = vfrac_water.node_val(i)*9.8*vfrac_tephra.node_val(i)*(density_tephra.node_val(i) - density_water.node_val(i))
654
field.set(i, [0.0, -Force])</string_value>
656
<string_value lines="1">Water::Velocity,Tephra::Velocity,Water::PhaseVolumeFraction,Tephra::PhaseVolumeFraction,Water::Density,Tephra::Density</string_value>
659
<mesh name="VelocityMesh"/>
665
<include_in_convergence/>
668
<include_in_detectors/>
671
<include_in_steady_state/>
675
<vector_field name="TerminalVelocityWenYu" rank="1">
677
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
678
<string_value lines="20" type="code" language="python">## Calculates the fluid-particle drag force interaction term
679
from math import sqrt, pi
681
vfrac_tephra = states["Tephra"].scalar_fields["PhaseVolumeFraction"]
682
vfrac_water = states["Water"].scalar_fields["PhaseVolumeFraction"]
684
velocity_tephra = states["Tephra"].vector_fields["Velocity"]
685
velocity_water = states["Water"].vector_fields["Velocity"]
687
density_tephra = states["Tephra"].scalar_fields["Density"]
688
density_water = states["Water"].scalar_fields["Density"]
690
viscosity_water = states["Water"].tensor_fields["Viscosity"]
695
for i in range(field.node_count):
698
Re = (vfrac_water.node_val(i)*density_water.node_val(i)*sqrt((velocity_water.node_val(i)[0] - velocity_tephra.node_val(i)[0])**2 + (velocity_water.node_val(i)[1] - velocity_tephra.node_val(i)[1])**2)*d)/viscosity_water.node_val(0)[0][0]
702
C = (24.0/Re)*(1.0 + 0.15*Re**0.687)
710
magnitude = sqrt((velocity_water.node_val(i)[0] - velocity_tephra.node_val(i)[0])**2 + (velocity_water.node_val(i)[1] - velocity_tephra.node_val(i)[1])**2)
712
K = (3.0/4.0)*C*(vfrac_tephra.node_val(i)*vfrac_water.node_val(i)*density_water.node_val(i)*magnitude)/(d*vfrac_water.node_val(i)**2.7)
715
BuoyancyForce = vfrac_water.node_val(i)*9.8*vfrac_tephra.node_val(i)*(density_tephra.node_val(i) - density_water.node_val(i))
717
field.set(i, [0.0, -BuoyancyForce/Drag])</string_value>
719
<string_value lines="1">Water::Velocity,Tephra::Velocity,Water::PhaseVolumeFraction,Tephra::PhaseVolumeFraction,Water::Density,Tephra::Density</string_value>
722
<mesh name="VelocityMesh"/>
728
<include_in_convergence/>
731
<include_in_detectors/>
734
<include_in_steady_state/>
738
<vector_field name="TerminalVelocityStokes" rank="1">
740
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
741
<string_value lines="20" type="code" language="python">## Calculates the fluid-particle drag force interaction term
742
from math import sqrt, pi
744
vfrac_tephra = states["Tephra"].scalar_fields["PhaseVolumeFraction"]
745
vfrac_water = states["Water"].scalar_fields["PhaseVolumeFraction"]
747
velocity_tephra = states["Tephra"].vector_fields["Velocity"]
748
velocity_water = states["Water"].vector_fields["Velocity"]
750
density_tephra = states["Tephra"].scalar_fields["Density"]
751
density_water = states["Water"].scalar_fields["Density"]
753
viscosity_water = states["Water"].tensor_fields["Viscosity"]
758
for i in range(field.node_count):
759
relative_terminal_velocity = vfrac_water.node_val(i)*9.8*(density_tephra.node_val(i) - density_water.node_val(i))*d*d/(18.0*viscosity_water.node_val(0)[0][0])
761
field.set(i, [0.0, -relative_terminal_velocity])</string_value>
763
<string_value lines="1">Water::Velocity,Tephra::Velocity,Water::PhaseVolumeFraction,Tephra::PhaseVolumeFraction,Water::Density,Tephra::Density</string_value>
766
<mesh name="VelocityMesh"/>
772
<include_in_convergence/>
775
<include_in_detectors/>
778
<include_in_steady_state/>
782
<multiphase_properties>
784
<real_value rank="0">1e-3</real_value>
786
</multiphase_properties>
788
<multiphase_interaction>
789
<fluid_particle_drag>
790
<drag_correlation name="wen_yu"/>
791
</fluid_particle_drag>
792
</multiphase_interaction>