~fluidity-core/fluidity/refactor-netcdf

« back to all changes in this revision

Viewing changes to tests/viscous_fs_zhong_spatial_explicit/viscous_fs_zhong_B.flml

  • Committer: Jon Hill
  • Date: 2013-02-16 09:01:40 UTC
  • mfrom: (3981.7.159 fluidity)
  • Revision ID: jon.hill@imperial.ac.uk-20130216090140-bplzxqzdk1eik4za
Megre from trunk, fixing several conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version='1.0' encoding='utf-8'?>
 
2
<fluidity_options>
 
3
  <simulation_name>
 
4
    <string_value lines="1">viscous_fs_zhong_B</string_value>
 
5
  </simulation_name>
 
6
  <problem_type>
 
7
    <string_value lines="1">stokes</string_value>
 
8
  </problem_type>
 
9
  <geometry>
 
10
    <dimension>
 
11
      <integer_value rank="0">2</integer_value>
 
12
    </dimension>
 
13
    <mesh name="CoordinateMesh">
 
14
      <from_file file_name="squareB">
 
15
        <format name="triangle"/>
 
16
        <stat>
 
17
          <include_in_stat/>
 
18
        </stat>
 
19
      </from_file>
 
20
    </mesh>
 
21
    <mesh name="VelocityMesh">
 
22
      <from_mesh>
 
23
        <mesh name="CoordinateMesh"/>
 
24
        <mesh_shape>
 
25
          <polynomial_degree>
 
26
            <integer_value rank="0">2</integer_value>
 
27
          </polynomial_degree>
 
28
        </mesh_shape>
 
29
        <stat>
 
30
          <exclude_from_stat/>
 
31
        </stat>
 
32
      </from_mesh>
 
33
    </mesh>
 
34
    <mesh name="FreeSurfaceSquaredMesh">
 
35
      <from_mesh>
 
36
        <mesh name="CoordinateMesh"/>
 
37
        <mesh_shape>
 
38
          <polynomial_degree>
 
39
            <integer_value rank="0">2</integer_value>
 
40
          </polynomial_degree>
 
41
        </mesh_shape>
 
42
        <stat>
 
43
          <exclude_from_stat/>
 
44
        </stat>
 
45
      </from_mesh>
 
46
    </mesh>
 
47
    <quadrature>
 
48
      <degree>
 
49
        <integer_value rank="0">5</integer_value>
 
50
      </degree>
 
51
    </quadrature>
 
52
  </geometry>
 
53
  <io>
 
54
    <dump_format>
 
55
      <string_value>vtk</string_value>
 
56
    </dump_format>
 
57
    <dump_period>
 
58
      <constant>
 
59
        <real_value rank="0">1000.0</real_value>
 
60
      </constant>
 
61
    </dump_period>
 
62
    <output_mesh name="CoordinateMesh"/>
 
63
    <stat>
 
64
      <output_at_start/>
 
65
      <output_before_adapts/>
 
66
      <output_after_adapts/>
 
67
    </stat>
 
68
  </io>
 
69
  <timestepping>
 
70
    <current_time>
 
71
      <real_value rank="0">0.0</real_value>
 
72
    </current_time>
 
73
    <timestep>
 
74
      <real_value rank="0">0.0625</real_value>
 
75
    </timestep>
 
76
    <finish_time>
 
77
      <real_value rank="0">10000.0</real_value>
 
78
    </finish_time>
 
79
    <steady_state>
 
80
      <tolerance>
 
81
        <real_value rank="0">1.e-10</real_value>
 
82
        <infinity_norm/>
 
83
      </tolerance>
 
84
    </steady_state>
 
85
  </timestepping>
 
86
  <physical_parameters>
 
87
    <gravity>
 
88
      <magnitude>
 
89
        <real_value rank="0">12.225727727</real_value>
 
90
        <comment>solution.nond_factor()</comment>
 
91
      </magnitude>
 
92
      <vector_field name="GravityDirection" rank="1">
 
93
        <prescribed>
 
94
          <mesh name="CoordinateMesh"/>
 
95
          <value name="WholeMesh">
 
96
            <constant>
 
97
              <real_value shape="2" dim1="dim" rank="1">0.0 -1.0</real_value>
 
98
            </constant>
 
99
          </value>
 
100
          <output/>
 
101
          <stat>
 
102
            <include_in_stat/>
 
103
          </stat>
 
104
          <detectors>
 
105
            <exclude_from_detectors/>
 
106
          </detectors>
 
107
        </prescribed>
 
108
      </vector_field>
 
109
    </gravity>
 
110
  </physical_parameters>
 
111
  <material_phase name="Fluid">
 
112
    <equation_of_state>
 
113
      <fluids>
 
114
        <linear>
 
115
          <reference_density>
 
116
            <real_value rank="0">1.0</real_value>
 
117
          </reference_density>
 
118
          <subtract_out_hydrostatic_level/>
 
119
        </linear>
 
120
      </fluids>
 
121
    </equation_of_state>
 
122
    <scalar_field name="Pressure" rank="0">
 
123
      <prognostic>
 
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>
 
131
        <scheme>
 
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">
 
138
                <solver>
 
139
                  <iterative_method name="cg"/>
 
140
                  <preconditioner name="mg"/>
 
141
                  <relative_error>
 
142
                    <real_value rank="0">1.e-7</real_value>
 
143
                  </relative_error>
 
144
                  <max_iterations>
 
145
                    <integer_value rank="0">1000</integer_value>
 
146
                  </max_iterations>
 
147
                  <never_ignore_solver_failures/>
 
148
                  <diagnostics>
 
149
                    <monitors/>
 
150
                  </diagnostics>
 
151
                </solver>
 
152
              </inner_matrix>
 
153
              <preconditioner_matrix name="ScaledPressureMassMatrix"/>
 
154
            </full_schur_complement>
 
155
          </use_projection_method>
 
156
        </scheme>
 
157
        <solver>
 
158
          <iterative_method name="fgmres"/>
 
159
          <preconditioner name="ksp">
 
160
            <solver>
 
161
              <iterative_method name="cg"/>
 
162
              <preconditioner name="sor"/>
 
163
              <relative_error>
 
164
                <real_value rank="0">1.e-7</real_value>
 
165
              </relative_error>
 
166
              <max_iterations>
 
167
                <integer_value rank="0">1000</integer_value>
 
168
              </max_iterations>
 
169
              <never_ignore_solver_failures/>
 
170
              <diagnostics>
 
171
                <monitors/>
 
172
              </diagnostics>
 
173
            </solver>
 
174
          </preconditioner>
 
175
          <relative_error>
 
176
            <real_value rank="0">1.e-5</real_value>
 
177
          </relative_error>
 
178
          <absolute_error>
 
179
            <real_value rank="0">1.e-16</real_value>
 
180
          </absolute_error>
 
181
          <max_iterations>
 
182
            <integer_value rank="0">1000</integer_value>
 
183
          </max_iterations>
 
184
          <never_ignore_solver_failures/>
 
185
          <diagnostics>
 
186
            <monitors/>
 
187
          </diagnostics>
 
188
        </solver>
 
189
        <output/>
 
190
        <stat/>
 
191
        <convergence>
 
192
          <include_in_convergence/>
 
193
        </convergence>
 
194
        <detectors>
 
195
          <exclude_from_detectors/>
 
196
        </detectors>
 
197
        <steady_state>
 
198
          <include_in_steady_state/>
 
199
        </steady_state>
 
200
        <no_interpolation/>
 
201
      </prognostic>
 
202
    </scalar_field>
 
203
    <scalar_field name="Density" rank="0">
 
204
      <diagnostic>
 
205
        <algorithm name="Internal" material_phase_support="multiple"/>
 
206
        <mesh name="CoordinateMesh"/>
 
207
        <output/>
 
208
        <stat/>
 
209
        <convergence>
 
210
          <include_in_convergence/>
 
211
        </convergence>
 
212
        <detectors>
 
213
          <include_in_detectors/>
 
214
        </detectors>
 
215
        <steady_state>
 
216
          <include_in_steady_state/>
 
217
        </steady_state>
 
218
      </diagnostic>
 
219
    </scalar_field>
 
220
    <vector_field name="Velocity" rank="1">
 
221
      <prognostic>
 
222
        <mesh name="VelocityMesh"/>
 
223
        <equation name="LinearMomentum"/>
 
224
        <spatial_discretisation>
 
225
          <continuous_galerkin>
 
226
            <stabilisation>
 
227
              <no_stabilisation/>
 
228
            </stabilisation>
 
229
            <mass_terms>
 
230
              <exclude_mass_terms/>
 
231
            </mass_terms>
 
232
            <advection_terms>
 
233
              <exclude_advection_terms/>
 
234
            </advection_terms>
 
235
            <stress_terms>
 
236
              <partial_stress_form/>
 
237
            </stress_terms>
 
238
          </continuous_galerkin>
 
239
          <conservative_advection>
 
240
            <real_value rank="0">1.0</real_value>
 
241
          </conservative_advection>
 
242
        </spatial_discretisation>
 
243
        <temporal_discretisation>
 
244
          <theta>
 
245
            <real_value rank="0">1.0</real_value>
 
246
          </theta>
 
247
          <relaxation>
 
248
            <real_value rank="0">1.0</real_value>
 
249
          </relaxation>
 
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>
 
256
          <specify_components>
 
257
            <y_component/>
 
258
          </specify_components>
 
259
        </reference_coordinates>
 
260
        <solver>
 
261
          <iterative_method name="cg"/>
 
262
          <preconditioner name="mg"/>
 
263
          <relative_error>
 
264
            <real_value rank="0">1.e-7</real_value>
 
265
          </relative_error>
 
266
          <max_iterations>
 
267
            <integer_value rank="0">1000</integer_value>
 
268
          </max_iterations>
 
269
          <never_ignore_solver_failures/>
 
270
          <diagnostics>
 
271
            <monitors/>
 
272
          </diagnostics>
 
273
        </solver>
 
274
        <initial_condition name="WholeMesh">
 
275
          <constant>
 
276
            <real_value shape="2" dim1="dim" rank="1">0.0 0.0</real_value>
 
277
          </constant>
 
278
        </initial_condition>
 
279
        <boundary_conditions name="Sides">
 
280
          <surface_ids>
 
281
            <integer_value shape="2" rank="1">7 9</integer_value>
 
282
          </surface_ids>
 
283
          <type name="dirichlet">
 
284
            <align_bc_with_cartesian>
 
285
              <x_component>
 
286
                <constant>
 
287
                  <real_value rank="0">0.0</real_value>
 
288
                </constant>
 
289
              </x_component>
 
290
            </align_bc_with_cartesian>
 
291
          </type>
 
292
        </boundary_conditions>
 
293
        <boundary_conditions name="Bottom">
 
294
          <surface_ids>
 
295
            <integer_value shape="1" rank="1">6</integer_value>
 
296
          </surface_ids>
 
297
          <type name="free_surface">
 
298
            <no_normal_stress>
 
299
              <explicit/>
 
300
            </no_normal_stress>
 
301
            <external_density>
 
302
              <real_value rank="0">2.0</real_value>
 
303
            </external_density>
 
304
          </type>
 
305
        </boundary_conditions>
 
306
        <boundary_conditions name="Top">
 
307
          <surface_ids>
 
308
            <integer_value shape="1" rank="1">8</integer_value>
 
309
          </surface_ids>
 
310
          <type name="free_surface">
 
311
            <no_normal_stress>
 
312
              <explicit/>
 
313
            </no_normal_stress>
 
314
          </type>
 
315
        </boundary_conditions>
 
316
        <boundary_conditions name="Internal">
 
317
          <surface_ids>
 
318
            <integer_value shape="1" rank="1">10</integer_value>
 
319
          </surface_ids>
 
320
          <type name="flux">
 
321
            <align_bc_with_cartesian>
 
322
              <y_component>
 
323
                <python>
 
324
                  <string_value lines="20" type="code" language="python">def val(X,t):
 
325
   from math import pi, cos
 
326
   import solution
 
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>
 
331
                </python>
 
332
              </y_component>
 
333
            </align_bc_with_cartesian>
 
334
          </type>
 
335
        </boundary_conditions>
 
336
        <tensor_field name="Viscosity" rank="2">
 
337
          <prescribed>
 
338
            <value name="WholeMesh">
 
339
              <anisotropic_symmetric>
 
340
                <constant>
 
341
                  <real_value symmetric="true" dim2="dim" shape="2 2" dim1="dim" rank="2">1.0 1.0 1.0 1.0</real_value>
 
342
                </constant>
 
343
              </anisotropic_symmetric>
 
344
            </value>
 
345
            <output/>
 
346
          </prescribed>
 
347
        </tensor_field>
 
348
        <output/>
 
349
        <stat>
 
350
          <include_in_stat/>
 
351
          <previous_time_step>
 
352
            <exclude_from_stat/>
 
353
          </previous_time_step>
 
354
          <nonlinear_field>
 
355
            <exclude_from_stat/>
 
356
          </nonlinear_field>
 
357
        </stat>
 
358
        <convergence>
 
359
          <include_in_convergence/>
 
360
        </convergence>
 
361
        <detectors>
 
362
          <include_in_detectors/>
 
363
        </detectors>
 
364
        <steady_state>
 
365
          <include_in_steady_state/>
 
366
        </steady_state>
 
367
        <consistent_interpolation/>
 
368
      </prognostic>
 
369
    </vector_field>
 
370
    <scalar_field name="FreeSurface" rank="0">
 
371
      <prognostic>
 
372
        <mesh name="CoordinateMesh"/>
 
373
        <initial_condition name="WholeMesh">
 
374
          <python>
 
375
            <string_value lines="20" type="code" language="python">import solution
 
376
global F, G
 
377
F = solution.nond_F
 
378
G = solution.nond_G
 
379
 
 
380
def val(X,t):
 
381
  dx = 1./40.
 
382
  if(X[1]&gt;(1.-dx/2.)):
 
383
    return F(X[0], 0.0)
 
384
  elif(X[1]&lt;dx/2.):
 
385
    return G(X[0], 0.0)
 
386
  else:
 
387
    return 0.0</string_value>
 
388
          </python>
 
389
        </initial_condition>
 
390
        <solver>
 
391
          <iterative_method name="cg"/>
 
392
          <preconditioner name="sor"/>
 
393
          <relative_error>
 
394
            <real_value rank="0">1.e-6</real_value>
 
395
          </relative_error>
 
396
          <max_iterations>
 
397
            <integer_value rank="0">1000</integer_value>
 
398
          </max_iterations>
 
399
          <never_ignore_solver_failures/>
 
400
          <diagnostics>
 
401
            <monitors/>
 
402
          </diagnostics>
 
403
        </solver>
 
404
        <output/>
 
405
        <stat>
 
406
          <surface_integral type="value" name="Top">
 
407
            <surface_ids>
 
408
              <integer_value shape="1" rank="1">8</integer_value>
 
409
            </surface_ids>
 
410
          </surface_integral>
 
411
          <surface_integral type="value" name="Bottom">
 
412
            <surface_ids>
 
413
              <integer_value shape="1" rank="1">6</integer_value>
 
414
            </surface_ids>
 
415
          </surface_integral>
 
416
        </stat>
 
417
        <convergence>
 
418
          <include_in_convergence/>
 
419
        </convergence>
 
420
        <detectors>
 
421
          <include_in_detectors/>
 
422
        </detectors>
 
423
        <steady_state>
 
424
          <include_in_steady_state/>
 
425
        </steady_state>
 
426
        <consistent_interpolation/>
 
427
      </prognostic>
 
428
    </scalar_field>
 
429
    <scalar_field name="AnalyticalFreeSurface" rank="0">
 
430
      <prescribed>
 
431
        <mesh name="CoordinateMesh"/>
 
432
        <value name="WholeMesh">
 
433
          <python>
 
434
            <string_value lines="20" type="code" language="python">import solution
 
435
global F, G
 
436
F = solution.nond_F
 
437
G = solution.nond_G
 
438
 
 
439
def val(X,t):
 
440
  dx = 1./40.
 
441
  if(X[1]&gt;(1.-dx/2.)):
 
442
    return F(X[0], t)
 
443
  elif(X[1]&lt;dx/2.):
 
444
    return G(X[0], t)
 
445
  else:
 
446
    return 0.0</string_value>
 
447
          </python>
 
448
        </value>
 
449
        <output/>
 
450
        <stat/>
 
451
        <detectors>
 
452
          <exclude_from_detectors/>
 
453
        </detectors>
 
454
      </prescribed>
 
455
    </scalar_field>
 
456
    <scalar_field name="FreeSurfaceDifference" rank="0">
 
457
      <diagnostic>
 
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/>
 
460
        </algorithm>
 
461
        <mesh name="FreeSurfaceSquaredMesh"/>
 
462
        <output/>
 
463
        <stat/>
 
464
        <convergence>
 
465
          <include_in_convergence/>
 
466
        </convergence>
 
467
        <detectors>
 
468
          <include_in_detectors/>
 
469
        </detectors>
 
470
        <steady_state>
 
471
          <include_in_steady_state/>
 
472
        </steady_state>
 
473
      </diagnostic>
 
474
    </scalar_field>
 
475
    <scalar_field name="DifferenceSquared" rank="0">
 
476
      <diagnostic>
 
477
        <algorithm name="scalar_python_diagnostic" material_phase_support="single">
 
478
          <string_value lines="20" type="code" language="python">fsd = state.scalar_fields["FreeSurfaceDifference"]
 
479
 
 
480
assert(field.node_count==fsd.node_count)
 
481
 
 
482
for i in range(field.node_count):
 
483
  field.set(i, fsd.node_val(i)*fsd.node_val(i))</string_value>
 
484
          <depends>
 
485
            <string_value lines="1">FreeSurfaceDifference</string_value>
 
486
          </depends>
 
487
        </algorithm>
 
488
        <mesh name="FreeSurfaceSquaredMesh"/>
 
489
        <output/>
 
490
        <stat>
 
491
          <surface_integral type="value" name="SurfaceL2Norm">
 
492
            <surface_ids>
 
493
              <integer_value shape="1" rank="1">6 8</integer_value>
 
494
            </surface_ids>
 
495
          </surface_integral>
 
496
          <surface_integral type="value" name="TopSurfaceL2Norm">
 
497
            <surface_ids>
 
498
              <integer_value shape="1" rank="1">8</integer_value>
 
499
            </surface_ids>
 
500
          </surface_integral>
 
501
          <surface_integral type="value" name="BottomSurfaceL2Norm">
 
502
            <surface_ids>
 
503
              <integer_value shape="1" rank="1">6</integer_value>
 
504
            </surface_ids>
 
505
          </surface_integral>
 
506
        </stat>
 
507
        <convergence>
 
508
          <include_in_convergence/>
 
509
        </convergence>
 
510
        <detectors>
 
511
          <include_in_detectors/>
 
512
        </detectors>
 
513
        <steady_state>
 
514
          <include_in_steady_state/>
 
515
        </steady_state>
 
516
      </diagnostic>
 
517
    </scalar_field>
 
518
  </material_phase>
 
519
</fluidity_options>