Skip to content

Conversation

@pwolfram
Copy link
Contributor

@pwolfram pwolfram commented Apr 12, 2019

This allows restoring of the layerThickness to correspond to relaxation toward a tidally-enforced free-surface boundary condition. Note, this is tested for RK4. Split explicit was not as stable.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau * layerThickness/sum_k(layerThickness)

where

  • M is a boundary condition mask for application of the tidal boundary
  • tidal_boundary is the value of the tide to be applied on the boundary
  • ssh is the sea surface height
  • tidal_tau is the time scale corresponding to application of the tendency
  • layerThickness is the iCell,k varying layerThickness variable
  • sum_k(layerThickness) is the depth-averaged layerThickness (total water thickness)

The tendency is used to apply tidal forcing to the prognostic equations corresponding to a mask designating the location of the applied tidal boundary.

@pwolfram
Copy link
Contributor Author

pwolfram commented Apr 12, 2019

Testing

A 25km long test case is included that makes a comparison in an analysis step against the forced tidal signal vs the actual MPAS-O free surface:

Screen Shot 2019-04-12 at 4 18 29 PM

Note, phase error is observed due to the RK4 time integrator. This is expected behavior.

@pwolfram
Copy link
Contributor Author

Tested locally and on IC at /lustre/scratch4/turquoise/pwolfram/PR_tests/MPAS-Model_tidal_forcing.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau * layerThickness/sum_k(layerThickness)

where

* M is a boundary condition mask for application of the tidal boundary
* tidal_boundary is the value of the tide to be applied on the boundary
* ssh is the sea surface height
* tidal_tau is the time scale corresponding to application of the tendency
* layerThickness is the iCell,k varying layerThickness variable
* sum_k(layerThickness) is the depth-averaged layerThickness (total water thicknes)
@pwolfram pwolfram force-pushed the ocean/tidal_boundary_condition_forcing branch from 7424a26 to 06455bc Compare April 16, 2019 16:34
@pwolfram
Copy link
Contributor Author

@caozd999, here is the test case with tidal forcing you need for your sediment transport work as we discussed.

@pwolfram pwolfram changed the base branch from ocean/develop to ocean/coastal April 17, 2019 16:09
@mark-petersen
Copy link
Contributor

Passes nightly regression, bfb with ocean/develop. Of course, that does not exercise the new code. @pwolfram or @caozd999, please compile with DEBUG=true and run with your standard test case to create the new initial condition for tidal forcing and run the forward model with
config_use_tidal_forcing=.true.
That should catch any typos or simple bugs.

@pwolfram
Copy link
Contributor Author

@mark-petersen, thank you. I've compiled and run the case with DEBUG=true and it produces the output as expected.

@pwolfram pwolfram removed the request for review from sbrus89 April 17, 2019 22:49
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.

Looks good thanks!

@mark-petersen mark-petersen self-assigned this Apr 17, 2019
@mark-petersen mark-petersen merged commit 06455bc into MPAS-Dev:ocean/coastal Apr 17, 2019
mark-petersen added a commit that referenced this pull request Apr 17, 2019
…ocean/coastal

This allows restoring of the layerThickness to correspond to relaxation
toward a tidally-enforced free-surface boundary condition.  Note, this
is tested for RK4.  Split explicit was not as stable.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau *
layerThickness/sum_k(layerThickness)

where

* M is a boundary condition mask for application of the tidal boundary
* tidal_boundary is the value of the tide to be applied on the boundary
* ssh is the sea surface height
* tidal_tau is the time scale corresponding to application of the
* tendency
* layerThickness is the iCell,k varying layerThickness variable
* sum_k(layerThickness) is the depth-averaged layerThickness (total
* water thickness)

The tendency is used to apply tidal forcing to the prognostic equations
corresponding to a mask designating the location of the applied tidal
boundary.
@pwolfram pwolfram deleted the ocean/tidal_boundary_condition_forcing branch August 13, 2019 16:26
ashwathsv pushed a commit to ashwathsv/MPAS-Model that referenced this pull request Jul 21, 2020
…g' into ocean/coastal

This allows restoring of the layerThickness to correspond to relaxation
toward a tidally-enforced free-surface boundary condition.  Note, this
is tested for RK4.  Split explicit was not as stable.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau *
layerThickness/sum_k(layerThickness)

where

* M is a boundary condition mask for application of the tidal boundary
* tidal_boundary is the value of the tide to be applied on the boundary
* ssh is the sea surface height
* tidal_tau is the time scale corresponding to application of the
* tendency
* layerThickness is the iCell,k varying layerThickness variable
* sum_k(layerThickness) is the depth-averaged layerThickness (total
* water thickness)

The tendency is used to apply tidal forcing to the prognostic equations
corresponding to a mask designating the location of the applied tidal
boundary.
mark-petersen added a commit to mark-petersen/MPAS-Model that referenced this pull request Jan 11, 2021
…g' into ocean/coastal

This allows restoring of the layerThickness to correspond to relaxation
toward a tidally-enforced free-surface boundary condition.  Note, this
is tested for RK4.  Split explicit was not as stable.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau *
layerThickness/sum_k(layerThickness)

where

* M is a boundary condition mask for application of the tidal boundary
* tidal_boundary is the value of the tide to be applied on the boundary
* ssh is the sea surface height
* tidal_tau is the time scale corresponding to application of the
* tendency
* layerThickness is the iCell,k varying layerThickness variable
* sum_k(layerThickness) is the depth-averaged layerThickness (total
* water thickness)

The tendency is used to apply tidal forcing to the prognostic equations
corresponding to a mask designating the location of the applied tidal
boundary.
caozd999 pushed a commit to caozd999/MPAS-Model that referenced this pull request Jan 14, 2021
…g' into ocean/coastal

This allows restoring of the layerThickness to correspond to relaxation
toward a tidally-enforced free-surface boundary condition.  Note, this
is tested for RK4.  Split explicit was not as stable.

This solves for a layer thickness tendency of the form

M*(tidal_boundary - ssh) / tidal_tau *
layerThickness/sum_k(layerThickness)

where

* M is a boundary condition mask for application of the tidal boundary
* tidal_boundary is the value of the tide to be applied on the boundary
* ssh is the sea surface height
* tidal_tau is the time scale corresponding to application of the
* tendency
* layerThickness is the iCell,k varying layerThickness variable
* sum_k(layerThickness) is the depth-averaged layerThickness (total
* water thickness)

The tendency is used to apply tidal forcing to the prognostic equations
corresponding to a mask designating the location of the applied tidal
boundary.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants