Code Monkey home page Code Monkey logo

carbocat-notes's People

Contributors

jhidding avatar

carbocat-notes's Issues

CarboCAT data structure and why it needs to be complex and dynamic

A fundamentaly important aspect of how CarboCAT is desgiend is that it is an "event based model" meaning that at each grid cell and within each model time step, it records a series of depositional events; every bit of in-situ production and deposition of transported sediment that happens in the model is recorded as a discrete layer. The particular significance of this is that those events produce layers that are directly analagous to the laminae and beds preserved in the rock record that similarly record a series of depositional (and in nature erosional, diagenetic etc) events.

This analogy allows us, in principle, to compare CarboCAT output reasonably directly with rock strata observed and recorded in outcrop; this is actually quite unusual for stratigraphic forward models because most examples of these models do not record discrete events, but instead operate in a more time-averaged mode, either computing only one layer per time step, or if multiple layers are calculated, only storing one layer is is some averaged function (mean, mode, etc) of the many layers.

I would suggest this aspect of CarboCAT is actually quite crtitical to preserve in new versions we develop, because the ability to compare more directly with real rock is very useful, and worth the cost of slower computation and more memory usage. ANd perhaps there are some clver ways to minimise both of those aspects without losing the layer resolution e.g. merging successive layers with the same lithology

Happy to provide more explanation, but hopefully this post successfully defines the event layering as a feature, not a bug ;-)

CarboCAT erosion algorithm

I think there is a strong argument to implement erosion, at least very initially, as an extension of the existing cellular automata calculations. This has the advantage of being consistant with what is already done in CarboCAT, so no more or less realistic than the existing CA factory/facies distribution calculation, but also, and perhaps most importantly, very simple to implement...

I suggest something like the following:

  1. At each time step, for each empty cell on the model grid (i.e. where the facies code is zero after in-situ deposition)
  2. if the number of empty neighbours exceeds a minimum threshold e.g 4 cells), erode at a rate proportional to the number of neighbouring empty cells e.g. 4 empty neighbours, min rate erosion, 8 gives max rate erosion.
  3. Add the eroded sediment to the volume available to be transported (but routing might get complicated e.g transport back to just-eroded low point, so transport in a specified direction might be required) or if the erosion is disolution (less realistic than scour erosion IMO, but...) the eroded mass can just disappear into the water column

I think this is so simple to do, at least in the simplest possible form, that we should try it, see how it behaves, if bad behaviour is easily fixed, etc, as a first step. At the very least, we will learn something about how a more sophisticated erosion algorithm will likely need to work...

Happy to discuss, or, as Yoda said, "Do. Or do not. There is no try!"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.