Skip to content

Conversation

@caozd999
Copy link

@caozd999 caozd999 commented Nov 1, 2019

This PR adds sediment transport analysis member (Phase I) to the model, with the following variables computed:

  • sediment settling velocity
  • sediment erosion flux
  • sediment bedload transport flux
  • suspended sediment concentration in water column

@pwolfram pwolfram self-assigned this Nov 1, 2019
@pwolfram
Copy link
Contributor

pwolfram commented Nov 1, 2019

Thanks @caozd999, will review and work with you on this next week. @mark-petersen, please let me know how involved you'd like to be for now. This work is currently built in an analysis member and eventually will need to be transitioned to an answer-changing capability as it affects the ocean density. Thanks!

@mark-petersen
Copy link
Contributor

@caozd999, thanks for your contribution. We will need a design document, which can be a simple write-up of your method, equations, and testing.

Please also state on this PR how you tested this, and how you can make that test case available to others for future verification. Make sure to test with multiple compilers (typically gnu and intel) in both debug and optimized mode.

@mark-petersen mark-petersen self-requested a review November 4, 2019 13:52
@caozd999
Copy link
Author

caozd999 commented Nov 4, 2019

@mark-petersen Ok, I will work on that to complete a full pull request.

@pwolfram
Copy link
Contributor

pwolfram commented Nov 4, 2019

@caozd999, is what is being asked clear? Please ask questions of us to clarify goals on this first PR you are leading.

For example, I'd pull out the specific parts of your existing design documents to address the additions here. Showing that this works can be accommodated by having a PR with tests and plots for each of the capabilities. Doing this in an "analysis" step that makes a png or pdf, like we did with the dam break case, is a good idea for instance.

@caozd999
Copy link
Author

caozd999 commented Nov 4, 2019

@pwolfram Yes I understand that this PR should include test cases for the functions it claims. I finished the design document and collected several test cases, now I need put all them within this PR to make them available.

@caozd999 caozd999 force-pushed the ocean/sediment_transport branch from de17924 to 00f27fb Compare December 3, 2019 17:16
SedimentFluxIndex - I

SedimentFluxIndex -I
add the following files
- Registry_sediment_flux_index.xml
- mpas_con_sediment_flux_index.F

sedimentFluxIndex - I update
add four variables
- sedimentFluxIndexVAX : Vertically-Averaged sFI in X-direction
- sedimentFluxIndexVAY : Vertically-Averaged sFI in Y-direction
- sedimentFluxIndexBX: Bottom sFI in X-direction
- sedimentFluxIndexBY: Bottom sFI in Y-direction

Adds sediment flux calculation

calculate sediment fall velocity by Goldstein and Coco 2013
calculate ratio "a" of sediment flux Q and U3 by Grawe et al 2014
calculate vertically-averaged and close bottom sediment flux (kg/m/s)
test the AM on the case ziso/2.5km/default

Add Soulsby and Damgaard bedload transport formulae

Goldstein and Coco's fall velocity equation seems to overestimate Ws,
might be repaced by VanRijn [1989] or Zhu &  Cheng [1993] in next commit
Add three bedload transport formulae and four sediment fall velocity formulae

Bedload transport formulae
- Soulbsy-Damgaard [2005]
- Meyer-Peter-Meuller [1948]
- Engelund-Hansen [1967]
Sediment fall velocity formulae
- Goldstein-Coco2013
- VanRijn1993
- Soulsby1997
- Cheng1997

Add Manning equation to calculate Chezy roughnes coefficient
in Engelund-Hansen bedload formula.

The Manning equaiton reads:
Chezy = 1/Manning*(bottomDepth)^(1/6)
Chezy value is manually restricted between [20 ,100]

Add suspended sediment concentration (SSC) algorithms

SSC is solved by bottom reference concentration and Rouse profile
Bottom reference concentration is computed by one of the following formulae
- Lee et al., 2004
- Goldstein et al., 2014
- Zyserman-Fredsoe 1997
Rouse profle assumes the eddy diffusivity to vary parabolically with height

Fixed bugs in calculations of SSC and theta in sediment_transport.F

Fixed two bugs in mpas_ocn_sediment_transport.F

- Corrected SSC Rouse profile equation
  The old equation from Page 138 of Soulsby's book "Dynamics of Marine
  Snads" (1997) is wrong. The right equation(s) can be found in
  (1) van Rijn 1984: Sediment Transport, Phase II: Suspended Load
  Transport. J. Hydraul. Eng.
  (2) Wang 2012: Measuring and Modeling Suspended Sediment Concentration
  Profile in the Surf Zone. Marine Sedimentology
- Corrected z-coordinate calculation
  The global variable zMid is zero at surface and negative downward. The
  water depth from bottom z was mistakely set to -zMid. Now the calculation
  is z=ssh+bottomDepth+zMid

Fixed a bug in mpas_ocn_sediment_transport.F

zMid is the distance from the mean surface layer, with positve upward.
So for each vertical layer center, the distance above the sea bottom is
bottomDepth+zMid, which was wrongly set as ssh+bottomDepth+zMid in the
last commit.

Replaced Rouse profile equation by van Rijn's equations; modified xml
files to output ssh, mesh and velocity in sediment transport output file.

Mannually set a maximum value for Rouse number to avoid "Float-point
exception" error; fixed a bug in the implementation of
'Zyserman-Fredsoe1994' equation.
@caozd999 caozd999 force-pushed the ocean/sediment_transport branch from 00f27fb to 09c87e9 Compare December 3, 2019 17:23
@mark-petersen
Copy link
Contributor

@caozd999, please do the following:

  1. Test this rebased branch with your standard test case for the sediment transport analysis member.
  2. Upload your design doc to this PR.
  3. Tell me what flags to change in order to test this PR.

@mark-petersen
Copy link
Contributor

mark-petersen commented Dec 3, 2019

To put the test back into the compass soma case:

--- a/testing_and_setup/compass/ocean/soma/4km/3layer/config_forward.xml
+++ b/testing_and_setup/compass/ocean/soma/4km/3layer/config_forward.xml
@@ -15,7 +15,8 @@

        <namelist name="namelist.ocean" mode="forward">
                <template file="soma_template.xml" path_base="script_configuration_dir"/>
                <option name="config_dt">'00:06:00'</option>
+              <template file="sediment_transport.xml" path_base="script_core_dir" path="templates/analysis_members"/>
                <option name="config_run_duration">'0000_00:01:30'</option>
                <option name="config_mom_del4">4.0e8</option>
                <option name="config_btr_dt">'0000_00:00:10'</option>
@@ -40,7 +41,8 @@
                <template file="mixed_layer_depths.xml" path_base="script_core_dir" path="templates/analysis_members"/>
                <template file="lagrangian_particle_tracking.xml" path_base="script_core_dir" path="templates/analysis_members"/>
                <template file="soma_template.xml" path_base="script_configuration_dir"/>
                <stream name="output">
+             <template file="sediment_transport.xml" path_base="script_core_dir" path="templates/analysis_members"/>
                         <attribute name="output_interval">0000_00:01:30</attribute>
                 </stream>
        </streams>

or better yet, you can set up a test case and change the namelist and streams file in the run directory to turn on your analysis member.

@mark-petersen
Copy link
Contributor

Ran QU240 with both new analysis members on, running every step. Tested with gnu in debug. Runs without error. Time for AMs is small,

    timer_name                                            total       calls        min            max            avg      pct_tot   pct_par     par_eff
2  time integration                                   10.69949         3        3.42868        3.79648        3.55855    65.38      65.38       1.00
3   compute_sedimentFluxIndex                          0.00354         3        0.00094        0.00136        0.00106     0.02       5.16       0.90
3   compute_sedimentTransport                          0.06423         3        0.01959        0.02241        0.02063     0.39      93.43       0.96

@mark-petersen
Copy link
Contributor

Also tested QU240 with intel and debug, and both analysis members on. No error messages. Passes nightly regression suite, where new analysis members are off.

Copy link
Contributor

@mark-petersen mark-petersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passed necessary tests.

@caozd999
Copy link
Author

caozd999 commented Dec 3, 2019

Design document
SedimentTransportDesignDocument_2019.pdf

mark-petersen added a commit that referenced this pull request Dec 3, 2019
This PR adds sediment transport analysis member (Phase I) to the model,
with the following variables computed:
- sediment settling velocity
- sediment erosion flux
- sediment bedload transport flux
- suspended sediment concentration in water column
@mark-petersen mark-petersen merged commit 2c9f465 into MPAS-Dev:ocean/coastal Dec 3, 2019
@caozd999 caozd999 deleted the ocean/sediment_transport branch December 3, 2019 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants