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

« back to all changes in this revision

Viewing changes to tests/shallow_water_optimisation_bounds/adjoint_D.swml

  • Committer: colin.cotter at ac
  • Date: 2011-11-09 18:16:59 UTC
  • Revision ID: colin.cotter@imperial.ac.uk-20111109181659-0xy3bdxeaswyekbc
A few fixes for adjoint, plus tweaking some swmls.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<?xml version='1.0' encoding='utf8'?>
2
2
<shallow_water_options>
3
 
    <simulation_name>
4
 
        <string_value lines="1">wave_D</string_value>
5
 
    </simulation_name>
6
 
    <geometry>
 
3
  <simulation_name>
 
4
    <string_value lines="1">wave_D</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="src/mesh_D">
 
12
        <format name="triangle"/>
7
13
        <dimension>
8
 
            <integer_value rank="0">3</integer_value>
 
14
          <integer_value rank="0">1</integer_value>
9
15
        </dimension>
10
 
        <mesh name="CoordinateMesh">
11
 
            <from_file file_name="src/mesh_D">
12
 
                <format name="triangle"/>
13
 
                <dimension>
14
 
                    <integer_value rank="0">1</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_continuity>
25
 
                    <string_value>discontinuous</string_value>
26
 
                </mesh_continuity>
27
 
                <stat>
28
 
                    <exclude_from_stat/>
29
 
                </stat>
30
 
            </from_mesh>
31
 
        </mesh>
32
 
        <mesh name="PressureMesh">
33
 
            <from_mesh>
34
 
                <mesh name="PeriodicMesh"/>
35
 
                <mesh_shape>
36
 
                    <polynomial_degree>
37
 
                        <integer_value rank="0">2</integer_value>
38
 
                    </polynomial_degree>
39
 
                </mesh_shape>
40
 
                <stat>
41
 
                    <exclude_from_stat/>
42
 
                </stat>
43
 
            </from_mesh>
44
 
        </mesh>
45
 
        <mesh name="PeriodicMesh">
46
 
            <from_mesh>
47
 
                <mesh name="CoordinateMesh"/>
48
 
                <periodic_boundary_conditions name="periodicity">
49
 
                    <physical_boundary_ids>
50
 
                        <integer_value rank="1" shape="1">1</integer_value>
51
 
                    </physical_boundary_ids>
52
 
                    <aliased_boundary_ids>
53
 
                        <integer_value rank="1" shape="1">2</integer_value>
54
 
                    </aliased_boundary_ids>
55
 
                    <coordinate_map>
56
 
                        <string_value lines="20" type="python">def val(X,t):
 
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_continuity>
 
25
          <string_value>discontinuous</string_value>
 
26
        </mesh_continuity>
 
27
        <stat>
 
28
          <exclude_from_stat/>
 
29
        </stat>
 
30
      </from_mesh>
 
31
    </mesh>
 
32
    <mesh name="PressureMesh">
 
33
      <from_mesh>
 
34
        <mesh name="PeriodicMesh"/>
 
35
        <mesh_shape>
 
36
          <polynomial_degree>
 
37
            <integer_value rank="0">2</integer_value>
 
38
          </polynomial_degree>
 
39
        </mesh_shape>
 
40
        <stat>
 
41
          <exclude_from_stat/>
 
42
        </stat>
 
43
      </from_mesh>
 
44
    </mesh>
 
45
    <mesh name="PeriodicMesh">
 
46
      <from_mesh>
 
47
        <mesh name="CoordinateMesh"/>
 
48
        <periodic_boundary_conditions name="periodicity">
 
49
          <physical_boundary_ids>
 
50
            <integer_value shape="1" rank="1">1</integer_value>
 
51
          </physical_boundary_ids>
 
52
          <aliased_boundary_ids>
 
53
            <integer_value shape="1" rank="1">2</integer_value>
 
54
          </aliased_boundary_ids>
 
55
          <coordinate_map>
 
56
            <string_value lines="20" type="python">def val(X,t):
57
57
  result = list(X)
58
58
  result[0]=result[0]-1.0
59
59
  return result</string_value>
60
 
                    </coordinate_map>
61
 
                </periodic_boundary_conditions>
62
 
                <stat>
63
 
                    <exclude_from_stat/>
64
 
                </stat>
65
 
            </from_mesh>
66
 
        </mesh>
67
 
        <quadrature>
68
 
            <degree>
69
 
                <integer_value rank="0">4</integer_value>
70
 
            </degree>
71
 
        </quadrature>
72
 
    </geometry>
73
 
    <io>
74
 
        <dump_format>
75
 
            <string_value>vtk</string_value>
76
 
        </dump_format>
77
 
        <dump_period_in_timesteps>
 
60
          </coordinate_map>
 
61
        </periodic_boundary_conditions>
 
62
        <stat>
 
63
          <exclude_from_stat/>
 
64
        </stat>
 
65
      </from_mesh>
 
66
    </mesh>
 
67
    <quadrature>
 
68
      <degree>
 
69
        <integer_value rank="0">4</integer_value>
 
70
      </degree>
 
71
    </quadrature>
 
72
  </geometry>
 
73
  <io>
 
74
    <dump_format>
 
75
      <string_value>vtk</string_value>
 
76
    </dump_format>
 
77
    <dump_period_in_timesteps>
 
78
      <constant>
 
79
        <integer_value rank="0">1</integer_value>
 
80
      </constant>
 
81
    </dump_period_in_timesteps>
 
82
    <output_mesh name="CoordinateMesh"/>
 
83
  </io>
 
84
  <timestepping>
 
85
    <current_time>
 
86
      <real_value rank="0">0</real_value>
 
87
    </current_time>
 
88
    <timestep>
 
89
      <real_value rank="0">0.03125</real_value>
 
90
    </timestep>
 
91
    <theta>
 
92
      <real_value rank="0">0.5</real_value>
 
93
    </theta>
 
94
    <nonlinear_iterations>
 
95
      <integer_value rank="0">1</integer_value>
 
96
    </nonlinear_iterations>
 
97
    <finish_time>
 
98
      <real_value rank="0">1</real_value>
 
99
    </finish_time>
 
100
  </timestepping>
 
101
  <physical_parameters>
 
102
    <gravity>
 
103
      <magnitude>
 
104
        <real_value rank="0">1</real_value>
 
105
      </magnitude>
 
106
      <vector_field name="GravityDirection" rank="1">
 
107
        <prescribed>
 
108
          <mesh name="CoordinateMesh"/>
 
109
          <value name="WholeMesh">
78
110
            <constant>
79
 
                <integer_value rank="0">1</integer_value>
 
111
              <real_value shape="3" dim1="dim" rank="1">0 0 -1</real_value>
80
112
            </constant>
81
 
        </dump_period_in_timesteps>
82
 
        <output_mesh name="CoordinateMesh"/>
83
 
    </io>
84
 
    <timestepping>
85
 
        <current_time>
 
113
          </value>
 
114
          <output/>
 
115
          <stat>
 
116
            <include_in_stat/>
 
117
          </stat>
 
118
          <detectors>
 
119
            <exclude_from_detectors/>
 
120
          </detectors>
 
121
          <adjoint_storage>
 
122
            <exists_in_forward/>
 
123
          </adjoint_storage>
 
124
        </prescribed>
 
125
      </vector_field>
 
126
    </gravity>
 
127
  </physical_parameters>
 
128
  <material_phase name="Fluid">
 
129
    <vector_field name="Velocity" rank="1">
 
130
      <prognostic>
 
131
        <mesh name="VelocityMesh"/>
 
132
        <equation name="ShallowWater"/>
 
133
        <spatial_discretisation>
 
134
          <discontinuous_galerkin>
 
135
            <advection_scheme>
 
136
              <none/>
 
137
            </advection_scheme>
 
138
          </discontinuous_galerkin>
 
139
        </spatial_discretisation>
 
140
        <temporal_discretisation>
 
141
          <relaxation>
 
142
            <real_value rank="0">1.0</real_value>
 
143
          </relaxation>
 
144
        </temporal_discretisation>
 
145
        <solver>
 
146
          <iterative_method name="preonly"/>
 
147
          <preconditioner name="lu"/>
 
148
          <relative_error>
 
149
            <real_value rank="0">1e-07</real_value>
 
150
          </relative_error>
 
151
          <max_iterations>
 
152
            <integer_value rank="0">500</integer_value>
 
153
          </max_iterations>
 
154
          <never_ignore_solver_failures/>
 
155
          <diagnostics>
 
156
            <monitors/>
 
157
          </diagnostics>
 
158
        </solver>
 
159
        <initial_condition name="WholeMesh">
 
160
          <python>
 
161
            <string_value lines="20" type="python">def val(X, t):
 
162
  import shallow_water_optimisation_bounds as constants
 
163
  return constants.u_exact(X[0], t)</string_value>
 
164
          </python>
 
165
        </initial_condition>
 
166
        <output/>
 
167
        <convergence>
 
168
          <include_in_convergence/>
 
169
        </convergence>
 
170
        <detectors>
 
171
          <include_in_detectors/>
 
172
        </detectors>
 
173
        <steady_state>
 
174
          <include_in_steady_state/>
 
175
        </steady_state>
 
176
        <consistent_interpolation/>
 
177
      </prognostic>
 
178
    </vector_field>
 
179
    <scalar_field name="LayerThickness" rank="0">
 
180
      <prognostic>
 
181
        <mesh name="PressureMesh"/>
 
182
        <spatial_discretisation>
 
183
          <continuous_galerkin>
 
184
            <advection_terms>
 
185
              <exclude_advection_terms/>
 
186
            </advection_terms>
 
187
          </continuous_galerkin>
 
188
          <conservative_advection>
86
189
            <real_value rank="0">0</real_value>
87
 
        </current_time>
88
 
        <timestep>
89
 
            <real_value rank="0">0.03125</real_value>
90
 
        </timestep>
91
 
        <nonlinear_iterations>
92
 
            <integer_value rank="0">1</integer_value>
93
 
        </nonlinear_iterations>
94
 
        <finish_time>
95
 
            <real_value rank="0">1</real_value>
96
 
        </finish_time>
97
 
    </timestepping>
98
 
    <physical_parameters>
99
 
        <gravity>
100
 
            <magnitude>
101
 
                <real_value rank="0">1</real_value>
102
 
            </magnitude>
103
 
            <vector_field name="GravityDirection" rank="1">
104
 
                <prescribed>
105
 
                    <mesh name="CoordinateMesh"/>
106
 
                    <value name="WholeMesh">
107
 
                        <constant>
108
 
                            <real_value rank="1" shape="3" dim1="dim">0 0 -1</real_value>
109
 
                        </constant>
110
 
                    </value>
111
 
                    <output/>
112
 
                    <stat>
113
 
                        <include_in_stat/>
114
 
                    </stat>
115
 
                    <detectors>
116
 
                        <exclude_from_detectors/>
117
 
                    </detectors>
118
 
                    <adjoint_storage>
119
 
                        <exists_in_forward/>
120
 
                    </adjoint_storage>
121
 
                </prescribed>
122
 
            </vector_field>
123
 
        </gravity>
124
 
    </physical_parameters>
125
 
    <material_phase name="Fluid">
126
 
        <vector_field name="Velocity" rank="1">
127
 
            <prognostic>
128
 
                <mesh name="VelocityMesh"/>
129
 
                <equation name="ShallowWater"/>
130
 
                <spatial_discretisation>
131
 
                    <discontinuous_galerkin>
132
 
                        <advection_scheme>
133
 
                            <none/>
134
 
                        </advection_scheme>
135
 
                    </discontinuous_galerkin>
136
 
                    <conservative_advection>
137
 
                        <real_value rank="0">0</real_value>
138
 
                    </conservative_advection>
139
 
                </spatial_discretisation>
140
 
                <solver>
141
 
                    <iterative_method name="preonly"/>
142
 
                    <preconditioner name="lu"/>
143
 
                    <relative_error>
144
 
                        <real_value rank="0">1e-07</real_value>
145
 
                    </relative_error>
146
 
                    <max_iterations>
147
 
                        <integer_value rank="0">500</integer_value>
148
 
                    </max_iterations>
149
 
                    <never_ignore_solver_failures/>
150
 
                    <diagnostics>
151
 
                        <monitors/>
152
 
                    </diagnostics>
153
 
                </solver>
154
 
                <initial_condition name="WholeMesh">
155
 
                    <python>
156
 
                        <string_value lines="20" type="python">def val(X, t):
157
 
  import shallow_water_optimisation_bounds as constants
158
 
  return constants.u_exact(X[0], t)</string_value>
159
 
                    </python>
160
 
                </initial_condition>
161
 
                <output/>
162
 
                <stat>
163
 
                    <include_in_stat/>
164
 
                    <previous_time_step>
165
 
                        <exclude_from_stat/>
166
 
                    </previous_time_step>
167
 
                    <nonlinear_field>
168
 
                        <exclude_from_stat/>
169
 
                    </nonlinear_field>
170
 
                </stat>
171
 
                <convergence>
172
 
                    <include_in_convergence/>
173
 
                </convergence>
174
 
                <detectors>
175
 
                    <include_in_detectors/>
176
 
                </detectors>
177
 
                <steady_state>
178
 
                    <include_in_steady_state/>
179
 
                </steady_state>
180
 
                <consistent_interpolation/>
181
 
            </prognostic>
182
 
        </vector_field>
183
 
        <scalar_field name="LayerThickness" rank="0">
184
 
            <prognostic>
185
 
                <mesh name="PressureMesh"/>
186
 
                <spatial_discretisation>
187
 
                    <continuous_galerkin>
188
 
                        <advection_terms>
189
 
                            <exclude_advection_terms/>
190
 
                        </advection_terms>
191
 
                    </continuous_galerkin>
192
 
                    <conservative_advection>
193
 
                        <real_value rank="0">0</real_value>
194
 
                    </conservative_advection>
195
 
                </spatial_discretisation>
196
 
                <temporal_discretisation>
197
 
                    <theta>
198
 
                        <real_value rank="0">0.5</real_value>
199
 
                    </theta>
200
 
                    <relaxation>
201
 
                        <real_value rank="0">1</real_value>
202
 
                    </relaxation>
203
 
                </temporal_discretisation>
204
 
                <solver>
205
 
                    <iterative_method name="preonly"/>
206
 
                    <preconditioner name="lu"/>
207
 
                    <relative_error>
208
 
                        <real_value rank="0">1e-07</real_value>
209
 
                    </relative_error>
210
 
                    <max_iterations>
211
 
                        <integer_value rank="0">500</integer_value>
212
 
                    </max_iterations>
213
 
                    <never_ignore_solver_failures/>
214
 
                    <cache_solver_context/>
215
 
                    <diagnostics>
216
 
                        <monitors/>
217
 
                    </diagnostics>
218
 
                </solver>
219
 
                <initial_condition name="WholeMesh">
220
 
                    <python>
221
 
                        <string_value lines="20" type="python">def val(X, t):
 
190
          </conservative_advection>
 
191
        </spatial_discretisation>
 
192
        <temporal_discretisation/>
 
193
        <solver>
 
194
          <iterative_method name="preonly"/>
 
195
          <preconditioner name="lu"/>
 
196
          <relative_error>
 
197
            <real_value rank="0">1e-07</real_value>
 
198
          </relative_error>
 
199
          <max_iterations>
 
200
            <integer_value rank="0">500</integer_value>
 
201
          </max_iterations>
 
202
          <never_ignore_solver_failures/>
 
203
          <cache_solver_context/>
 
204
          <diagnostics>
 
205
            <monitors/>
 
206
          </diagnostics>
 
207
        </solver>
 
208
        <initial_condition name="WholeMesh">
 
209
          <python>
 
210
            <string_value lines="20" type="python">def val(X, t):
222
211
  import shallow_water_optimisation_bounds as constants
223
212
  #return constants.eta_exact(X[0], t)
224
213
  # Instead of prescribing the exact eta we will optimise to it
225
214
  return 0.0</string_value>
226
 
                    </python>
227
 
                </initial_condition>
228
 
                <mean_layer_thickness>
229
 
                    <real_value rank="0">1</real_value>
230
 
                </mean_layer_thickness>
231
 
                <output/>
232
 
                <stat/>
233
 
                <consistent_interpolation/>
234
 
            </prognostic>
235
 
        </scalar_field>
236
 
        <scalar_field name="AnalyticalLayerThickness" rank="0">
237
 
            <prescribed>
238
 
                <mesh name="PressureMesh"/>
239
 
                <value name="WholeMesh">
240
 
                    <python>
241
 
                        <string_value lines="20" type="python">def val(X,t):
 
215
          </python>
 
216
        </initial_condition>
 
217
        <mean_layer_thickness>
 
218
          <real_value rank="0">1</real_value>
 
219
        </mean_layer_thickness>
 
220
        <output/>
 
221
        <stat/>
 
222
        <consistent_interpolation/>
 
223
      </prognostic>
 
224
    </scalar_field>
 
225
    <scalar_field name="AnalyticalLayerThickness" rank="0">
 
226
      <prescribed>
 
227
        <mesh name="PressureMesh"/>
 
228
        <value name="WholeMesh">
 
229
          <python>
 
230
            <string_value lines="20" type="python">def val(X,t):
242
231
 import shallow_water_optimisation_bounds as constants
243
232
 x=X[0]
244
233
 return constants.eta_exact(x, t)</string_value>
245
 
                    </python>
246
 
                </value>
247
 
                <output/>
248
 
                <stat/>
249
 
                <detectors>
250
 
                    <exclude_from_detectors/>
251
 
                </detectors>
252
 
                <adjoint_storage>
253
 
                    <exists_in_forward/>
254
 
                </adjoint_storage>
255
 
            </prescribed>
256
 
        </scalar_field>
257
 
        <scalar_field name="LayerThicknessError" rank="0">
258
 
            <diagnostic>
259
 
                <algorithm name="scalar_difference" source_field_2_type="scalar" source_field_1_name="LayerThickness" source_field_2_name="AnalyticalLayerThickness" material_phase_support="single" source_field_1_type="scalar">
260
 
                    <absolute_difference/>
261
 
                </algorithm>
262
 
                <mesh name="PressureMesh"/>
263
 
                <output/>
264
 
                <stat/>
265
 
                <convergence>
266
 
                    <include_in_convergence/>
267
 
                </convergence>
268
 
                <detectors>
269
 
                    <include_in_detectors/>
270
 
                </detectors>
271
 
                <steady_state>
272
 
                    <include_in_steady_state/>
273
 
                </steady_state>
274
 
                <adjoint_storage>
275
 
                    <exists_in_forward/>
276
 
                </adjoint_storage>
277
 
            </diagnostic>
278
 
        </scalar_field>
279
 
        <scalar_field name="InitEta_UpperBound" rank="0">
280
 
            <prescribed>
281
 
                <mesh name="PressureMesh"/>
282
 
                <value name="WholeMesh">
283
 
                    <constant>
284
 
                        <real_value rank="0">1.1</real_value>
285
 
                    </constant>
286
 
                </value>
287
 
                <output/>
288
 
                <stat/>
289
 
                <detectors>
290
 
                    <exclude_from_detectors/>
291
 
                </detectors>
292
 
                <adjoint_storage>
293
 
                    <exists_in_forward/>
294
 
                </adjoint_storage>
295
 
            </prescribed>
296
 
        </scalar_field>
297
 
        <scalar_field name="InitEta_LowerBound" rank="0">
298
 
            <prescribed>
299
 
                <mesh name="PressureMesh"/>
300
 
                <value name="WholeMesh">
301
 
                    <constant>
302
 
                        <real_value rank="0">-1.1</real_value>
303
 
                    </constant>
304
 
                </value>
305
 
                <output/>
306
 
                <stat/>
307
 
                <detectors>
308
 
                    <exclude_from_detectors/>
309
 
                </detectors>
310
 
                <adjoint_storage>
311
 
                    <exists_in_forward/>
312
 
                </adjoint_storage>
313
 
            </prescribed>
314
 
        </scalar_field>
315
 
        <vector_field name="AnalyticalVelocity" rank="1">
316
 
            <prescribed>
317
 
                <mesh name="VelocityMesh"/>
318
 
                <value name="WholeMesh">
319
 
                    <python>
320
 
                        <string_value lines="20" type="python">def val(X,t):
 
234
          </python>
 
235
        </value>
 
236
        <output/>
 
237
        <stat/>
 
238
        <detectors>
 
239
          <exclude_from_detectors/>
 
240
        </detectors>
 
241
        <adjoint_storage>
 
242
          <exists_in_forward/>
 
243
        </adjoint_storage>
 
244
      </prescribed>
 
245
    </scalar_field>
 
246
    <scalar_field name="LayerThicknessError" rank="0">
 
247
      <diagnostic>
 
248
        <algorithm source_field_2_type="scalar" name="scalar_difference" source_field_1_name="LayerThickness" source_field_2_name="AnalyticalLayerThickness" material_phase_support="single" source_field_1_type="scalar">
 
249
          <absolute_difference/>
 
250
        </algorithm>
 
251
        <mesh name="PressureMesh"/>
 
252
        <output/>
 
253
        <stat/>
 
254
        <convergence>
 
255
          <include_in_convergence/>
 
256
        </convergence>
 
257
        <detectors>
 
258
          <include_in_detectors/>
 
259
        </detectors>
 
260
        <steady_state>
 
261
          <include_in_steady_state/>
 
262
        </steady_state>
 
263
        <adjoint_storage>
 
264
          <exists_in_forward/>
 
265
        </adjoint_storage>
 
266
      </diagnostic>
 
267
    </scalar_field>
 
268
    <scalar_field name="InitEta_UpperBound" rank="0">
 
269
      <prescribed>
 
270
        <mesh name="PressureMesh"/>
 
271
        <value name="WholeMesh">
 
272
          <constant>
 
273
            <real_value rank="0">1.1</real_value>
 
274
          </constant>
 
275
        </value>
 
276
        <output/>
 
277
        <stat/>
 
278
        <detectors>
 
279
          <exclude_from_detectors/>
 
280
        </detectors>
 
281
        <adjoint_storage>
 
282
          <exists_in_forward/>
 
283
        </adjoint_storage>
 
284
      </prescribed>
 
285
    </scalar_field>
 
286
    <scalar_field name="InitEta_LowerBound" rank="0">
 
287
      <prescribed>
 
288
        <mesh name="PressureMesh"/>
 
289
        <value name="WholeMesh">
 
290
          <constant>
 
291
            <real_value rank="0">-1.1</real_value>
 
292
          </constant>
 
293
        </value>
 
294
        <output/>
 
295
        <stat/>
 
296
        <detectors>
 
297
          <exclude_from_detectors/>
 
298
        </detectors>
 
299
        <adjoint_storage>
 
300
          <exists_in_forward/>
 
301
        </adjoint_storage>
 
302
      </prescribed>
 
303
    </scalar_field>
 
304
    <vector_field name="AnalyticalVelocity" rank="1">
 
305
      <prescribed>
 
306
        <mesh name="VelocityMesh"/>
 
307
        <value name="WholeMesh">
 
308
          <python>
 
309
            <string_value lines="20" type="python">def val(X,t):
321
310
 import shallow_water_optimisation_bounds as constants
322
311
 x = X[0]
323
312
 return constants.u_exact(x, t)</string_value>
324
 
                    </python>
325
 
                </value>
326
 
                <output/>
327
 
                <stat>
328
 
                    <include_in_stat/>
329
 
                </stat>
330
 
                <detectors>
331
 
                    <exclude_from_detectors/>
332
 
                </detectors>
333
 
                <adjoint_storage>
334
 
                    <exists_in_forward/>
335
 
                </adjoint_storage>
336
 
            </prescribed>
337
 
        </vector_field>
338
 
        <vector_field name="VelocityError" rank="1">
339
 
            <diagnostic>
340
 
                <algorithm name="vector_difference" source_field_2_type="vector" source_field_1_name="Velocity" source_field_2_name="AnalyticalVelocity" material_phase_support="single" source_field_1_type="vector">
341
 
                    <absolute_difference/>
342
 
                </algorithm>
343
 
                <mesh name="VelocityMesh"/>
344
 
                <output/>
345
 
                <stat>
346
 
                    <include_in_stat/>
347
 
                </stat>
348
 
                <convergence>
349
 
                    <include_in_convergence/>
350
 
                </convergence>
351
 
                <detectors>
352
 
                    <include_in_detectors/>
353
 
                </detectors>
354
 
                <steady_state>
355
 
                    <include_in_steady_state/>
356
 
                </steady_state>
357
 
                <adjoint_storage>
358
 
                    <exists_in_forward/>
359
 
                </adjoint_storage>
360
 
            </diagnostic>
361
 
        </vector_field>
362
 
    </material_phase>
363
 
    <adjoint>
364
 
        <functional name="integral_eta_t1">
365
 
            <functional_value>
366
 
                <algorithm name="functional_value">
367
 
                    <string_value lines="20" type="python">J = 0.0
 
313
          </python>
 
314
        </value>
 
315
        <output/>
 
316
        <stat>
 
317
          <include_in_stat/>
 
318
        </stat>
 
319
        <detectors>
 
320
          <exclude_from_detectors/>
 
321
        </detectors>
 
322
        <adjoint_storage>
 
323
          <exists_in_forward/>
 
324
        </adjoint_storage>
 
325
      </prescribed>
 
326
    </vector_field>
 
327
    <vector_field name="VelocityError" rank="1">
 
328
      <diagnostic>
 
329
        <algorithm source_field_2_type="vector" name="vector_difference" source_field_1_name="Velocity" source_field_2_name="AnalyticalVelocity" material_phase_support="single" source_field_1_type="vector">
 
330
          <absolute_difference/>
 
331
        </algorithm>
 
332
        <mesh name="VelocityMesh"/>
 
333
        <output/>
 
334
        <stat>
 
335
          <include_in_stat/>
 
336
        </stat>
 
337
        <convergence>
 
338
          <include_in_convergence/>
 
339
        </convergence>
 
340
        <detectors>
 
341
          <include_in_detectors/>
 
342
        </detectors>
 
343
        <steady_state>
 
344
          <include_in_steady_state/>
 
345
        </steady_state>
 
346
        <adjoint_storage>
 
347
          <exists_in_forward/>
 
348
        </adjoint_storage>
 
349
      </diagnostic>
 
350
    </vector_field>
 
351
  </material_phase>
 
352
  <adjoint>
 
353
    <functional name="integral_eta_t1">
 
354
      <functional_value>
 
355
        <algorithm name="functional_value">
 
356
          <string_value lines="20" type="python">J = 0.0
368
357
T = 1.0 # the time at which to evaluate
369
358
if time &lt; T &lt;= time+dt:
370
359
  import numpy
387
376
    mass = t.shape_shape(shape, shape)
388
377
    nodes = eta_prev.ele_nodes(ele)
389
378
    J = J + numpy.dot(tmp_eta[nodes], numpy.dot(mass, tmp_eta[nodes]))</string_value>
390
 
                </algorithm>
391
 
                <reduction>
392
 
                    <sum/>
393
 
                </reduction>
394
 
            </functional_value>
395
 
            <functional_dependencies>
396
 
                <algorithm name="functional_dependencies">
397
 
                    <string_value lines="20" type="python">def dependencies(times, timestep):
 
379
        </algorithm>
 
380
        <reduction>
 
381
          <sum/>
 
382
        </reduction>
 
383
      </functional_value>
 
384
      <functional_dependencies>
 
385
        <algorithm name="functional_dependencies">
 
386
          <string_value lines="20" type="python">def dependencies(times, timestep):
398
387
  if times[0] &lt; 1.0 &lt;= times[1]:
399
388
    return {"Fluid::Coordinate": [0],
400
389
            "Fluid::LayerThickness": [timestep-1, timestep],
402
391
            }
403
392
  else:
404
393
    return {}</string_value>
405
 
                </algorithm>
406
 
            </functional_dependencies>
407
 
        </functional>
408
 
        <controls>
409
 
            <control name="InitEta">
410
 
                <type name="initial_condition" field_name="Fluid::LayerThickness"/>
411
 
                <bounds>
412
 
                    <upper_bound field_name="Fluid::InitEta_UpperBound"/>
413
 
                    <lower_bound field_name="Fluid::InitEta_LowerBound"/>
414
 
                </bounds>
415
 
            </control>
416
 
            <load_controls/>
417
 
        </controls>
418
 
        <debug>
419
 
            <html_output/>
420
 
        </debug>
421
 
    </adjoint>
 
394
        </algorithm>
 
395
      </functional_dependencies>
 
396
    </functional>
 
397
    <controls>
 
398
      <control name="InitEta">
 
399
        <type field_name="Fluid::LayerThickness" name="initial_condition"/>
 
400
        <bounds>
 
401
          <upper_bound field_name="Fluid::InitEta_UpperBound"/>
 
402
          <lower_bound field_name="Fluid::InitEta_LowerBound"/>
 
403
        </bounds>
 
404
      </control>
 
405
      <load_controls/>
 
406
    </controls>
 
407
    <debug>
 
408
      <html_output/>
 
409
    </debug>
 
410
  </adjoint>
422
411
</shallow_water_options>
 
 
b'\\ No newline at end of file'