1
include "spud_base.rnc"
3
include "adaptivity_options.rnc"
4
include "diagnostic_algorithms.rnc"
5
include "input_output.rnc"
7
include "stabilisation.rnc"
11
## The root node of the options dictionary.
12
element shallow_water_options {
14
## Model output files are named according to the simulation
15
## name, e.g. [simulation_name]_0.vtu. Non-standard
16
## characters in the simulation name should be avoided.
17
element simulation_name {
20
## Options dealing with the specification of geometry
22
## Dimension of the problem.
23
## <b>This can only be set once</b>
25
attribute replaces {"NDIM"},
26
element integer_value {
33
attribute name { "CoordinateMesh" },
38
attribute name { "VelocityMesh" },
43
attribute name { "PressureMesh" },
47
attribute name { xsd:string },
49
element exclude_from_mesh_adaptivity{empty}?
55
## note: this specifies the degree of quadrature,
56
## not the number of gauss points
58
attribute replaces {"NGI"},
61
## Surface quadrature degree
63
## note: this specifies the degree of surface
64
## quadrature not the number of surface gauss points
65
element surface_degree {
66
attribute replaces {"SNGI"},
69
## Select which family of quadrature rules to use.
70
## The default is family_cools.
71
## family_wandzura allows for degree up to 30
72
## on triangular meshes.
73
## family_grundmann_moeller allows for degree up to
74
## 29 on simplicial meshes in arbitrary dimension.
75
element quadrature_family {
76
( "family_cools" | "family_grundmann_moeller" | "family_wandzura" )
80
## Input/output options
82
## Format for dump files. Only vtk for now.
89
## Period between dumps in time units.
91
## Specifies the period between each dump of the solution to disk.
92
## A value of 0.0 indicates that there would be a dump at every timestep.
96
attribute replaces {"TIMDUM"},
99
## Python function prescribing real input. Functions should be of the form:
103
## return # Return value
107
attribute replaces {"TIMDUM"},
112
## Dump period, in timesteps.
114
## Specifies the number of timesteps between each dump of the solution to disk.
115
## A value of 0 indicates a dump at every timestep.
116
element dump_period_in_timesteps {
121
## Python function prescribing integer input. Functions should be of the form:
125
## return # Return value
134
# every CPUDUM seconds write results to disc.
135
## This is usually disabled.
136
element cpu_dump_period {
137
attribute replaces {"CPUDUM"},
140
## The period between dumps in walltime seconds. This is usually disabled.
141
element wall_time_dump_period {
142
attribute replaces {"WTIDUM"},
146
## The mesh on to which all the fields will be
147
## interpolated for VTK output.
148
element output_mesh {
149
attribute name { "VelocityMesh" }
151
## The mesh on to which all the fields will be
152
## interpolated for VTK output.
153
element output_mesh {
154
attribute name { "PressureMesh" }
156
## The mesh on to which all the fields will be
157
## interpolated for VTK output.
158
element output_mesh {
159
attribute name { "CoordinateMesh" }
161
## The mesh on to which all the fields will be
162
## interpolated for VTK output.
163
element output_mesh {
164
attribute name { xsd:string }
168
## Options dealing with time discretisation
169
element timestepping {
170
## Current simulation time. At the start of the simulation this
171
## is the start time.
172
element current_time {
173
attribute replaces {"ACCTIM"},
175
## The following excerpt from the Udunits
176
## documentation explains the time unit encoding by
179
## The specification:
181
## seconds since 1992-10-8 15:15:42.5 -6:00
183
## indicates seconds since October 8th, 1992 at 3
184
## hours, 15 minutes and 42.5 seconds in the afternoon
185
## in the time zone which is six hours to the west of
186
## Coordinated Universal Time (i.e. Mountain Daylight
187
## Time). The time zone specification can also be
188
## written without a colon using one or two-digits
189
## (indicating hours) or three or four digits
190
## (indicating hours and minutes).
192
## Time units are particularly required in situations
193
## where the problem (time-varying) boundary conditions
194
## and/ initial conditions are a function of time as
195
## defined by a calendar. Examples include atmospheric
196
## forcing and climatology. The current time, specified
197
## above, is zero at the reference data/time.
198
element time_units{attribute date { xsd:string }}?
200
## The time step size. If adaptive time stepping is used
201
## then this is the initial time step size.
203
attribute replaces {"DT"},
206
## How many nonlinear iterations in the timestepping loop
207
element nonlinear_iterations {
208
attribute replaces {"ITINOI"},
211
## Simulation time at which the simulation should end.
212
element finish_time {
213
attribute replaces {"LTIME"},
216
## Timestep after which the simulation should end.
217
element final_timestep {
220
## Maximum CPU time (secs) taken up before
221
## simulation terminates writing results to disc.
223
## Manual suggests 1.E+20
224
element cpu_time_limit {
225
attribute replaces {"CPULIM"},
228
## Maximum wall time (secs) taken up before
229
## simulation terminates writing results to disc.
231
## This is usually disabled.
232
element wall_time_limit {
233
attribute replaces {"WATIME"},
237
## The physical parameters
238
element physical_parameters {
239
## Set a gravity to be included in the buoyancy term.
241
## Acceleration due to gravity. 9.8 m/s^2 on earth.
243
attribute replaces { "GRAVTY" },
248
attribute replaces { "OPTOME" },
250
## f-plane approximation
251
## This means the Coriolis force looks like:
253
## where k is the z unit vector
254
## and u the velocity vector
257
attribute replaces { "OPTOME = 0" },
258
## f-plane approximation
259
## This means the Coriolis force looks like:
261
## where k is the z unit vector
262
## and u the velocity vector
265
attribute replaces {"OMEGA" },
269
## Beta-plane approximation
270
## This means the Coriolis force looks like:
272
## where k is the z unit vector
273
## and u the velocity vector
274
## and f=f_0+beta . (x,y,z)
276
attribute replaces { "OPTOME = 1" },
277
## Beta-plane approximation
278
## This means the Coriolis force looks like:
280
## where k is the z unit vector
281
## and u the velocity vector
282
## and f=f_0+beta . (x,y,z)
284
attribute replaces {"OMEGA" },
287
## Beta-plane approximation
288
## This means the Coriolis force looks like:
290
## where k is the z unit vector
291
## and u the velocity vector
292
## and f=f_0+beta . (x,y,z)
293
## usually only the y-component of beta is non-zero
295
attribute replaces {"OMEGA1 OMEGA2 OMEGA3" },
302
## The material or phase options
303
element material_phase {
304
attribute name { "Fluid" },
306
## Velocity vector and momentum options
307
element vector_field {
308
attribute rank { "1" },
309
attribute name { "Velocity" },
314
attribute name { "VelocityMesh" }
316
prognostic_velocity_field
320
attribute name { "VelocityMesh" }
322
prescribed_vector_field
325
attribute material_phase_name { xsd:string },
326
attribute field_name {"Velocity" }
330
## Free surface elevation
331
element scalar_field {
332
attribute rank { "0" },
333
attribute name { "LayerThickness" },
335
pressure_mesh_choice,
336
prognostic_layerthickness_field
339
scalar_field_choice*,
341
#tensor_field_choice*
344
element mesh_adaptivity {
347
prescribed_adaptivity
352
element check_inverse_coriolis_matrix {
355
element check_wave_matrix {
358
element check_solution {
365
scalar_field_choice =
367
# The first is a generic field, which may be used for any user-defined field
368
# that FLUIDITY knows nothing about, or a generic diagnostic
370
element scalar_field {
371
attribute rank { "0" },
372
attribute name { xsd:string },
376
velocity_mesh_choice,
377
prognostic_scalar_field
380
velocity_mesh_choice,
381
prescribed_scalar_field
384
scalar_diagnostic_algorithms,
385
velocity_mesh_choice,
386
diagnostic_scalar_field
391
element scalar_field {
392
attribute rank { "0" },
393
attribute name { "Tracer" },
394
attribute replaces { "IDENT = 666" },
396
velocity_mesh_choice,
397
prognostic_scalar_field
402
## See http://amcg.ese.ic.ac.uk/index.php?title=Local:Diagnostics#CFL_Number
404
## Adapting to this field is not recommended
405
element scalar_field {
406
attribute rank { "0" },
407
attribute name { "CFLNumber" },
408
attribute replaces { "IDENT = -601" },
412
velocity_mesh_choice,
413
diagnostic_scalar_field
420
# Choice of input method, e.g. for boundary conditions
423
input_choice_real_contents
426
input_choice_real_plus_boundary_forcing =
428
input_choice_real_contents|
431
attribute file_name { string },
432
attribute variable_name_amplitude { string },
433
attribute variable_name_phase { string },
434
## See E.W. Schwiderski - Rev. Geophys. Space
435
## Phys. Vol. 18 No. 1 pp. 243--268, 1980
436
## for details of these constituent.
437
attribute name {"M2"|"S2"|"N2"|"K2"|"K1"|"O1"|"P1"|"Q1"|"Mf"|"Mm"|"Ssa"}
442
input_choice_real_plus_file =
444
input_choice_real_contents|
445
## Initialise the field from an existing file (indended primarily for picking up prescribed fields from previously run prognostic simulations). The file mesh must match the mesh of this field (except for piecewise constant fields which will be remapped back from the discontinuous nodal values).
447
## THIS WILL NOT WORK FOR PRESCRIBED FIELDS NOT DIRECTLY UNDERNEATH /material_phase
449
attribute file_name { xsd:string },
455
input_choice_real_contents =
460
## Python function prescribing real input. Functions should be of the form:
464
## return # Return value
466
## where X is a tuple of length geometry dimension.
471
# Choice of input method for initial conditions
472
# Note: combine = "choice" should be used here to combine with input_choice_real, but Diamond doesn't support it
473
input_choice_initial_condition_real =
479
## Python function prescribing real input. Functions should be of the form:
483
## return # Return value
485
## where X is a tuple of length geometry dimension.
489
## Initialise the field from an existing file (indended
490
## primarily for use in checkpointing). The file mesh must match
491
## the mesh of this field (except for piecewise constant fields
492
## which will be remapped back from the discontinuous nodal values).
493
## In parallel the process number is
494
## appended to the filename, e.g. if the file_name attribute is
495
## set to "input.vtu", process 0 reads from "input-0.vtu".
497
attribute file_name { xsd:string },
506
# Choice of input method, e.g. for boundary conditions
507
input_choice_real_dim_vector =
509
input_choice_real_dim_vector_contents
512
# Choice of input method, e.g. for prescribed fields
513
input_choice_real_dim_vector_plus_file =
515
input_choice_real_dim_vector_contents|
516
## Initialise the field from an existing file (indended primarily for picking up prescribed fields from previously run prognostic simulations). The file mesh must match the mesh of this field (except for piecewise constant fields which will be remapped back from the discontinuous nodal values).
518
## THIS WILL NOT WORK FOR PRESCRIBED FIELDS NOT DIRECTLY UNDERNEATH /material_phase
520
attribute file_name { xsd:string },
526
input_choice_real_dim_vector_contents =
531
## Python function prescribing dimensional vector input. Functions should be of the form:
535
## return # Return value
537
## where X and the return value are tuples of length geometry dimension.
542
# Choice of input method, e.g. for boundary conditions
543
# this one specifies a vector field of dim minus one
544
input_choice_real_dim_minus_one_vector =
548
real_dim_minus_one_vector
550
## Python function prescribing dimensional vector input. Functions should be of the form:
554
## return # Return value
556
## where X and the return value are tuples of length geometry dimension.
562
## Import data from NetCDF CF-1.x file.
563
input_choice_netcdf =
566
## The format of this file should conform to NetCDF CF 1.x
567
## (http://cf-pcmdi.llnl.gov/)
568
attribute file_name { xsd:string },
573
# Choice of input method for initial conditions
574
# Note: combine = "choice" should be used here to combine with input_choice_real, but Diamond doesn't support it
575
input_choice_initial_condition_vector =
581
## Python function prescribing dimensional vector input. Functions should be of the form:
585
## return # Return value
587
## where X and the return value are tuples of length geometry dimension.
591
## Initialise the field from an existing file (indended primarily for use in checkpointing). The file mesh must match the mesh of this field (except for piecewise constant fields which will be remapped back from the discontinuous nodal values).
593
attribute file_name { xsd:string },
597
## Set balanced velocity from height field
603
# Choice of input method for initial/boundary conditions
604
# version for real symmetric tensor
605
input_choice_real_dim_symmetric_tensor =
607
## Constant symmetric tensor
609
real_dim_symmetric_tensor
611
## Python command prescribing symmetric tensor input.
613
## Note that it is for the python function to determine
614
## that the results it produces are, in fact, symmetric.
616
## An example that returns the three-dimensional identity:
619
## return [[1, 0, 0],
627
# Choice of input method for initial/boundary conditions
628
# version for real tensor
629
input_choice_real_dim_tensor =
635
## Python command prescribing tensor input.
637
## An example that returns the three-dimensional identity:
640
## return [[1, 0, 0],
648
prognostic_velocity_field =
650
velocity_equation_choice,
651
## Spatial discretisation options
652
element spatial_discretisation {
654
## A new version of continuous galerkin assembly.
655
element continuous_galerkin {
656
## Stabilisation options for the galerkin discretisation
657
element stabilisation{
664
## Discretisation options for the mass terms in the velocity equation.
666
## Lump the mass matrix - currently required if solving for pressure
667
element lump_mass_matrix {
668
## Lump on the submesh.
669
## This only works for simplex meshes and is only
670
## strictly valid on 2d meshes.
671
element use_submesh {
675
## Remove the mass terms from the equation.
676
element exclude_mass_terms {
680
## Discretisation options for the advection terms in the velocity equation.
681
element advection_terms {
682
## Integrate the advection terms of the momentum equation by parts.
683
## This allows for the imposition of weak boundary conditions.
684
## If activated the element advection matrix takes the form:
686
## - | (grad N_A dot nu) N_B rho dV - (1. - beta) | N_A ( div nu ) N_B rho dV
688
## otherwise it takes the standard form:
690
## | N_A (nu dot grad N_B) rho dV + beta | N_A ( div nu ) N_B rho dV
692
## where beta is set in conservative_advection, N is
693
## a shape function and nu is the relative nonlinear
695
element integrate_advection_by_parts {
698
## Remove the advection terms (u.grad u rho + beta
699
## div u rho u) from the equation.
700
## This overrides any other advection term options
701
## (including conservative_advection below).
702
element exclude_advection_terms {
707
## Discontinuous galerkin formulation. This causes Momentum_DG to be
708
## called instead of diff3d. Confusingly it is not necessary to provide
709
## a discontinuous velocity field for this to work!
710
element discontinuous_galerkin {
711
attribute replaces { "DISOPT" },
712
element advection_scheme {
718
## Straightforward upwinding of the nonlinear velocity
729
linear_solver_options_asym
732
## Initial condition for WholeMesh
734
## Only specify one condition if not using mesh regions.
735
## Otherwise select other initial_condition option, specify region_ids
736
## and distinct names. Then add extra intial conditions for other regions.
737
element initial_condition {
738
attribute name { "WholeMesh" },
739
input_choice_initial_condition_vector
741
## Multiple initial_conditions are allowed if specifying
742
## different values in different
743
## regions of the mesh (defined by region_ids). In this case
744
## each initial_condition
745
## requires a distinct name for the options dictionary.
746
element initial_condition {
747
attribute name { string },
749
input_choice_initial_condition_vector
752
## Boundary conditions
753
element boundary_conditions {
754
attribute replaces { "boundary, TMPER1 TMPER2 TMPERI" },
755
attribute name { string },
757
element surface_ids {
760
velocity_boundary_conditions
762
prognostic_vector_output_options,
763
prognostic_vector_stat_options,
764
vector_convergence_options,
765
prognostic_detector_options,
766
vector_steady_state_options,
767
adaptivity_options_prognostic_vector_field,
768
interpolation_algorithm_vector,
769
discrete_properties_algorithm_vector?
772
prognostic_layerthickness_field =
774
## Spatial discretisation options
775
element spatial_discretisation {
777
## Development continuous Galerkin formulation. This causes
778
## Advection_Diffusion_CG to be used instead of hart3d.
779
element continuous_galerkin {
780
## Discretisation options for the advection terms.
781
element advection_terms {
782
## Remove the advection terms from the equation.
783
## This overrides any other advection term options (including
784
## conservative_advection below).
785
element exclude_advection_terms {
793
## Temporal discretisation options
794
element temporal_discretisation {
795
## Implicit/explicit control (THETA)
797
## =0.5 -- Crank-Nicolson
800
attribute replaces {"THETA"},
803
## Non-linear relaxation term
804
## =0. -- previous timestep velocity solution used in non-linear terms of momentum equations
805
## =1. -- previous iteration velocity solution used in non-linear terms of momentum equations
808
attribute replaces {"ITHETA"},
814
linear_solver_options_asym
817
## Initial condition for WholeMesh
819
## Only specify one condition if not using mesh regions.
820
## Otherwise select other initial_condition option, specify region_ids
821
## and distinct names. Then add extra intial conditions for other regions.
822
element initial_condition {
823
attribute name { "WholeMesh" },
824
input_choice_initial_condition_real
826
## Multiple initial_conditions are allowed if specifying
827
## different values in different
828
## regions of the mesh (defined by region_ids). In this case
829
## each initial_condition
830
## requires a distinct name for the options dictionary.
831
element initial_condition {
832
attribute name { string },
834
input_choice_initial_condition_real
837
## Mean value of thickness to use in wave equation solver
838
## Will be replaced by a field in due course
839
element mean_layer_thickness {
842
prognostic_scalar_output_options,
843
prognostic_scalar_stat_options,
844
adaptivity_options_prognostic_scalar_field,
845
interpolation_algorithm_scalar
849
prognostic_scalar_field =
853
linear_solver_options_sym
856
## Initial condition for WholeMesh
858
## Only specify one condition if not using mesh regions.
859
## Otherwise select other initial_condition option, specify region_ids
860
## and distinct names. Then add extra intial conditions for other regions.
861
element initial_condition {
862
attribute name { "WholeMesh" },
863
input_choice_initial_condition_real
865
## Multiple initial_conditions are allowed if specifying
866
## different values in different
867
## regions of the mesh (defined by region_ids). In this case
868
## each initial_condition
869
## requires a distinct name for the options dictionary.
870
element initial_condition {
871
attribute name { string },
873
input_choice_initial_condition_real
876
## Diffusivity for field
877
element tensor_field {
878
attribute name { "Diffusivity" },
879
attribute rank { "2" },
880
attribute replaces { "TMUXX TMUYY TMUZZ TMUYZ TMUXZ TMUXY TALLMU TCONMU" },
883
prescribed_values_tensor_field
886
prognostic_scalar_output_options,
887
prognostic_scalar_stat_options
890
# Default child of diagnostic scalar field
891
diagnostic_scalar_field =
893
diagnostic_output_options,
894
diagnostic_scalar_stat_options,
895
scalar_convergence_options,
896
diagnostic_detector_options,
897
scalar_steady_state_options,
898
adaptivity_options_scalar_field,
899
recalculation_options?
902
# Default child of diagnostic scalar field without adaptivity options
903
diagnostic_scalar_field_no_adapt =
905
diagnostic_output_options,
906
diagnostic_scalar_stat_options,
907
diagnostic_detector_options
910
# Default child of diagnostic scalar field
911
diagnostic_scalar_field_tidal_range =
913
diagnostic_output_options,
914
diagnostic_scalar_stat_options,
915
diagnostic_detector_options,
916
adaptivity_options_scalar_field,
918
element spin_up_time {
924
# Default child of prescribed scalar field
925
# This is a choice of ways of inputing the prescribed field
926
prescribed_scalar_field =
928
prescribed_scalar_field_no_adapt,
929
adaptivity_options_scalar_field,
930
interpolation_algorithm_scalar?,
931
discrete_properties_algorithm_scalar?,
932
recalculation_options?
935
# Default child of prescribed scalar field without adaptivity options
936
# This is a choice of ways of inputing the prescribed field
937
prescribed_scalar_field_no_adapt =
939
prescribed_values_scalar_field,
940
prescribed_output_options,
941
prescribed_scalar_stat_options,
942
prescribed_detector_options
945
prescribed_values_scalar_field =
948
## Value for WholeMesh
949
## Only specify one value if not using mesh regions.
950
## Otherwise select other value option, specify region_ids
951
## and distinct names. Then add extra values for other regions.
953
attribute name { "WholeMesh" },
954
input_choice_real_plus_file
956
## Multiple values are now allowed if using different value assignments
957
## in different regions of the mesh (specified by region_ids).
958
## In this case each value requires a distinct name for the options dictionary.
960
attribute name { string },
962
input_choice_real_plus_file
967
# Default child of diagnostic vector field
968
# Currently, this is empty, but in future this might include
969
# options that are general to all diagnostic vector fields
970
diagnostic_vector_field =
972
diagnostic_output_options,
973
diagnostic_vector_stat_options,
974
vector_convergence_options,
975
diagnostic_detector_options,
976
vector_steady_state_options,
977
adaptivity_options_vector_field,
978
recalculation_options?
982
diagnostic_vector_field_bed_shear_stress =
990
element drag_coefficient {
994
diagnostic_output_options,
995
diagnostic_vector_stat_options,
996
diagnostic_detector_options,
997
adaptivity_options_vector_field
1002
# Default child of prescribed vector field
1003
# This is a choice of ways of inputing the prescribed field
1004
prescribed_vector_field =
1006
prescribed_vector_field_no_adapt,
1007
adaptivity_options_vector_field,
1008
interpolation_algorithm_vector?,
1009
discrete_properties_algorithm_vector?,
1010
recalculation_options?
1013
# Default child of prescribed vector field without adaptivity options
1014
# This is a choice of ways of inputing the prescribed field
1015
prescribed_vector_field_no_adapt =
1017
prescribed_values_vector_field,
1018
prescribed_output_options,
1019
prescribed_vector_stat_options,
1020
prescribed_detector_options
1023
prescribed_values_vector_field =
1026
## Value for WholeMesh
1028
## Only specify one value if not using mesh regions.
1029
## Otherwise select other value option, specify region_ids
1030
## and distinct names. Then add extra values for other regions.
1032
attribute name { "WholeMesh" },
1033
input_choice_real_dim_vector_plus_file
1035
## Multiple values are now allowed if using different value assignments
1036
## in different regions of the mesh (specified by region_ids).
1037
## In this case each value requires a distinct name for the options dictionary.
1039
attribute name { string },
1041
input_choice_real_dim_vector_plus_file
1046
# Default child of diagnostic tensor field
1047
# Currently, this is empty, but in future this might include
1048
# options that are general to all diagnostic tensor fields
1049
diagnostic_tensor_field =
1051
diagnostic_output_options,
1052
adaptivity_options_tensor_field
1055
# Default child of prescribed vector field
1056
# This is a choice of ways of inputing the prescribed tensor field
1057
# If the field is constant then a symmetric, or asymmetric tensor may be entered
1058
prescribed_tensor_field =
1060
prescribed_values_tensor_field,
1061
adaptivity_options_tensor_field
1064
prescribed_values_tensor_field =
1067
## Value for WholeMesh
1069
## Only specify one value if not using mesh regions.
1070
## Otherwise select other value option, specify region_ids
1071
## and distinct names. Then add extra values for other regions.
1073
attribute name { "WholeMesh" },
1074
input_choice_tensor_field
1076
## Multiple values are now allowed if using different value assignments
1077
## in different regions of the mesh (specified by region_ids).
1078
## In this case each value requires a distinct name for the options dictionary.
1080
attribute name { string },
1082
input_choice_tensor_field
1088
velocity_components_choice =
1091
# rotated bcs are not implemented... this is where they should go when they are
1092
# element align_bc_with_surface {
1093
# element normal_component {
1096
# element tangent_component_1 {
1099
# element tangent_component_2 {
1102
# rotation_matrix_components
1104
element align_bc_with_cartesian {
1105
element x_component {
1106
input_choice_real_bc_component
1108
element y_component {
1109
input_choice_real_bc_component
1111
element z_component {
1112
input_choice_real_bc_component
1118
input_choice_real_bc_component =
1121
element synthetic_eddy_method {
1122
## use a large number to ensure Gaussian
1123
## behaviour of the fluctuating component
1124
element number_of_eddies {
1127
element turbulence_lengthscale {
1132
## usually a function of height,
1133
## for ABL simulations use a log profile
1134
element mean_profile {
1137
## Reynolds stresses profile
1139
## usually a function of height,
1140
## assumes that the remaining stresses are negligible
1141
element Re_stresses_profile {
1147
# and again for robin b.c.s
1148
robin_velocity_components_choice =
1151
# element align_bc_with_surface {
1152
# element normal_component {
1153
# element order_zero_coefficient {
1156
# element order_one_coefficient {
1160
# element tangent_component_1 {
1161
# element order_zero_coefficient {
1164
# element order_one_coefficient {
1168
# element tangent_component_2 {
1169
# element order_zero_coefficient {
1172
# element order_one_coefficient {
1176
# rotation_matrix_components
1178
element align_bc_with_cartesian {
1179
element x_component {
1180
element order_zero_coefficient {
1183
element order_one_coefficient {
1187
element y_component {
1188
element order_zero_coefficient {
1191
element order_one_coefficient {
1195
element z_component {
1196
element order_zero_coefficient {
1199
element order_one_coefficient {
1207
velocity_boundary_conditions =
1211
attribute name { "dirichlet" },
1212
## Apply the dirichlet bc weakly. Available automatically
1213
## with a discontinuous_galerkin Velocity
1214
## spatial_discretisation. Available if you
1215
## integrate_continuity_by_parts with a
1216
## continuous_galerkin Pressure or use a control_volume
1217
## Pressure spatial_discretisation and/or
1218
## integrate_advection_by_parts under Velocity
1219
## spatial_discretisation with continuous_galerkin.
1221
## If not selected boundary conditions are applied strongly.
1222
element apply_weakly {
1223
## If the initial condition and boundary conditions
1224
## differ, setting this option will cause the initial
1225
## condition on the boundary to be overwritten with
1226
## the boundary condition. Since you are applying the
1227
## boundary condition weakly, you probably do *not*
1229
element boundary_overwrites_initial_condition {
1233
velocity_components_choice
1236
attribute name { "neumann" },
1237
velocity_components_choice
1240
attribute name { "robin" },
1241
robin_velocity_components_choice
1244
attribute name { "free_surface" }
1246
## Apply quadratic drag. Specify drag coefficient. If you
1247
## want to exactly replicate results from using the OCEDRA
1248
## option, set this to 0.003 and remember to apply to both
1249
## bottom and sides.
1251
attribute name { "drag" },
1254
## Use a quadratic drag.
1256
## This means that the drag coefficient is nondimensional.
1257
element quadratic_drag {
1260
## Use a linear drag (basically just a surface absorption term).
1262
## This means that the drag coefficient has units of momentum.
1263
element linear_drag {
1269
## Apply wind forcing specified by stress or wind velocity.
1270
## Replaces windy.dat and windy.py
1272
attribute name { "wind_forcing" },
1274
## Wind forcing with user specified wind stress
1276
## <b> Note that the stress needs to be specified
1277
## using the same density units as the reference_density
1278
## under equation of state.</b>So if you use the recommended
1279
## non-dimensional value of 1.0 for reference_density and
1280
## your calculated stress is in kg m^-1s^-2 and the dimensional
1281
## reference_density is 1000.0 kg m^-3, you need to divide
1282
## the calculated stress in SI units by 1000.0.
1283
element wind_stress {
1284
input_choice_real_dim_minus_one_vector|
1285
element from_netcdf {
1286
## The format of this file should conform to NetCDF CF 1.x
1287
## (http://cf-pcmdi.llnl.gov/).
1288
attribute file_name { xsd:string },
1289
attribute east_west { xsd:string },
1290
attribute north_south { xsd:string },
1294
## Wind forcing with user specified 10m wind velocity
1295
element wind_velocity {
1296
## Specify wind drag coefficient (dimensionless)
1297
## Suggested value: 4.0e-4
1298
element wind_drag_coefficient {
1303
## <b>Note that you have to specify
1304
## this density in the same units as the
1305
## reference_density under equation of state.</b>
1306
## So with a typicial value of rho_air=1.3 kgm^-3
1307
## and rho_water=1000 kgm^-3, if you fill in the
1308
## recommended (non-dimensional) value of 1.0 for
1309
## reference_density, this field needs to be 1.3e-3.
1310
element density_air {
1313
## Specify wind velocity
1314
element wind_velocity {
1315
input_choice_real_dim_minus_one_vector|
1316
element from_netcdf {
1317
## The format of this file should conform to NetCDF CF 1.x
1318
## (http://cf-pcmdi.llnl.gov/)
1319
attribute file_name { xsd:string },
1320
attribute east_west { xsd:string },
1321
attribute north_south { xsd:string },
1329
## When using control_volumes under Pressure
1330
## spatial_discretisation or when using
1331
## integrate_continuity_by_parts with continuous_galerkin
1332
## Pressure and continuous_galerkin Velocity this
1333
## boundary condition type imposes a weak no normal flow
1334
## boundary condition on the surface_ids specified.
1336
attribute name { "no_normal_flow" },
1340
## Implements a penalty function for the near wall region.
1341
## Using this option coarse meshes can
1342
## be used in the near wall region.
1344
## Should be used in combination with a no_normal_flow condition.
1346
## See Bazilevs et al. 2007
1348
attribute name { "near_wall_treatment" },
1349
element tolerance {real}
1351
## Log law of the wall
1353
## Should be used in combination with a no_normal_flow condition.
1355
attribute name { "log_law_of_wall" },
1356
element surface_roughness {real}
1361
# Output options for prognostic fields
1362
prognostic_scalar_output_options =
1364
## Specify what is written to vtu dump files
1366
## By default each field in the options file is written to vtu.
1367
## Select this option to exclude this field.
1368
element exclude_from_vtu {
1371
## Select this option to also write the values of this field
1372
## on the previous timestep.
1373
## (included under the name: Old<field_name> )
1374
element include_previous_time_step {
1377
## Select this option to also write the values of this field
1378
## used in the nonlinear iteration.
1379
## (included under the name: Nonlinear<field_name> )
1380
element include_nonlinear_field {
1383
## Output a file details the convergence (or otherwise) of
1384
## this field with every advective nonlinear
1386
## ONLY WORKS FOR PURE CONTROL VOLUME DISCRETISATIONS.
1387
element convergence_file {
1393
# Output options for pressure (can't have a convergence file)
1394
pressure_output_options =
1396
## Specify what is written to vtu dump files
1398
## By default each field in the options file is written to vtu.
1399
## Select this option to exclude this field.
1400
element exclude_from_vtu {
1403
## Select this option to also write the values of this field
1404
## on the previous timestep.
1405
## (included under the name: Old<field_name> )
1406
element include_previous_time_step {
1409
## Select this option to also write the values of this field
1410
## used in the nonlinear iteration.
1411
## (included under the name: Nonlinear<field_name> )
1412
element include_nonlinear_field {
1415
## Write out some extra debugging vtu files that can be used
1416
## to analyse what goes on in the pressure projection steps.
1417
## WARNING: this may create a huge amount of vtu files, as
1418
## multiple files are written per nonlinear iteration.
1419
element debugging_vtus {
1425
# Output options for prognostic fields
1426
prognostic_vector_output_options =
1428
## Specify what is written to vtu dump files
1430
## By default each field in the options file is written to vtu.
1431
## Select this option to exclude this field.
1432
element exclude_from_vtu {
1435
## Select this option to also write the values of this field
1436
## on the previous timestep.
1437
## (included under the name: Old<field_name> )
1438
element include_previous_time_step {
1441
## Select this option to also write the values of this field
1442
## used in the nonlinear iteration.
1443
## (included under the name: Nonlinear<field_name> )
1444
element include_nonlinear_field {
1450
# Output options for all other fields
1451
field_output_options =
1453
## Specify what is written to vtu dump files
1455
## By default each field in the options file is written to vtu.
1456
## Select this option to exclude this field.
1457
element exclude_from_vtu {
1463
diagnostic_output_options = field_output_options
1464
prescribed_output_options = field_output_options
1466
# Options for inclusion/exclusion of standard field statistics from the .stat
1470
## Include this field in the .stat file (magnitude and components)
1471
element include_in_stat {
1475
exclude_components_from_stat =
1477
## Include just the magnitude of this field in the .stat file
1478
## (excluding the components)
1479
element exclude_components_from_stat {
1485
## Exclude this field from the .stat file.
1486
element exclude_from_stat {
1491
# Diagnostic statistics options for prognostic scalar fields
1492
prognostic_scalar_stat_options =
1494
## Specify what is added to .stat files
1496
prognostic_scalar_stat_options.stat
1500
# Diagnostic statistics for all other scalar fields
1501
prognostic_scalar_stat_no_old_or_nonlinear_options =
1503
## Specify what is added to .stat files
1505
prognostic_scalar_stat_no_old_or_nonlinear_options.stat
1510
diagnostic_scalar_stat_options = prognostic_scalar_stat_no_old_or_nonlinear_options
1511
prescribed_scalar_stat_options = prognostic_scalar_stat_no_old_or_nonlinear_options
1513
# Combining of stat elements for scalar fields
1514
prognostic_scalar_stat_options.stat = prognostic_scalar_stat_no_old_or_nonlinear_options.stat
1515
prognostic_scalar_stat_options.stat &=
1517
## Enable to include the previous timestep value of this field in the .stat file.
1518
element include_previous_time_step {
1521
## Enable to include the values of this field in the nonlinear
1522
## iteration in the .stat file.
1523
element include_nonlinear_field {
1527
prognostic_scalar_stat_no_old_or_nonlinear_options.stat =
1531
surface_integral_stats_scalar*,
1535
# Diagnostic statistics options for vector fields, with enabled by default
1536
vector_field_stat_options_enabled_default = include_stat
1537
vector_field_stat_options_enabled_default |= exclude_components_from_stat
1538
vector_field_stat_options_enabled_default |= exclude_stat
1540
# Diagnostic statistics options for vector fields, with enabled by default
1541
vector_field_stat_options_disabled_default = exclude_stat
1542
vector_field_stat_options_disabled_default |= exclude_components_from_stat
1543
vector_field_stat_options_disabled_default |= include_stat
1545
# Diagnostic statistics for prognostic vector fields
1546
prognostic_vector_stat_options =
1548
## Specify what is added to .stat files
1551
prognostic_vector_stat_options.stat
1556
# Diagnostic statistics for all other vector fields
1557
prognostic_vector_stat_no_old_or_nonlinear_options =
1559
## Specify what is added to .stat files
1561
prognostic_vector_stat_no_old_or_nonlinear_options.stat
1564
diagnostic_vector_stat_options = prognostic_vector_stat_no_old_or_nonlinear_options
1565
prescribed_vector_stat_options = prognostic_vector_stat_no_old_or_nonlinear_options
1567
# Combining of stat elements for vector fields
1568
prognostic_vector_stat_options.stat = prognostic_vector_stat_no_old_or_nonlinear_options.stat
1569
prognostic_vector_stat_options.stat &=
1571
## Specify how the previous timestep value of this field is added to the .stat file.
1572
element previous_time_step {
1573
vector_field_stat_options_disabled_default
1575
## Specify how the values of this field used in the nonlinear iteration are added to the .stat file.
1576
element nonlinear_field {
1577
vector_field_stat_options_disabled_default
1579
## What surface IDs do you want to do the calculation over?
1580
element compute_body_forces_on_surfaces {
1584
prognostic_vector_stat_no_old_or_nonlinear_options.stat =
1586
vector_field_stat_options_enabled_default,
1587
surface_integral_stats_vector*
1590
# Convergence options for prognostic scalar fields
1591
scalar_convergence_options =
1593
## Decide whether this field is tested for convergence
1594
## during nonlinear iterations
1595
## (if /timestepping/nonlinear_iterations and
1596
## /timestepping/nonlinear_iterations/tolerance are
1598
## Also specifies whether the field is added to the
1599
## convergence file (if /io/convergence_file is enabled).
1600
element convergence {
1602
## Include this field in convergence testing
1603
## (if /timestepping/nonlinear_iterations and
1604
## /timestepping/nonlinear_iterations/tolerance are
1605
## enabled) and file (if /io/convergence_file is enabled)
1606
element include_in_convergence {
1609
## Exclude this field from convergence testing and file
1610
element exclude_from_convergence {
1617
# Convergence statistics options for prognostic vector fields (velocity)
1618
vector_convergence_options =
1620
## Decide whether this field is tested for convergence
1621
## during nonlinear iterations
1622
## (if /timestepping/nonlinear_iterations and
1623
## /timestepping/nonlinear_iterations/tolerance are
1625
## Also specifies whether the field is added to the
1626
## convergence file (if /io/convergence_file is enabled).
1627
element convergence {
1629
## Include this field (magnitude and components)
1630
## in convergence testing
1631
## (if /timestepping/nonlinear_iterations and
1632
## /timestepping/nonlinear_iterations/tolerance are
1633
## enabled) and file (if /io/convergence_file is enabled)
1634
element include_in_convergence {
1637
## Include just the magnitude of this field
1638
## in convergence testing
1639
## (if /timestepping/nonlinear_iterations and
1640
## /timestepping/nonlinear_iterations/tolerance are
1641
## enabled) and file (if /io/convergence_file is enabled)
1642
## i.e. excluding the components
1643
element exclude_components_from_convergence {
1646
## Exclude this field entirely from convergence testing and file
1647
element exclude_from_convergence {
1654
# Steady state options for prognostic scalar fields
1655
scalar_steady_state_options =
1657
## Decide whether this field is tested for a steady state
1658
## between timesteps
1659
## (if /timestepping/steady_state is
1661
element steady_state {
1663
## Include this field in steady state testing
1664
## (if /timestepping/steady_state is
1666
element include_in_steady_state {
1669
## Exclude this field from steady state testing
1670
element exclude_from_steady_state {
1677
# Steady state statistics options for prognostic vector fields (velocity)
1678
vector_steady_state_options =
1680
## Decide whether this field is tested for a steady state
1681
## between timesteps
1682
## (if /timestepping/steady_state is
1684
element steady_state {
1686
## Include this field (magnitude and components)
1687
## in steady state testing
1688
## (if /timestepping/steady_state is enabled)
1689
element include_in_steady_state {
1692
## Include just the magnitude of this field
1693
## in steady state testing
1694
## (if /timestepping/steady_state is
1696
## i.e. excluding the components
1697
element exclude_components_from_steady_state {
1700
## Exclude this field entirely from convergence testing and file
1701
element exclude_from_steady_state {
1708
# Options for whether a field is to be included in detector output.
1709
detector_options_enabled_default =
1711
## Specify what is added to detector files
1714
## This field is output at each detector location.
1715
element include_in_detectors {
1718
## This field is not output at detector locations.
1719
element exclude_from_detectors {
1726
# Options for whether a field is to be included in detector output.
1727
detector_options_disabled_default =
1729
## Specify what is added to detector files
1732
## This field is not output at detector locations.
1733
element exclude_from_detectors {
1736
## This field is output at each detector location.
1737
element include_in_detectors {
1744
# Detector output defaults on for prognostic and diagnostic fields,
1745
# off for prescribed.
1746
prognostic_detector_options = detector_options_enabled_default
1747
diagnostic_detector_options = detector_options_enabled_default
1748
prescribed_detector_options = detector_options_disabled_default
1750
adaptivity_preprocessing =
1751
## Occasionally, it is desirable to apply operations or filters
1752
## to fields before using them for the purposes of adaptivity.
1753
element preprocessing {
1755
## Invert a helmholtz operator to smooth out the field
1756
## before using it to adapt. This can help with noisy
1758
element helmholtz_smoother {
1759
element smoothing_length_scale {
1760
real_dim_symmetric_tensor
1763
linear_solver_options_sym
1769
generic_aliased_field =
1771
attribute material_phase_name { xsd:string },
1772
attribute field_name { xsd:string }
1775
# Most common mesh choices
1779
attribute name { xsd:string }
1782
attribute name { "CoordinateMesh" }
1785
attribute name { "VelocityMesh" }
1788
attribute name { "PressureMesh" }
1792
# Not really a choice, for fields that have to be on the velocity mesh
1793
# currently that's all scalar fields, except pressure
1794
# and of course velocity itself
1795
# If you want to implement scalar fields on other meshes, feel free to do so
1796
# but bare in mind you need to make sure the field stays outside RMEM.
1797
# Currently all scalar fields are packed in RMEM with length nonods
1798
velocity_mesh_choice =
1802
attribute name { "VelocityMesh" }
1805
attribute name { "PressureMesh" }
1808
attribute name { "CoordinateMesh" }
1811
attribute name { string }
1816
pressure_mesh_choice =
1820
attribute name { "PressureMesh" }
1823
attribute name { "VelocityMesh" }
1826
attribute name { "CoordinateMesh" }
1829
attribute name { string }
1834
# This is the choice of additional scalar field to be solved for
1835
scalar_field_choice =
1837
# The first is a generic field, which may be used for any user-defined field
1838
# that FLUIDITY knows nothing about, or a generic diagnostic
1840
element scalar_field {
1841
attribute rank { "0" },
1842
attribute name { xsd:string },
1845
element prognostic {
1846
velocity_mesh_choice,
1847
prognostic_scalar_field
1849
element prescribed {
1850
velocity_mesh_choice,
1851
prescribed_scalar_field
1853
element diagnostic {
1854
scalar_diagnostic_algorithms,
1855
velocity_mesh_choice,
1856
diagnostic_scalar_field
1859
generic_aliased_field
1863
## Prognostic scalar fields below this
1864
element ___Prognostic_Fields_Below___ {
1868
# This is the long list of fields that FLUIDITY knows about
1869
# -- First is a list of fields that are primarily prognostic,
1870
# but can be set to prescribed, or aliased...
1871
# -- The list is in order of most frequently used.
1874
element scalar_field {
1875
attribute rank { "0" },
1876
attribute name { "Salinity" },
1877
attribute replaces { "IDENT = 42" },
1879
element prognostic {
1880
velocity_mesh_choice,
1881
prognostic_scalar_field
1883
element prescribed {
1884
velocity_mesh_choice,
1885
prescribed_scalar_field
1888
generic_aliased_field
1893
element scalar_field {
1894
attribute rank { "0" },
1895
attribute name { "Temperature" },
1896
attribute replaces { "IDENT = -1" },
1898
element prognostic {
1899
velocity_mesh_choice,
1900
prognostic_scalar_field
1902
element prescribed {
1903
velocity_mesh_choice,
1904
prescribed_scalar_field
1907
generic_aliased_field
1911
## Background Temperature
1912
element scalar_field {
1913
attribute rank { "0" },
1914
attribute name { "BackgroundTemperature" },
1916
element prescribed {
1917
velocity_mesh_choice,
1918
prescribed_scalar_field
1923
element scalar_field {
1924
attribute rank { "0" },
1925
attribute name { "Tracer" },
1926
attribute replaces { "IDENT = 666" },
1928
element prognostic {
1929
velocity_mesh_choice,
1930
prognostic_scalar_field
1932
element prescribed {
1933
velocity_mesh_choice,
1934
prescribed_scalar_field
1937
generic_aliased_field
1942
## NOTE: the prognostic FreeSurface field only works with the
1943
## legacy_continuous_galerkin code path
1944
## NOTE: if you are using the free_surface boundary condition
1945
## applied to the Velocity field (recommended), you should not
1946
## use the prognostic FreeSurface field. In this case you may
1947
## (optionally) add a diagnostic FreeSurface field.
1948
element scalar_field {
1949
attribute rank { "0" },
1950
attribute name { "FreeSurface" },
1953
## NOTE: the prognostic FreeSurface field only works with the
1954
## legacy_continuous_galerkin code path
1955
element prognostic {
1956
## Note that this is not the quadratic mesh balance pressure is
1957
## actually calculated on, but the linear mesh it is projected back
1958
## on for output purposes.
1960
attribute name { "VelocityMesh" }
1962
prognostic_free_surface_field
1965
## NOTE: the diagnostic FreeSurface field only works in combination
1966
## with the free_surface boundary condition applied to the Velocity
1967
## field. It gives you a 3D field (constant over the vertical)
1968
## of the free surface elevation.
1969
element diagnostic {
1971
# this is hard-coded on the PressureMesh as long as the Pressure is
1972
# if this is no longer true, it should be option-checked to be on the
1973
# same mesh as Pressure
1974
## Must be on the same mesh as Pressure
1976
attribute name { "PressureMesh" }
1978
diagnostic_scalar_field
1984
element scalar_field {
1985
attribute rank { "0" },
1986
attribute name { "SecondFluid" },
1987
attribute replaces { "IDENT = 56" },
1989
element prognostic {
1990
velocity_mesh_choice,
1991
prognostic_scalar_field
1993
element prescribed {
1994
velocity_mesh_choice,
1995
prescribed_scalar_field
1998
generic_aliased_field
2002
## Diffuse Interface
2003
element scalar_field {
2004
attribute rank { "0" },
2005
attribute name { "DiffuseInterface" },
2006
attribute replaces { "IDENT = 57" },
2008
element prognostic {
2009
velocity_mesh_choice,
2010
prognostic_scalar_field
2012
element prescribed {
2013
velocity_mesh_choice,
2014
prescribed_scalar_field
2017
generic_aliased_field
2021
## If enabled, decomposes Pressure by solving for the balanced part of
2022
## Pressure using a "geopressure" solver:
2024
## f = - grad p_gp + g
2026
## By choosing an appropriate mesh (typically velocity mesh order + 1)
2027
## for the balanced part of pressure, physical balance can be
2028
## represented to a higher degree of accuracy.
2029
element scalar_field {
2030
attribute rank { "0" },
2031
attribute name { "GeostrophicPressure" },
2032
attribute replaces { "IDENT = -2003" },
2034
element prognostic {
2035
## The GeostrophicPressure mesh
2037
## <b>WARNING: It is usual for this to be a higher degree
2038
## mesh than the velocity mesh</b>
2040
attribute name { xsd:string },
2043
prognostic_geostrophic_pressure_field
2047
element scalar_field {
2048
attribute rank { "0" },
2049
attribute name { "VerticalBalancePressure" },
2051
element prognostic {
2052
## This needs to be a quadratic DG mesh
2054
prognostic_vertical_balance_pressure_field
2058
## MaterialVolumeFraction field:
2060
## Volume fraction of this material.
2061
## Required in multimaterial simulations.
2062
## - if prognostic solves for the volume fraction
2063
## - if prescribed uses a specified volume fraction
2064
## - if diagnostic solves for the final material volume fraction
2065
## Only 1 diagnostic MaterialVolumeFraction field allowed per
2066
## simulation or solves for all the volume fractions based on
2067
## the SumMaterialVolumeFractions field.
2069
## A diagnostic MaterialVolumeFraction field is currently required for
2070
## compressible multimaterial simulations (even if only 1 material).
2071
## Generally also requires a MaterialDensity field.
2072
element scalar_field {
2073
attribute rank { "0" },
2074
attribute name { "MaterialVolumeFraction" },
2076
element prognostic {
2077
velocity_mesh_choice,
2078
prognostic_scalar_field,
2080
surface_tension_option?
2082
element diagnostic {
2084
velocity_mesh_choice,
2085
diagnostic_scalar_field,
2088
element prescribed {
2089
velocity_mesh_choice,
2090
prescribed_scalar_field,
2094
generic_aliased_field
2098
## MaterialDensity field:
2100
## Field for the density of this material.
2101
## Required in multimaterial simulations.
2102
## - prescribed if an incompressible simulation
2103
## - diagnostic if using a linear equation of state
2104
## - prognostic if a compressible simulation
2105
## (note that if you set a multimaterial
2106
## equation of state and this field is
2107
## prognostic then its initial condition
2108
## will be overwritten by the density that
2109
## satisfies the initial pressure and
2110
## the equation of state)
2111
element scalar_field {
2112
attribute rank { "0" },
2113
attribute name { "MaterialDensity" },
2115
element prognostic {
2116
velocity_mesh_choice,
2117
prognostic_scalar_field
2119
element diagnostic {
2121
velocity_mesh_choice,
2122
diagnostic_scalar_field
2124
element prescribed {
2125
velocity_mesh_choice,
2126
prescribed_scalar_field
2129
generic_aliased_field
2133
## MaterialInternalEnergy field:
2135
## Field for the internal energy of this material.
2136
## Required in multimaterial compressible simulations
2137
## with full miegrunneisen (perfect gas) eos.
2138
element scalar_field {
2139
attribute rank { "0" },
2140
attribute name { "MaterialInternalEnergy" },
2142
element prognostic {
2143
velocity_mesh_choice,
2144
prognostic_scalar_field
2147
generic_aliased_field
2151
## SumMaterialVolumeFractions field:
2153
## Sums the prognostic MaterialVolumeFraction fields.
2154
## - diagnostic: sums all the volume fractions in the other
2156
element scalar_field {
2157
attribute rank { "0" },
2158
attribute name { "SumMaterialVolumeFractions" },
2160
element diagnostic {
2162
velocity_mesh_choice,
2163
diagnostic_scalar_field
2166
generic_aliased_field
2170
## CopiedField - This field copies the previous timesteps
2171
## values from another (specified) field at every iteration
2172
## and then solves the field using different (again, specified)
2173
## scheme and solution options.
2174
## For instance, this field can be used to create a diffused
2175
## field to adapt to.
2176
## Unless someone requests otherwise this is only currently possible
2177
## for fields within the same material_phase.
2178
element scalar_field {
2179
attribute rank { "0" },
2180
attribute name { "CopiedField" },
2182
element prognostic {
2183
velocity_mesh_choice,
2184
attribute copy_from_field { string },
2185
prognostic_scalar_field
2189
## Calculate the stream function of 2D incompressible flow. Note
2190
## that this *only* makes sense for proper 2D (not pseudo-2D) simulations.
2191
## Requires a continuous mesh.
2192
element scalar_field {
2193
attribute rank { "0" },
2194
attribute name { "StreamFunction" },
2196
element prognostic {
2198
prognostic_stream_function_field
2203
element scalar_field {
2204
attribute rank { "0" },
2205
attribute name { "Phytoplankton" },
2207
element prognostic {
2208
velocity_mesh_choice,
2209
prognostic_scalar_field
2211
element prescribed {
2212
velocity_mesh_choice,
2213
prescribed_scalar_field
2218
element scalar_field {
2219
attribute rank { "0" },
2220
attribute name { "Zooplankton" },
2222
element prognostic {
2223
velocity_mesh_choice,
2224
prognostic_scalar_field
2226
element prescribed {
2227
velocity_mesh_choice,
2228
prescribed_scalar_field
2233
element scalar_field {
2234
attribute rank { "0" },
2235
attribute name { "Nutrient" },
2237
element prognostic {
2238
velocity_mesh_choice,
2239
prognostic_scalar_field
2241
element prescribed {
2242
velocity_mesh_choice,
2243
prescribed_scalar_field
2248
element scalar_field {
2249
attribute rank { "0" },
2250
attribute name { "Detritus" },
2252
element prognostic {
2253
velocity_mesh_choice,
2254
prognostic_scalar_field
2256
element prescribed {
2257
velocity_mesh_choice,
2258
prescribed_scalar_field
2263
## PhaseVolumeFraction:
2264
## Required in porous_media problem type
2265
element scalar_field {
2266
attribute rank { "0" },
2267
attribute name { "PhaseVolumeFraction" },
2269
element prognostic {
2270
velocity_mesh_choice,
2271
prognostic_scalar_field
2273
element prescribed {
2274
velocity_mesh_choice,
2275
prescribed_scalar_field
2280
## Electrical Potential:
2281
## Required in electrokinetic, electrothermal
2282
## and electrochemical problems
2283
## (sub-option of porous_media problem type)
2284
element scalar_field {
2285
attribute rank { "0" },
2286
attribute name { "ElectricalPotential" },
2288
element prognostic {
2289
velocity_mesh_choice,
2290
prognostic_scalar_field
2295
# Insert new prognostic scalar fields here using the template:
2296
# element scalar_field {
2297
# attribute rank { "0" },
2298
# attribute name { "NewFieldName" },
2300
# element prognostic {
2301
# velocity_mesh_choice,
2302
# prognostic_scalar_field
2304
# element prescribed {
2305
# velocity_mesh_choice,
2306
# prescribed_scalar_field
2309
# generic_aliased_field
2314
# -- Second is a list of fields that are primarily prescribed,
2315
# but can be aliased. An example is wind velocity.
2316
# -- The list is in order of most frequently used.
2318
## Prescribed scalar fields below this
2319
element ___Prescribed_fields_below___ {
2322
element scalar_field {
2323
attribute rank { "0" },
2324
attribute name { "DistanceToSideBoundaries" },
2325
attribute replaces { "IDENT = -144" },
2327
element prescribed {
2328
velocity_mesh_choice,
2329
prescribed_scalar_field
2332
generic_aliased_field
2336
## MaterialFrictionAngle for multimaterial
2337
## plasticity problems
2339
## Requires a diagnostic bulk FrictionAngle field
2341
element scalar_field {
2342
attribute rank { "0" },
2343
attribute name { "MaterialFrictionAngle" },
2345
element prescribed {
2346
velocity_mesh_choice,
2347
prescribed_scalar_field
2350
generic_aliased_field
2354
## MaterialCohesion for multimaterial
2355
## plasticity problems
2357
## Requires a diagnostic bulk Cohesion field
2359
element scalar_field {
2360
attribute rank { "0" },
2361
attribute name { "MaterialCohesion" },
2363
element prescribed {
2364
velocity_mesh_choice,
2365
prescribed_scalar_field
2368
generic_aliased_field
2373
# Insert new prescribed scalar fields here using the template:
2374
# element scalar_field {
2375
# attribute rank { "0" },
2376
# attribute name { "NewFieldName" },
2378
# element prescribed {
2379
# velocity_mesh_choice,
2380
# prescribed_scalar_field
2383
# generic_aliased_field
2388
# -- Last is a list of fields that are primarily diagnostic,
2389
# but can be aliased. An example is Tidal Range.
2390
# -- The list is in order of most frequently used.
2392
## Diagnostic scalar fields below this
2393
element ___Diagnostic_Fields_Below___ {
2396
element scalar_field {
2397
attribute rank { "0" },
2398
attribute name { "PerturbationDensity" },
2399
attribute replaces { "IDENT = -143" },
2401
element diagnostic {
2403
velocity_mesh_choice,
2404
diagnostic_scalar_field
2407
generic_aliased_field
2411
## ControlVolumeDivergence:
2415
## Divergence of the velocity field where
2416
## the divergence operator is defined using
2417
## the control volume C^T matrix.
2418
## This assumes that the test space is discontinuous
2420
element scalar_field {
2421
attribute rank { "0" },
2422
attribute name { "ControlVolumeDivergence" },
2424
element diagnostic {
2426
attribute field_name { string },
2427
velocity_mesh_choice,
2428
diagnostic_cv_divergence_scalar_field
2431
generic_aliased_field
2435
## Diffusive dissipation
2436
element scalar_field {
2437
attribute rank { "0" },
2438
attribute name { "DiffusiveDissipation" },
2440
element diagnostic {
2442
velocity_mesh_choice,
2443
diagnostic_scalar_field
2446
generic_aliased_field
2450
## Viscous dissipation
2451
element scalar_field {
2452
attribute rank { "0" },
2453
attribute name { "ViscousDissipation" },
2455
element diagnostic {
2457
velocity_mesh_choice,
2458
diagnostic_scalar_field
2461
generic_aliased_field
2465
## Richardson Number:
2467
## Ri = \frac{N^2}{(\frac{\partial u}{\partial z})^2 + (\frac{\partial u}{\partial z})^2}
2469
## N^2 = -\frac{g}{\rho_0}\frac{\partial \rho}{\partial z}
2472
## - Gravity must be constant.
2473
## - Assumes gravity is in -ve final coordinate direction.
2474
element scalar_field {
2475
attribute rank { "0" },
2476
attribute name { "RichardsonNumber" },
2477
attribute depends { "Velocity,PerturbationDensity" },
2479
element diagnostic {
2481
velocity_mesh_choice,
2482
diagnostic_richardson_number_field
2485
generic_aliased_field
2491
## See http://amcg.ese.ic.ac.uk/index.php?title=Local:Diagnostics#CFL_Number
2493
## Adapting to this field is not recommended
2494
element scalar_field {
2495
attribute rank { "0" },
2496
attribute name { "CFLNumber" },
2497
attribute replaces { "IDENT = -601" },
2499
element diagnostic {
2501
velocity_mesh_choice,
2502
diagnostic_scalar_field
2505
generic_aliased_field
2509
## ControlVolumeCFLNumber
2511
## Courant Number as defined on a control volume mesh
2513
## Adapting to this field is not recommended
2514
element scalar_field {
2515
attribute rank { "0" },
2516
attribute name { "ControlVolumeCFLNumber" },
2518
element diagnostic {
2520
velocity_mesh_choice,
2521
diagnostic_scalar_field
2524
generic_aliased_field
2530
## Courant Number as defined on a DG mesh
2532
## Adapting to this field is not recommended
2533
element scalar_field {
2534
attribute rank { "0" },
2535
attribute name { "DG_CourantNumber" },
2537
element diagnostic {
2539
velocity_mesh_choice,
2540
diagnostic_scalar_field
2543
generic_aliased_field
2547
## CVMaterialDensityCFLNumber
2549
## Courant Number as defined on a control volume mesh and
2550
## incorporating the MaterialDensity.
2551
## Requires a MaterialDensity field!
2553
## Adapting to this field is not recommended
2554
element scalar_field {
2555
attribute rank { "0" },
2556
attribute name { "CVMaterialDensityCFLNumber" },
2558
element diagnostic {
2560
velocity_mesh_choice,
2561
diagnostic_scalar_field
2564
generic_aliased_field
2568
element scalar_field {
2569
attribute rank { "0" },
2570
attribute name { "SolidConcentration" },
2572
element diagnostic {
2574
velocity_mesh_choice,
2575
diagnostic_scalar_field
2578
generic_aliased_field
2582
## This scalar field is meant to replace DENTRAF.
2583
## Basically, if you use new options, DENTRAF is no longer needed
2584
## No repointing is done from this field to DENTRAF.
2585
element scalar_field {
2586
attribute rank { "0" },
2587
attribute name { "CopyofDensity" },
2588
attribute replaces { "DENTRAF" },
2590
element diagnostic {
2592
velocity_mesh_choice,
2593
diagnostic_scalar_field
2597
## Add field to be used by Solid_configuration to
2598
## Visualize the solids and MaterialVolumeFraction together
2599
element scalar_field {
2600
attribute rank { "0" },
2601
attribute name { "VisualizeSolidFluid" },
2603
element diagnostic {
2605
velocity_mesh_choice,
2606
diagnostic_scalar_field
2610
## Add field to be used by Solid_configuration to
2611
## Visualize the solid_Concentration
2612
element scalar_field {
2613
attribute rank { "0" },
2614
attribute name { "VisualizeSolid" },
2616
element diagnostic {
2618
velocity_mesh_choice,
2619
diagnostic_scalar_field
2623
## Add field to be used by Solid_configuration to
2624
## map the solid_Concentration from particle mesh to
2626
element scalar_field {
2627
attribute rank { "0" },
2628
attribute name { "ParticleScalar" },
2630
element diagnostic {
2633
diagnostic_scalar_field
2637
## Add field to be used by Explicit_ALE to
2638
## visualize functional values before iterations start.
2639
element scalar_field {
2640
attribute rank { "0" },
2641
attribute name { "FunctionalBegin" },
2643
element diagnostic {
2646
diagnostic_scalar_field
2650
## Add field to be used by Explicit_ALE to
2651
## visualize functional values at each iteration.
2652
element scalar_field {
2653
attribute rank { "0" },
2654
attribute name { "FunctionalIter" },
2656
element diagnostic {
2659
diagnostic_scalar_field
2663
## add a MaterialVolume scalar_field to calculate the spatially varying
2664
## volume of a material (requires a MaterialVolumeFraction)
2665
element scalar_field {
2666
attribute rank { "0" },
2667
attribute name { "MaterialVolume" },
2669
element diagnostic {
2671
velocity_mesh_choice,
2672
diagnostic_scalar_field
2675
generic_aliased_field
2679
## add a MaterialMass scalar_field to calculate the spatially varying
2680
## mass of a material (requires a MaterialVolumeFraction and a MaterialDensity)
2681
element scalar_field {
2682
attribute rank { "0" },
2683
attribute name { "MaterialMass" },
2685
element diagnostic {
2687
velocity_mesh_choice,
2688
diagnostic_scalar_field
2691
generic_aliased_field
2695
## Calculates the MaterialDensity based on the bulk Pressure
2696
## (and MaterialInternalEnergy if appropriate) for the equation
2697
## of state of this material.
2698
element scalar_field {
2699
attribute rank { "0" },
2700
attribute name { "MaterialEOSDensity" },
2702
element diagnostic {
2704
velocity_mesh_choice,
2705
diagnostic_scalar_field
2708
generic_aliased_field
2712
## Calculates the MaterialPressure based on the MaterialDensity
2713
## (and MaterialInternalEnergy if appropriate) for the equation
2714
## of state of this material.
2715
element scalar_field {
2716
attribute rank { "0" },
2717
attribute name { "MaterialPressure" },
2719
element diagnostic {
2721
velocity_mesh_choice,
2722
diagnostic_scalar_field
2725
generic_aliased_field
2729
## Calculates the BulkMaterialPressure based on the MaterialDensity
2730
## and MaterialVolumeFraction (and MaterialInternalEnergy if appropriate)
2731
## for the equation of state of all materials.
2732
element scalar_field {
2733
attribute rank { "0" },
2734
attribute name { "BulkMaterialPressure" },
2736
element diagnostic {
2738
velocity_mesh_choice,
2739
diagnostic_scalar_field
2742
generic_aliased_field
2746
## Grid Reynolds number
2747
element scalar_field {
2748
attribute rank { "0" },
2749
attribute name { "GridReynoldsNumber" },
2750
(element diagnostic {
2753
attribute name { "VelocityMesh" }
2755
diagnostic_scalar_field
2757
| element aliased { generic_aliased_field })
2761
## Peclet Number Pe = U*dx/2*diffusivity
2763
## Also see the test case 'grid_peclet_number'
2764
## if you wish to see the effect of changing the
2765
## diffusivity on a 1D, cg-discretised tracer-field
2767
## Adapting to this field is not recommended
2768
element scalar_field {
2769
attribute rank { "0" },
2770
attribute name { "GridPecletNumber" },
2772
element diagnostic {
2774
## Mesh on which to calculate dx
2776
## This is the name of the scalar field
2777
## to calculate the Peclet number for
2778
## Note this field needs to have a diffusivity
2779
element field_name { string },
2780
diagnostic_scalar_field
2783
generic_aliased_field
2787
## Horizontal velocity divergence:
2791
## Uses the gravity field direction to determine the horizontal plane.
2792
element scalar_field {
2793
attribute rank { "0" },
2794
attribute name { "HorizontalVelocityDivergence" },
2796
element diagnostic {
2798
velocity_mesh_choice,
2799
diagnostic_scalar_field
2802
generic_aliased_field
2807
## Velocity divergence:
2811
element scalar_field {
2812
attribute rank { "0" },
2813
attribute name { "VelocityDivergence" },
2815
element diagnostic {
2817
velocity_mesh_choice,
2818
diagnostic_scalar_field
2821
generic_aliased_field
2826
## Vorticity for a 2D field:
2831
element scalar_field {
2832
attribute rank { "0" },
2833
attribute name { "Vorticity2D" },
2835
element diagnostic {
2838
diagnostic_scalar_field
2841
generic_aliased_field
2846
## Kinetic energy density:
2850
## where rho_0 is the (reference) density
2853
## - The Density, PerturbationDensity, KineticEnergyDensity and Velocity fields must be on the same mesh.
2854
element scalar_field {
2855
attribute rank { "0" },
2856
attribute name { "KineticEnergyDensity" },
2858
element diagnostic {
2860
velocity_mesh_choice,
2861
diagnostic_scalar_field
2864
generic_aliased_field
2869
## Gravitational potential energy density:
2871
## rho_0*(1.0 + rho')*(g dot (r - r_0))
2873
## where rho_0 is the (reference) density, rho' is the perturbation density and r_0 is the potential energy zero point.
2876
## - Requires a constant gravity direction.
2877
## - The Density, PerturbationDensity and GravitationalPotentialEnergyDensity fields must be on the same mesh.
2878
element scalar_field {
2879
attribute rank { "0" },
2880
attribute name { "GravitationalPotentialEnergyDensity" },
2882
element diagnostic {
2884
velocity_mesh_choice,
2885
diagnostic_scalar_field,
2886
## Coordinate of a point with a potential energy of zero.
2887
element zero_point {
2892
generic_aliased_field
2896
## Isopycnal coordinate
2898
## z_star(x,t) = 1/A int_V' H(rho(x',t)-rho(x,t)) dV'
2900
## where rho is the density, A is the width/area of the domain
2903
## - You need to specify a (fine) mesh to redistribute the PerturbationDensity onto
2904
## - Requires a constant gravity direction.
2905
## - The Density, PerturbationDensity and GravitationalPotentialEnergyDensity fields must be on the same mesh.
2906
element scalar_field {
2907
attribute rank { "0" },
2908
attribute name { "IsopycnalCoordinate" },
2910
element diagnostic {
2912
velocity_mesh_choice,
2913
## This is the mesh onto which we redistribute the PerturbationDensity
2915
attribute name { string }
2917
diagnostic_scalar_field
2920
generic_aliased_field
2924
## Background potential energy density:
2926
## PE_b = rho*z_star
2928
## where rho is the density, z_star is the isopycnal coordinate
2931
## - Requires a constant gravity direction.
2932
## - The Density, PerturbationDensity and
2933
## GravitationalPotentialEnergyDensity fields must be on the
2935
element scalar_field {
2936
attribute rank { "0" },
2937
attribute name { "BackgroundPotentialEnergyDensity" },
2939
element diagnostic {
2941
velocity_mesh_choice,
2942
diagnostic_scalar_field
2945
generic_aliased_field
2950
## Ertel potential vorticity:
2952
## (f + curl u) dot grad rho'
2955
## - Requires a geometry dimension of 3.
2956
element scalar_field {
2957
attribute rank { "0" },
2958
attribute name { "PotentialVorticity" },
2959
attribute depends { "Velocity,PerturbationDensity" },
2961
element diagnostic {
2963
velocity_mesh_choice,
2964
diagnostic_scalar_field
2967
generic_aliased_field
2971
## Relative potential vorticity:
2973
## curl u dot grad rho'
2974
element scalar_field {
2975
attribute rank { "0" },
2976
attribute name { "RelativePotentialVorticity" },
2977
attribute depends { "Velocity,PerturbationDensity" },
2979
element diagnostic {
2981
velocity_mesh_choice,
2982
diagnostic_scalar_field
2985
generic_aliased_field
2989
## Local average mesh edge lengths
2990
element scalar_field {
2991
attribute rank { "0" },
2992
attribute name { "MeshEdgeLengths" },
2994
element diagnostic {
2997
attribute name { "CoordinateMesh" }
2999
diagnostic_scalar_field
3002
generic_aliased_field
3006
## Calculate the horizontal stream function psi where:
3007
## \partial_x \psi = -v
3008
## \partial_y \psi = u
3009
## where u and v are perpendicular to the gravity direction. Applies a
3010
## strong Dirichlet boundary condition of 0 on all boundaries.
3011
element scalar_field {
3012
attribute rank { "0" },
3013
attribute name { "HorizontalStreamFunction" },
3014
attribute depends { "Velocity" },
3016
element diagnostic {
3018
velocity_mesh_choice,
3021
linear_solver_options_sym
3023
diagnostic_scalar_field
3026
generic_aliased_field
3035
## - The Speed and Velocity fields must be on the same mesh.
3036
element scalar_field {
3037
attribute rank { "0" },
3038
attribute name { "Speed" },
3040
element diagnostic {
3042
velocity_mesh_choice,
3043
diagnostic_scalar_field
3046
generic_aliased_field
3051
## Volume of the vehicles
3053
## used in Traffic Modelling
3054
element scalar_field {
3055
attribute rank { "0" },
3056
attribute name { "SolidPhase" },
3057
attribute raplaces { "IDENT = -42"},
3059
element diagnostic {
3061
velocity_mesh_choice,
3062
diagnostic_scalar_field
3065
generic_aliased_field
3069
## Absolute Difference between two scalar fields.
3071
## Both fields must be in this material_phase.
3072
## Assumes both fields are on the same mesh as the AbsoluteDifference field.
3073
element scalar_field {
3074
attribute rank { "0" },
3075
attribute name { "AbsoluteDifference" },
3077
element diagnostic {
3079
attribute field_name_a { string },
3080
attribute field_name_b { string },
3082
diagnostic_scalar_field,
3083
## Evaluate the absolute difference once the average difference has been removed?
3084
element relative_to_average {
3087
## Ignore boundary nodes (i.e. zero them when calculating the difference)
3088
element ignore_boundaries {
3093
generic_aliased_field
3098
## Absolute Difference between two scalar fields.
3100
## Both fields must be in this material_phase.
3101
## Assumes both fields are on the same mesh as the AbsoluteDifference field.
3102
element scalar_field {
3103
attribute rank { "0" },
3104
attribute name { "ScalarAbsoluteDifference" },
3106
element diagnostic {
3108
attribute field_name_a { string },
3109
attribute field_name_b { string },
3111
diagnostic_scalar_field,
3112
## Evaluate the absolute difference once the average difference has been removed?
3113
element relative_to_average {
3116
## Ignore boundary nodes (i.e. zero them when calculating the difference)
3117
element ignore_boundaries {
3122
generic_aliased_field
3126
## Galerkin projection of one field onto another mesh.
3128
## The field must be in this material_phase.
3130
## NOTE: you need the solver options if the mesh
3131
## of this field is continuous.
3132
element scalar_field {
3133
attribute rank { "0" },
3134
attribute name { "GalerkinProjection" },
3136
element diagnostic {
3138
element source_field_name { string },
3140
## Lump the mass matrix of the galerkin projection
3141
## less accurate but faster and might give smoother result.
3146
linear_solver_options_sym
3148
diagnostic_scalar_field
3151
generic_aliased_field
3155
## Primary production of Phytoplankton. This is calculated by
3156
## the ocean biology module and will not be calculated unless
3157
## ocean biology is being simulated.
3158
element scalar_field {
3159
attribute rank { "0" },
3160
attribute name { "PrimaryProduction" },
3162
element diagnostic {
3164
velocity_mesh_choice,
3165
diagnostic_scalar_field
3168
generic_aliased_field
3172
## Grazing of Phytoplankton by Zooplankton. This is calculated by
3173
## the ocean biology module and will not be calculated unless
3174
## ocean biology is being simulated.
3175
element scalar_field {
3176
attribute rank { "0" },
3177
attribute name { "PhytoplanktonGrazing" },
3179
element diagnostic {
3181
velocity_mesh_choice,
3182
diagnostic_scalar_field
3185
generic_aliased_field
3190
element scalar_field {
3191
attribute rank { "0" },
3192
attribute name { "TidalRange" },
3193
attribute replaces { "IDENT = -32" },
3195
element diagnostic {
3197
velocity_mesh_choice,
3198
diagnostic_scalar_field_tidal_range
3201
generic_aliased_field
3205
element scalar_field {
3206
attribute rank { "0" },
3207
attribute name { "MaxFreeSurface" },
3208
attribute replaces { "IDENT = -33" },
3210
element diagnostic {
3212
velocity_mesh_choice,
3213
diagnostic_scalar_field
3216
generic_aliased_field
3220
element scalar_field {
3221
attribute rank { "0" },
3222
attribute name { "MinFreeSurface" },
3223
attribute replaces { "IDENT = -34" },
3225
element diagnostic {
3227
velocity_mesh_choice,
3228
diagnostic_scalar_field
3231
generic_aliased_field
3235
element scalar_field {
3236
attribute rank { "0" },
3237
attribute name { "HarmonicAmplitudeM2" },
3239
element diagnostic {
3241
velocity_mesh_choice,
3242
diagnostic_scalar_field
3245
generic_aliased_field
3249
element scalar_field {
3250
attribute rank { "0" },
3251
attribute name { "HarmonicPhaseM2" },
3253
element diagnostic {
3255
velocity_mesh_choice,
3256
diagnostic_scalar_field
3259
generic_aliased_field
3263
element scalar_field {
3264
attribute rank { "0" },
3265
attribute name { "HarmonicAmplitudeS2" },
3267
element diagnostic {
3269
velocity_mesh_choice,
3270
diagnostic_scalar_field
3273
generic_aliased_field
3277
element scalar_field {
3278
attribute rank { "0" },
3279
attribute name { "HarmonicPhaseS2" },
3281
element diagnostic {
3283
velocity_mesh_choice,
3284
diagnostic_scalar_field
3287
generic_aliased_field
3291
element scalar_field {
3292
attribute rank { "0" },
3293
attribute name { "HarmonicAmplitudeN2" },
3295
element diagnostic {
3297
velocity_mesh_choice,
3298
diagnostic_scalar_field
3301
generic_aliased_field
3305
element scalar_field {
3306
attribute rank { "0" },
3307
attribute name { "HarmonicPhaseN2" },
3309
element diagnostic {
3311
velocity_mesh_choice,
3312
diagnostic_scalar_field
3315
generic_aliased_field
3319
element scalar_field {
3320
attribute rank { "0" },
3321
attribute name { "HarmonicAmplitudeK2" },
3323
element diagnostic {
3325
velocity_mesh_choice,
3326
diagnostic_scalar_field
3329
generic_aliased_field
3333
element scalar_field {
3334
attribute rank { "0" },
3335
attribute name { "HarmonicPhaseK2" },
3337
element diagnostic {
3339
velocity_mesh_choice,
3340
diagnostic_scalar_field
3343
generic_aliased_field
3347
element scalar_field {
3348
attribute rank { "0" },
3349
attribute name { "HarmonicAmplitudeK1" },
3351
element diagnostic {
3353
velocity_mesh_choice,
3354
diagnostic_scalar_field
3357
generic_aliased_field
3361
element scalar_field {
3362
attribute rank { "0" },
3363
attribute name { "HarmonicPhaseK1" },
3365
element diagnostic {
3367
velocity_mesh_choice,
3368
diagnostic_scalar_field
3371
generic_aliased_field
3375
element scalar_field {
3376
attribute rank { "0" },
3377
attribute name { "HarmonicAmplitudeO1" },
3379
element diagnostic {
3381
velocity_mesh_choice,
3382
diagnostic_scalar_field
3385
generic_aliased_field
3389
element scalar_field {
3390
attribute rank { "0" },
3391
attribute name { "HarmonicPhaseO1" },
3393
element diagnostic {
3395
velocity_mesh_choice,
3396
diagnostic_scalar_field
3399
generic_aliased_field
3403
element scalar_field {
3404
attribute rank { "0" },
3405
attribute name { "HarmonicAmplitudeP1" },
3407
element diagnostic {
3409
velocity_mesh_choice,
3410
diagnostic_scalar_field
3413
generic_aliased_field
3417
element scalar_field {
3418
attribute rank { "0" },
3419
attribute name { "HarmonicPhaseP1" },
3421
element diagnostic {
3423
velocity_mesh_choice,
3424
diagnostic_scalar_field
3427
generic_aliased_field
3431
element scalar_field {
3432
attribute rank { "0" },
3433
attribute name { "HarmonicAmplitudeQ1" },
3435
element diagnostic {
3437
velocity_mesh_choice,
3438
diagnostic_scalar_field
3441
generic_aliased_field
3445
element scalar_field {
3446
attribute rank { "0" },
3447
attribute name { "HarmonicPhaseQ1" },
3449
element diagnostic {
3451
velocity_mesh_choice,
3452
diagnostic_scalar_field
3455
generic_aliased_field
3459
element scalar_field {
3460
attribute rank { "0" },
3461
attribute name { "HarmonicAmplitudeMf" },
3463
element diagnostic {
3465
velocity_mesh_choice,
3466
diagnostic_scalar_field
3469
generic_aliased_field
3473
element scalar_field {
3474
attribute rank { "0" },
3475
attribute name { "HarmonicPhaseMf" },
3477
element diagnostic {
3479
velocity_mesh_choice,
3480
diagnostic_scalar_field
3483
generic_aliased_field
3487
element scalar_field {
3488
attribute rank { "0" },
3489
attribute name { "HarmonicAmplitudeMm" },
3491
element diagnostic {
3493
velocity_mesh_choice,
3494
diagnostic_scalar_field
3497
generic_aliased_field
3501
element scalar_field {
3502
attribute rank { "0" },
3503
attribute name { "HarmonicPhaseMm" },
3505
element diagnostic {
3507
velocity_mesh_choice,
3508
diagnostic_scalar_field
3511
generic_aliased_field
3515
element scalar_field {
3516
attribute rank { "0" },
3517
attribute name { "HarmonicAmplitudeSSa" },
3519
element diagnostic {
3521
velocity_mesh_choice,
3522
diagnostic_scalar_field
3525
generic_aliased_field
3529
## Output the universal numbering of the mesh on which this field is based.
3530
element scalar_field {
3531
attribute rank { "0" },
3532
attribute name { "UniversalNumber" },
3534
element diagnostic {
3537
diagnostic_scalar_field
3540
generic_aliased_field
3544
## Output the processors which own the nodes of the mesh on which this field is based.
3545
element scalar_field {
3546
attribute rank { "0" },
3547
attribute name { "NodeOwner" },
3549
element diagnostic {
3552
diagnostic_scalar_field
3555
generic_aliased_field
3559
## Output the processors which own the elements of the mesh on which this field is based.
3560
element scalar_field {
3561
attribute rank { "0" },
3562
attribute name { "ElementOwner" },
3564
element diagnostic {
3567
diagnostic_scalar_field
3570
generic_aliased_field
3574
## Primary production of Phytoplankton. This is calculated by
3575
## the ocean biology module and will not be calculated unless
3576
## ocean biology is being simulated.
3577
element scalar_field {
3578
attribute rank { "0" },
3579
attribute name { "HarmonicPhaseSSa" },
3581
element diagnostic {
3583
velocity_mesh_choice,
3584
diagnostic_scalar_field
3587
generic_aliased_field
3592
# Insert new diagnostic scalar fields here using the template:
3593
# element scalar_field {
3594
# attribute rank { "0" },
3595
# attribute name { "NewFieldName" },
3597
# element diagnostic {
3598
# internal_algorithm,
3599
# velocity_mesh_choice,
3600
# diagnostic_scalar_field
3603
# generic_aliased_field
3610
# This is the choice of additional vector field to be solved for
3611
vector_field_choice =
3613
# The first is a generic field, which may be used for any user-defined field
3614
# that FLUIDITY knows nothing about, or a generic diagnostic
3615
# Prognostic vector fields are not possible (other than velocity and those known fields below).
3617
## Generic field variable (vector)
3618
element vector_field {
3619
attribute rank { "1" },
3620
attribute name { xsd:string },
3623
element prescribed {
3625
prescribed_vector_field
3628
generic_aliased_field
3630
element diagnostic {
3631
vector_diagnostic_algorithms,
3632
velocity_mesh_choice,
3633
diagnostic_vector_field
3638
# -- List of fields that are primarily prognostic,
3639
# but can be aliased.
3640
# -- The list is in order of most frequently used.
3642
## Prescribed vector fields below this
3643
element ___Prognostic_fields_below___ {
3648
# -- List of fields that are primarily prescribed,
3649
# but can be aliased. An example is Maximum bed shear stress.
3650
# -- The list is in order of most frequently used.
3652
## Prescribed vector fields below this
3653
element ___Prescribed_fields_below___ {
3657
# Insert new prescribed vector fields here using the template:
3658
# element vector_field {
3659
# attribute rank { "1" },
3660
# attribute name { "NewFieldName" },
3662
# element prescribed {
3664
# prescribed_vector_field
3667
# generic_aliased_field
3672
# -- Last is a list of fields that are primarily diagnostic,
3673
# but can be aliased. An example is Tidal Range.
3674
# -- The list is in order of most frequently used.
3676
## Diagnostic vector fields below this
3677
element ___Diagnostic_Fields_Below___ {
3681
## Gradient of a scalar field evaluated using the C gradient
3682
## matrix constructed using finite elements.
3683
## Field must be in this material_phase.
3684
element vector_field {
3685
attribute rank { "1" },
3686
attribute name { "FiniteElementGradient" },
3688
element diagnostic {
3690
attribute field_name { string },
3692
element integrate_gradient_by_parts {
3695
diagnostic_gradient_vector_field
3698
generic_aliased_field
3703
## Gradient of a scalar field evaluated using the transpose
3704
## of the C^T divergence matrix constructed using finite
3706
## Field must be in this material_phase.
3707
element vector_field {
3708
attribute rank { "1" },
3709
attribute name { "FiniteElementDivergenceTransposed" },
3711
element diagnostic {
3713
attribute field_name { string },
3715
element integrate_divergence_by_parts {
3718
diagnostic_gradient_vector_field
3721
generic_aliased_field
3726
## Relative vorticity field - curl of the velocity field
3727
element vector_field {
3728
attribute rank { "1" },
3729
attribute name { "Vorticity" },
3731
element diagnostic {
3733
### Relative vorticity
3734
#element algorithm {
3735
# attribute name { "curl" },
3736
# attribute material_phase_support { "single" },
3737
# attribute source_field_name { "Velocity" }
3740
attribute name { "VelocityMesh" }
3742
diagnostic_vector_field
3745
generic_aliased_field
3749
## Planetary vorticity
3752
## - Requires geometry dimension of 3.
3753
element vector_field {
3754
attribute rank { "1" },
3755
attribute name { "PlanetaryVorticity" },
3757
element diagnostic {
3759
velocity_mesh_choice,
3760
diagnostic_vector_field
3763
generic_aliased_field
3767
## Absolute vorticity:
3772
## - Requires a geometry dimension of 3.
3773
element vector_field {
3774
attribute rank { "1" },
3775
attribute name { "AbsoluteVorticity" },
3776
attribute depends { "Velocity" },
3778
element diagnostic {
3780
velocity_mesh_choice,
3781
diagnostic_vector_field
3784
generic_aliased_field
3789
## Gradient of a scalar field evaluated using the transpose
3790
## of the C^T matrix constructed using control volumes.
3791
## Field must be in this material_phase.
3792
element vector_field {
3793
attribute rank { "1" },
3794
attribute name { "ControlVolumeDivergenceTransposed" },
3796
element diagnostic {
3798
attribute field_name { string },
3799
velocity_mesh_choice,
3800
diagnostic_cv_gradient_vector_field
3803
generic_aliased_field
3807
## Full velocity in an
3808
## inner element SGS treatment of momentum
3811
## - Requires a geometry dimension of 3.
3812
## - Requires inner element active for momentum
3813
element vector_field {
3814
attribute rank { "1" },
3815
attribute name { "InnerElementFullVelocity" },
3817
element diagnostic {
3820
attribute name { "InnerElementMesh" }
3822
diagnostic_vector_field
3825
generic_aliased_field
3829
## Vorticity of the full velocity in an
3830
## inner element SGS treatment of momentum
3833
## - Requires a geometry dimension of 3.
3834
## - Requires inner element active for momentum
3835
element vector_field {
3836
attribute rank { "1" },
3837
attribute name { "InnerElementFullVorticity" },
3839
element diagnostic {
3842
attribute name { "InnerElementMesh" }
3844
diagnostic_vector_field
3847
generic_aliased_field
3851
## Vorticity of the SGS velocity in an
3852
## inner element SGS treatment of momentum
3855
## - Requires a geometry dimension of 3.
3856
## - Requires inner element active for momentum
3857
element vector_field {
3858
attribute rank { "1" },
3859
attribute name { "InnerElementVorticity" },
3861
element diagnostic {
3864
attribute name { "InnerElementMesh" }
3866
diagnostic_vector_field
3869
generic_aliased_field
3873
## The continuous solution mapped to a discontinuous mesh
3876
## - Requires a geometry dimension of 3.
3877
## - Requires inner element active for momentum
3878
element vector_field {
3879
attribute rank { "1" },
3880
attribute name { "DgMappedVelocity" },
3882
element diagnostic {
3885
attribute name { "InnerElementMesh" }
3887
diagnostic_vector_field
3890
generic_aliased_field
3894
## Vorticity of the DG mapped Velocity
3895
## Note vorticity is actually calculated over a DG field
3898
## - Requires a geometry dimension of 3.
3899
## - Requires inner element active for momentum
3900
element vector_field {
3901
attribute rank { "1" },
3902
attribute name { "DgMappedVorticity" },
3904
element diagnostic {
3907
attribute name { "InnerElementMesh" }
3909
diagnostic_vector_field
3912
generic_aliased_field
3916
## Solid Velocity field. Used to generate the momentum source
3917
element vector_field {
3918
attribute rank { "1" },
3919
attribute replaces {"UTRAF,VTRAF,WTRAF"},
3920
attribute name { "SolidVelocity" },
3922
element diagnostic {
3925
diagnostic_vector_field
3929
## Same as Solid Velocity field but it is on the Particle mesh.
3930
## It is used to map the velocities coming from an external program like
3931
## FEMDEM or DEM to the fluid mesh.
3932
element vector_field {
3933
attribute rank { "1" },
3934
attribute name { "ParticleVector" },
3936
element diagnostic {
3939
diagnostic_vector_field
3943
## Same as Solid Velocity field but it is on the Particle mesh.
3944
## It is used to map the velocities coming from an external program like
3945
## FEMDEM or DEM to the fluid mesh.
3946
element vector_field {
3947
attribute rank { "1" },
3948
attribute name { "ParticleForce" },
3950
element diagnostic {
3953
diagnostic_vector_field
3958
## Same as Solid Velocity field but it is on the Particle mesh.
3959
## It is used to map the velocities coming from an external program like
3960
## FEMDEM or DEM to the fluid mesh.
3961
element vector_field {
3962
attribute rank { "1" },
3963
attribute name { "SolidForce" },
3965
element diagnostic {
3967
velocity_mesh_choice,
3968
diagnostic_vector_field
3972
element vector_field {
3973
attribute rank { "1" },
3974
attribute name { "VelocityPlotForSolids" },
3976
element diagnostic {
3978
velocity_mesh_choice,
3979
diagnostic_vector_field
3983
## Same as Solid Velocity field but it is on the Particle mesh.
3984
## It is used to map the velocities coming from an external program like
3985
## FEMDEM or DEM to the fluid mesh.
3986
element vector_field {
3987
attribute rank { "1" },
3988
attribute name { "FunctionalGradient" },
3990
element diagnostic {
3992
velocity_mesh_choice,
3993
diagnostic_vector_field
3997
## LinearMomentum field.
3999
## (where p is the linear momentum, \rho the density and u the velocity)
4000
element vector_field {
4001
attribute rank { "1" },
4002
attribute name { "LinearMomentum" },
4004
element diagnostic {
4006
velocity_mesh_choice,
4007
diagnostic_vector_field
4010
generic_aliased_field
4014
## Calculate the control volume auxiliary gradient for a particular field.
4015
## The related field must be a scalar field in this material_phase.
4016
element vector_field {
4017
attribute rank { "0" },
4018
attribute name { "ControlVolumeAuxiliaryGradient" },
4020
element diagnostic {
4022
velocity_mesh_choice,
4023
attribute gradient_of_field { string },
4024
diagnostic_vector_field
4027
generic_aliased_field
4031
## Calculate the dg (Bassi Rebay) auxiliary gradient for a particular field.
4032
## The related field must be a scalar field in this material_phase.
4033
element vector_field {
4034
attribute rank { "0" },
4035
attribute name { "DGAuxiliaryGradient" },
4037
element diagnostic {
4039
velocity_mesh_choice,
4040
attribute gradient_of_field { string },
4041
diagnostic_vector_field
4044
generic_aliased_field
4048
## Experimental geostrophic source field to be used in combination with
4049
## a free surface. Does not solve a vertical balance yet.
4050
element vector_field {
4051
attribute rank { "1" },
4052
attribute name { "GeostrophicSource" },
4054
element diagnostic {
4057
diagnostic_vector_field
4062
## Absolute Difference between two vector fields.
4064
## Both fields must be in this material_phase.
4065
## Assumes both fields are on the same mesh as the AbsoluteDifference field.
4066
element vector_field {
4067
attribute rank { "1" },
4068
attribute name { "AbsoluteDifference" },
4070
element diagnostic {
4072
attribute field_name_a { string },
4073
attribute field_name_b { string },
4075
diagnostic_vector_field
4078
generic_aliased_field
4083
## Absolute Difference between two vector fields.
4085
## Both fields must be in this material_phase.
4086
## Assumes both fields are on the same mesh as the AbsoluteDifference field.
4087
element vector_field {
4088
attribute rank { "1" },
4089
attribute name { "VectorAbsoluteDifference" },
4091
element diagnostic {
4093
attribute field_name_a { string },
4094
attribute field_name_b { string },
4096
diagnostic_vector_field
4099
generic_aliased_field
4104
## Bed Shear Stress = density*drag_coeff*|u|*u
4106
## at the moment this assumes the density and drag coefficients are constants.
4107
## This diagnostic vector field is only calculated over surface elements/nodes,
4108
## interior nodes will have zero value.
4109
element vector_field {
4110
attribute rank { "1" },
4111
attribute name { "BedShearStress" },
4113
element diagnostic {
4115
velocity_mesh_choice,
4116
diagnostic_vector_field_bed_shear_stress
4119
generic_aliased_field
4123
## Max Bed Shear Stress.
4125
## Note that you need BedShearStress turned on for this to work.
4126
element vector_field {
4127
attribute rank { "1" },
4128
attribute name { "MaxBedShearStress" },
4130
element diagnostic {
4132
velocity_mesh_choice
4133
#diagnostic_vector_field_max_bed_shear_stress
4136
generic_aliased_field
4139
## This is the time after which the max operator is
4140
## applied to the bed shear stress.
4141
element spin_up_time {
4147
element vector_field {
4148
attribute rank { "1" },
4149
attribute name { "Displacement" },
4151
element diagnostic {
4153
velocity_mesh_choice,
4154
diagnostic_vector_field
4157
generic_aliased_field
4161
## Galerkin projection of one field onto another mesh.
4163
## The field must be in this material_phase.
4165
## NOTE: you need the solver options if the mesh
4166
## of this field is continuous.
4167
element vector_field {
4168
attribute rank { "1" },
4169
attribute name { "GalerkinProjection" },
4171
element diagnostic {
4173
element source_field_name { string },
4175
## Lump the mass matrix of the galerkin projection
4176
## less accurate but faster and might give smoother result.
4181
linear_solver_options_sym
4183
diagnostic_vector_field
4186
generic_aliased_field
4190
## Projects the Coriolis term onto the mesh of this diagnostic field.
4191
## Note that multiple projection methods are available (under the
4192
## algorithm option).
4193
element vector_field {
4194
attribute rank { "1" },
4195
attribute name { "Coriolis" },
4197
element diagnostic {
4199
velocity_mesh_choice,
4200
diagnostic_vector_field
4205
# Insert new diagnostic vector field here using the template:
4206
# element vector_field {
4207
# attribute rank { "1" },
4208
# attribute name { "NewFieldName" },
4210
# element diagnostic {
4211
# internal_algorithm,
4213
# diagnostic_vector_field
4216
# generic_aliased_field
4223
# This is the choice of additional tensor fields
4224
tensor_field_choice =
4226
# The first is a generic field, which may be used for any user-defined field
4227
# that FLUIDITY knows nothing about, or a generic diagnostic
4228
# Prognostic tensor fields are not possible.
4230
## Generic field variable (tensor)
4231
element tensor_field {
4232
attribute rank { "2" },
4233
attribute name { xsd:string },
4236
element prescribed {
4238
prescribed_tensor_field
4241
generic_aliased_field
4243
element diagnostic {
4244
tensor_diagnostic_algorithms,
4245
velocity_mesh_choice,
4246
python_diagnostic_field_code?,
4247
diagnostic_tensor_field
4252
# -- Second is a list of tensor fields that are primarily prescribed,
4253
# but can be aliased.
4254
# -- The list is in order of most frequently used.
4256
## Prescribed scalar fields below this
4257
element ___Prescribed_fields_below___ {
4261
## MaterialViscosity field:
4263
## Field for the viscosity of this material.
4264
## Required if using a diagnostic bulk viscosity
4265
## in a multimaterial simulation.
4266
element tensor_field {
4267
attribute rank { "2" },
4268
attribute name { "MaterialViscosity" },
4270
element prescribed {
4272
prescribed_tensor_field
4275
generic_aliased_field
4280
element tensor_field {
4281
attribute rank { "2" },
4282
attribute name { "MaterialElasticity" },
4284
element prescribed {
4286
prescribed_tensor_field
4289
generic_aliased_field
4295
# Insert new prescribed tensor fields here using the template:
4296
# element tensor_field {
4297
# attribute rank { "2" },
4298
# attribute name { "NewFieldName" },
4300
# element prescribed {
4302
# prescribed_tensor_field
4305
# generic_aliased_field
4310
# -- Last is a list of fields that are primarily diagnostic,
4311
# but can be aliased.
4312
# -- The list is in order of most frequently used.
4314
## Diagnostic tensor fields below this
4315
element ___Diagnostic_Fields_Below___ {
4318
## From a field on a mesh, diagnose the anisotropic
4319
## interpolation weight that would give the mesh back.
4320
## It is computed as:
4322
element tensor_field {
4323
attribute rank { "2" },
4324
attribute name { "FieldTolerance" },
4326
element diagnostic {
4328
element source_field_name { string },
4329
velocity_mesh_choice,
4330
diagnostic_tensor_field
4333
generic_aliased_field
4338
# Insert new diagnostic tensor field here using the template:
4339
# element tensor_field {
4340
# attribute name { "NewFieldName" },
4342
# element diagnostic {
4343
# internal_algorithm,
4345
# diagnostic_tensor_field
4348
# generic_aliased_field
4357
## Read mesh from file.
4360
## Triangle mesh format.
4362
## Enter the base name without the .edge .ele, .face or
4363
## .node extensions, and without process numbers.
4365
attribute name { "triangle" },
4368
## Read the mesh from a vtu. Note that the mesh will have no surface
4371
attribute name { "vtu" },
4374
## CGNS mesh format (not yet implemented)
4376
attribute name { "cgns" },
4380
attribute file_name { xsd:string },
4381
from_file_mesh_stat_options,
4384
## Make mesh from existing mesh. The existing mesh cannot itself
4385
## be made from an existing mesh (i.e. it must be read from a
4389
element mesh_shape {
4390
element polynomial_degree {
4394
element mesh_continuity {
4395
element string_value{
4396
"continuous" | "discontinuous"
4399
## Make mesh periodic
4400
element periodic_boundary_conditions {
4401
attribute name { xsd:string },
4402
## List of boundary ids that are aliased to
4403
element physical_boundary_ids {
4406
## List of boundary ids that are aliased
4407
element aliased_boundary_ids {
4410
## Python code which takes coordinate of an aliased
4411
## boundary node and returns the coordinate of a physical
4413
element coordinate_map {
4417
## Extrude a horizontal (1D or 2D) mesh in the vertical
4419
## Depth over which to extrude
4420
## top will be at z=0
4421
## bottom will be at z=-bottom_depth
4422
element bottom_depth {
4425
## Constant or function to specify the depth of the
4426
## layers. The function is a function of all coordinates
4427
## (so in 2+1D: x,y and z) to specify a layer depth that
4428
## varies both in the horizontal as in the vertical.
4429
element sizing_function {
4432
## surface_id to assign to the top of the extruded mesh
4433
element top_surface_id {
4436
## surface_id to assign to the bottom of the extruded mesh
4437
element bottom_surface_id {
4441
derived_mesh_stat_options,
4446
# Options for inclusion/exclusion of mesh statistics from the .stat file
4447
include_mesh_in_stat =
4449
## Include this mesh in the .stat file
4450
element include_in_stat {
4454
exclude_mesh_from_stat =
4456
## Exclude this mesh from the .stat file
4457
element exclude_from_stat {
4462
# Diagnostic statistics options for meshed, with enabled by default
4463
mesh_stat_options_enabled_default = include_mesh_in_stat
4464
mesh_stat_options_enabled_default |= exclude_mesh_from_stat
4466
# Diagnostic statistics options for meshed, with disabled by default
4467
mesh_stat_options_disabled_default = exclude_mesh_from_stat
4468
mesh_stat_options_disabled_default |= include_mesh_in_stat
4470
from_file_mesh_stat_options =
4472
## Specify what is added to .stat files
4474
mesh_stat_options_enabled_default
4477
derived_mesh_stat_options =
4479
## Specify what is added to .stat files
4481
mesh_stat_options_disabled_default
4485
input_choice_tensor_field =
4488
## An isotropic tensor, i.e.
4489
## one with no directional variation.
4490
## Can be represented as a scalar real.
4494
## A symmetric tensor, i.e.
4496
element anisotropic_symmetric {
4497
input_choice_real_dim_symmetric_tensor
4499
## A general asymmetric tensor.
4500
element anisotropic_asymmetric {
4501
input_choice_real_dim_tensor
4509
## Constitutive laws for fluids
4510
element constitutive_law {
4511
attribute name { "fluid" }
4513
## Constitutive laws for solids
4514
element constitutive_law {
4515
attribute name { "solid" }
4522
## Optional region ids to associate different values
4523
## to different regions of the mesh.
4524
## Leave unselected if you`re not using multiple regions or
4526
## Currently only works with triangle files created by gmsh2triangle.
4527
element region_ids {
4532
temporal_control_volume_options =
4534
## Temporal discretisation options that are only relevant if a control volume or mixed control volume - continuous galerkin spatial discretisation is selected for this field.
4535
element control_volumes {
4536
## Number of iterations within an advection solve.
4537
## This increases the accuracy of the face values and ensures that
4538
## the pivoted solution is cancelled out.
4539
## Defaults to 1 if unselected.
4540
element number_advection_iterations {
4541
attribute replaces { "INT(ABS(NDISOT)/10)" },
4543
## Cut short advection_iterations if the specified tolerance
4545
## This only works for pure control volume discretisations.
4549
## Select the norm with which you want the tolerance to be tested.
4551
## The infinity norm.
4552
element infinity_norm {
4555
## Select the norm with which you want the tolerance to be tested.
4561
## Select the norm with which you want the tolerance to be tested.
4563
## The l2 norm evaluated on a control volume mesh.
4564
element cv_l2_norm {
4571
## Use timestep subcycling to solve this equation.
4572
## Specify the maximum courant number per subcycle.
4573
## This only works for pure control volume discretisations.
4574
element maximum_courant_number_per_subcycle {
4576
field_based_cfl_number_options
4578
## Use timestep subcycling to solve this equation.
4579
## Specify the number of subcycles.
4580
## This only works for pure control volume discretisations.
4581
element number_advection_subcycles {
4585
## Only works if a control volume or mixed control volume -
4586
## continuous galerkin spatial discretisation is selected.
4587
## If not active then the theta specified above will be used.
4588
## Otherwise use variable limited theta on individual faces.
4589
element limit_theta {
4590
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 1,3,5,7,9 (odd)" },
4593
## Only works if a control volume or mixed control volume -
4594
## continuous galerkin spatial discretisation is selected.
4595
## Time discretisation of upwind discretisation off which the
4596
## higher order solution is pivotted.
4597
## - pivot_theta = 1 - implicit pivot (default if not set and
4598
## best choice if not intentionally modifying
4599
## scheme to be explicit)
4600
## - pivot_theta = 0 - explicit pivot
4601
element pivot_theta {
4607
temporal_discontinuous_galerkin_options =
4609
## This enables DG-specific timestepping options, such as
4610
## explicit advection subcycling.
4611
element discontinuous_galerkin {
4613
## Use timestep subcycling to solve this equation.
4614
## Specify the maximum courant number per subcycle.
4615
element maximum_courant_number_per_subcycle {
4618
## Use timestep subcycling to solve this equation.
4619
## Specify the number of subcycles.
4620
element number_advection_subcycles {
4629
## Use a pure control volume discretisations.
4630
## Follows a new control volume code path.
4631
element control_volumes {
4632
spatial_control_volume_options,
4634
## Use the gradient of the field constructed using the
4635
## basis functions of the parent finite element mesh to
4636
## form the divergence.
4638
## DOES NOT CURRENTLY WORK WITH ROBIN OR WEAK DIRICHLET BOUNDARY CONDITIONS!
4640
## Based on schemes in Handbook of Numerical Analysis,
4641
## P.G. Ciarlet, J.L. Lions eds, vol 7, pp 713-1020
4642
element diffusion_scheme {
4643
attribute name{"ElementGradient"}
4645
## Use an auxiliary gradient equation to find the gradient of the field.
4647
## DOES NOT CURRENTLY WORK WITH ROBIN BOUNDARY CONDITIONS!
4649
## Based on scheme proposed in Bassi, F. & Rebay, S., A
4650
## high-order accurate discontinuous finite element method
4651
## for the numerical solution of the compressible
4652
## Navier-Stokes equations, Journal Of Computational
4653
## Physics, 1997, 131, 267-279
4654
element diffusion_scheme {
4655
attribute name{"BassiRebay"}
4661
spatial_control_volume_options = standard_control_volume_options
4662
spatial_control_volume_options |= compressive_control_volume_options
4664
standard_control_volume_options =
4666
## First Order Upwind face value discretisation
4667
## face_value = donor_value,
4669
## donor_value = income*val_1 + (1.-income)*val_2,
4670
## where val_i is the value on the ith node neighbouring the face and
4671
## income = [0, 1] depending on whether the flow is coming from node 1 or 2
4672
## First order upwinding is monotonic so no limiting is ever required
4673
element face_value {
4674
attribute name { "FirstOrderUpwind" },
4675
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 0,1" },
4678
## Trapezoidal face value discretisation
4679
## face_value = 0.5*(val_1 + val_2),
4681
## val_i is the value on the ith node neighbouring the face
4683
## Trapezoidal discretisation is unbounded so limiting is compulsory
4684
element face_value {
4685
attribute name { "Trapezoidal" },
4686
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 2,3" },
4689
## Finite Element face value discretisation
4690
## face_value = finite element interpolation from surrounding nodes
4692
## Finite element discretisation may become unbounded so limiting is often necessary.
4693
element face_value {
4694
attribute name { "FiniteElement" },
4695
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 4,5,6,7" },
4700
coupled_spatial_control_volume_options = coupled_control_volume_options
4701
coupled_spatial_control_volume_options |= compressive_control_volume_options
4703
# coupled control volume options are the same as the standard ones (annoyingly copied and pasted)
4704
# except that firstorderupwind gets limiter options
4705
coupled_control_volume_options =
4707
## First Order Upwind face value discretisation
4708
## face_value = donor_value,
4710
## donor_value = income*val_1 + (1.-income)*val_2,
4711
## where val_i is the value on the ith node neighbouring the face and
4712
## income = [0, 1] depending on whether the flow is coming from node 1 or 2
4713
## First order upwinding is monotonic so no limiting is ever required
4714
element face_value {
4715
attribute name { "FirstOrderUpwind" },
4716
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 0,1" },
4719
## Trapezoidal face value discretisation
4720
## face_value = 0.5*(val_1 + val_2),
4722
## val_i is the value on the ith node neighbouring the face
4724
## Trapezoidal discretisation is unbounded so limiting is compulsory
4725
element face_value {
4726
attribute name { "Trapezoidal" },
4727
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 2,3" },
4730
## Finite Element face value discretisation
4731
## face_value = finite element interpolation from surrounding nodes
4733
## Finite element discretisation may become unbounded so limiting is often necessary.
4734
element face_value {
4735
attribute name { "FiniteElement" },
4736
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 4,5,6,7" },
4741
compressive_control_volume_options =
4743
## HyperC face value discretisation
4745
## face_value calculated from upper bound of explicit TVD zone of NVD diagram
4746
## Normally used for MaterialVolumeFraction fields
4747
element face_value {
4748
attribute name { "HyperC" },
4749
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 8,9" },
4750
upwind_value_options?,
4751
cv_face_cfl_number_options
4753
## UltraC face value discretisation
4755
## face_value calculated from extended upper bound of
4756
## explicit TVD zone of NVD diagram assuming
4757
## values bounded by target_maximum and target_minimum.
4758
element face_value {
4759
attribute name { "UltraC" },
4760
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 8,9, with ULTRAC = TRUE from solidity_options.inp" },
4761
## Specifiy the upper bound which UltraC will use to
4762
## calculate the maximum flux.
4763
element target_maximum {
4766
## Specifiy the lower bound which UltraC will use to
4767
## calculate the minimum flux.
4768
element target_minimum {
4771
upwind_value_options?,
4772
cv_face_cfl_number_options
4774
## **UNDER TESTING**
4776
## PotentialUltraC face value discretisation
4778
## face_value calculated from extended upper bound of
4779
## explicit TVD zone of NVD diagram if potential
4780
## value of field is sufficient (as specified by
4781
## target_maximum) to ensure the correct front advection
4784
## If not then either switch to HyperC or use a modified flux
4785
## based on the potential function.
4786
element face_value {
4787
attribute name { "PotentialUltraC" },
4788
## Specifiy the upper bound which PotentialUltraC will use
4789
## to calculate the maximum flux if the potential function
4790
## value is sufficient to maintain the correct front
4791
## advection velocity.
4792
element target_maximum {
4795
## Specifiy the lower bound which PotentialUltraC will use to calculate the minimum flux.
4796
element target_minimum {
4800
## Select what PotentialUltraC should do if the
4801
## potential function value does not reach the required
4802
## value specified by the target_maximum.
4804
## Switch to using HyperC face values. This ensures
4805
## that the advection velocity is correct however may
4806
## create isolated regions beneath the target_maximum.
4807
element switch_to_hyperc {
4810
## Select what PotentialUltraC should do if the
4811
## potential function value does not reach the required
4812
## value specified by the target_maximum.
4814
## Modify the maximum nodal values (both downwind and
4815
## upwind) so that the fluxes are at their maximum
4816
## possible without affecting the front advection
4818
element use_potential_flux {
4822
upwind_value_options?,
4823
cv_face_cfl_number_options
4827
#Select the type of dynamic control to be used
4828
#Note: DEM and FEMDEM require the respective libraries
4830
input_solid_dynamics_choice =
4832
## Obtain values from point and radius file.
4834
## First line of file is free to use (for comments)
4835
## Second line must contain the number of particles
4836
## Third and fourth line are again for comments.
4837
## Following lines include 10 columns, corresponding to
4838
## the particle's x, y, and z positions, followed by the radius, then
4839
## velocities in x, y, and z directions, followed by angular velocities
4840
## in the x, y, and z directions.
4841
element dynamic_type {
4842
attribute name {"from_input_file"},
4843
attribute file_name {xsd:string}
4845
## Two python scripts must be provided. The script is cycled over each particle.
4846
## One script for particle position (output is tuple of position coords)
4847
## Second script is for particle radius (output is tuple of position coords)
4848
## Third script is for particle translational velocity.
4849
## Fourth script is for particle angular velocity. (Note: particles
4850
## have a no slip boundary condition at the surface, so this angular velocity
4851
## WILL matter to the flow.)
4852
## Python functions should be of the form:
4855
## return # Return value
4856
## where X is a tuple of length geometry dimension.
4857
## X[0] contains the number of the particle (in real format)
4858
element dynamic_type {
4859
attribute name {"python_script"}
4861
element dynamic_type {
4862
attribute name {"use_simple_dynamics"},
4863
element set_bottom{real},
4864
element set_xmin{real},
4865
element set_ymin{real},
4866
element set_zmin{real},
4867
element set_xmax{real},
4868
element set_ymax{real},
4869
element set_zmax{real}
4871
## Using y3D to model dynamics. Filename of input file for y3D must
4873
element dynamic_type {
4874
attribute name {"use_y3D"},
4875
attribute file_name {xsd:string}
4877
## Using femdem 2D to model dynamics. Filename of input file must
4879
element dynamic_type {
4880
attribute name {"use_2Dfemdem"},
4881
attribute file_name {xsd:string}
4883
## Using femdem 3D to model dynamics. Filename of input file must
4885
element dynamic_type {
4886
attribute name {"use_3Dfemdem"},
4887
attribute file_name {xsd:string},
4889
attribute file_name {xsd:string}
4896
## Cap the min and max values of this field when using
4897
## it as a volume fraction to work out bulk material
4899
## No capping used if not selected.
4900
element cap_values {
4901
## Set the upper bound on the field.
4902
## Defaults to huge(0.0)*epsilon(0.0) if not set.
4906
## Set the lower bound on the field.
4907
## Defaults to -huge(0.0)*epsilon(0.0) if not set.
4914
surface_tension_option =
4916
element surface_tension {
4917
## Surface tension coefficient
4918
element surface_tension_coefficient {
4921
## The equilibrium contact angle (in radians) with the boundaries identified by the surface ids
4922
element equilibrium_contact_angle {
4925
element surface_ids {
4934
## Limit the face value to satisfy a boundedness criterion.
4935
element limit_face_value{
4944
## See "High-Resolution Schemes Using Flux Limiters for
4945
## Hyperblic Conservation-Laws", P. K. Sweby, 1984, Siam
4946
## Journal on Numerical Analysis, 21, 995-1011
4948
attribute replaces { "MOD(INT(ABS(NDISOT)/1),10) = 2,3,4,5" },
4949
attribute name {"Sweby"},
4951
upwind_value_options?
4955
## See "The Ultimate Conservative Difference Scheme Applied
4956
## to Unsteady One-Dimensional Advection", B. P. Leonard,
4957
## 1991, Computer Methods in Applied Mechanics and
4958
## Engineering, 88, 17-74
4960
attribute name {"Ultimate"},
4961
field_based_cfl_number_options,
4962
upwind_value_options?
4967
## Control the upper and lower slopes of the NVD limiter
4969
## Defaults to Sweby, 1984 limiter (= 1.0) if unselected
4973
## Defaults to Sweby, 1984 limiter (= 2.0) if unselected
4980
upwind_value_options =
4983
## Select the method to be used for calculating the upwind value.
4984
## If not selected will default to project_upwind_value_from_point for
4985
## simplex element meshes and to a locally_bound_upwind_value for cube
4988
## This method projects the upwind value from a point in the element just
4989
## upwind of the node pair straddling the face. It is otherwise known as
4990
## anisotropic limiting.
4991
## This is only available on simplex meshes as it involes a search around
4992
## the donor node to find the upwind element.
4993
element project_upwind_value_from_point {
4994
attribute replaces { "NDISOT > 0 on simplex meshes" },
4995
## When the donor node is on a domain boundary reflect the projection
4996
## back into the mesh.
4997
element reflect_off_domain_boundaries {
5000
## Constrain the projected value to be between the min and max of the
5001
## element values which it was found from.
5002
element bound_projected_value_locally {
5005
## Store the locations of the elements where the upwind values
5006
## are projected from for each node pair.
5007
## This inserts an integer csr matrix into state so is memory expensive but
5008
## saves a significant amount of time (searching around the neighbouring elements).
5009
## This is unsafe for moving meshes but should be ok for adaptive meshes.
5010
element store_upwind_elements {
5011
attribute replaces { "ABS(NDISOT) >= 1000" },
5012
## Store the quadrature locations within the elements
5013
## where the upwind values
5014
## are projected from for each node pair.
5015
## This inserts a real block csr matrix into state so is even more memory
5016
## expensive than just storing the upwind elements and
5017
## only saves a comparitively
5018
## marginal amount of time (as actually searching the
5019
## neighbouring elements is the
5020
## slowest bit, finding the quadrature is relatively easy).
5021
element store_upwind_quadrature {
5022
attribute replaces { "ABS(NDISOT) >= 1000" },
5027
## Select the method to be used for calculating the upwind value.
5028
## If not selected will default to project_upwind_value_from_point for
5029
## simplex element meshes and to a locally_bound_upwind_value for cube
5032
## Projects the value of the advected variable from the downwind or donor node
5033
## using the interpolated gradient at the donor node in the
5034
## direction of the vector
5035
## connecting the node pair straddling the face.
5036
## This is available on all meshes (except if bounding the values).
5037
element project_upwind_value_from_gradient {
5039
## Select which node to project from:
5040
## Project from the downwind node (Jasak et al., 1999) so that:
5041
## upwind_value = downwind_value - 2*gradient.vector
5042
element project_from_downwind_value {
5045
## Select which node to project from:
5046
## Project from the donor node so that:
5047
## upwind_value = donor_value - gradient.vector
5048
element project_from_donor_value {
5052
## When the donor node is on a domain boundary reflect the projection
5053
## back into the mesh.
5054
element reflect_off_domain_boundaries {
5057
## Constrain the projected value to be between the min and max of the
5058
## element values which surround it.
5059
## This is only available on simplex meshes as it involes a search around
5060
## the donor node to find the upwind element.
5061
element bound_projected_value_locally {
5062
## Store the locations of the elements closest to the project value.
5063
## This inserts an integer csr matrix into state so is
5064
## memory expensive but
5065
## saves a significant amount of time (searching around
5066
## the neighbouring elements).
5067
## This is unsafe for moving meshes but should be ok for adaptive meshes.
5068
element store_upwind_elements {
5073
## Select the method to be used for calculating the upwind value.
5074
## If not selected will default to project_upwind_value_from_point for
5075
## simplex element meshes and to a locally_bound_upwind_value for cube
5078
## Chooses an upwind value by selecting the maximum or minimum of the neighbouring
5079
## nodes depending on the local slope of the donor and downwind values.
5080
## Otherwise known as isotropic limiting.
5081
## This is available on all meshes.
5082
element locally_bound_upwind_value {
5083
attribute replaces { "all cube elements, NDISOT < 0 on simplex elements" },
5086
## Select the method to be used for calculating the upwind value.
5087
## If not selected will default to project_upwind_value_from_point for
5088
## simplex element meshes and to a locally_bound_upwind_value for cube
5091
## Chooses an upwind value by selecting the value at the node most directy
5092
## upwind from the vector connecting the donor and downwind nodes.
5093
## This is available on all meshes.
5094
element pseudo_structured_upwind_value {
5100
field_based_cfl_number_options =
5103
## Select the Courant Number definition to be used.
5105
## This uses the control volume definition of the CFL Number.
5106
element courant_number {
5107
attribute name { "ControlVolumeCFLNumber" },
5110
## ***UNDER TESTING***
5112
## Select the Courant Number definition to be used.
5114
## This uses the control volume definition of the CFL Number.
5115
element courant_number {
5116
attribute name { "CVMaterialDensityCFLNumber" },
5119
## Select the Courant Number definition to be used.
5121
## This uses the finite element approximation of the CFL Number.
5122
element courant_number {
5123
attribute name { "CFLNumber" },
5126
## Select the Courant Number definition to be used.
5127
element courant_number {
5128
attribute name { string },
5134
cv_face_cfl_number_options =
5137
## Select the Courant Number definition to be used in the slope of
5138
## the NVD diagram upper bound.
5139
## This uses the finite difference definition of the CFL Number
5140
## consistent with the 1D version of HyperC (Leonard, 1981).
5141
## This is the default that reproduces old behaviour.
5142
## All others are under testing or construction.
5143
element courant_number {
5144
attribute name { "FiniteDifferenceCFLNumber" },
5147
## Select the Courant Number definition to be used in the slope of
5148
## the NVD diagram upper bound.
5149
## This uses the control volume definition of the CFL Number.
5150
element courant_number {
5151
attribute name { "ControlVolumeCFLNumber" },
5154
## ***UNDER TESTING***
5156
## Select the Courant Number definition to be used in the slope of
5157
## the NVD diagram upper bound.
5158
## This uses a control volume definition of the CFL Number
5159
## that incorporates the MaterialDensity.
5160
## Requires a MaterialDensity field in this material_phase!
5161
element courant_number {
5162
attribute name { "CVMaterialDensityCFLNumber" },
5165
## ***UNDER TESTING***
5167
## Select the Courant Number definition to be used in the slope of
5168
## the NVD diagram upper bound.
5169
## This uses the finite element approximation of the CFL Number.
5170
element courant_number {
5171
attribute name { "CFLNumber" },
5174
## ***UNDER TESTING***
5176
## Select the Courant Number definition to be used in the slope of
5177
## the NVD diagram upper bound.
5178
element courant_number {
5179
attribute name { string },
5185
timestep_cfl_number_options =
5188
## Select the Courant Number definition to be used for adaptive timestepping.
5189
## This uses the finite element approximation of the CFL Number.
5190
element courant_number {
5191
attribute name { "CFLNumber" },
5192
## Select the mesh on which you wish to evaluate the CFLNumber.
5193
velocity_mesh_choice
5195
## Select the Courant Number definition to be used for adaptive timestepping.
5196
## This uses the control volume definition of the CFL Number.
5197
element courant_number {
5198
attribute name { "ControlVolumeCFLNumber" },
5199
## Select the mesh on which you wish to evaluate the ControlVolumeCFLNumber.
5200
velocity_mesh_choice
5207
## Enable to include in the .stat file the fractions of the
5208
## scalar field contained in
5209
## bins specified by the user. This allows mixing of the field to be quantified.
5210
## Replaces and expands upon the old heaviside.dat file
5211
element include_mixing_stats{
5212
attribute name { xsd:string },
5213
attribute replaces { "heaviside.dat file" },
5215
## Select whether to evaluate the volume fraction over the finite element
5216
## (continuous galerkin) or within the control volume (control_volumes).
5218
## NOTE: continuous_galerkin only works with linear tets
5220
## NOTE: continuous_galerkin is not fully validated yet
5221
element continuous_galerkin {
5222
## if select normalise the volume fractions will be
5223
## divided by the total volume of the domain
5228
## Select whether to evaluate the volume fraction over the finite element
5229
## (continuous galerkin) or within the control volume (control_volumes).
5230
element control_volumes {
5231
## if select normalise the volume fractions will be divided by the total volume of the domain
5237
## The values of the bounds of the bins
5238
## e.g. the values 0 1 2 3 will return 4 bins
5239
## and the fraction of the field in each bin with,
5240
## 0<=field<1, 1<=field<2, 2<=field<3, 3<=field,
5241
## will be calculated.
5242
element mixing_bin_bounds {
5245
## Define the tolerance beneath the specified bins that should be included.
5246
## Defaults to zero at machine tolerance (epsilon(0.0)) if not selected.
5255
## Include statistics evaluated on the control volume mesh.
5256
element include_cv_stats {
5261
# Options for inclusion of calculations of surface integrals in the .stat file
5262
surface_integral_stats_base.surface_integral =
5264
attribute name { xsd:string },
5265
## Surface IDs defining the surface over which to integrate. If disabled, integrates over the whole surface.
5266
element surface_ids {
5269
## Enable to normalise the integral by dividing by the surface area
5274
surface_integral_stats_scalar =
5276
## Surface integral calculations. The following integral types are available:
5277
## value: Integrates the field
5278
## gradient_normal: Integrates the normal component of the gradient of the field
5279
element surface_integral {
5280
surface_integral_stats_scalar.surface_integral
5283
surface_integral_stats_scalar.surface_integral = surface_integral_stats_base.surface_integral
5284
surface_integral_stats_scalar.surface_integral &=
5286
attribute type { "value" | "gradient_normal" }
5288
surface_integral_stats_vector =
5290
## Surface integral calculations. The following integral types are available:
5291
## normal: Integrates the normal component of the field
5292
element surface_integral {
5293
surface_integral_stats_vector.surface_integral
5296
surface_integral_stats_vector.surface_integral = surface_integral_stats_base.surface_integral
5297
surface_integral_stats_vector.surface_integral &=
5299
attribute type { "normal" }
5302
velocity_equation_choice =
5304
## Select the equation used to solve for velocity.
5306
attribute name { "ShallowWater" }
5310
scalar_equation_choice =
5313
## Select the equation used to solve for this field.
5314
## Advection Diffusion is the norm for scalar fields.
5315
## Works for all discretisation types.
5317
attribute name { "AdvectionDiffusion" }
5319
## ***UNDER TESTING***
5321
## Select the equation used to solve for this field.
5322
## Conservation of Mass equation - requires the selection of a Density field.
5323
## ONLY WORKS FOR CONTROL VOLUME DISCRETISATIONS WITHOUT A
5324
## DIFFUSIVITY, SOURCE OR ABSORPTION.
5326
attribute name { "ConservationOfMass" },
5328
## Select density to use in the Conservation of Mass Equation
5329
## Use the MaterialDensity - useful for multimaterial simulations
5330
## Clearly this requires a MaterialDensity field to be present
5332
attribute name { "MaterialDensity" }
5334
## Select density to use in the Conservation of Mass Equation
5335
## Use the bulk Density
5336
## Clearly this requires a Density field to be present
5338
attribute name { "Density" }
5340
## Select density to use in the Conservation of Mass Equation
5342
attribute name { string }
5346
## ***UNDER TESTING***
5348
## Select the equation used to solve for this field.
5349
## Reduced Conservation of Mass equation - requires the selection of a Density field.
5351
## ONLY WORKS FOR CONTROL VOLUME DISCRETISATIONS WITHOUT A
5352
## DIFFUSIVITY, SOURCE OR ABSORPTION.
5354
## This equation is very similar to a standard conservation of mass equation
5355
## except that the time discretisation uses only a single time level of density.
5356
## This enables consistency between the
5357
## MaterialVolumeFraction (ReducedConservationOfMass) and
5358
## MaterialDensity (Advection) equations in compressible multimaterial simulations.
5360
attribute name { "ReducedConservationOfMass" },
5362
## Select density to use in the Reduced Conservation of Mass Equation
5363
## Use the MaterialDensity - useful for multimaterial simulations
5364
## Clearly this requires a MaterialDensity field to be present
5366
attribute name { "MaterialDensity" }
5368
## Select density to use in the Reduced Conservation of Mass Equation
5369
## Use the bulk Density
5370
## Clearly this requires a Density field to be present
5372
attribute name { "Density" }
5374
## Select density to use in the Reduced Conservation of Mass Equation
5376
attribute name { string }
5380
## ***UNDER TESTING***
5382
## Select the equation used to solve for this field.
5383
## Internal Energy equation - requires the selection of a Density field.
5384
## ONLY WORKS FOR CONTROL VOLUME DISCRETISATIONS WITHOUT A
5385
## DIFFUSIVITY, SOURCE OR ABSORPTION.
5386
## Solve the internal energy equation for this field.
5387
## Requires pressure and velocity fields to be present.
5388
## Uses a nonconservative time discretisation.
5390
attribute name { "InternalEnergy" },
5392
## Select density to use in the Internal Energy Equation
5393
## Use the MaterialDensity - useful for multimaterial simulations
5394
## Clearly this requires a MaterialDensity field to be present
5395
## Whatever field is selected must be present.
5397
attribute name { "MaterialDensity" }
5399
## Select density to use in the Internal Energy Equation
5400
## Use the bulk Density
5401
## Clearly this requires a Density field to be present
5402
## Whatever field is selected must be present.
5404
attribute name { "Density" }
5406
## Select density to use in the Internal Energy Equation
5407
## Whatever field is selected must be present.
5409
attribute name { string }
5413
## Option to solve for electrical potential from
5414
## electrokinetic, electrochemical or electrothermal sources
5416
attribute name { "ElectricalPotential" }
5421
inner_element_scalar =
5423
## Inner element sub-grid scale model (Candy and Pain)
5424
## Requires continuous galerkin selected above.
5425
element inner_element {
5426
attribute replaces { "NSUBTLOC, NSUBNTLOC" },
5427
## Inner element solution of the scalar field.
5428
element scalar_field {
5429
attribute rank { "0" },
5430
attribute name { "InnerElement" },
5431
element prognostic {
5433
attribute name { "InnerElementMesh" }
5435
prognostic_scalar_output_options,
5436
prognostic_scalar_stat_options,
5437
prognostic_detector_options
5443
inner_element_velocity =
5445
## Inner element sub-grid scale model (Candy and Pain)
5446
## Requires continuous galerkin selected above.
5447
element inner_element {
5448
attribute replaces { "NSUBVLOC, NSUBNVLOC" },
5449
## SGS velocity in an inner element SGS treatment of momentum
5452
## - Requires a geometry dimension of 3.
5453
## - Requires inner element active for momentum
5454
element vector_field {
5455
attribute rank { "1" },
5456
attribute name { "InnerElement" },
5457
element prognostic {
5459
attribute name { "InnerElementMesh" }
5461
prognostic_vector_output_options,
5462
prognostic_vector_stat_options,
5463
vector_convergence_options
5466
## A filter for the sub-grid scale equations
5467
## Add diffusion to matrix D of the Inner Element model
5468
element use_filter {
5469
## Strength of the diffusion term
5470
## Suggested value: 0.01
5476
element use_quadratic_pressure {
5477
attribute replaces { "PREOPT=PREOPT+1000" }
5479
element apply_full_discontinuous_Galerkin {
5480
attribute replaces { "PREOPT=PREOPT+10000" }
5486
## Add forcing from ocean data
5487
## If you enable this you MUST enable the /geometry/ocean_boundaries option too
5488
element ocean_forcing{
5489
## The netCDF data file downloaded from ERA-40 reanalysis
5490
element input_file {
5491
attribute file_name {xsd:string}
5493
element mesh_choice {
5494
velocity_mesh_choice
5496
element surface_stress {
5499
element temperature_flux {
5502
element salinity_flux {
5505
element solar_radiation {
5513
## Model of biological processes in the ocean.
5514
element ocean_biology{
5515
## A simple model of phytoplankton, zooplankton, general nutrient and detritus.
5518
## Python code specifying the source and sink relationships
5519
## between the biological tracers. This is usually achieved by
5520
## importing fluidity.ocean_biology and calling a scheme from there.
5521
element source_and_sink_algorithm {
5524
## Do not calculate sources and sinks.
5525
## This option is generally only useful for testing.
5526
element disable_sources_and_sinks {
5531
# element scalar_field {
5532
# attribute rank { "0" },
5533
# attribute name { "Phytoplankton" },
5535
# element prognostic {
5536
# velocity_mesh_choice,
5537
# prognostic_scalar_field
5539
# element prescribed {
5540
# velocity_mesh_choice,
5541
# prescribed_scalar_field
5546
# element scalar_field {
5547
# attribute rank { "0" },
5548
# attribute name { "Zooplankton" },
5550
# element prognostic {
5551
# velocity_mesh_choice,
5552
# prognostic_scalar_field
5554
# element prescribed {
5555
# velocity_mesh_choice,
5556
# prescribed_scalar_field
5561
# element scalar_field {
5562
# attribute rank { "0" },
5563
# attribute name { "Nutrient" },
5565
# element prognostic {
5566
# velocity_mesh_choice,
5567
# prognostic_scalar_field
5569
# element prescribed {
5570
# velocity_mesh_choice,
5571
# prescribed_scalar_field
5576
# element scalar_field {
5577
# attribute rank { "0" },
5578
# attribute name { "Detritus" },
5580
# element prognostic {
5581
# velocity_mesh_choice,
5582
# prognostic_scalar_field
5584
# element prescribed {
5585
# velocity_mesh_choice,
5586
# prescribed_scalar_field
5590
## Photosynthetically Active Radiation (PAR)
5591
element scalar_field {
5592
attribute rank { "0" },
5593
attribute name { "PhotosyntheticRadiation" },
5595
element prognostic {
5596
velocity_mesh_choice,
5597
prognostic_photosynthetic_radiation
5599
element prescribed {
5600
velocity_mesh_choice,
5601
prescribed_scalar_field
5610
prognostic_photosynthetic_radiation =
5614
attribute name { "PhotosyntheticRadiation" }
5616
## Spatial discretisation options
5617
element spatial_discretisation {
5619
## Discontinuous galerkin formulation. You can also use this
5620
## formulation with a continuous field in which case a simple
5621
## galerkin formulation will result.
5622
element discontinuous_galerkin {
5630
linear_solver_options_asym
5633
## Coefficients of absorption of photosynthetically active
5634
## radiation for water and phytoplankton.
5635
element absorption_coefficients {
5636
## Photosynthetically active radiation absorption coefficient for water.
5640
## Photosynthetically active radiation absorption coefficient for water.
5641
element phytoplankton {
5645
## Boundary conditions
5646
element boundary_conditions {
5647
attribute replaces { "boundary, TTPER1 TTPER2 TTPERI" },
5648
attribute name { string },
5650
element surface_ids {
5656
attribute name { "dirichlet" },
5657
## Apply the dirichlet bc weakly. Only available with
5658
## discontinuous_galerkin, control_volume and
5659
## legacy_mixed_cv_cg spatial_discretisations.
5661
## If not selected boundary conditions are applied strongly.
5662
element apply_weakly {
5668
attribute name { "neumann" },
5672
attribute name { "robin" },
5673
element order_zero_coefficient {
5676
element order_one_coefficient {
5682
prognostic_scalar_output_options,
5683
prognostic_scalar_stat_options,
5684
scalar_convergence_options,
5685
prognostic_detector_options,
5686
scalar_steady_state_options,
5687
adaptivity_options_scalar_field,
5688
## Set the priority of this field
5689
## This determines the order in which scalar_fields are solved for:
5690
## - higher numbers have the highest priority
5691
## - lower numbers (including negative) have the lowest priority
5692
## - default if not set is 0
5698
recalculation_options =
5700
## Prevent this field from being recalculated at every timestep.
5701
## This is cheaper especially if you are enforcing discrete properties on the field.
5702
element do_not_recalculate {
5707
discrete_properties_algorithm_scalar =
5709
## Select discrete properties to enforce on the field
5710
## either after being prescribed or interpolated
5711
element enforce_discrete_properties {
5712
## Update this field using the lagrangian multiplier
5713
## calculated in the solenoidal projection of a
5716
## Note this field must be specified as the update field
5717
## underneath that vector field too.
5719
## Note also this only really makes sense for coupled
5720
## fields like velocity and pressure.
5721
element solenoidal_lagrange_update {
5727
discrete_properties_algorithm_vector =
5729
## Select discrete properties to enforce on the field
5730
## either after being prescribed or interpolated
5731
element enforce_discrete_properties {
5736
solenoidal_options =
5737
## Constrained divergence-free projection.
5738
## This adds an additional constraint that ensures that the field
5739
## is solenoidal, i.e. divergence-free.
5740
## This is equivalent in cost to a pressure solve.
5741
## This is expensive, and thus best left until
5744
## Note well: this only makes sense for nondivergent
5745
## vector fields, such as incompressible velocity!
5746
element solenoidal {
5747
## Options for the mass matrix of the field being interpolated
5748
element interpolated_field {
5750
element continuous {
5751
## Lump the mass matrix for the assembly of the projection matrix
5752
## (not for the initial galerkin projection)
5754
## Required when using interpolating continuous fields
5755
element lump_mass_matrix {
5756
## Lump on the submesh.
5757
## This only works for simplex meshes and is only
5758
## strictly valid on 2d meshes.
5759
element use_submesh {
5764
element discontinuous {
5765
## Lump the mass matrix for the assembly of the projection matrix
5766
## (not for the initial galerkin projection)
5767
element lump_mass_matrix {
5773
## Options for the lagrange multiplier
5775
## Must be on a continuous mesh!
5776
element lagrange_multiplier {
5777
pressure_mesh_choice,
5778
element spatial_discretisation {
5780
element continuous_galerkin {
5781
## Remove the stabilisation term from the projection operator.
5783
## Automatic when not using P1P1.
5784
element remove_stabilisation_term {
5787
## Integrate the divergence operator by parts.
5789
## Automatic when projecting a discontinuous field
5790
element integrate_divergence_by_parts {
5794
element control_volumes {
5799
element reference_node {
5803
## Update a scalar field using the lagrange multiplier from
5804
## the divergence free projection of this field. The selected
5805
## scalar field must have solenoidal selected in its interpolation
5806
## options too and it must be on the same mesh as used for the
5807
## solenoidal projection above.
5809
## Note well: this only really makes sense for scalar fields linked to nondivergent
5810
## vector fields, such as pressure to incompressible velocity!
5811
element update_scalar_field {
5812
attribute name { "Pressure" },
5815
## Update a scalar field using the lagrange multiplier from
5816
## the divergence free projection of this field. The selected
5817
## scalar field must have solenoidal selected in its interpolation
5818
## options too and it must be on the same mesh as used for the
5819
## solenoidal projection above.
5821
## Note well: this only really makes sense for scalar fields linked to nondivergent
5822
## vector fields, such as pressure to incompressible velocity!
5823
element update_scalar_field {
5824
attribute name { string },
5828
## Solver options for the linear solve.
5829
## This method requires the inversion of a projection matrix.
5831
linear_solver_options_sym
5836
represcribe_before_interpolation =
5837
## Represcribe the field before interpolation.
5839
## This means the interpolation will not be conservative from the previous mesh so be careful what you're trying to achieve!
5840
element represcribe_before_interpolation {