~skimura04/fluidity/fluidityDGSlope

2867 by slm06
Initial commit of simple femtools based model, for use with the OASIS coupler.
1
include "spud_base.rnc"
2
3
include "adaptivity_options.rnc"
4
include "diagnostic_algorithms.rnc"
5
include "input_output.rnc"
6
include "solvers.rnc"
7
include "stabilisation.rnc"
8
include "reduced_model.rnc"
9
include "mesh_options.rnc"
10
include "physical_parameters.rnc"
11
include "prognostic_field_options.rnc"
12
include "prescribed_field_options.rnc"
13
include "spatial_discretisation.rnc"
14
include "temporal_discretisation.rnc"
15
16
start =
17
   (
18
      ## The root node of the options dictionary.
19
      element test_coupler {
20
         comment,
21
         ## Model output files are named according to the simulation
22
         ## name, e.g. [simulation_name]_0.vtu. Non-standard
23
         ## characters in the simulation name should be avoided.
24
         element simulation_name {
25
            anystring
26
         },
27
         geometry,
28
         io,
3434 by Simon Mouradian
Updates to the test_coupler code .cml files. Test to be updated, soon.
29
         material_phase,
30
         coupling_options?
2867 by slm06
Initial commit of simple femtools based model, for use with the OASIS coupler.
31
         }
32
   )
33
3434 by Simon Mouradian
Updates to the test_coupler code .cml files. Test to be updated, soon.
34
coupling_options =
35
   (
36
      ## These options activate coupling of Fluidity with OASIS.
37
      ## NB: Currently only works in 2D
38
      element coupling {
39
         ## Number of elements in longitude and latitude dimension respectively
40
         element element_count { integer_dim_vector },
41
 ## The minimum and maximum longitude of the coupled domain
42
 element longitude_extent { real_dim_vector },
43
 ## The minimum and maximum latitude of the coupled domain
44
 element latitude_extent { real_dim_vector}
45
      }?
46
   )
47
2867 by slm06
Initial commit of simple femtools based model, for use with the OASIS coupler.
48
geometry = 
49
   (
50
      ## Options dealing with the specification of geometry
51
      element geometry {
52
         ## Dimension of the problem.
53
         ## <b>This can only be set once</b>
54
         element dimension {
55
            element integer_value {
56
               attribute rank {"0"},
57
               ("3"|"2")
58
            }
59
         },
60
         ## The position mesh
61
         element mesh {
62
            attribute name { "CoordinateMesh" },
63
            mesh_info_fromfile
64
         },
65
         ## The tracer mesh
66
         element mesh {
67
            attribute name { "TracerMesh" },
68
            mesh_info_frommesh
69
         },
70
         ## Quadrature
71
         element quadrature {
72
            ## Quadrature degree
73
            ## 
74
            ## note: this specifies the degree of quadrature,
75
            ## not the number of gauss points
76
            element degree {
77
               integer
78
            },
79
            ## Surface quadrature degree
80
            ## 
81
            ## note: this specifies the degree of surface
82
            ## quadrature not the number of surface gauss points
83
            element surface_degree {
84
               integer
85
            }?
86
         }
87
      }
88
   )
89
90
mesh_choice_coordinate = 
91
   (
92
      element mesh {
93
         attribute name { "CoordinateMesh" }
94
       }
95
   )
96
97
mesh_choice = 
98
   (
99
      (
100
         element mesh {
101
            attribute name { "TracerMesh" }
102
         }|
103
         element mesh {
104
            attribute name { "CoordinateMesh" }
105
         }
106
      )
107
   )
108
109
mesh_info_fromfile =
110
   (
111
      ## Read mesh from file.
112
      element from_file {
113
         (
114
            ## Triangle mesh format.
115
            ##
116
            ## Enter the base name without the .edge .ele, .face or
117
            ## .node extensions, and without process numbers.
118
            element format {
119
              attribute name { "triangle" },
120
              comment
121
            }|
122
            ## Read the mesh from a vtu. Note that the mesh will have no 
123
            ## surface or region IDs.
124
            element format {
125
              attribute name { "vtu" },
126
              comment
127
            }|
128
            ## GMSH mesh format
129
            element format {
130
               attribute name { "gmsh" },
131
               comment
132
            }
133
         ),
134
         attribute file_name { xsd:string },
135
         from_file_mesh_stat_options,
136
         comment
137
      }
138
   )
139
140
mesh_info_frommesh =
141
   (
142
      ## Make mesh from existing mesh. 
143
      element from_mesh {
144
         mesh_choice_coordinate,
145
         element mesh_shape {
146
            element polynomial_degree {
147
               integer
148
            }?,
149
            element element_type {
150
              element string_value{
151
                 "lagrangian"
152
              }
153
            }?
154
         }?,
155
         derived_mesh_stat_options,
156
         comment
157
      }
158
   )
159
160
material_phase = 
161
   (
162
         ## The material phase options
163
         element material_phase {
164
            attribute name { "Fluid" },
165
            element scalar_field {
166
               attribute rank { "0" },
167
               attribute name { "Tracer" },
168
               element prognostic {
169
                  element mesh {
170
                     attribute name { "TracerMesh" }      
171
                  },
172
                  initial_condition_scalar,
173
                  element stat { comment },
174
                  element scalar_field {
175
                     attribute name { "Source" },
176
                     attribute rank { "0" },
177
                     element prescribed {
178
                        prescribed_scalar_field_no_adapt,
179
                        recalculation_options?
180
                     }
181
                  }?,
182
                  # If enabled, save the right hand side of the discrete equations.
183
                  element scalar_field {
184
                     attribute name { "Rhs" },
185
                     attribute rank { "0" },
186
                     element diagnostic {
187
                        empty
188
                     }
189
                  }?
190
               }
191
            },
192
            ## Prescribed or diagnostic scalar fields.
193
            element scalar_field {
194
              attribute rank { "0" },
195
              attribute name { string },
196
              (
197
                 element prescribed {
198
                    mesh_choice,
199
                    prescribed_scalar_field_no_adapt,
200
                    recalculation_options?
201
                 }|
202
                 element diagnostic {
203
                    mesh_choice,
204
                    diagnostic_scalar_field
205
                 }
206
              )
207
            }*
208
         }
209
   )
210
211
boundary_conditions = 
212
   (
213
         ## Boundary conditions
214
         element boundary_conditions {
215
            attribute name { string },
216
            ## Surface id
217
            element surface_ids {
218
               integer_vector
219
            },
220
            element type {
221
               attribute name { "dirichlet" },
222
               input_choice_real
223
            }
224
         }
225
   )
226
227
prescribed_output_options = empty
228
prescribed_detector_options = empty
229
prescribed_scalar_stat_options = empty
230
discrete_properties_algorithm_scalar = empty
231
recalculation_options =                                                                                                                                                                                                                      
232
   (
233
      ## Prevent this field from being recalculated at every timestep.
234
      ## This is cheaper especially if you are enforcing discrete properties on the field.
235
      element do_not_recalculate {
236
        empty
237
      }
238
   )
239
240
diagnostic_scalar_field =
241
   (
242
      scalar_python_diagnostic_algorithm,
243
      element stat { comment },
244
      recalculation_options?
245
   )
246
247
io =
248
   ## Options to do with I/O
249
   element io {
250
     ## Dump format
251
     element dump_format { "vtk" },
252
     ## Dump period, in timesteps. Defaults to 1
253
     element dump_period_in_timesteps { 
254
       element constant { integer }
255
     }?,
256
     (
257
        ## The mesh on to which all the fields will be
258
        ## interpolated for VTK output.
259
        element output_mesh {
260
           attribute name { "VelocityMesh" }
261
        }|
262
        ## The mesh on to which all the fields will be
263
        ## interpolated for VTK output.
264
        element output_mesh {
265
           attribute name { xsd:string }
266
        }
267
     )
268
  }