edoddridge / aronnax

An idealised isopycnal model that can be run either with n+1/2 layers, or with n layers and variable bathymetry.
http://aronnax.readthedocs.io/en/latest/
MIT License
23 stars 5 forks source link

Allow outcropping #196

Closed edoddridge closed 6 years ago

edoddridge commented 6 years ago

This PR implements a substantial new feature, namely outcropping and grounding of isopycnals, thereby closing #26.

There is a new parameter wind_depth that controls how deep the wind forcing is felt - the forcing is spread evenly over this depth, and any layer within wind_depth metres of the surface will receive a proportion of the forcing. The old behaviour of putting all the forcing into the top layer is preserved if wind_depth is set to zero, or left unset, in which case it defaults to zero.

The way the model implements hmin has been drastically changed - it no longer forces layers to be thicker than hmin. Instead, the thickness diffusivity is ramped up exponentially as the layer thickness approaches hmin, which creates thin, flat layers. The old behaviour of simply inflating layers until they were as thick as hmin was an ugly hack that destroyed any hope of volume conservation, and it has not been preserved.

A new test has been added. It is a reentrant channel with two layers and sloping bathymetry (which helps with the checklist in #6), and each of the layers has an initial thickness of 0.1 m somewhere in the domain.

codecov[bot] commented 6 years ago

Codecov Report

Merging #196 into master will decrease coverage by 0.47%. The diff coverage is 94.41%.

Impacted file tree graph

@@            Coverage Diff            @@
##           master    #196      +/-   ##
=========================================
- Coverage   90.98%   90.5%   -0.48%     
=========================================
  Files          19      19              
  Lines        1409    1570     +161     
  Branches       76      82       +6     
=========================================
+ Hits         1282    1421     +139     
- Misses        107     123      +16     
- Partials       20      26       +6
Impacted Files Coverage Δ
aronnax/driver.py 93.69% <ø> (ø) :arrow_up:
src/thickness.f90 97.64% <100%> (+0.05%) :arrow_up:
src/aronnax.f90 90% <100%> (+0.1%) :arrow_up:
src/state_deriv.f90 91.66% <100%> (ø) :arrow_up:
src/model_main.f90 95.65% <100%> (+1.68%) :arrow_up:
src/time_stepping.f90 58.49% <100%> (ø) :arrow_up:
src/momentum.f90 92.1% <93.87%> (-7.9%) :arrow_down:
src/enforce_thickness.f90 36.36% <0%> (-27.28%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update c86071e...8f346fa. Read the comment docs.

edoddridge commented 6 years ago

Should have mentioned that the subroutine for enforcing layer thickness remains greater than hmin has been left in for now, but should probably be deleted.