Merge lp:~fluidity-core/fluidity/sediment into lp:fluidity

Proposed by Samuel Parkinson
Status: Merged
Merged at revision: 4107
Proposed branch: lp:~fluidity-core/fluidity/sediment
Merge into: lp:fluidity
Diff against target: 458 lines (+183/-78)
7 files modified
schemas/fluidity_options.rnc (+18/-9)
schemas/fluidity_options.rng (+26/-13)
schemas/prognostic_field_options.rnc (+5/-0)
schemas/prognostic_field_options.rng (+7/-0)
sediments/Sediment.F90 (+12/-19)
sediments/Sediment_Diagnostics.F90 (+11/-27)
tests/mms_sediment/MMS_X.flml (+104/-10)
To merge this branch: bzr merge lp:~fluidity-core/fluidity/sediment
Reviewer Review Type Date Requested Status
Jon Hill Approve
Review via email: mp+127255@code.launchpad.net

Description of the change

Changed bedload field to prognostic. I think it is a prognostic field really despite being trivial to solve and this way:
A) it can be checkpointed
B) we can start with an abritrary initial condition

I know you said you didn't like this solution but it seems the simplest option. What do you think?

To post a comment you must log in.
Revision history for this message
Jon Hill (jon-hill) wrote :

Approve, but grudgingly. The checkpointing *should* work, but I agree that an abritrary initial condition is required here.

There might be a better way in the long term.

An options check for a CV field would be useful though. Can this be added?

Revision history for this message
Samuel Parkinson (s-parkinson11) wrote :

Thanks again Jon. Yes I agree that perhaps this isn't the nicest way to do this. I am not totally sure what you mean by an options check for a CV field, can you elaborate at all?

Revision history for this message
Jon Hill (jon-hill) wrote :

The schema says:
No solver settings are required as the sediment model only works
 for p1 CG or DG fields where the mass matrix can be easily inverted.

So if you have a CV field this won't work. You should check which discretisation has been set and error if CV.

lp:~fluidity-core/fluidity/sediment updated
3488. By Samuel Parkinson

fixed error in schema description

Revision history for this message
Samuel Parkinson (s-parkinson11) wrote :

This was actually an error in the description. It will work for CV just not for >P1 discretisations

Revision history for this message
Jon Hill (jon-hill) wrote :

OK, merge it then.

review: Approve
lp:~fluidity-core/fluidity/sediment updated
3489. By Samuel Parkinson

changed mms test schema so that bedload is not calculated

3490. By Samuel Parkinson

merge with trunk

3491. By Samuel Parkinson

merge with trunk

3492. By Samuel Parkinson

removed some multiphase compatibility due to bug in flredecomp

3493. By Samuel Parkinson

merge with trunk

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'schemas/fluidity_options.rnc'
--- schemas/fluidity_options.rnc 2012-09-25 06:55:02 +0000
+++ schemas/fluidity_options.rnc 2012-10-24 15:56:21 +0000
@@ -1829,24 +1829,33 @@
1829 ## deposited through the prescribed boundary.1829 ## deposited through the prescribed boundary.
1830 ##1830 ##
1831 ## The units are in unit distances as a depth of sediment.1831 ## The units are in unit distances as a depth of sediment.
1832 ##
1833 ## - The equation type must be set to SedimentBedload
1834 ##
1835 ## - Spatial discretisation should be as the parent sediment class
1836 ##
1837 ## - Initial conditions can be set as normal
1838 ##
1839 ## - Most other settings are irrelevant
1840 ## - No solver settings are required as the sediment model only works
1841 ## for p1 discretisations where the mass matrix can be easily inverted.
1842 ## - The bedload is always calculated completely explicitly
1843 ## - You cannot apply Source or Absorbtion terms to the bedload
1844 ## - There is no diffusion of the bedload
1832 element scalar_field {1845 element scalar_field {
1833 attribute rank { "0" },1846 attribute rank { "0" },
1834 attribute name { "Bedload" },1847 attribute name { "Bedload" },
1835 ## Field type1848 ## Field type
1836 (1849 (
1837 element diagnostic {1850 element prognostic {
1838 ## Surface ids over which to calculate the bedload:1851 ## Surface ids over which to calculate the bedload:
1839 element surface_ids {1852 element surface_ids {
1840 integer_vector1853 integer_vector
1841 },1854 },
1842 diagnostic_scalar_field1855 prognostic_scalar_field,
1843 }|1856 ## Disables calculation of change to bedload due to
1844 element prescribed {1857 ## erosion/deposition (generally only used for mms testing):
1845 ## Surface ids over which to calculate the bedload deposition:1858 element disable_calculation { empty }?
1846 element surface_ids {
1847 integer_vector
1848 },
1849 prescribed_scalar_field
1850 }1859 }
1851 )1860 )
1852 },1861 },
18531862
=== modified file 'schemas/fluidity_options.rng'
--- schemas/fluidity_options.rng 2012-09-25 06:55:02 +0000
+++ schemas/fluidity_options.rng 2012-10-24 15:56:21 +0000
@@ -2562,30 +2562,43 @@
2562 <a:documentation>Sediment bedload diagnostic which records the sediment 2562 <a:documentation>Sediment bedload diagnostic which records the sediment
2563deposited through the prescribed boundary.2563deposited through the prescribed boundary.
25642564
2565The units are in unit distances as a depth of sediment.</a:documentation>2565The units are in unit distances as a depth of sediment.
2566
2567- The equation type must be set to SedimentBedload
2568
2569- Spatial discretisation should be as the parent sediment class
2570
2571- Initial conditions can be set as normal
2572
2573- Most other settings are irrelevant
2574 - No solver settings are required as the sediment model only works
2575 for p1 CG or DG fields where the mass matrix can be easily inverted.
2576 - The bedload is always calculated completely explicitly
2577 - You cannot apply Source or Absorbtion terms to the bedload
2578 - There is no diffusion of the bedload</a:documentation>
2566 <attribute name="rank">2579 <attribute name="rank">
2567 <value>0</value>2580 <value>0</value>
2568 </attribute>2581 </attribute>
2569 <attribute name="name">2582 <attribute name="name">
2570 <value>Bedload</value>2583 <value>Bedload</value>
2571 </attribute>2584 </attribute>
2572 <choice>2585 <group>
2573 <a:documentation>Field type</a:documentation>2586 <a:documentation>Field type</a:documentation>
2574 <element name="diagnostic">2587 <element name="prognostic">
2575 <element name="surface_ids">2588 <element name="surface_ids">
2576 <a:documentation>Surface ids over which to calculate the bedload:</a:documentation>2589 <a:documentation>Surface ids over which to calculate the bedload:</a:documentation>
2577 <ref name="integer_vector"/>2590 <ref name="integer_vector"/>
2578 </element>2591 </element>
2579 <ref name="diagnostic_scalar_field"/>2592 <ref name="prognostic_scalar_field"/>
2580 </element>2593 <optional>
2581 <element name="prescribed">2594 <element name="disable_calculation">
2582 <element name="surface_ids">2595 <a:documentation>Disables calculation of change to bedload due to
2583 <a:documentation>Surface ids over which to calculate the bedload deposition:</a:documentation>2596erosion/deposition (generally only used for mms testing):</a:documentation>
2584 <ref name="integer_vector"/>2597 <empty/>
2585 </element>2598 </element>
2586 <ref name="prescribed_scalar_field"/>2599 </optional>
2587 </element>2600 </element>
2588 </choice>2601 </group>
2589 </element>2602 </element>
2590 <element name="scalar_field">2603 <element name="scalar_field">
2591 <a:documentation>Sediment bedload diagnostic which records the sediment 2604 <a:documentation>Sediment bedload diagnostic which records the sediment
25922605
=== modified file 'schemas/prognostic_field_options.rnc'
--- schemas/prognostic_field_options.rnc 2012-09-18 08:03:27 +0000
+++ schemas/prognostic_field_options.rnc 2012-10-24 15:56:21 +0000
@@ -2068,6 +2068,11 @@
2068 ## Note: Only works for continuous galerkin or control volume discretisations.2068 ## Note: Only works for continuous galerkin or control volume discretisations.
2069 element equation {2069 element equation {
2070 attribute name { "KEpsilon" }2070 attribute name { "KEpsilon" }
2071 }|
2072 ## Equation type for the sediment bedload fields.
2073 ## Note: Only works for P1 discretisations.
2074 element equation {
2075 attribute name { "SedimentBedload" }
2071 }2076 }
2072 )2077 )
2073 )2078 )
20742079
=== modified file 'schemas/prognostic_field_options.rng'
--- schemas/prognostic_field_options.rng 2012-09-18 08:03:27 +0000
+++ schemas/prognostic_field_options.rng 2012-10-24 15:56:21 +0000
@@ -2553,6 +2553,13 @@
2553 <value>KEpsilon</value>2553 <value>KEpsilon</value>
2554 </attribute>2554 </attribute>
2555 </element>2555 </element>
2556 <element name="equation">
2557 <a:documentation>Equation type for the sediment bedload fields.
2558Note: Only works for P1 discretisations.</a:documentation>
2559 <attribute name="name">
2560 <value>SedimentBedload</value>
2561 </attribute>
2562 </element>
2556 </choice>2563 </choice>
2557 </define>2564 </define>
2558 <define name="equation_coefficients">2565 <define name="equation_coefficients">
25592566
=== modified file 'sediments/Sediment.F90'
--- sediments/Sediment.F90 2012-09-17 13:35:07 +0000
+++ sediments/Sediment.F90 2012-10-24 15:56:21 +0000
@@ -81,7 +81,8 @@
81 integer, intent(out), optional :: stat81 integer, intent(out), optional :: stat
82 character(len=FIELD_NAME_LEN) :: name82 character(len=FIELD_NAME_LEN) :: name
8383
84 call get_option(trim(state%option_path)//'/sediment/scalar_field['//int2str(i_field -&84 ! had to remove trim(state%option_path)// as this didn't work with flredecomp
85 call get_option('/material_phase[0]/sediment/scalar_field['//int2str(i_field -&
85 & 1)//']/name', name) 86 & 1)//']/name', name)
86 item => extract_scalar_field(state, trim(name), stat)87 item => extract_scalar_field(state, trim(name), stat)
8788
@@ -95,7 +96,8 @@
95 character(len=FIELD_NAME_LEN), intent(out) :: item96 character(len=FIELD_NAME_LEN), intent(out) :: item
96 integer, intent(out), optional :: stat97 integer, intent(out), optional :: stat
9798
98 call get_option(trim(state%option_path)//'/sediment/scalar_field['//int2str(i_field -&99 ! had to remove trim(state%option_path)// as this didn't work with flredecomp
100 call get_option('/material_phase[0]/sediment/scalar_field['//int2str(i_field -&
99 & 1)//']/name', item, stat=stat) 101 & 1)//']/name', item, stat=stat)
100102
101 end subroutine get_sediment_field_name103 end subroutine get_sediment_field_name
@@ -109,7 +111,8 @@
109 character(len=FIELD_NAME_LEN), intent(out) :: item111 character(len=FIELD_NAME_LEN), intent(out) :: item
110 integer, intent(out), optional :: stat112 integer, intent(out), optional :: stat
111113
112 call get_option(trim(state%option_path)//'/sediment/scalar_field['//int2str(i_field -&114 ! had to remove trim(state%option_path)// as this didn't work with flredecomp
115 call get_option('/material_phase[0]/sediment/scalar_field['//int2str(i_field -&
113 & 1)//']/prognostic/'//option, item, stat=stat) 116 & 1)//']/prognostic/'//option, item, stat=stat)
114117
115 end subroutine get_sediment_option_string118 end subroutine get_sediment_option_string
@@ -124,7 +127,8 @@
124 integer, intent(out), optional :: stat127 integer, intent(out), optional :: stat
125 real, intent(in), optional :: default128 real, intent(in), optional :: default
126 129
127 call get_option(trim(state%option_path)//'/sediment/scalar_field['//int2str(i_field -&130 ! had to remove trim(state%option_path)// as this didn't work with flredecomp
131 call get_option('/material_phase[0]/sediment/scalar_field['//int2str(i_field -&
128 & 1)//']/prognostic/'//option, item, stat = stat, default = default) 132 & 1)//']/prognostic/'//option, item, stat = stat, default = default)
129133
130 end subroutine get_sediment_option_real134 end subroutine get_sediment_option_real
@@ -140,7 +144,8 @@
140 144
141 character(len=FIELD_NAME_LEN) :: field_name145 character(len=FIELD_NAME_LEN) :: field_name
142146
143 call get_option(trim(state%option_path)//'/sediment/scalar_field['//int2str(i_field -&147 ! had to remove trim(state%option_path)// as this didn't work with flredecomp
148 call get_option('/material_phase[0]/sediment/scalar_field['//int2str(i_field -&
144 & 1)//']/name', field_name) 149 & 1)//']/name', field_name)
145 item => extract_scalar_field(state, trim(field_name)//option, stat)150 item => extract_scalar_field(state, trim(field_name)//option, stat)
146151
@@ -499,7 +504,6 @@
499504
500 character(len=FIELD_NAME_LEN) :: field_mesh, sediment_mesh, bc_type505 character(len=FIELD_NAME_LEN) :: field_mesh, sediment_mesh, bc_type
501 character(len=OPTION_PATH_LEN) :: field_option_path 506 character(len=OPTION_PATH_LEN) :: field_option_path
502 character(len=10) :: type
503 integer :: i_field, i_bc, i_bc_surf, i_bedload_surf,&507 integer :: i_field, i_bc, i_bc_surf, i_bedload_surf,&
504 & n_sediment_fields, nbcs508 & n_sediment_fields, nbcs
505 integer, dimension(2) :: bc_surface_id_count, bedload_surface_id_count509 integer, dimension(2) :: bc_surface_id_count, bedload_surface_id_count
@@ -536,10 +540,6 @@
536 ! Loop over boundary conditions for field540 ! Loop over boundary conditions for field
537 boundary_conditions: do i_bc=0, nbcs-1541 boundary_conditions: do i_bc=0, nbcs-1
538542
539 ! get name and type of boundary condition
540 call get_option(trim(field_option_path)//'/boundary_conditions['//int2str(i_bc)//&
541 &']/type[0]/name', bc_type)
542
543 ! check whether this is a reentrainment boundary543 ! check whether this is a reentrainment boundary
544 if (.not. (trim(bc_type) .eq. "sediment_reentrainment")) then544 if (.not. (trim(bc_type) .eq. "sediment_reentrainment")) then
545 cycle boundary_conditions545 cycle boundary_conditions
@@ -549,22 +549,15 @@
549 if (.not.(have_option('/material_phase[0]/vector_field::BedShearStress'))) then549 if (.not.(have_option('/material_phase[0]/vector_field::BedShearStress'))) then
550 FLExit("Reentrainment boundary condition requires a BedShearStress field")550 FLExit("Reentrainment boundary condition requires a BedShearStress field")
551 end if551 end if
552
553 ! warn if bedload field is prescribed
554 type = 'diagnostic'
555 if (have_option(trim(field_option_path)//'/scalar_field::Bedload/prescribed')) then
556 ewrite(0,*) 'WARNING: Bedload field is prescribed'
557 type = 'prescribed'
558 end if
559 552
560 ! check boundary id's are the same for re-entrainment and bedload553 ! check boundary id's are the same for re-entrainment and bedload
561 554
562 ! get bedload surface ids555 ! get bedload surface ids
563 bedload_surface_id_count=option_shape(trim(field_option_path)// &556 bedload_surface_id_count=option_shape(trim(field_option_path)// &
564 '/scalar_field::Bedload/'//type//'/surface_ids')557 '/scalar_field::Bedload/prognostic/surface_ids')
565 allocate(bedload_surface_ids(bedload_surface_id_count(1)))558 allocate(bedload_surface_ids(bedload_surface_id_count(1)))
566 call get_option(trim(field_option_path)// &559 call get_option(trim(field_option_path)// &
567 '/scalar_field::Bedload/'//type//'/surface_ids', bedload_surface_ids) 560 '/scalar_field::Bedload/prognostic/surface_ids', bedload_surface_ids)
568561
569 ! get reentrainment surface ids562 ! get reentrainment surface ids
570 bc_surface_id_count=option_shape(trim(field_option_path)//'/boundary_conditions['&563 bc_surface_id_count=option_shape(trim(field_option_path)//'/boundary_conditions['&
571564
=== modified file 'sediments/Sediment_Diagnostics.F90'
--- sediments/Sediment_Diagnostics.F90 2012-10-22 19:47:09 +0000
+++ sediments/Sediment_Diagnostics.F90 2012-10-24 15:56:21 +0000
@@ -173,19 +173,11 @@
173 end if173 end if
174 174
175 ! obtain surface ids over which to record deposition175 ! obtain surface ids over which to record deposition
176 if (have_option(trim(bedload_field%option_path)//"/diagnostic")) then176 surface_id_count=option_shape(trim(bedload_field%option_path)//&
177 surface_id_count=option_shape(trim(bedload_field%option_path)//&177 &"/prognostic/surface_ids")
178 &"/diagnostic/surface_ids")178 allocate(surface_ids(surface_id_count(1)))
179 allocate(surface_ids(surface_id_count(1)))179 call get_option(trim(bedload_field%option_path)//"/prognostic/surface_ids", &
180 call get_option(trim(bedload_field%option_path)//"/diagnostic/surface_ids", &180 & surface_ids)
181 & surface_ids)
182 else
183 surface_id_count=option_shape(trim(bedload_field%option_path)//&
184 &"/prescribed/surface_ids")
185 allocate(surface_ids(surface_id_count(1)))
186 call get_option(trim(bedload_field%option_path)//"/prescribed/surface_ids", &
187 & surface_ids)
188 end if
189181
190 ! loop through elements in surface field182 ! loop through elements in surface field
191 elements: do ele=1,element_count(deposited_sediment(i_field))183 elements: do ele=1,element_count(deposited_sediment(i_field))
@@ -243,7 +235,7 @@
243 call scale(diagnostic_field, 1./dt)235 call scale(diagnostic_field, 1./dt)
244 end if236 end if
245 237
246 if (.not. have_option(trim(bedload_field%option_path)//'/prescribed')) then238 if (.not. have_option(trim(bedload_field%option_path)//'/prognostic/disable_calculation')) then
247 ! Add on sediment falling in and subtract sediment coming out239 ! Add on sediment falling in and subtract sediment coming out
248 do i_node = 1, node_count(surface_mesh(i_field))240 do i_node = 1, node_count(surface_mesh(i_field))
249 ! add deposited sediment241 ! add deposited sediment
@@ -687,19 +679,11 @@
687 end if679 end if
688680
689 ! obtain sediment bedload surface ids681 ! obtain sediment bedload surface ids
690 if (have_option(trim(bedload%option_path)//"/diagnostic")) then682 surface_id_count=option_shape(trim(bedload%option_path)//&
691 surface_id_count=option_shape(trim(bedload%option_path)//&683 &"/prognostic/surface_ids")
692 &"/diagnostic/surface_ids")684 allocate(surface_ids(surface_id_count(1)))
693 allocate(surface_ids(surface_id_count(1)))685 call get_option(trim(bedload%option_path)//"/prognostic/surface_ids", &
694 call get_option(trim(bedload%option_path)//"/diagnostic/surface_ids", &686 & surface_ids)
695 & surface_ids)
696 else
697 surface_id_count=option_shape(trim(bedload%option_path)//&
698 &"/prescribed/surface_ids")
699 allocate(surface_ids(surface_id_count(1)))
700 call get_option(trim(bedload%option_path)//"/prescribed/surface_ids", &
701 & surface_ids)
702 end if
703 687
704 ! loop through elements in surface field688 ! loop through elements in surface field
705 elements: do i_ele=1, element_count(volume_fraction_surface)689 elements: do i_ele=1, element_count(volume_fraction_surface)
706690
=== modified file 'tests/mms_sediment/MMS_X.flml'
--- tests/mms_sediment/MMS_X.flml 2012-08-30 10:34:23 +0000
+++ tests/mms_sediment/MMS_X.flml 2012-10-24 15:56:21 +0000
@@ -1215,23 +1215,70 @@
1215 </steady_state>1215 </steady_state>
1216 <consistent_interpolation/>1216 <consistent_interpolation/>
1217 <scalar_field name="Bedload" rank="0">1217 <scalar_field name="Bedload" rank="0">
1218 <prescribed>1218 <prognostic>
1219 <surface_ids>1219 <surface_ids>
1220 <integer_value shape="1" rank="1">2</integer_value>1220 <integer_value shape="1" rank="1">2</integer_value>
1221 </surface_ids>1221 </surface_ids>
1222 <value name="WholeMesh">1222 <equation name="AdvectionDiffusion"/>
1223 <spatial_discretisation>
1224 <continuous_galerkin>
1225 <stabilisation>
1226 <no_stabilisation/>
1227 </stabilisation>
1228 <advection_terms/>
1229 <mass_terms/>
1230 </continuous_galerkin>
1231 <conservative_advection>
1232 <real_value rank="0">0.0</real_value>
1233 </conservative_advection>
1234 </spatial_discretisation>
1235 <temporal_discretisation>
1236 <theta>
1237 <real_value rank="0">0.5</real_value>
1238 </theta>
1239 </temporal_discretisation>
1240 <solver>
1241 <iterative_method name="gmres">
1242 <restart>
1243 <integer_value rank="0">30</integer_value>
1244 </restart>
1245 </iterative_method>
1246 <preconditioner name="sor"/>
1247 <relative_error>
1248 <real_value rank="0">1e-6</real_value>
1249 </relative_error>
1250 <absolute_error>
1251 <real_value rank="0">1e-15</real_value>
1252 </absolute_error>
1253 <max_iterations>
1254 <integer_value rank="0">1000</integer_value>
1255 </max_iterations>
1256 <never_ignore_solver_failures/>
1257 <diagnostics>
1258 <monitors/>
1259 </diagnostics>
1260 </solver>
1261 <initial_condition name="WholeMesh">
1223 <python>1262 <python>
1224 <string_value lines="20" type="code" language="python">def val(X,t):1263 <string_value lines="20" type="code" language="python">def val(X,t):
1225 import mms_sediment_tools as k1264 import mms_sediment_tools as k
1226 return k.s1_d(X)</string_value>1265 return k.s1_d(X)</string_value>
1227 </python>1266 </python>
1228 </value>1267 </initial_condition>
1229 <output/>1268 <output/>
1230 <stat/>1269 <stat/>
1270 <convergence>
1271 <include_in_convergence/>
1272 </convergence>
1231 <detectors>1273 <detectors>
1232 <exclude_from_detectors/>1274 <include_in_detectors/>
1233 </detectors>1275 </detectors>
1234 </prescribed>1276 <steady_state>
1277 <include_in_steady_state/>
1278 </steady_state>
1279 <consistent_interpolation/>
1280 <disable_calculation/>
1281 </prognostic>
1235 </scalar_field>1282 </scalar_field>
1236 <scalar_field name="BedloadVolumeFraction" rank="0">1283 <scalar_field name="BedloadVolumeFraction" rank="0">
1237 <diagnostic>1284 <diagnostic>
@@ -1424,23 +1471,70 @@
1424 </steady_state>1471 </steady_state>
1425 <consistent_interpolation/>1472 <consistent_interpolation/>
1426 <scalar_field name="Bedload" rank="0">1473 <scalar_field name="Bedload" rank="0">
1427 <prescribed>1474 <prognostic>
1428 <surface_ids>1475 <surface_ids>
1429 <integer_value shape="1" rank="1">2</integer_value>1476 <integer_value shape="1" rank="1">2</integer_value>
1430 </surface_ids>1477 </surface_ids>
1431 <value name="WholeMesh">1478 <equation name="AdvectionDiffusion"/>
1479 <spatial_discretisation>
1480 <continuous_galerkin>
1481 <stabilisation>
1482 <no_stabilisation/>
1483 </stabilisation>
1484 <advection_terms/>
1485 <mass_terms/>
1486 </continuous_galerkin>
1487 <conservative_advection>
1488 <real_value rank="0">0.0</real_value>
1489 </conservative_advection>
1490 </spatial_discretisation>
1491 <temporal_discretisation>
1492 <theta>
1493 <real_value rank="0">0.5</real_value>
1494 </theta>
1495 </temporal_discretisation>
1496 <solver>
1497 <iterative_method name="gmres">
1498 <restart>
1499 <integer_value rank="0">30</integer_value>
1500 </restart>
1501 </iterative_method>
1502 <preconditioner name="sor"/>
1503 <relative_error>
1504 <real_value rank="0">1e-6</real_value>
1505 </relative_error>
1506 <absolute_error>
1507 <real_value rank="0">1e-15</real_value>
1508 </absolute_error>
1509 <max_iterations>
1510 <integer_value rank="0">1000</integer_value>
1511 </max_iterations>
1512 <never_ignore_solver_failures/>
1513 <diagnostics>
1514 <monitors/>
1515 </diagnostics>
1516 </solver>
1517 <initial_condition name="WholeMesh">
1432 <python>1518 <python>
1433 <string_value lines="20" type="code" language="python">def val(X,t):1519 <string_value lines="20" type="code" language="python">def val(X,t):
1434 import mms_sediment_tools as k1520 import mms_sediment_tools as k
1435 return k.s2_d(X)</string_value>1521 return k.s2_d(X)</string_value>
1436 </python>1522 </python>
1437 </value>1523 </initial_condition>
1438 <output/>1524 <output/>
1439 <stat/>1525 <stat/>
1526 <convergence>
1527 <include_in_convergence/>
1528 </convergence>
1440 <detectors>1529 <detectors>
1441 <exclude_from_detectors/>1530 <include_in_detectors/>
1442 </detectors>1531 </detectors>
1443 </prescribed>1532 <steady_state>
1533 <include_in_steady_state/>
1534 </steady_state>
1535 <consistent_interpolation/>
1536 <disable_calculation/>
1537 </prognostic>
1444 </scalar_field>1538 </scalar_field>
1445 <scalar_field name="BedloadVolumeFraction" rank="0">1539 <scalar_field name="BedloadVolumeFraction" rank="0">
1446 <diagnostic>1540 <diagnostic>