1
<?xml version='1.0' encoding='utf-8'?>
4
<string_value lines="1">darcy_p0p1_test_cty_cv_pressBCinlet_2phase_constant_volf_and_abs_3d</string_value>
5
<comment>a simple short test case for darcy flow using the element type p0p1_test_cty_cv for velocity-pressure
7
the darcy velocity is solved with constant phase saturations. A constant absorption for each phase is used.
9
the darcy flow equation is
11
S* sigma*darcy_vel = - S * grad P
13
to get a darcy equation the time, stress and advection terms are not included in a bousinessq formulation (to avoid needing to specify a density). Ideally it would be better to actually have a darcy momentum option to simplify the input.
15
the absorption term is included in the pressure correction (being a necessity as it is the only term in the matrix equation)</comment>
18
<string_value lines="1">fluids</string_value>
22
<integer_value rank="0">3</integer_value>
24
<mesh name="CoordinateMesh">
25
<from_file file_name="cube">
32
<mesh name="VelocityMesh">
34
<mesh name="CoordinateMesh"/>
37
<integer_value rank="0">0</integer_value>
41
<string_value>discontinuous</string_value>
48
<mesh name="PressureMesh">
50
<mesh name="CoordinateMesh"/>
53
<integer_value rank="0">1</integer_value>
63
<mesh name="CoordinateMesh"/>
66
<integer_value rank="0">0</integer_value>
70
<string_value>discontinuous</string_value>
77
<mesh name="OutputMesh">
79
<mesh name="CoordinateMesh"/>
81
<string_value>discontinuous</string_value>
90
<integer_value rank="0">3</integer_value>
96
<string_value>vtk</string_value>
98
<dump_period_in_timesteps>
100
<integer_value rank="0">0</integer_value>
102
</dump_period_in_timesteps>
103
<output_mesh name="OutputMesh"/>
108
<real_value rank="0">0.0</real_value>
111
<real_value rank="0">0.1</real_value>
114
<real_value rank="0">0.5</real_value>
116
<nonlinear_iterations>
117
<integer_value rank="0">2</integer_value>
118
</nonlinear_iterations>
120
<material_phase name="phase1">
121
<scalar_field name="Pressure" rank="0">
123
<mesh name="PressureMesh"/>
124
<spatial_discretisation>
125
<continuous_galerkin>
126
<test_continuity_with_cv_dual/>
127
</continuous_galerkin>
128
</spatial_discretisation>
130
<poisson_pressure_solution>
131
<string_value lines="1">never</string_value>
132
</poisson_pressure_solution>
133
<use_projection_method/>
136
<iterative_method name="gmres">
138
<integer_value rank="0">30</integer_value>
141
<preconditioner name="sor"/>
143
<real_value rank="0">1.0e-10</real_value>
146
<integer_value rank="0">1000</integer_value>
148
<never_ignore_solver_failures/>
153
<boundary_conditions name="left_inflow">
155
<integer_value shape="1" rank="1">3</integer_value>
157
<type name="dirichlet">
159
<real_value rank="0">2.0e+05</real_value>
162
</boundary_conditions>
163
<boundary_conditions name="right_outflow">
165
<integer_value shape="1" rank="1">4</integer_value>
167
<type name="dirichlet">
169
<real_value rank="0">0.0</real_value>
172
</boundary_conditions>
176
<include_in_convergence/>
179
<exclude_from_detectors/>
182
<include_in_steady_state/>
187
<vector_field name="Velocity" rank="1">
189
<mesh name="VelocityMesh"/>
190
<equation name="Boussinesq"/>
191
<spatial_discretisation>
192
<discontinuous_galerkin>
194
<exclude_mass_terms/>
197
<compact_discontinuous_galerkin/>
201
<integrate_advection_by_parts>
203
</integrate_advection_by_parts>
205
</discontinuous_galerkin>
206
<conservative_advection>
207
<real_value rank="0">0.0</real_value>
208
</conservative_advection>
209
</spatial_discretisation>
210
<temporal_discretisation>
212
<real_value rank="0">1.0</real_value>
215
<real_value rank="0">1.0</real_value>
217
</temporal_discretisation>
219
<iterative_method name="gmres">
221
<integer_value rank="0">30</integer_value>
224
<preconditioner name="sor"/>
226
<real_value rank="0">1.0e-10</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.0 0.0</real_value>
241
<boundary_conditions name="no_outflow_top_bottom">
243
<integer_value shape="2" rank="1">1 2</integer_value>
245
<type name="dirichlet">
246
<align_bc_with_cartesian>
249
<real_value rank="0">0.0</real_value>
252
</align_bc_with_cartesian>
254
</boundary_conditions>
255
<boundary_conditions name="no_outflow_front_back">
257
<integer_value shape="2" rank="1">5 6</integer_value>
259
<type name="dirichlet">
260
<align_bc_with_cartesian>
263
<real_value rank="0">0.0</real_value>
266
</align_bc_with_cartesian>
268
</boundary_conditions>
269
<vector_field name="Absorption" rank="1">
272
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
273
<string_value lines="20" type="python">from numpy import zeros
281
# set the absorption coeff
282
abs_coeff = 100.0/0.2
284
sat = states["phase1"].scalar_fields["PhaseVolumeFraction"]
286
for ele in range(field.element_count):
288
sat_ele = sat.ele_val(ele)
290
# initialise local list of abs coeff
291
sigma_ele = zeros(dim)
293
# calc the absorption term for each dim
296
sigma_ele[d] = abs_coeff * quarter*sum(sat_ele)
298
# set the absorption term
299
field.set(field.ele_nodes(ele),sigma_ele)</string_value>
306
<include_in_convergence/>
309
<include_in_detectors/>
312
<include_in_steady_state/>
315
<include_pressure_correction/>
322
</previous_time_step>
328
<include_in_convergence/>
331
<include_in_detectors/>
334
<include_in_steady_state/>
336
<consistent_interpolation/>
339
<scalar_field name="PhaseVolumeFraction" rank="0">
341
<mesh name="PressureMesh"/>
342
<equation name="AdvectionDiffusion"/>
343
<spatial_discretisation>
345
<face_value name="FiniteElement">
347
<limiter name="Sweby"/>
350
<diffusion_scheme name="ElementGradient"/>
352
<conservative_advection>
353
<real_value rank="0">1.0</real_value>
354
</conservative_advection>
355
</spatial_discretisation>
356
<temporal_discretisation>
358
<real_value rank="0">1.0</real_value>
361
<number_advection_iterations>
362
<integer_value rank="0">3</integer_value>
363
</number_advection_iterations>
366
</temporal_discretisation>
368
<iterative_method name="gmres">
370
<integer_value rank="0">30</integer_value>
373
<preconditioner name="sor"/>
375
<real_value rank="0">1.0e-10</real_value>
378
<integer_value rank="0">10000</integer_value>
380
<never_ignore_solver_failures/>
385
<initial_condition name="WholeMesh">
387
<real_value rank="0">0.2</real_value>
390
<boundary_conditions name="left_inflow">
392
<integer_value shape="1" rank="1">3</integer_value>
394
<type name="dirichlet">
397
<real_value rank="0">0.2</real_value>
400
</boundary_conditions>
401
<boundary_conditions name="no_outflow_top_bottom">
403
<integer_value shape="2" rank="1">1 2</integer_value>
405
<type name="zero_flux"/>
406
</boundary_conditions>
407
<boundary_conditions name="no_outflow_front_back">
409
<integer_value shape="2" rank="1">5 6</integer_value>
411
<type name="zero_flux"/>
412
</boundary_conditions>
417
<include_in_convergence/>
420
<include_in_detectors/>
423
<include_in_steady_state/>
425
<consistent_interpolation/>
428
<scalar_field name="SumVelocityDivergence" rank="0">
430
<mesh name="PressureMesh"/>
431
<algorithm name="Internal" material_phase_support="multiple"/>
436
<include_in_detectors/>
439
<iterative_method name="cg"/>
440
<preconditioner name="sor"/>
442
<real_value rank="0">1.0e-10</real_value>
445
<integer_value rank="0">1000</integer_value>
447
<never_ignore_solver_failures/>
454
<scalar_field name="SumPhaseVolumeFraction" rank="0">
456
<algorithm name="scalar_python_diagnostic" material_phase_support="multiple">
457
<string_value lines="20" type="python">sat_1 = states["phase1"].scalar_fields["PhaseVolumeFraction"]
458
sat_2 = states["phase2"].scalar_fields["PhaseVolumeFraction"]
460
for n in range(field.node_count):
462
sat_1_n = sat_1.node_val(n)
463
sat_2_n = sat_2.node_val(n)
465
field.set(n,sat_1_n + sat_2_n)</string_value>
467
<mesh name="PressureMesh"/>
471
<include_in_convergence/>
474
<include_in_detectors/>
477
<include_in_steady_state/>
481
<scalar_field name="ControlVolumeCFLNumber" rank="0">
483
<algorithm name="Internal" material_phase_support="multiple"/>
484
<mesh name="PressureMesh"/>
488
<include_in_convergence/>
491
<include_in_detectors/>
494
<include_in_steady_state/>
499
<material_phase name="phase2">
500
<scalar_field name="Pressure" rank="0">
501
<aliased material_phase_name="phase1" field_name="Pressure"/>
503
<vector_field name="Velocity" rank="1">
505
<mesh name="VelocityMesh"/>
506
<equation name="Boussinesq"/>
507
<spatial_discretisation>
508
<discontinuous_galerkin>
510
<exclude_mass_terms/>
513
<compact_discontinuous_galerkin/>
517
<integrate_advection_by_parts>
519
</integrate_advection_by_parts>
521
</discontinuous_galerkin>
522
<conservative_advection>
523
<real_value rank="0">0.0</real_value>
524
</conservative_advection>
525
</spatial_discretisation>
526
<temporal_discretisation>
528
<real_value rank="0">1.0</real_value>
531
<real_value rank="0">1.0</real_value>
533
</temporal_discretisation>
535
<iterative_method name="gmres">
537
<integer_value rank="0">30</integer_value>
540
<preconditioner name="sor"/>
542
<real_value rank="0">1.0e-10</real_value>
545
<integer_value rank="0">1000</integer_value>
547
<never_ignore_solver_failures/>
552
<initial_condition name="WholeMesh">
554
<real_value shape="3" dim1="dim" rank="1">0.0 0.0 0.0</real_value>
557
<boundary_conditions name="no_outflow_top_bottom">
559
<integer_value shape="2" rank="1">1 2</integer_value>
561
<type name="dirichlet">
562
<align_bc_with_cartesian>
565
<real_value rank="0">0.0</real_value>
568
</align_bc_with_cartesian>
570
</boundary_conditions>
571
<boundary_conditions name="no_outflow_front_back">
573
<integer_value shape="2" rank="1">5 6</integer_value>
575
<type name="dirichlet">
576
<align_bc_with_cartesian>
579
<real_value rank="0">0.0</real_value>
582
</align_bc_with_cartesian>
584
</boundary_conditions>
585
<vector_field name="Absorption" rank="1">
588
<algorithm name="vector_python_diagnostic" material_phase_support="multiple">
589
<string_value lines="20" type="python">from numpy import zeros
597
# set the absorption coeff
598
abs_coeff = 100.0/0.8
600
sat = states["phase2"].scalar_fields["PhaseVolumeFraction"]
602
for ele in range(field.element_count):
604
sat_ele = sat.ele_val(ele)
606
# initialise local list of abs coeff
607
sigma_ele = zeros(dim)
609
# calc the absorption term for each dim
612
sigma_ele[d] = abs_coeff * quarter*sum(sat_ele)
614
# set the absorption term
615
field.set(field.ele_nodes(ele),sigma_ele)</string_value>
622
<include_in_convergence/>
625
<include_in_detectors/>
628
<include_in_steady_state/>
631
<include_pressure_correction/>
638
</previous_time_step>
644
<include_in_convergence/>
647
<include_in_detectors/>
650
<include_in_steady_state/>
652
<consistent_interpolation/>
655
<scalar_field name="PhaseVolumeFraction" rank="0">
657
<mesh name="PressureMesh"/>
658
<algorithm name="Internal" material_phase_support="multiple"/>
662
<include_in_detectors/>
668
<scalar_field name="Porosity">
671
<value name="WholeMesh">
673
<real_value rank="0">0.2</real_value>
679
<exclude_from_detectors/>