~fluidity-core/fluidity/sea-ice-branch

« back to all changes in this revision

Viewing changes to tests/burgers_mms_replay/mms_C.bml

  • Committer: Simon Mouradian
  • Date: 2012-10-19 10:35:59 UTC
  • mfrom: (3520.32.371 fluidity)
  • Revision ID: simon.mouradian06@imperial.ac.uk-20121019103559-y36qa47phc69q8sc
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version='1.0' encoding='utf-8'?>
2
 
<burgers_equation>
3
 
  <simulation_name>
4
 
    <string_value lines="1">mms_adjoint_C</string_value>
5
 
  </simulation_name>
6
 
  <geometry>
7
 
    <dimension>
8
 
      <integer_value rank="0">1</integer_value>
9
 
    </dimension>
10
 
    <mesh name="CoordinateMesh">
11
 
      <from_file file_name="mms_C">
12
 
        <format name="triangle"/>
13
 
        <stat>
14
 
          <include_in_stat/>
15
 
        </stat>
16
 
      </from_file>
17
 
    </mesh>
18
 
    <mesh name="VelocityMesh">
19
 
      <from_mesh>
20
 
        <mesh name="CoordinateMesh"/>
21
 
        <stat>
22
 
          <exclude_from_stat/>
23
 
        </stat>
24
 
      </from_mesh>
25
 
    </mesh>
26
 
    <quadrature>
27
 
      <degree>
28
 
        <integer_value rank="0">4</integer_value>
29
 
      </degree>
30
 
    </quadrature>
31
 
  </geometry>
32
 
  <io>
33
 
    <dump_format>vtk</dump_format>
34
 
    <dump_period_in_timesteps>
35
 
      <constant>
36
 
        <integer_value rank="0">1</integer_value>
37
 
      </constant>
38
 
    </dump_period_in_timesteps>
39
 
    <output_mesh name="VelocityMesh"/>
40
 
  </io>
41
 
  <timestepping>
42
 
    <current_time>
43
 
      <real_value rank="0">0</real_value>
44
 
    </current_time>
45
 
    <timestep>
46
 
      <real_value rank="0">0.5</real_value>
47
 
    </timestep>
48
 
    <finish_time>
49
 
      <real_value rank="0">10</real_value>
50
 
    </finish_time>
51
 
  </timestepping>
52
 
  <material_phase name="Fluid">
53
 
    <scalar_field name="Velocity" rank="0">
54
 
      <prognostic>
55
 
        <mesh name="VelocityMesh"/>
56
 
        <temporal_discretisation>
57
 
          <theta>
58
 
            <real_value rank="0">0.5</real_value>
59
 
          </theta>
60
 
          <relaxation>
61
 
            <real_value rank="0">0.5</real_value>
62
 
          </relaxation>
63
 
        </temporal_discretisation>
64
 
        <solver>
65
 
          <iterative_method name="preonly"/>
66
 
          <preconditioner name="lu"/>
67
 
          <relative_error>
68
 
            <real_value rank="0">1e-16</real_value>
69
 
          </relative_error>
70
 
          <absolute_error>
71
 
            <real_value rank="0">1e-12</real_value>
72
 
          </absolute_error>
73
 
          <max_iterations>
74
 
            <integer_value rank="0">10000</integer_value>
75
 
          </max_iterations>
76
 
          <never_ignore_solver_failures/>
77
 
          <diagnostics>
78
 
            <monitors/>
79
 
          </diagnostics>
80
 
        </solver>
81
 
        <initial_condition name="WholeMesh">
82
 
          <python>
83
 
            <string_value lines="20" type="code" language="python">def val(X, t):
84
 
  from math import sin
85
 
  x = X[0]
86
 
  return sin(x+t)</string_value>
87
 
          </python>
88
 
        </initial_condition>
89
 
        <boundary_conditions name="bc">
90
 
          <surface_ids>
91
 
            <integer_value shape="2" rank="1">1 2</integer_value>
92
 
          </surface_ids>
93
 
          <type name="dirichlet">
94
 
            <python>
95
 
              <string_value lines="20" type="code" language="python">def val(X, t):
96
 
  from math import sin
97
 
  x = X[0]
98
 
  return sin(x+t)</string_value>
99
 
            </python>
100
 
          </type>
101
 
        </boundary_conditions>
102
 
        <viscosity>
103
 
          <real_value rank="0">1</real_value>
104
 
        </viscosity>
105
 
        <stat/>
106
 
        <adjoint_storage>
107
 
          <exists_in_both/>
108
 
        </adjoint_storage>
109
 
        <scalar_field name="Source" rank="0">
110
 
          <prescribed>
111
 
            <value name="WholeMesh">
112
 
              <python>
113
 
                <string_value lines="20" type="code" language="python">def val(X, t):
114
 
  from math import sin, cos
115
 
  x = X[0]
116
 
  return sin(t + x)*cos(t + x) + sin(t + x) + cos(t + x)</string_value>
117
 
              </python>
118
 
            </value>
119
 
          </prescribed>
120
 
        </scalar_field>
121
 
      </prognostic>
122
 
    </scalar_field>
123
 
    <scalar_field name="AnalyticalSolution" rank="0">
124
 
      <prescribed>
125
 
        <mesh name="VelocityMesh"/>
126
 
        <value name="WholeMesh">
127
 
          <python>
128
 
            <string_value lines="20" type="code" language="python">def val(X, t):
129
 
  from math import sin
130
 
  x = X[0]
131
 
  return sin(x+t)</string_value>
132
 
          </python>
133
 
        </value>
134
 
        <adjoint_storage>
135
 
          <exists_in_forward/>
136
 
        </adjoint_storage>
137
 
      </prescribed>
138
 
    </scalar_field>
139
 
    <scalar_field name="Error" rank="0">
140
 
      <diagnostic>
141
 
        <mesh name="VelocityMesh"/>
142
 
        <algorithm name="scalar_python_diagnostic" material_phase_support="single">
143
 
          <string_value lines="20" type="code" language="python">soln = state.scalar_fields["Velocity"]
144
 
exact = state.scalar_fields["AnalyticalSolution"]
145
 
 
146
 
for i in range(field.node_count):
147
 
  field.set(i, abs(soln.node_val(i) - exact.node_val(i)))</string_value>
148
 
        </algorithm>
149
 
        <stat/>
150
 
        <adjoint_storage>
151
 
          <exists_in_forward/>
152
 
        </adjoint_storage>
153
 
      </diagnostic>
154
 
    </scalar_field>
155
 
  </material_phase>
156
 
  <adjoint>
157
 
    <functional name="time_integral_ad">
158
 
      <functional_value>
159
 
        <algorithm name="functional_value">
160
 
          <string_value lines="20" type="code" language="python">import numpy
161
 
 
162
 
coord = states[0]["Fluid"].vector_fields["Coordinate"]
163
 
u = states[n]["Fluid"].scalar_fields["Velocity"]
164
 
u_prev = states[n-1]["Fluid"].scalar_fields["Velocity"]
165
 
int_u = 0.0
166
 
int_u_prev = 0.0
167
 
 
168
 
for ele in range(coord.element_count):
169
 
  t = Transform(ele, coord)
170
 
  shape = u.ele_shape(ele)
171
 
  mass = t.shape_shape(shape, shape)
172
 
  int_u = int_u + sum(numpy.dot(mass, u.ele_val(ele)))
173
 
  int_u_prev = int_u_prev + sum(numpy.dot(mass, u_prev.ele_val(ele)))
174
 
 
175
 
J = dt * (int_u + int_u_prev) * 0.5
176
 
#if not hasattr(J, "nominal_value"): 
177
 
#  print "J(%d): %s" % (n, J)
178
 
#  print "int(u[%d]): %s" % (n, int_u)
179
 
#  print "int(u[%d]): %s" % (n-1, int_u_prev)</string_value>
180
 
        </algorithm>
181
 
        <reduction>
182
 
          <sum/>
183
 
        </reduction>
184
 
      </functional_value>
185
 
      <functional_dependencies>
186
 
        <algorithm name="functional_dependencies">
187
 
          <string_value lines="20" type="code" language="python">def dependencies(times, timestep):
188
 
  return {"Fluid::Coordinate": [0],
189
 
          "Fluid::Velocity": [timestep-1, timestep]}</string_value>
190
 
        </algorithm>
191
 
      </functional_dependencies>
192
 
    </functional>
193
 
    <controls>
194
 
      <control name="initial_condition">
195
 
        <type field_name="Fluid::Velocity" name="initial_condition"/>
196
 
      </control>
197
 
    </controls>
198
 
    <debug>
199
 
      <replay_forward_run/>
200
 
      <check_action_transposes/>
201
 
      <check_action_derivative/>
202
 
    </debug>
203
 
  </adjoint>
204
 
</burgers_equation>