~fluidity-core/fluidity/shallow-water-dev

« back to all changes in this revision

Viewing changes to tests/bdfm1-nonlinear/bdfm1-wavetest.swml

  • Committer: Jemma Shipton
  • Date: 2012-10-23 12:39:04 UTC
  • mfrom: (3574.2.151 bdfm1-nonlinear-sw)
  • Revision ID: jshipton@ic.ac.uk-20121023123904-oalpymh8vx716nj6
merging changes from Colin's bdfm1-nonlinear-sw branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version='1.0' encoding='utf-8'?>
 
2
<shallow_water_options>
 
3
  <simulation_name>
 
4
    <string_value lines="1">bdfm1-nonlinear</string_value>
 
5
  </simulation_name>
 
6
  <geometry>
 
7
    <dimension>
 
8
      <integer_value rank="0">3</integer_value>
 
9
    </dimension>
 
10
    <mesh name="CoordinateMesh">
 
11
      <from_file file_name="channel">
 
12
        <format name="triangle"/>
 
13
        <dimension>
 
14
          <integer_value rank="0">2</integer_value>
 
15
        </dimension>
 
16
        <stat>
 
17
          <include_in_stat/>
 
18
        </stat>
 
19
      </from_file>
 
20
    </mesh>
 
21
    <mesh name="VelocityMesh">
 
22
      <from_mesh>
 
23
        <mesh name="PeriodicMesh"/>
 
24
        <mesh_shape>
 
25
          <polynomial_degree>
 
26
            <integer_value rank="0">2</integer_value>
 
27
          </polynomial_degree>
 
28
        </mesh_shape>
 
29
        <mesh_continuity>
 
30
          <string_value>discontinuous</string_value>
 
31
        </mesh_continuity>
 
32
        <constraint_type>
 
33
          <string_value>BDFM</string_value>
 
34
          <solver>
 
35
            <iterative_method name="preonly"/>
 
36
            <preconditioner name="lu"/>
 
37
            <relative_error>
 
38
              <real_value rank="0">1.0e-50</real_value>
 
39
            </relative_error>
 
40
            <max_iterations>
 
41
              <integer_value rank="0">1000</integer_value>
 
42
            </max_iterations>
 
43
            <never_ignore_solver_failures/>
 
44
            <diagnostics>
 
45
              <monitors/>
 
46
            </diagnostics>
 
47
          </solver>
 
48
        </constraint_type>
 
49
        <stat>
 
50
          <exclude_from_stat/>
 
51
        </stat>
 
52
      </from_mesh>
 
53
    </mesh>
 
54
    <mesh name="PressureMesh">
 
55
      <from_mesh>
 
56
        <mesh name="PeriodicMesh"/>
 
57
        <mesh_shape>
 
58
          <polynomial_degree>
 
59
            <integer_value rank="0">1</integer_value>
 
60
          </polynomial_degree>
 
61
        </mesh_shape>
 
62
        <mesh_continuity>
 
63
          <string_value>discontinuous</string_value>
 
64
        </mesh_continuity>
 
65
        <stat>
 
66
          <exclude_from_stat/>
 
67
        </stat>
 
68
      </from_mesh>
 
69
    </mesh>
 
70
    <mesh name="VorticityMesh">
 
71
      <from_mesh>
 
72
        <mesh name="PeriodicMesh"/>
 
73
        <mesh_shape>
 
74
          <polynomial_degree>
 
75
            <integer_value rank="0">2</integer_value>
 
76
          </polynomial_degree>
 
77
          <element_type>
 
78
            <string_value>bubble</string_value>
 
79
          </element_type>
 
80
        </mesh_shape>
 
81
        <mesh_continuity>
 
82
          <string_value>continuous</string_value>
 
83
        </mesh_continuity>
 
84
        <stat>
 
85
          <exclude_from_stat/>
 
86
        </stat>
 
87
      </from_mesh>
 
88
    </mesh>
 
89
    <mesh name="PeriodicMesh">
 
90
      <from_mesh>
 
91
        <mesh name="CoordinateMesh"/>
 
92
        <mesh_shape>
 
93
          <polynomial_degree>
 
94
            <integer_value rank="0">1</integer_value>
 
95
          </polynomial_degree>
 
96
        </mesh_shape>
 
97
        <periodic_boundary_conditions name="EndsMeet">
 
98
          <physical_boundary_ids>
 
99
            <integer_value shape="1" rank="1">1</integer_value>
 
100
          </physical_boundary_ids>
 
101
          <aliased_boundary_ids>
 
102
            <integer_value shape="1" rank="1">2</integer_value>
 
103
          </aliased_boundary_ids>
 
104
          <coordinate_map>
 
105
            <string_value lines="20" type="code" language="python">def val(X,t):
 
106
        result = list(X)
 
107
        result[0]=result[0]-6.283185307179586
 
108
        return result</string_value>
 
109
          </coordinate_map>
 
110
        </periodic_boundary_conditions>
 
111
        <periodic_boundary_conditions name="TopBot">
 
112
          <physical_boundary_ids>
 
113
            <integer_value shape="1" rank="1">3</integer_value>
 
114
          </physical_boundary_ids>
 
115
          <aliased_boundary_ids>
 
116
            <integer_value shape="1" rank="1">4</integer_value>
 
117
          </aliased_boundary_ids>
 
118
          <coordinate_map>
 
119
            <string_value lines="20" type="code" language="python">def val(X,t):
 
120
        result = list(X)
 
121
        result[1]=result[1]-6.283185307179586
 
122
        return result</string_value>
 
123
          </coordinate_map>
 
124
        </periodic_boundary_conditions>
 
125
        <stat>
 
126
          <exclude_from_stat/>
 
127
        </stat>
 
128
      </from_mesh>
 
129
    </mesh>
 
130
    <quadrature>
 
131
      <degree>
 
132
        <integer_value rank="0">8</integer_value>
 
133
      </degree>
 
134
    </quadrature>
 
135
  </geometry>
 
136
  <io>
 
137
    <dump_format>
 
138
      <string_value>vtk</string_value>
 
139
    </dump_format>
 
140
    <dump_period_in_timesteps>
 
141
      <constant>
 
142
        <integer_value rank="0">10</integer_value>
 
143
      </constant>
 
144
    </dump_period_in_timesteps>
 
145
    <output_mesh name="VelocityMesh"/>
 
146
  </io>
 
147
  <timestepping>
 
148
    <current_time>
 
149
      <real_value rank="0">0.0</real_value>
 
150
    </current_time>
 
151
    <timestep>
 
152
      <real_value rank="0">0.03141592653589793</real_value>
 
153
    </timestep>
 
154
    <theta>
 
155
      <real_value rank="0">0.55</real_value>
 
156
    </theta>
 
157
    <nonlinear_iterations>
 
158
      <integer_value rank="0">4</integer_value>
 
159
    </nonlinear_iterations>
 
160
    <finish_time>
 
161
      <real_value rank="0">3.141592653589793</real_value>
 
162
      <comment>mode is sin(x+y) therefore |k| =|(1,1)|=2.
 
163
 
 
164
therefore, omega = 2, and time period = 2\pi/2 = \pi.</comment>
 
165
    </finish_time>
 
166
  </timestepping>
 
167
  <physical_parameters>
 
168
    <gravity>
 
169
      <magnitude>
 
170
        <real_value rank="0">1.0</real_value>
 
171
        <comment>4*pi**2</comment>
 
172
      </magnitude>
 
173
      <vector_field name="GravityDirection" rank="1">
 
174
        <prescribed>
 
175
          <mesh name="CoordinateMesh"/>
 
176
          <value name="WholeMesh">
 
177
            <constant>
 
178
              <real_value shape="3" dim1="dim" rank="1">0. 0. -1.</real_value>
 
179
            </constant>
 
180
          </value>
 
181
          <output/>
 
182
          <stat>
 
183
            <include_in_stat/>
 
184
          </stat>
 
185
          <detectors>
 
186
            <exclude_from_detectors/>
 
187
          </detectors>
 
188
          <adjoint_storage>
 
189
            <exists_in_forward/>
 
190
          </adjoint_storage>
 
191
        </prescribed>
 
192
      </vector_field>
 
193
    </gravity>
 
194
    <coriolis>
 
195
      <string_value lines="20" type="code" language="python">def val(X,t):
 
196
  from math import pi
 
197
  return 0.</string_value>
 
198
      <comment>2*pi</comment>
 
199
    </coriolis>
 
200
  </physical_parameters>
 
201
  <material_phase name="Fluid">
 
202
    <vector_field name="Velocity" rank="1">
 
203
      <prognostic>
 
204
        <mesh name="VelocityMesh"/>
 
205
        <equation name="ShallowWater"/>
 
206
        <wave_equation>
 
207
          <fully_coupled/>
 
208
        </wave_equation>
 
209
        <spatial_discretisation>
 
210
          <discontinuous_galerkin/>
 
211
        </spatial_discretisation>
 
212
        <temporal_discretisation>
 
213
          <relaxation>
 
214
            <real_value rank="0">0.5</real_value>
 
215
          </relaxation>
 
216
          <discontinuous_galerkin>
 
217
            <maximum_courant_number_per_subcycle>
 
218
              <real_value rank="0">0.1</real_value>
 
219
            </maximum_courant_number_per_subcycle>
 
220
          </discontinuous_galerkin>
 
221
        </temporal_discretisation>
 
222
        <solver>
 
223
          <iterative_method name="preonly"/>
 
224
          <preconditioner name="lu"/>
 
225
          <relative_error>
 
226
            <real_value rank="0">1.0e-7</real_value>
 
227
          </relative_error>
 
228
          <max_iterations>
 
229
            <integer_value rank="0">1000</integer_value>
 
230
          </max_iterations>
 
231
          <never_ignore_solver_failures/>
 
232
          <diagnostics>
 
233
            <monitors/>
 
234
          </diagnostics>
 
235
        </solver>
 
236
        <initial_condition name="WholeMesh">
 
237
          <constant>
 
238
            <real_value shape="3" dim1="dim" rank="1">0. 0. 0.</real_value>
 
239
          </constant>
 
240
        </initial_condition>
 
241
        <output/>
 
242
        <convergence>
 
243
          <include_in_convergence/>
 
244
        </convergence>
 
245
        <detectors>
 
246
          <include_in_detectors/>
 
247
        </detectors>
 
248
        <steady_state>
 
249
          <include_in_steady_state/>
 
250
        </steady_state>
 
251
        <consistent_interpolation/>
 
252
      </prognostic>
 
253
    </vector_field>
 
254
    <scalar_field name="LayerThickness" rank="0">
 
255
      <prognostic>
 
256
        <mesh name="PressureMesh"/>
 
257
        <spatial_discretisation>
 
258
          <discontinuous_galerkin>
 
259
            <wave_equation/>
 
260
            <advection_terms>
 
261
              <exclude_advection_terms/>
 
262
            </advection_terms>
 
263
            <slope_limiter name="Vertex_Based"/>
 
264
          </discontinuous_galerkin>
 
265
          <conservative_advection>
 
266
            <real_value rank="0">0.</real_value>
 
267
          </conservative_advection>
 
268
          <debug/>
 
269
        </spatial_discretisation>
 
270
        <temporal_discretisation>
 
271
          <discontinuous_galerkin>
 
272
            <maximum_courant_number_per_subcycle>
 
273
              <real_value rank="0">0.1</real_value>
 
274
            </maximum_courant_number_per_subcycle>
 
275
          </discontinuous_galerkin>
 
276
        </temporal_discretisation>
 
277
        <solver>
 
278
          <iterative_method name="preonly"/>
 
279
          <preconditioner name="lu"/>
 
280
          <relative_error>
 
281
            <real_value rank="0">1.0e-7</real_value>
 
282
          </relative_error>
 
283
          <max_iterations>
 
284
            <integer_value rank="0">2000</integer_value>
 
285
          </max_iterations>
 
286
          <never_ignore_solver_failures/>
 
287
          <diagnostics>
 
288
            <monitors/>
 
289
          </diagnostics>
 
290
        </solver>
 
291
        <initial_condition name="WholeMesh">
 
292
          <python>
 
293
            <string_value lines="20" type="code" language="python">def val(X,t):
 
294
  from math import sin
 
295
  x = X[0]
 
296
  y = X[1]
 
297
  z = X[2]
 
298
  eps = 1.0e-3
 
299
  return eps*sin(x+y)</string_value>
 
300
          </python>
 
301
        </initial_condition>
 
302
        <mean_layer_thickness>
 
303
          <real_value rank="0">1.0</real_value>
 
304
          <comment>using a nondimensionalisation</comment>
 
305
        </mean_layer_thickness>
 
306
        <output/>
 
307
        <stat/>
 
308
        <consistent_interpolation/>
 
309
      </prognostic>
 
310
    </scalar_field>
 
311
    <scalar_field name="PotentialVorticity" rank="0">
 
312
      <prognostic>
 
313
        <mesh name="VorticityMesh"/>
 
314
        <spatial_discretisation>
 
315
          <continuous_galerkin/>
 
316
        </spatial_discretisation>
 
317
        <solver>
 
318
          <iterative_method name="gmres">
 
319
            <restart>
 
320
              <integer_value rank="0">40</integer_value>
 
321
            </restart>
 
322
          </iterative_method>
 
323
          <preconditioner name="sor"/>
 
324
          <relative_error>
 
325
            <real_value rank="0">1.0e-8</real_value>
 
326
          </relative_error>
 
327
          <max_iterations>
 
328
            <integer_value rank="0">1000</integer_value>
 
329
          </max_iterations>
 
330
          <never_ignore_solver_failures/>
 
331
          <diagnostics>
 
332
            <monitors/>
 
333
          </diagnostics>
 
334
        </solver>
 
335
        <output/>
 
336
        <stat/>
 
337
        <debug/>
 
338
      </prognostic>
 
339
    </scalar_field>
 
340
    <scalar_field name="Streamfunction" rank="0">
 
341
      <prescribed>
 
342
        <value>
 
343
          <python>
 
344
            <string_value lines="20" type="code" language="python">def val(X,t):
 
345
  from math import exp, pi, sin
 
346
  x = X[0]
 
347
  y = X[1]
 
348
  deltaQ = (1.0/pi)*(y-pi)*exp(-2*(y-pi)**2)*(1.0+0.1*sin(2*x))
 
349
  return 1.0/(1.0+deltaQ)</string_value>
 
350
          </python>
 
351
        </value>
 
352
        <zero_bubble_component/>
 
353
        <mesh name="VorticityMesh"/>
 
354
        <output/>
 
355
      </prescribed>
 
356
    </scalar_field>
 
357
    <scalar_field name="DG_CourantNumber" rank="0">
 
358
      <diagnostic>
 
359
        <algorithm name="Internal" material_phase_support="multiple"/>
 
360
        <mesh name="PressureMesh"/>
 
361
        <output/>
 
362
        <stat/>
 
363
        <convergence>
 
364
          <include_in_convergence/>
 
365
        </convergence>
 
366
        <detectors>
 
367
          <include_in_detectors/>
 
368
        </detectors>
 
369
        <steady_state>
 
370
          <include_in_steady_state/>
 
371
        </steady_state>
 
372
        <adjoint_storage>
 
373
          <exists_in_forward/>
 
374
        </adjoint_storage>
 
375
      </diagnostic>
 
376
    </scalar_field>
 
377
    <scalar_field name="StreamfunctionIn" rank="0">
 
378
      <prescribed>
 
379
        <mesh name="PeriodicMesh"/>
 
380
        <value name="WholeMesh">
 
381
          <python>
 
382
            <string_value lines="20" type="code" language="python">def val(X,t):
 
383
  from math import exp, pi, sin
 
384
  x = X[0]
 
385
  y = X[1]
 
386
  deltaQ = (1.0/pi)*(y-pi)*exp(-2*(y-pi)**2)*(1.0+0.1*sin(2*x))
 
387
  return 1.0/(1.0+deltaQ)</string_value>
 
388
          </python>
 
389
        </value>
 
390
        <output/>
 
391
        <stat/>
 
392
        <detectors>
 
393
          <exclude_from_detectors/>
 
394
        </detectors>
 
395
        <adjoint_storage>
 
396
          <exists_in_forward/>
 
397
        </adjoint_storage>
 
398
      </prescribed>
 
399
    </scalar_field>
 
400
  </material_phase>
 
401
  <debug>
 
402
    <check_inverse_coriolis_matrix/>
 
403
    <check_wave_matrix/>
 
404
    <check_solution/>
 
405
  </debug>
 
406
</shallow_water_options>