the Creative Commons Attribution 4.0 License.
the Creative Commons Attribution 4.0 License.
CarboKitten.jl – an open source toolkit for carbonate stratigraphic modeling
Johan Hidding
Niklas Hohmann
Xianyi Liu
Peter Burgess
Hanno Spreeuw
Stratigraphic forward modeling is a powerful tool for testing hypotheses about the geological record and conducting numerical experiments in stratigraphy at timescales not accessible to direct human observation. Open Source software for stratigraphic modeling available so far has previously focused on siliciclastic or terrestrial depositional environments. CarboKitten is a stratigraphic forward modeling toolkit for carbonate platforms. With performance and accessibility in mind, CarboKitten is implemented in Julia, using the literate programming approach.
CarboKitten integrates three components: the carbonate production model of Bosscher and Schlager (1992), the cellular automaton for spatial heterogeneity introduced by Burgess (2013), and a novel finite difference transport model inspired by Paola et al. (1992). The model simulates carbonate production through multiple biological factories (typically euphotic, oligophotic and aphotic), accounts for ecological processes that create spatial facies patterns through cellular automaton rules, and implements sediment transport via an active layer approach where material moves along paths of steepest descent.
Key features include support for different boundary conditions, variable sea level and insolation inputs, wave-induced transport capabilities, and visualization tools aiming at beautiful plots. The software exports data in the interoperable HDF5 format and includes functions for creating stratigraphic cross-sections, chronostratigraphic (Wheeler) diagrams, topographic maps, and sediment accumulation curves. Performance benchmarks demonstrate linear scaling with grid size and time steps, enabling efficient execution on consumer hardware.
CarboKitten addresses a gap in available carbonate modeling tools by providing an accessible, well-documented, and modifiable toolkit for hypothesis testing in carbonate stratigraphy. The model operates on timescales from centuries to millions of years and can simulate various scenarios including orbital forcing, sea level change, and biological succession patterns. CarboKitten's accessibility should encourage broader adoption of stratigraphic forward modeling in carbonate research and education, supporting hypothesis-driven approaches to understanding the structure of the geological record and reconstructing the history of the Earth from carbonate strata.
- Article
(8239 KB) - Full-text XML
- BibTeX
- EndNote
Stratigraphic forward modelling is well established as a means of examining our understanding of the formation of stratal architectures (Granjeon and Joseph, 1999; Burgess et al., 2001; Paterson et al., 2006; Schlager and Warrlich, 2009; Ding et al., 2019; Jean Borgomano et al., 2020; Liu et al., 2022), prediction, correlation and imputation of architectures from incomplete data (Warrlich et al., 2008; Masiero et al., 2021), and testing hypotheses on the structure of the geological record (e.g., Kemp et al., 2018; Masiero et al., 2020; Liu and Liu, 2021) and the preservation of proxies (Curtis et al., 2025), fossils (Holland, 2000; Hannisdal, 2006; Hohmann et al., 2024), or forcing mechanisms (Kemp et al., 2016; Kemp and Van Manen, 2019; Burgess et al., 2019). Owing to their economic interest, most such models are proprietary to exploration companies and their availability to researchers is limited. Some older models developed by researchers share the fate of many other research software packages and their maintenance ceases, e.g. when a project ends (Warrlich, 2000). It is not always possible to resuscitate such models, especially if documentation or license are lacking or code has not been shared (e.g., Strobel et al., 1989; Demicco, 1998; Barrett and Webster, 2017). As a result, the choice of stratigraphic forward models available to researchers at the moment is narrow and shifted towards siliciclastic (e.g., Hutton and Syvitski, 2008; Sylvester et al., 2024) or fluvial depositional systems (Wild et al., 2019; Falivene et al., 2019), to the point that researchers may resort to these models to create simulations of carbonate sections (Zimmt et al., 2021).
Modeling carbonate depositional systems requires not only accounting for aqueous and atmospheric processes, but also for the biological character of sediment production and dispersal. Ecological processes, such as facilitation, competition and dispersal, may on one hand confound the relationships between sediment composition and water depth (e.g. Granjeon and Joseph, 1999; Dyer et al., 2018; Salles et al., 2018b; Pastier et al., 2019; Weij et al., 2019) and, on the other hand, lead to creation of complex facies patterns under stable sea level conditions (Drummond and Dugan, 1999; Purkis et al., 2016; Xi and Burgess, 2022). Complex models accounting for this have been mostly developed for exploration, e.g. Carbonate 3D (Warrlich et al., 2002, 2008), DIONISOS
(Granjeon and Joseph, 1999) and Carbonate GPM (Hill et al., 2009). Of research-driven models operating in more than one dimension, two include a wider range of depositional environments with carbonate production modules: CARB3D+ (Paterson et al., 2006), SedSimple (Tetzlaff, 2023) and Badlands (Salles, 2016), including its Python interface pyBadlands (Salles et al., 2018a), but due to their general focus these models do not account for the spatial heterogeneity driven by biological processes. Finally, CarboCAT (Burgess, 2013) is a research-driven 3D model dedicated to stratigraphic forward modeling of carbonate platforms, which includes a cellular automaton that approximates the spatial heterogeneity formed through ecological interactions between carbonate-producing organisms. CarboCAT has been used in multiple studies (e.g. Masiero et al., 2020; Xi and Burgess, 2022; Hohmann et al., 2024), but having been written in Matlab, it is not accessible to contributions from the entire scientific community. Based on the successful applications of CarboCAT, we set out to develop a new generation model with the following specifications:
-
it should be Open Source and it should be easy for researchers to understand the algorithm, which is a prerequisite to being able to contribute to it or modify it to one's needs,
-
it should allow for spatial heterogeneity of carbonate facies,
-
it should include a sediment transport algorithm operating on different carbonate facies and produces realistic results without decreasing the model's performance substantially,
-
it should allow exporting and plotting multiple types of data users may need, including slices through the model grid, age-depth models, sediment accumulation curves, and stratigraphic columns,
-
it should be performant, easy to parallelize, and platform-independent,
-
it should be well documented and easy to use at a level accessible to a geosciences student.
The above prerequisites led us to re-designing the original architecture of CarboCAT and implementing its successor in Julia. In this article we present CarboKitten, an efficient and accessible Open Source model for stratigraphic forward simulations of carbonate platforms.
CarboKitten combines the carbonate production model by Bosscher and Schlager (1992), the cellular automaton from Burgess (2013), and a custom finite difference transport model inspired on an approach by Paola et al. (1992). We describe each of these components in detail in the following sections.
2.1 Quantities
Since the model describes the accumulation of sediment under a range of variable conditions, a short discussion of different measures in the vertical column is in order.
- Subsidence rate
-
Quantified as a rate σ in units of m Myr−1. The growth of sediment is only sustainable in scenarios where there is a steady subsidence. In our models we use a default value of 50 m Myr−1 (or 0.5 mm kyr−1). This parameter can be set by the users.
- Initial topography
-
The model starts at an initial topography , consisting of impenetrable bedrock. A more complex topography can be provided as an input array, e.g. by running a previous model and extracting the height of sediment.
- Topography
-
The present topography η(x,t) is given as the initial topography plus any amount of sediment accumulated over time. In our definition of η we do not correct for subsidence (see also the definition for water depth below), so it should be considered relative to a bedrock reference. This definition matches how coordinates are handled in CarboKitten internally.
- Relative sea level
-
The relative sea level R(t) is usually a function of time, given as an input parameter of the model.
- Water depth
-
The water depth is computed from the current topography, relative sea level and subsidence rate,
2.2 Carbonate production
The general form of our production model follows that of Bosscher and Schlager (1992). This model finds the sediment accumulation curve by integrating an ODE that outside of the model parameters only depends on the initial topography.
where P is the sediment production in m Myr−1,
where I0 is the insolation in units of energy flux, Ik is the saturation intensity and should be provided in the same units as I0, k the extinction coefficient in m−1 and gm the maximum growth rate in m Myr−1.
This model encapsulates both the exponential extinction of sun light as water depth increases, and the idea that the growth of organisms interpolates between no growth at great depth and saturated growth in shallow waters (i.e. solar input is not the limiting factor at those depths).
Here we parametrize P as a function of w for w>0. Note that , but otherwise we will use w and η wherever one or the other is more convenient.
Following Burgess (2013), we extend the BS92 model by introducing multiple facies that each have their own growth characteristics (except for insolation I0, which is a global input variable).
In the examples presented here we set default values of factory parameters that corrspond to three biological facies based on sediment produced by three carbonate factories: the euphotic (E), oligophotic (O) and aphotic (A) factories. These default values are shown in Table 1, and the resulting production curves shown in Fig. 1.
Figure 1Production curves for our three default carbonate factories. Additionaly, we show the production curve for a pelagic facies with the same extinction coefficient and saturation intensity as the oligophotic facies, and a maximum growth rate of 5 Myr−1. All of these production curves were computed with an insolation of 400 W m−2.
We also provide the option of specifying pelagic production curves. Here the production is computed as the integral of Eq. (3) over the entire water column.
2.3 Cellular automaton
Representing spatial heterogeneity resulting from positive and negative biological interactions in a computationally simple model requires meeting the following conditions:
-
infinite heterogeneity in space and time, i.e. no convergence on stable patterns;
-
authigenic variation that does not require external drivers;
-
the approach must be scalable to n facies, even if we focus the examples here on 3;
-
adjustable temporal persistence: it must be possible to set the turnover frequency.
Figure 2Iterations of the CA, as described by Burgess (2013), on a periodic grid of 50×50. Each color represents a carbonate facies, but since the CA process is not affected by facies identity we leave out any designation. Starting with random noise, we first iterate 1000 times to get into a typical state. The top row shows iterations 1000 to 1003, the bottom row 2000 to 2003. This shows that the patterns keep reasonably stable on the short term, while evolving more extensively over the long term.
These requirements are met by Celullar Automata (CA), as proposed by Drummond and Dugan (1999), Burgess and Emery (2004) and Burgess (2013), without substanial computational costs. For this reason we adopt this modeling approach in CarboKitten, directly reimplementing the automaton described by Burgess (2013) in his package CarboCAT. Cellular automata are commonly used to generate spatial heterogeneity in forward modeling, with some models serving as discrete approximations of partial differential equations that can generate complex spatial dynamics such as Turing patterns (Drummond and Dugan, 1999; Dormann et al., 2001).
The CA emulates the biological succession of species by following a set of simple rules. If conditions are right, a species will multiply and occupy neighbouring territory. However, when there are too many of the same kind, the species will die from over population. For each cell in the grid a centered neighbourhood of 5×5 pixels is considered. We count the number of neighbouring cells of the same species. Then we consider two ranges: the activation range (default ) and viability range (default ). If the number of live neighbours is in the viability range, the cell stays alive. If the cell was dead, but the number of live neighbours is in the activation range, the cell becomes alive. The neighborhood size and the rules represent a case of Larger than Life family of two-dimensional cellular automata (Evans, 1996), but this particular set of rules has been proposed specifically for CarboCAT (Burgess, 2013) and, to our knowledge, does not correspond to any documented Larger than Life rules. We examined other sets of rules (Hidding et al., 2026b), but most lead to rapid stabilization of spatial patterns. In Fig. 2 we illustrate the long-term and short-term behaviour of our default CA rule set.
The initial CA grid is randomized. A dead cell may qualify to become alive for different carbonate factories at the same time. To resolve this priority collision, facies priority for occupying a dead cell is rotated every iteration using a deterministic cyclic shift (fixed round-robin pattern), which ensures that there is no priority given to any facies.
In the default configuration we emulate three species, corresponding to the factory species discussed in the section on carbonate production. The state of the CA determines which carbonate factory is switched on for each cell in the grid.
The 5×5 neighborhood strikes a balance between small-scale heterogeneity and computational cost. A smaller neighborhood would result in finer-grained spatial patterns, whereas a larger one in spatial smoothing and larger, more coherent patches of each facies. However, it would slow the model down. In a real depositional system, different carbonate producer guilds have their own length scales at which they disperse and interact and one-size-fits-all neighborhood is clearly a simplification. The size of the neighborhood is fixed in the current version of CarboKitten, but adjustment of granularity of facies distribution generated by the CA can be achieved by users by changing the grid dimensions and the CA interval.
2.4 Transport
Our transport model is borrowed from other similar approaches in siliclastic (river bed) modeling (see Paola et al., 1992; James et al., 2010), where it is made plausible that this approach is viable for models that work on long time scales. Because our transport model is novel (at least for modelling carbonate platforms), we discuss the full model in a separate section. Here, we discuss how transport is embedded in the larger model.
We consider all sediment transport to happen in an active layer close to the sea floor. This layer has a certain amount of sediment Cf (in units of m) that travels along a path of steepest descent. We say that this material is entrained. Every time step the active layer is supplied with sediment produced in the production step as well as older sediment through disintegration. After transport a fraction of the entrained sediment is deposited on the sea floor as the transported version of the original (donor) facies in a process that we refer to as lithification, being the process of turning loose sediment into rock. Although in reality sediment might not be mobile for a while before lithification sets in, for the purpose of our model, we chose the term to represent the immobilisation of sediment as a whole, see Fig. 3.
Figure 3Diagram showing concepts of production, lithification and disintegration. Every time step newly produced sediment and older disintegrated material (configured as a disintegration rate) is added to the active layer. After transport, a set fraction of the sediment (configured as a lithification half-life time) is lithified, becoming the sea floor.
The actual transport is computed using a finite difference approach that is further discussed in Sect. 3.
2.5 Composed model
Putting everything together, we evaluate the model as follows each iteration:
-
Advance the cellular automaton.
-
Compute the production Pf.
-
Disintegrate sediment at the rate rd.
-
Transport entrained sediment Cf.
-
Lithify (cement) sediment with half-time of tl.
Advancing the CA can be configured to happen one-in-n iterations to slow it down. Transporting the sediment can be computed on smaller time steps if required for numeric stability. The complete loop is illustrated in Fig. 4.
Figure 4Flow chart of model control. The shaded areas show where the internal states of the CA, sediment buffer and active layer are affected. We can follow the model, starting from the time step node. The time step implies a change in external control factors like sea level, subsidence and insolation. Together with the sediment buffer, those factors determine water depth which in turn affects both production and transport. The CA evolves by itself (there is an option for feedback from the production step, but we left it out of the diagram for simplicity), but determines which facies are produced where. We then produce and disintegrate sediment that is added to the active layer for transport. The transport step is adaptive, so it can loop several times before we lithify a fraction of the active layer. After lithification, we increment the time step, completing the loop.
2.6 Input parameters
CarboKitten has many input parameters: box geometry, time parameters, a list of facies properties, transport model intrinsics and external conditions such as initial topography, relative sea level and insolation. We have already discussed the facies properties in Sect. 2.2, and the transport model is discussed in Sect. 3. That leaves us the external conditions that should be considered the driving forces of carbonate platform formation.
The initial topography, sea level and insolation can all be entered in three different ways: a given constant, a Julia function or an array exactly matching the box size or number of time steps.
In Sect. 6 we provide two examples where we use external sources to drive the sea level and insolation curves. A full list of input parameters is available in the Appendix.
Figure 5Overview of different visualizations supported by CarboKitten. Panel (a) shows a stratigraphic cross-section, including an indication for unconformities, (b) a topographic overview including two intermediate time steps, (c) the production curves used, (d) sedimentation rate as a function of time, (e) Wheeler diagram with preserved dominant facies as a function of time, (f) the sea-level curve given as input. The combined plot is arranged such that spatial data is on the top row, while time-dependent information is shown at the bottom with matching y axes.
2.7 Visualisations
CarboKitten generates data in the accessible, binary HDF5 format, thus output can be visualised with most common tools, e.g. imported into R or a Jupyter notebook. Nevertheless, we provide some routines based on Makie (Danisch and Krumbiegel, 2021) for creating cross-sections, chronostratigrahic (Wheeler) diagrams and topographic overviews. Some of the most common plot types have been collected into a summary plot, which is shown in Fig. 5.
The transport module is designed with timesteps of the order of centuries in mind and therefore it aims to lead to a similar average sediment redistribution as would have resulted from individual short-term physical processes (storms, waves, tidal currents, grain-size sorting), without attempting to resolve them. CarboKitten currently does not resolve grain-size-dependent transport, storm-driven episodic redistribution, longshore transport, or bioturbation contributing to sediment disintegration. However, such extensions are principally possible, should modelling on shorter time scales become the focus of the model's users.
In Sect. 2.4 we discussed how transport is embedded in the larger model. Our transport model supposes that all entrained sediment resides in a layer of constant thickness just above the sea floor, also known as the active layer. The concentration of sediment Cf (in units of m) is considered separately for each facies (as with all quantities with the “f” subscript). Each iteration of the larger model we supply the active layer with freshly produced (autochthonous) sediment as well as disintegrated older (allochthonous) sediment. We then compute transport of the active layer for as many sub-iterations as is deemed needed for the solver to remain stable. After that, a percentage of the contents in the active layer is deposited on the sea floor. The lithification percentage depends both on the time step taken and the given lithification time tl, which is configured in terms of a half-life time. There are many ways to compute sediment transport in the active layer. We have opted for a finite difference strategy inspired by Paola et al. (1992).
We assume a local sediment flux proportional to the local gradient,
where df is a facies-dependent transport coefficient (m Myr−1), and vf(w) is a chosen additional velocity as a function of water depth (m Myr−1). Optionally, we use vf(w) to model wave induced sediment transport (for an example see Sect. 6.3). The mass balance (continuity equation) is then,
This gives us an advection equation for the sediment concentration Cf. We also express everything in terms of water depth, having , arriving at
where is the velocity shear, or the derivative of the velocity with respect to water depth. We solve this PDE using a finite difference method-of-lines approach with an explicit solver (forward Euler and 4th order Runge–Kuta are supported).
Note that, although the transport equation is an advection equation in Cf, we need to consider that Cf acts as a proxy for η. The continuing cycle of disintegration, transport, and lithification makes sure that the change in sediment concentration due to transport and the change in topography are strongly coupled. Then, what seems like an innocent reaction term in Eq. (7), turns out to behave as a diffusion equation in η. Any attempt at modelling sediment transport where there is an effective down-slope flux combined with some form of disintegration will yield diffusive behaviour.
3.1 Other approaches
In the critical angle approach developed by Warrlich (2000), sediment is transported from unstable slopes to the nearest down-slope stable region. Stability is defined separately for different grain sizes. This method is motivated by the empirical relationship between grain composition and maximum slope angle (Kenter, 1990).
The problem with this critical angle-based method of transport is that production across an unstable region is deposited on a small strip, where slopes are below the critical angle. It becomes unclear how to interpret these models from a physics point of view, as results depend heavily on the time-step that is chosen. Contrasting to that, both our transport model and production model (with the exception of the cellular automaton) are discretisations of otherwise continuous processes. This means that, at least assymptotically (i.e. as long as the time step is small enough), our implementation is independent of the chosen time step.
One aspect of critical angle theory that we do use is that we can modulate the disintegration rate rd (and therefore the amount of entrained material) with the magnitude of the slope . If we only disintegrate material where the slope is supercritical, the net effect is that sediment is transported from supercritical to stable areas. The difference is that we have a much better control over the physics, and there is no need to convert back and forth between gridded values and a particle representation used in the critical angle approach (e.g. Warrlich, 2000). A different approach has been used in the early model CARBPLAT by Bosscher and Southam (1992), which took empirically observed carbonate slopes (Kenter, 1990, Adams and Schlager (2000)) and defined a slope function that returned slope parameters bounded by the limits of the angle of repose. In the study by Bosscher and Southam (1992) an exponential slope function was assumed, although it should be noted that there is literature debate on the distribution of slope shapes of carbonate platforms (e.g., Schlager and Camber, 1986; Kenter, 1990; Adams and Schlager, 2000). This modelling approach is agnostic with respect to sediment properties and transport mechanisms and optimises the similarity to observed shapes, allowing the user to choose the parameter that produces the best result. However, it does not allow modelling a mixture of sediment types with different properties and requires an a priori assumption on the expected slope shape. It had not been adapted in subsequent models.
3.2 Parameter choices
Our transport model is based on the elementary assumption that sediment flux is proportional to the slope of the sea floor. Nevertheless, we are extrapolating this idea to time scales on which it is hard to reason or otherwise measure the parameters to our model. Especially the combination of transport coefficient df, disintegration rate rd and lithification time tl can be pivotal in acquiring a set of physical outcomes, while we have no good way to estimate acceptable ranges of values for them, other than trying them out and see if the results are plausible.
That being said, by considering some artificial scenarios we can gain more insight into the behaviour of our main parameters.
3.2.1 Disintegration versus subsidence
The chosen disintegration rate will determine whether our model is on average erosive or accumulative. In the case of a platform morphology, the potential production exceeds the subsidence, meaning that the subsidence rate sets the pace at which the platform grows. At the edge of the platform, there is a transitional region where the maximum production is at pace with the subsidence. If the distintegration rate is higher than the subsidence rate, produced sediment will be immediately disintegrated, stay in the active layer for much longer, and be transported down slope. If the disintegration rate is much lower than the subsidence rate, produced (autochthonous) sediment can accumulate in situ, generating steeper morphologies.
3.2.2 Equilibrium concentration
The model parametrizes sediment disintegration (i.e. activation or entrainment of older sediments) by a global constant disintegration rate rd. Entrained sediment is transported by the mechanism described above, and then (re)lithifies by a given percentage every time step. The lithification time is specified as a half-life time tl. In absence of production, and with infinite available sediment for disintegration, we can see the amount of entrained sediment C reaching an equilibrium:
and taking the limit Δt→0, the equilibrium is reached at,
This equilibrium (having units of m) can be useful when estimating the effects of choosing the disintegration rate and lithification time.
3.2.3 Disintegration versus lithification
Both the disintegration rate and the lithification time modulate how long sediment resides in the active layer. By carefully scaling one or the other, the effective diffusion of material can be controlled without changing the specific diffusivity. However, choosing a high lithification time (thus a slow lithification) over a high disintegration rate can help in transporting only freshly produced sediments.
Note that not setting the lithification time (which would amount to immediately depositing all of the active layer on every iteration) results in models that depend heavily on a chosen time step.
To understand the relative effects of choosing a certain lithification time and/or disintegration rate, we ran a one-dimensional model where sediment is produced in a central patch. Then we can study the rate at which sediment is dispersed, either by direct transport before lithification happens, or by subsequent disintegration and re-deposition. By carefully choosing the parameters, we can make a slow lithification process look very similar to a high disintegration rate, as shown in Fig. 6.
Figure 6Comparison between lithification and disintegration. The four panes show different combinations of parameters for a one-dimensional model. We have enabled a production of 100 m Myr−1 for a 4 km wide patch in the middle of the box, and chose a runtime of 1 Myr with a time step of 100 year (the sharp edges in the production profile induce fast transport, requiring small time steps), and the transport coefficient was set to 10 m Myr−1. Panels (a) and (b) have a short lithification time tl (100 year), while panels (c) and (d) have a long lithification time (1000 year). On the columns, (a) and (c) have a low disintegration rate rd (10 m Myr−1), while (b) and (d) have a high disintegration rate (500 m Myr−1). Values were chosen to have a similar net effect on the dispersion of produced sediment.
3.2.4 Facies-specific transport coefficient df
The facies-specific transport coefficient used in CarboKitten is expressed in m Myr−1, because it is derived from the parameter νf, transport velocity, that is expressed per unit slope. A diffusion coefficient df appears in and have units m2 Myr−1. In CarboKitten's formulation νf is one dimension of length smaller because the active-layer concentration Cf [m] is already present in the flux. This approach presents two challenges: (1) setting transport coefficients that yield realistic results for carbonate facies modeled at the timescales at which CarboKitten is run, (2) should empirically justified diffusion coefficients for carbonate sediment be available, converting these diffusion coefficients to values of the transport coefficient used in the model. Because advection-diffusion is a modeling approach in carbonate transport and not a direct representation of the physical process of sediment transport, prior empirical diffusion coefficient values are limited. Sultana et al. (2022) reviewed published values, which lie in the range of 105 m2 Myr−1 to 7×109 m2 Myr−1 (Bosence et al., 1994; Mitchell et al., 1996). Modeling studies differ on the orders of magnitude, which is partly a matter of what processes are accounted for in effective diffusivity, and partly reflects different timescales of measurement. In Dionisos simulations, Sultana et al. (2022) used values ranging from 1.25×106 m2 Myr−1 for the sand fraction in the photozoan factory to 50×106 m2 Myr−1 for the mud produced by the heterozoan factory and identified 2500 105 m2 Myr−1 as the upper limit, beyond which no sediment accumulation took place. In a different model, values many orders of magnitude lower have been proposed for the effective diffusion coefficient that implicitly accounts for lithification and depth-dependent wave velocity, introduced by Kaufman et al. (1991):
where C0=0.005 m2 Myr−1 for carbonates and C1 values considered are 0.05 and 0.1 m−1, resulting in maximum DKaufman values of 0.005 m2 Myr−1, i.e. much lower than the empirical ones.
Table 2Estimated effective diffusivity Deff (m2 Myr−1) for combinations of lithification time tl and disintegration rate rd at facies transport coefficient df equal to 5 m yr−1.
Effective sediment diffusion coefficient Deff values in CarboKitten runs can be estimated from the dispersal of a sediment pulse under any scenario with a given value of transport coefficient, lithification time and disintegration rate. Diffusivity values obtained from runs with a transport coefficient of 5 m Myr−1 lie in the range of 3.7×105 m2 Myr−1 to 8.8×106 m2 Myr−1 (Table 2), i.e. well within those reported empirically and overlapping with those used by Sultana et al. (2022) to obtain realistic platform morphologies. Effective Deff values obtained using this estimate scale linearly with the input transport coefficient df.
3.3 Implementation and limitations
Our implementation of the transport model first computes the gradient of the sea floor (or equivalently the water depth) ∇w using central differences. From this gradient we can compute the advection coefficients in Eq. (7), . The maximum advection coefficient sets the Courant number and determines how many time steps we need to take to solve Eq. (7). For an advection equation integrated with the forward Euler method, we need
This states that we cannot move matter further than a single pixel distance in one iteration, or our computation becomes unstable.
In practice, we compute the transport coefficients and the maximum resulting advective Courant number. Then we integrate the transport equation adaptively, choosing the minimum number of subdivided time steps that keeps the advection stable. Since we computed the transport coefficients in advance, it is relatively cheap to apply multiple iterations of the advection solver, for which we use a first-order upwind scheme.
Now consider our transport model in the context of the larger carbonate platform model. Each time we disintegrate some matter which gets entrained and transported as part of the sediment concentration Cf, after which a fraction is cemented, increasing η. If we consider , then part of the transport equation is the diffusion equation . This leaves our implementation vulnerable to instabilities when the global time step is taken too large. For just this diffusion term the CFL limit is
This means that increasing the resolution of a model by a factor two may need a time step four times smaller for the integration to remain stable. CarboKitten has a diagnostic mode where this condition is checked against, allowing the user to make informed changes to the input parameters. Because the sediment concentration is not known in advance, it is not possible to make this check in advance.
We validated the model by attempting to replicate the general architecture of an isolated carbonate platform in Central Luconia (part of the Sarawak Basin), offshore Malaysia (Cycle IV to Cycle Lower V). We chose this area is because this platform has been extensively studied (Henglai et al., 2024) and the interpreted seismic profiles and reconstructed sea-level curves were publicly reported. We informed model runs with the sea-level data obtained from Fig. 2 of Henglai et al. (2024). In addition, the tectonic setting of the region in the studied period (around 15.48 to 11 Ma) is believed to be uncomplicated (Fathiyah Jamaludin, 2025) and thus possible to represent with a constant subsidence rate. Four wells were drilled into the atoll, providing discontinous cores and, thus, geological facies information.
This platform has a pinnacle shape, with the length of approximately 5 km in NE–SW direction, suggesting it was drowned in during this time period. The cores indicate that the top of carbonate platform is dominated by coral boundstones. Although the sampling in the lower part of the cores is discontinous, the cores suggest that the facies are dominated by pack- to wackestones and interbeded by coral boundstones, bioclastic boundstones and argillaceous carbonate. We related the geological facies to the carbonate producers via Table 3.
Table 3Facies used in validation. We used three producing facies in modelling our validation case, and a fourth facies type to track transported coral.
n/a means not applicable.
Three carbonate producers are fed into the model, corresponding to three geological facies (producers). Their respective production rates are listed in Table 3. A fourth facies is the transported facies of euphotic corals. These values are within the production rates estimated by (Lopez-Gamundi et al., 2025). A pre-run was set in order to generate an atoll-like initial topography for the actual run. The total duration of modelling covers the entire Cycle IV (from 15.8 to 11.8 Ma, having a duration of 4 Myr).
The criteria for comparison between the modelled results and the interpreted seismic profiles were:
-
We obtain five major zones within the platform.
-
The platform should show a pinnacle shape.
-
The total thickness of carbonate stratigraphy is approximately (600 m).
-
The platform has a slope indicating presence of off-shore sediments transport.
The results are listed in Fig. 7. We compared the features in the figure and the interpreted seimic profile:
-
The interpreted seismic profiles suggested five zones, and this is captured in the resultant figure (five parasequences).
-
The results displayed a “pinacle” shape, showing upper parasequences bearing smaller horizonal dimensions than the lower parasequences.
-
The total thickness of carbonate (∼550 m) is comparable to the data suggested by well penetration (∼600 m).
-
The slope is presented in the modelled results, as a mixture of facies 3 and 4.
The model yields nearly identical – i.e., qualitatively the same – results for different timesteps. Users should note that changing the timestep requires adjusting the CA interval, which has been applied for the tested versions of the code: a timestep of 100, 250 and 250 year. Results for a time step of 400 year are shown in Fig. 7.
Figure 7Validation case. (A) This shows a cross-section of our model of the platform in Central Luconia, offshore Malaysia. The white lines indicate unconformities, and the black lines are coeval lines at regular intervals, every solid black line separating one million years. The colours indicate the dominant facies type of the modelled sediment, blue for facies 1 (T factory), yellow for facies 2 (M factory), green for facies 3 (P factory) and pink represents facies 4 (transported coral, i.e. formerly facies 1). (B) Seismic interpretation of the platform, redrawn from Fig. 9 of Henglai et al. (2024).
Therefore, we claim CarboKitten is able to reproduce major architectural features of a real-life carbonate platform.
5.1 Box topology
CarboKitten needs to work with different choices for box topology, i.e. how the boundaries of a model box connect to each other. For example, when we simulate a small strip of coastline it is best to have one axis (in this case the x axis) reflect onto itself, while the other axis is periodic, leaving fewer edge effects.
In another case, where we want to simulate an entire island, or even an archipelago, it is more convenient to use fully periodic coordinates. We illustrate these choices in Fig. 8.
Figure 8Model topologies. CarboKitten allows the user to choose different topologies for the spatial modelling. In panel (a) we see a group of reef islands that were modelled on a fully periodic grid of size 250×250, using a randomly generated initial topography. A more common use case is shown in panel (b), where the x coordinate is reflected at the boundaries, while the y coordinate is periodic, thus modelling a small strip of coastline. Here the grid size is 250×50, and the initial topography is a linearly declining slope of 0.3 % (with the exception of the shore, which is steeper). The superimposed surfaces represent different equidistant time steps in the same runs, while the colors indicate the elevation along with the values on the z axis, here provided to guide the viewer. Panels (c) and (d) schematically illustrate these same box topologies using coloured arrows.
5.2 The sediment buffer
In our models of sediment transport and denudation it is important to remember the sedimentation history for all produced facies for some time into the past. We keep a three-dimensional fixed-size buffer, where two dimensions represent the x and y coordinates of the system, and the third dimension discretizes the amount of deposited material. Each cell in the buffer represents a parcel of sediment, where we store the relative fractions of each contributing facies. The data-structure acts like a stack, working on a First-In-First-Out (FIFO) basis.
We emphasise that this buffer is only used to determine the facies composition of disintegrated sediment. The sediment output of the overall model is written to disk at each iteration for post-analysis. This means that the model output can be much more precise than the depositional resolution of the buffer.
The user can set the size of the buffer as well as the amount of sediment represented by each cell. The depth of the buffer is controlled by an input parameter sediment_buffer_size, while the resolution is set through the depositional_resolution parameter in units of m of sediment.
The rows in the buffer represent a constant amount of sediment. An alternative approach is to have rows that represent time slices. In that case, when we need to disintegrate an amount of sediment, we need to search the buffer back in time until enough sediment is collected. This can be very slow, and it also means that one needs to have the full sedimentation history in memory. A buffer that is discretized on depth however does not have those requirements, at the expense of a small amount of facies mixing.
While the sediment buffer is allocated as a single 4-dimensional array (depth, facies, x, y), it is best to explain its functioning from the perspective of a single cell in our model. We are left with two dimensions: depth (rows) and facies (columns).
We choose to have the head of our sediment stack always be at the first row. When sediment out-grows the buffer, the deepest layers are dropped from memory. The head can contain an incomplete amount of sediment, while all rows below the head are either full or empty. When sediment is pushed to the stack and the head row overflows, all rows are copied down one row and the surplus is assigned to the now empty head row. The inverse happens when removing (popping) material from the stack. This process is illustrated below in Fig. 9.
Figure 9Above we see a buffer. Suppose we first produce some sediment amounting to of the buffer resolution, and after that an amount of gets disintegrated for further transport. In the beginning, the top cell of our buffer is full. First we push a parcel of (relative) size . The remaining overflows to the next cell. Then we pop an amount of . The first of this amount is retrieved from the top cell, and the second from the cell below that. This popped parcel will have different fractions from the pushed one, since it also draws from the half filled row that was in the stack before pushing. In this sense, a small amount of facies mixing will take place, depending on the depositional resolution chosen.
5.3 User interface
The user interfaces CarboKitten by writing a Julia script that defines the relevant model parameters and runs the chosen model. Effectively, very little Julia needs to be known to take an example input and modify parameters. Output is written to HDF5 files for post-processing and visualization.
CarboKitten ships with routines for visualisation and data extraction into CSV files. This makes it easier for novice users to use results from CarboKitten in further processing pipelines that rely on other programming languages. Data extracted includes sediment accumulation curves, age-depth models, water depth, and stratigraphic columns with facies code, allowing to test a wide range of hypotheses. These include, but are not limited to, testing hypotheses on orderedness of strata (Burgess, 2016), preservation orbital forcing (Kemp et al., 2016), proxy records (Curtis et al., 2025), or preservation of biotic information such as patterns of origination and extinction, biostratigraphic precision, and evolutionary change (Hohmann and Jarochowska, 2025; Hohmann et al., 2024; Holland and Patzkowsky, 2002).
5.4 Performance
Since CarboKitten is written in Julia with performance in mind, it should be efficient to run, even on consumer grade hardware, i.e. an average laptop. We are yet to substantiate this claim. Since Julia is a just-in-time compiled language, the first execution of any code in a new session always takes a bit longer than subsequent runs. Measurements presented in this section do not include this initial overhead.
5.4.1 Baseline
Our baseline model is the example included in CarboKitten, grid size 100×50 with 5000 time steps of 200 years each (results shown in Fig. 5). This model runs in 27 s on a Intel Core i7 at 3.0 GHz.
With regards to memory consumption, CarboKitten allocates a fixed amount of memory at the start of a model run, which scales linearly with the size of the grid. The most significant fraction of the memory is occupied by the sediment buffer. In the example run we have a buffer size of 50. With three facies types being stored this results in an array size of , stored in double precision gives a mere 6 MB. However, for a 300×300 sized grid this already increases to 108 MB.
5.4.2 Scaling
The run-time and memory consumption of CarboKitten should scale linearly with the number of pixels in the grid, with two complicating factors. Firstly, for smaller models the run-time can become limited by many smaller writes to HDF5. For those cases we provide a method of running models entirely in-memory. The second complication is the transport model. Here run times may vary due to the number of integration steps required for stability reasons. Increasing the resolution of a model also means increasing the number of transport integration time steps required by the same factor (considering the CFL condition for advective transport). Transport efficiency is also affected by the local topography: increasing the slope also increases the number of integration steps required. Carbonate platforms have the tendency to generate steep slopes due to exponential sedimentation rates in the production model. These steep slopes can be mitigated by setting the transport coefficient df: higher values will lead to smoothed-out and gentler slopes. On the other hand, modelling on-shore transport due to wave transport can induce steeper slopes, again requiring smaller integration time steps. Note that we are speaking of integration steps of the transport model, which can be any integer fraction of a full model time step. When the transport model needs too many steps for every model step, we can start to question the accuracy of the model as a whole, and the user should try decreasing the time-step of the full model to compensate.
5.4.3 Benchmark
To further quantify these complications in our estimated run-times, we run a model of a single atoll at three resolutions (200, 100, and 50 m, corresponding to grid sizes of 752, 1502, 3002) with three step sizes (400, 200, and 100 years), corresponding to 2500, 5000, and 10 000 steps), for a total of nine benchmark cases. We set the interval of the cellular automaton to compensate for the number of time steps. This way, runs with the same grid size should have very similar output. The results are shown in Fig. 10.
Figure 10Benchmark with respect to number of time steps and grid size. Panel (a) shows the run-time dependency on the number of time-steps, while panel (b) shows the dependency on the number of grid cells on each axis, both on a log–log scale. This scaling follows the predicted behaviour: linear in both the number of time-steps and total number of grid cells (on this plot being the grid size squared). Note that the run with 2500 time steps and 3002 grid size is left out, since the transport model was unstable for that configuration. These numbers were consistent throughout multiple runs.
The combination of 2500 time steps with a 3002 grid size yields instabilities in the transport model and is left out of the results. Other than that, CarboKitten scaled as predicted from our previous considerations.
5.4.4 Validation
We may validate our benchmark by looking at the results of the runs with grid size 1502. This is shown in Fig. 11. These results show that, when time steps are taken small enough, CarboKitten converges to a consistent result that does not depend on the size of the time step.
Figure 11Benchmark validation. This shows a cross-section of the runs with a grid size of 1502. Looking at the first output, using only 2500 time steps, we see a wave like pattern even where the deep sea facies dominate. These waves are not physical, but a result from taking the time step too large. When we look at the results from 5000 and 10 000 time steps, they look so similar that we can conclude that in this case 5000 steps was enough to get accurate results.
5.4.5 Potential for GPU optimisation
At the time of writing, CarboKitten is a single threaded CPU code. However, the structure of the model, is highly ammenable to optimisation on a GPU, which would drastically improve run-times further. Going through the steps of the composed model in Sect. 2.5: the cellular automaton is a stencil operation, production a map, disintegration a stencil, transport is implemented as an iterated stencil, and deposition is a map. Both stencil and map operations are highly localized in memory and are ideal for implementation on a GPU.
5.5 Documentation
CarboKitten is written entirely using literate programming (Knuth, 1984). This means that the implementation of CarboKitten is written as an integral part of its own documentation, using a system called Entangled (Hidding, 2023). The aim is that interested readers have a direct reference to the code implementing the methods that are explained in the documentation.
We provide two examples of typical tasks users are likely to undertake: creating a simulation using an empirical, externally provided sea level curve and one with explicit forcing by an insolation curve. These examples are supported by the code used to generate this executable manuscript (FIXME ref to the code) and users are encourage to use that code as a starting point for modifying these examples for their needs.
The third example serves to illustrate the details of how the wave-induced transport is modelled and how modelling decisions and parameter choices affect the outcomes obtained using this feature.
6.1 Sea level
Variables external to the model, which modulate the output the most, are the sea level and insolation. The sea level, together with subsidence, result in the relative sea level, which translates into water depth at any given position in the basin. The sea level must be specified as a function of time. It can be a constant, a continuous function or an empirical dataset. Empirical datasets can be read in as text files and need to be interpolated to equidistant intervals corresponding to the time step with which the model is run. The example here uses the sea level curve by Lisiecki and Raymo (2005), reproduced in the compilation by Miller et al. (2005). The dataset of relative sea level records derived from foraminifer δ18O extracted from this compilation is included in CarboKitten to facilitate simulations of the most typical sea-level scenarios. In this example we start the model at 2 Ma and build the platform until 134.54 ka, i.e. until the end of the record by Lisiecki and Raymo (2005), using a time step of 200 year (Fig. 12).
Figure 12Platform generated using the sea level curve of Lisiecki and Raymo (2005). Panel (a) shows the sea level curve. Panel (b) thecorresponding output stratigraphy.
6.2 Insolation
The relationship between production and insolation can be modified with user-provided parameters. It may be confusing that the extinction coefficient k is, in CarboKitten, a property of the carbonate factory and the facies it deposits and not of the basin or position in it. In reality extinction coefficient varies for different wavelengths of the sunlight spectrum, but the set of its values across the spectrum is constant for a given water body. While different carbonate factories exploit (or ignore, in the case of the aphotic factory) different parts of the light spectrum, the model is agnostic to it and allows users to set k to values that may represent an average across different producers using different wavelengths.
Figure 13Platform generated using the daily mean insolation during June solstice at the 25° N latitude for a period of 1 Myr starting in 1950 and using a sea level curve obtained by amplifying the insolation values. Panel (a) shows the insolation-based amplified sea level curve. Panel (b) shows the corresponding output stratigraphy.
As default, we use insolation of 400 W m−2, which is approximately equivalent to the 2000 µE m−2 s−1 used by Bosscher and Schlager (1992). This is representative of insolation on the sea surface at midday in the tropics. However, insolation varies with the position of the Earth with respect to the Sun and over geological timescales this variation may affect the patterns of sediment production. Incoming solar radiation can be used as an input vector to modulate production. CarboKitten is agnostic with respect to the source of this information. As an example in Fig. 13, here we use the daily mean insolation on June solstice, calculated using the astronomical solution by Laskar (2004), obtained through the R package palinsol (Crucifix, 2023). Here we obtain it for the coming million year (starting in 1950, which is when the astronomical solution starts) at the 25° N latitude and use the total solar irradiance value of 1361 kW m−2. Variation in solar irradiance is so small that it would hardly manifest itself if linearly propagated to the sea level curve. A universal transfer function describing the relationship between insolation and sea level does not exist. For the purpose of illustrating the functionality of the model, we calculate the sea level as an amplified insolation value. The amplification is chosen arbitrarily as the square of the insolation anomaly, with the anomaly being the deviation from mean irradiation.
The insolation file can be read into a CarboKitten script defining the model to be run. The alternative is calling R directly from Julia using RCall.jl.
6.3 Wave induced transport
We model the transport by waves by setting the velocity vf and shear sf components in Eq. (7). In this analysis we forego claims on any level of realism with respect to the true long term effects of wave transport, rather we study the behaviour of the model under an imposed additional velocity component. Our use of the term wave transport should also be understood as such.
Considering the long timescales we are working with, we limit ourselves to a highly simplified model, with the goal of achieving an effect comparable with that of wave-induced transport. Given the timescales for which the model is developed, with time steps of the order of 100 years, a more physical representation of wave-induced transport is not possible. By necessity, the result imitates the time-averaged effect of transport.
Our approach is illustrated with an example of an atoll, starting with a conical topography and periodic boundaries.
Here we try three different velocity profiles: first no onshore component, second a constant vector that does not depend on water depth, and third an attempt at a more realistic scenario.
The following equation is the well known phase velocity of waves as a function of depth from linear wave theory,
where w is the water depth, k the wave number (), and g is the gravitational acceleration. This velocity is the phase-velocity of surface waves, given the total depth of the water. To evaluate the transport velocity at deeper levels, we multiply the phase velocity with a factor exp (−kw) to account for Stokes drift:
where Af is the facies-dependent maximum transport velocity. The k parameter can be tweaked to set the depth at which the maximum transport velocity is attained. We assume most of the sediment transport happens close to the sea floor. This profile is chosen for its assymptotic properties: at high water depth the transport velocity converges to zero, while the decrease in wave velocity towards shallow depths ensures that there is a net influx of material close to the shore. An example of this profile is shown in Fig. 14.
Figure 14Depth profile of wave velocity and shear. The velocity profile was taylored to have a maximum of 10 m yr−1 at a depth of 20 m. Where the shear is negative (assuming transport is directed onshore), there is a net accumulation of sediment.
We model the formation of an atoll for three cases: no wave transport, constant transport directed west-ward (along the x-axis), and a depth dependent velocity profile. The results of this experiment are shown in Fig. 15. Velocity functions are configured for each facies separately. We found that it was quite easy to create an unstable model by choosing on-shore velocities too high, particularly in the case where the velocity shear is non-zero. Build-up of material due to high on-shore velocity can be compensated by setting a higher facies transport coefficient.
Figure 15Topography and sediment profiles of an atoll. We ran the same model three times with different on-shore velocity profiles: no on-shore transport, a constant velocity and lastly the profile given in Eq. (14). The top row (a–c) show the topography of the generated island, while the bottom row (d–f) show the corresponding sediment profiles. Small differences in water depth may get amplified exponentially by the production model, so we see some stark differences in the outcomes for the different velocity profiles. Comparing the first (without additional transport vector) and second case (flat profile), we see little change in the overall shape of the atoll, but there is a clear difference in the facies composition at the transition between oligophotic (yellow) and aphotic (green) dominated areas. In the third case we see the topography changed significantly between the leeward and windward sides of the atoll, where the slope is much steeper. Also the facies composition changed further: most notably we see a relative prominence of euphotic (blue) facies on the windward side of the island.
If we assume that both the facies transport coefficient and the wave velocity are some constant times a hypothetical carrying water velocity, it would be fitting to make sure that for each facies the transport coefficient and velocity have a similar proportion. In our experiment we took the values listed in Table 4. It is very hard to find proper motivation for any of these values, but by changing them we can learn more about the mechanisms and systematic behaviours of the model and by extension possibly learn more about the formation of carbonate platforms and study sensitivities in their observed stratigraphic patterns.
Table 4Chosen parameters to generate results in Fig. 15. We used a lithification time of 100 year and a disintegration rate of 50 m Myr−1.
CarboKitten is a new Open Source stratigraphic forward model dedicated for carbonate depositional environments and modeling of timescales between centuries and millions of years. It integrates previous, well-tested approaches used by the community, i.e. the production model by Bosscher and Schlager (1992) and the generation of spatial heterogeneity proposed by Burgess (2013) with a new approach to sediment transport, based on the concept of the active layer by Paola et al. (1992). The software allows modeling and visualization accessible to laptop users, including attractive plotting functions for common use-cases in stratigraphy and sedimentology, such as Wheeler diagrams, age-depth models and stratigraphic columns. CarboKitten uses heuristics to approximate the dynamics of carbonate production, wave transport and biologically driven spatial heterogeneity. The algorithms do not replicate the physical and biological processes behind these phenomena, but allow obtaining results imitating them at timescales at which they cannot be observed directly.
CarboKitten fills a gap identified at the outset of this manuscript: an Open Source, modular, performant stratiraphic forward model dedicated to carbonate platforms and their idiosyncracies. It complements the landscape of Earth-surface models such as Landlab (Hobley et al., 2017; Barnhart et al., 2020) and the broader suite of tools developed and maintained by the Community Surface Dynamics Modeling System (CSDMS). Future opportunities for CarboKitten include integration with Landlab and other CSDMS components.
At this stage, CarboKitten's primary value lies not in a realistic replication of empirical stratigraphic architectures, but in its utility for testing hypotheses on the formation of the carbonate geological record and on our own understanding on its governing processes. Further work is needed to allow more detailed reconstructions of known geological situations. Among future refinements are empirical validation of transport and production values or storing the history of sediment transport to track autochthonous and allochthonous sediment.
CarboKitten offers a powerful tool to ground-truth concepts of how time is represented in the physical rock record (e.g., Burgess, 2008; Burgess et al., 2019; Sultana et al., 2022) and constrain the limits of reconstruction of processes such as evolution (Holland and Patzkowsky, 1999; Hannisdal, 2006; Hohmann et al., 2024), climate change, or other aspects of the changing Earth's environment (e.g., Kemp et al., 2016; Kemp and Van Manen, 2019; Myrow and Grotzinger, 2000; Geyman et al., 2021; Husinec et al., 2023; Curtis et al., 2025). We hope the accessibility and reproducibility of CarboKitten simulations will encourage wider use of stratigraphic forward models towards a hypothetico-deductive research in stratigraphy.
Our basic assumption is that the sediment flux scales linearly with the local bathymetric gradient and the concentration of sediment in the active layer,
where Cf is the active sediment amount per facies (all “f” suffixes indicate facies dependent quantities), df the transport (diffusivity) coefficient, η(x) the bathymetry, and vf the wave velocity as a function of water depth w(x). Since the water depth and bathymetry differ at any time by a constant an a minus sign, , it is advantageous to write the equation completely in terms of w,
We can transform this assumption in to an advection equation by considering the continuity equation,
where P(x) is the sediment production rate (including disintegration). We can leave the production out of consideration for the moment. Also, for readability, we will be dropping the function dependencies on x and in our notation, as well as the “f” suffix, considering each facies independently. Using the product rule,
Now, we demand that the user provide the derivative , so applying the chain rule we can write,
Substituting that into the previous equation and collecting terms by C and ∇C brings us to Eq. (7),
For completeness we give an overview of the paramaters that enter CarboKitten's main model called ALCAP (Active Layer, Cellular Automaton and Production), at the time of writing the most extensive model in CarboKitten. We split these parameters in three categories. The global parameters deal with the grid geometry, time integration and external forcings (see Table B1). A second set of parameters are specified for each facies individually, e.g. production rates and CA behaviour (see Table B2). The third category concerns everything related to the transport model (see Table B3). Note that the transport coefficients are facies dependent, all others are global parameters.
Table B1Grid and time parameters. Parameters marked with * can be specified as a constant, table or Julia function. Parameters that have – as default value are required.
CarboKitten is available under the GNU Public Licencse 3.0 and is hosted on Github (https://github.com/MindTheGap-ERC/CarboKitten.jl, last access: 10 June 2026). Releases are also made available on Zenodo (https://doi.org/10.5281/zenodo.20626229, Hidding et al., 2026a). The full source code for this paper including all of its figures is also made available on Zenodo (https://doi.org/10.5281/zenodo.20451169, Hidding et al., 2026b).
EJ, JH, PB and NH conceptualized the study. Software and visualizations were developed by JH with contributions from EJ, XL, NH, and HS. All authors contributed to the methodology. EJ was responsible for funding acquisition and project administration. JH and EJ drafted the manuscript and PB and NH contributed to the final version.
The contact author has declared that none of the authors has any competing interests.
Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.
We thank Joris Eggenhuisen for discussions on the transport model and Charlotte Summers for programming support. Niels Drost provided administrative and management support during the project. We thank Ton Markus for the visualization of Fig. 7.
Funded by the European Union (ERC, MindTheGap, StG project no. 101041077). Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Council. Neither the European Union nor the granting authority can be held responsible for them.
This research has been supported by the European Research Council, HORIZON EUROPE European Research Council (grant no. 101041077).
This paper was edited by Evangelos Moulas and reviewed by two anonymous referees.
Adams, E. W. and Schlager, W.: Basic Types of Submarine Slope Curvature, J. Sediment. Res., 70, 814–828, https://doi.org/10.1306/2DC4093A-0E47-11D7-8643000102C1865D, 2000. a, b
Barnhart, K. R., Hutton, E. W. H., Tucker, G. E., Gasparini, N. M., Istanbulluoglu, E., Hobley, D. E. J., Lyons, N. J., Mouchene, M., Nudurupati, S. S., Adams, J. M., and Bandaragoda, C.: Short communication: Landlab v2.0: a software package for Earth surface dynamics, Earth Surf. Dynam., 8, 379–397, https://doi.org/10.5194/esurf-8-379-2020, 2020. a
Barrett, S. J. and Webster, J. M.: Reef Sedimentary Accretion Model (ReefSAM): Understanding coral reef evolution on Holocene time scales using 3D stratigraphic forward modelling, Mar. Geol., 391, 108–126, https://doi.org/10.1016/j.margeo.2017.07.007, 2017. a
Bosence, D. W. J., Pomar, L., Waltham, D. A., and Lankester, T. H. G.: Computer Modeling a Miocene Carbonate Platform, Mallorca, Spain1, AAPG Bull., 78, 247–266, https://doi.org/10.1306/BDFF9078-1718-11D7-8645000102C1865D, 1994. a
Bosscher, H. and Schlager, W.: Computer simulation of reef growth, Sedimentology, 39, 503–512, 1992. a, b, c, d, e
Bosscher, H. and Southam, J.: CARBPLAT – A computer model to simulate the development of carbonate platforms, Geology, 20, 235–238, https://doi.org/10.1130/0091-7613(1992)020<0235:CACMTS>2.3.CO;2, 1992. a, b
Burgess, P. M.: The nature of shallow-water carbonate lithofacies thickness distributions, Geology, 36, 235–238, https://doi.org/10.1130/G243326A.1, 2008. a
Burgess, P. M.: CarboCAT: A cellular automata model of heterogeneous carbonate strata, Comput. Geosci., 53, 129–140, 2013. a, b, c, d, e, f, g, h, i
Burgess, P. M.: Identifying Ordered Strata: Evidence, Methods, and Meaning, J. Sediment. Res., 86, 148–167, https://doi.org/10.2110/jsr.2016.10, 2016. a
Burgess, P. M. and Emery, D. J.: Sensitive dependence, divergence and unpredictable behaviour in a stratigraphic forward model of a carbonate system, in: Geological Prior Information: Informing Science and Engineering, vol. 239, edited by: Curtis, A. and Wood, R., Geological Society of London, ISBN 978-1-86239-171-0, https://doi.org/10.1144/GSL.SP.2004.239.01.06, 2004. a
Burgess, P. M., Wright, V. P., and Emery, D.: Numerical forward modelling of peritidal carbonate parasequence development: implications for outcrop interpretation, Basin Res., 13, 1–16, https://doi.org/10.1046/j.1365-2117.2001.00130.x, 2001. a
Burgess, P. M., Masiero, I., Toby, S. C., and Duller, R. A.: A big fan of signals? Exploring autogenic and allogenic process and product in a numerical stratigraphic forward model of submarine-fan development, J. Sediment. Res., 89, 1–12, https://doi.org/10.2110/jsr.2019.3, 2019. a, b
Crucifix, M.: palinsol: Insolation for Palaeoclimate Studies, CRAN, https://doi.org/10.32614/CRAN.package.palinsol, 2023. a
Curtis, A., Bloem, H., Wood, R., Bowyer, F., Shields, G. A., Zhou, Y., Yilales, M., and Tetzlaff, D.: Natural sampling and aliasing of marine geochemical signals, Sci. Rep., 15, 760, https://doi.org/10.1038/s41598-024-84871-6, 2025. a, b, c
Danisch, S. and Krumbiegel, J.: Makie.jl: Flexible high-performance data visualization for Julia, J. Open Source Softw., 6, 3349, https://doi.org/10.21105/joss.03349, 2021. a
Demicco, R. V.: CYCOPATH 2D – a two-dimensional, forward model of cyclic sedimentation on carbonate platforms, Comput. Geosci., 24, 405–423, https://doi.org/10.1016/S0098-3004(98)00024-7, 1998. a
Ding, X., Salles, T., Flament, N., and Rey, P.: Quantitative stratigraphic analysis in a source-to-sink numerical framework, Geosci. Model Dev., 12, 2571–2585, https://doi.org/10.5194/gmd-12-2571-2019, 2019. a
Dormann, S., Deutsch, A., and Lawniczak, A. T.: Fourier analysis of Turing-like pattern formation in cellular automaton models, Future Generat. Comput. Syst., 17, 901–909, https://doi.org/10.1016/S0167-739X(00)00068-6, 2001. a
Drummond, C. N. and Dugan, P. J.: Self-organizing models of shallow-water carbonate accumulation, J. Sediment. Res., 69, 939–946, https://doi.org/10.2110/jsr.69.939, 1999. a, b, c
Dyer, B., Maloof, A. C., Purkis, S. J., and Harris, P. M. M.: Quantifying the relationship between water depth and carbonate facies, Sediment. Geol., 373, 1–10, https://doi.org/10.1016/j.sedgeo.2018.05.011, 2018. a
Evans, K. M.: Larger than Life: it's so nonlinear, PhD thesis, Uniersity of Wisconsin-Madison, Madison, https://www.csun.edu/~kme52026/thesis.html (last access: 1 March 2026), 1996. a
Falivene, O., Frascati, A., Bolla Pittaluga, M., and Martin, J.: Three-dimensional Reduced-Complexity Simulation of Fluvio-Deltaic Clastic Stratigraphy, J. Sediment. Res., 89, 46–65, https://doi.org/10.2110/jsr.2018.73, 2019. a
Fathiyah Jamaludin, S. N.: Quantitative geo-history analysis of the Luconia-Balingian provinces, Malaysia with emphasis on the tectonic subsidence signatures, Mar. Petrol. Geol., 173, 107224, https://doi.org/10.1016/j.marpetgeo.2024.107224, 2025. a
Geyman, E. C., Maloof, A. C., and Dyer, B.: How is sea level change encoded in carbonate stratigraphy?, Earth Planet. Sc. Lett., 560, 116790, https://doi.org/10.1016/j.epsl.2021.116790, 2021. a
Granjeon, D. and Joseph, P.: Concepts and Applications of A 3-D Multiple Lithology, Diffusive Model in Stratigraphic Modeling, in: Numerical Experiments in Stratigraphy: Recent Advances in Stratigraphic and Sedimentologic Computer Simulations, vol. 62, edited by: Harbaugh, J. W., Watney, W. L., Rankey, E. C., Slingerland, R., Goldstein, R. H., and Franseen, E. K., SEPM – Society for Sedimentary Geology, 197–209, https://doi.org/10.2110/pec.99.62.0197, 1999. a, b, c
Hannisdal, B.: Phenotypic evolution in the fossil record: numerical experiments, J. Geol., 114, 133–153, https://doi.org/10.1086/499569, 2006. a, b
Henglai, P., Fongngern, R., and Saller, A.: The growth and demise of a Middle Miocene carbonate platform in Central Luconia, offshore Malaysia, Mar. Petrol. Geol., 163, 106763, https://doi.org/10.1016/j.marpetgeo.2024.106763, 2024. a, b, c
Hidding, J.: Entangled, a Bidirectional System for Sustainable Literate Programming, in: 2023 IEEE 19th International Conference on e-Science (e-Science), 1–9, https://doi.org/10.1109/e-Science58273.2023.10254816, 2023. a
Hidding, J., Jarochowska, E., Liu, X., Burgess, P., Hohmann, N., and Spreeuw, H.: CarboKitten.jl, Zenodo [code], https://doi.org/10.5281/zenodo.15742533, 2025.
Hidding, J., Jarochowska, E., Liu, X., Burgess, P., Hohmann, N., and Spreeuw, H.: CarboKitten.jl (v0.6.1), Zenodo [code], https://doi.org/10.5281/zenodo.20626229, 2026a (code also available at: https://github.com/MindTheGap-ERC/CarboKitten.jl, last access: 10 June 2026). a
Hidding, J., Jarochowska, E., Hohmann, N., Spreeuw, H., and xyl96: MindTheGap-ERC/CarboKitten-research-paper: Accepted Paper (v1.0), Zenodo [code], https://doi.org/10.5281/zenodo.20451169, 2026b. a, b
Hill, J., Tetzlaff, D., Curtis, A., and Wood, R.: Modeling shallow marine carbonate depositional systems, Comput. Geosci. 35, 1862–1874, https://doi.org/10.1016/j.cageo.2008.12.006, 2009. a
Hobley, D. E. J., Adams, J. M., Nudurupati, S. S., Hutton, E. W. H., Gasparini, N. M., Istanbulluoglu, E., and Tucker, G. E.: Creative computing with Landlab: an open-source toolkit for building, coupling, and exploring two-dimensional numerical models of Earth-surface dynamics, Earth Surf. Dynam., 5, 21–46, https://doi.org/10.5194/esurf-5-21-2017, 2017. a
Hohmann, N. and Jarochowska, E.: StratPal: An R package for creating stratigraphic paleobiology modelling pipelines, Meth. Ecol. Evol., 16, 678–686, https://doi.org/10.1111/2041-210X.14507, 2025. a
Hohmann, N., Koelewijn, J. R., Burgess, P., and Jarochowska, E.: Identification of the mode of evolution in incomplete carbonate successions, BMC Ecol. Evol., 24, 113, https://doi.org/10.1186/s12862-024-02287-2, 2024. a, b, c, d
Holland, S. M.: The quality of the fossil record: A sequence stratigraphic perspective, Paleobiology, 26, 148–168, https://doi.org/10.1017/S0094837300026919, 2000. a
Holland, S. M. and Patzkowsky, M. E.: Models for simulating the fossil record, Geology, 27, 491–494, https://doi.org/10.1130/0091-7613(1999)027<0491:MFSTFR>2.3.CO;2, 1999. a
Holland, S. M. and Patzkowsky, M. E.: Stratigraphic Variation in the Timing of First and Last Occurrences, PALAIOS, 17, 134–146, https://doi.org/10.1669/0883-1351(2002)017<0134:SVITTO>2.0.CO;2, 2002. a
Husinec, A., Read, J. F., and Kemp, D. B.: Orbital forcing of Upper Jurassic (Tithonian) shallow-water carbonates, Tethyan Adriatic Platform, Croatia evaluated using synthetic vs. real data sets, Palaeogeogr. Palaeocl. Palaeoecol., 622, 111617, https://doi.org/10.1016/j.palaeo.2023.111617, 2023. a
Hutton, E. W. H. and Syvitski, J. P. M.: Sedflux 2.0: An advanced process-response model that generates three-dimensional stratigraphy, Comput. Geosci., 34, 1319–1337, https://doi.org/10.1016/j.cageo.2008.02.013, 2008. a
James, S. C., Jones, C. A., Grace, M. D., and Roberts, J. D.: Advances in sediment transport modelling, J. Hydraul. Res., 48, 754–763, 2010. a
Jean Borgomano, C. L., Lanteaume, C., Léonide, P., Fournier, F., Montaggioni, L. F., and Masse, J.-P.: Quantitative carbonate sequence stratigraphy: Insights from stratigraphic forward models, AAPG Bull., 104, 1115–1142, https://doi.org/10.1306/11111917396, 2020. a
Kaufman, P., Grotzinger, J. P., and McCormick, D. S.: Depth-dependent diffusion algorithm for simulation of sedimentation in shallow marine depositional systems, Bulletin (Kansas Geological Survey), 233, 489–508, https://doi.org/10.17161/kgsbulletin.no.233.20474, 1991. a
Kemp, D. B. and Van Manen, S. M.: Metre-scale cycles in shallow water carbonate successions: Milankovitch and stochastic origins, Sedimentology, 66, 2590–2604, https://doi.org/10.1111/sed.12609, 2019. a, b
Kemp, D. B., Van Manen, S. M., Pollitt, D. A., and Burgess, P. M.: Investigating the preservation of orbital forcing in peritidal carbonates, Sedimentology, 63, 1701–1718, https://doi.org/10.1111/sed.12282, 2016. a, b, c
Kemp, D. B., Fraser, W. T., and Izumi, K.: Stratigraphic completeness and resolution in an ancient mudrock succession, Sedimentology, 65, 1875–1890, https://doi.org/10.1111/sed.12450, 2018. a
Kenter, J. A. M.: Carbonate platform flanks: slope angle and sediment fabric, Sedimentology, 37, 777–794, https://doi.org/10.1111/j.1365-3091.1990.tb01825.x, 1990. a, b, c
Knuth, D. E.: Literate Programming, Comput. J., 27, 97–111, https://doi.org/10.1093/comjnl/27.2.97, 1984. a
Laskar, J.: A long-term numerical solution for the insolation quantities of the Earth, Astron. Astrophys., 428, 261–285, https://doi.org/10.1051/0004-6361:20041335, 2004. a
Lisiecki, L. E. and Raymo, M. E.: A Pliocene-Pleistocene stack of 57 globally distributed benthic δ18O records, Paleoceanography, 20, https://doi.org/10.1029/2004PA001071, 2005. a, b, c
Liu, J. and Liu, K.: Estimating stratal completeness of carbonate deposition via process-based stratigraphic forward modeling, Sci. China Earth Sci., 64, 253–259, https://doi.org/10.1007/s11430-020-9660-8, 2021. a
Liu, J., Webster, J. M., Salles, T., Wang, S., Ma, Y., Xu, W., Li, G., and Yan, W.: The Formation of Atolls: New Insights From Numerical Simulations, J. Geophys. Res.-Earth, 127, e2022JF006812, https://doi.org/10.1029/2022JF006812, 2022. a
Lopez-Gamundi, C., Barnes, B. B., Betzler, C., Harris, P. M., Oehlert, A. M., Eberli, G. P., and Purkis, S. J.: The sediment budget of Great Bahama Bank–Earth's largest modern carbonate platform, Geology, 53, 748–752, https://doi.org/10.1130/G52850.1, 2025. a
Masiero, I., Kozlowski, E., Antonatos, G., Xi, H., and Burgess, P.: Numerical stratigraphic forward models as conceptual knowledge repositories and experimental tools: An example using a new enhanced version of CarboCAT, Comput. Geosci., 138, 104 453, https://doi.org/10.1016/j.cageo.2020.104453, 2020. a, b
Masiero, I., Burgess, P., Hollis, C., Manifold, L., Gawthorpe, R., Lecomte, I., Marshall, J., and Rotevatn, A.: Syn-rift carbonate platforms in space and time: testing and refining conceptual models using stratigraphic and seismic numerical forward modelling, in: Seismic Characterization of Carbonate Platforms and Reservoirs, edited by: Hendry, J., Burgess, P., Hunt, D., Janson, X., and Zampetti, V., Geological Society of London, ISBN 978-1-78620-539-1, https://doi.org/10.1144/SP509-2019-217, 2021. a
Miller, K. G., Kominz, M. A., Browning, J. V., Wright, J. D., Mountain, G. S., Katz, M. E., Sugarman, P. J., Cramer, B. S., Christie-Blick, N., and Pekar, S. F.: The Phanerozoic Record of Global Sea-Level Change, Science, 310, 1293–1298, https://doi.org/10.1126/science.1116412, 2005. a
Mitchell, S. F., Paul, C. R. C., and Gale, A. S.: Carbon isotopes and sequence stratigraphy, Geol. Soc. Lond. Spec. Publ., 104, 11–24, https://doi.org/10.1144/GSL.SP.1996.104.01.02, 1996. a
Myrow, P. M. and Grotzinger, J. P.: Chemostratigraphic Proxy Records: Forward Modeling the Effects of Unconformities, Variable Sediment Accumulation Rates, and Sampling-Interval Bias, in: Carbonate Sedimentation and Diagenesis in the Evolving Precambrian World, vol. 67, edited by: Grotzinger, J. P. and James, N. P., SEPM Society for Sedimentary Geology, ISBN 978-1-56576-189-6, https://doi.org/10.2110/pec.00.67, 2000. a
Paola, C., Heller, P. L., and Angevine, C. L.: The large-scale dynamics of grain-size variation in alluvial basins, 1: Theory, Basin Res., 4, 73–90, 1992. a, b, c, d, e
Pastier, A.-M., Husson, L., Pedoja, K., Bézos, A., Authemayou, C., Arias-Ruiz, C., and Cahyarini, S. Y.: Genesis and Architecture of Sequences of Quaternary Coral Reef Terraces: Insights From Numerical Models, Geochem. Geophy. Geosy., 20, 4248–4272, https://doi.org/10.1029/2019GC008239, 2019. a
Paterson, R. J., Whitaker, F. F., Jones, G. D., Smart, P. L., Waltham, D., and Felce, G.: Accommodation and Sedimentary Architecture of Isolated Icehouse Carbonate Platforms: Insights from Forward Modeling with CARB3D+, J. Sediment. Res., 76, 1162–1182, https://doi.org/10.2110/jsr.2006.113, 2006. a, b
Purkis, S. J., Koppel, J. v. d., and Burgess, P. M.: Spatial self-organization in carbonate depositional environments, SEPM Spec. Publ., 106, 53–66, https://doi.org/10.2110/sepmsp.106.02, 2016. a
Salles, T.: Badlands: A parallel basin and landscape dynamics model, SoftwareX, 5, 195–202, https://doi.org/10.1016/j.softx.2016.08.005, 2016. a
Salles, T., Ding, X., and Brocard, G.: pyBadlands: A framework to simulate sediment transport, landscape dynamics and basin stratigraphic evolution through space and time, PLOS ONE, 13, e0195557, https://doi.org/10.1371/journal.pone.0195557, 2018a. a
Salles, T., Pall, J., Webster, J. M., and Dechnik, B.: Exploring coral reef responses to millennial-scale climatic forcings: insights from the 1-D numerical tool pyReef-Core v1.0, Geosci. Model Dev., 11, 2093–2110, https://doi.org/10.5194/gmd-11-2093-2018, 2018b. a
Schlager, W. and Camber, O.: Submarine slope angles, drowning unconformities, and self-erosion of limestone escarpments, Geology, 14, 762–765, https://doi.org/10.1130/0091-7613(1986)14<762:SSADUA>2.0.CO;2, 1986. a
Schlager, W. and Warrlich, G.: Record of sea‐level fall in tropical carbonates, Basin Res., 21, 209–224, https://doi.org/10.1111/j.1365-2117.2008.00383.x, 2009. a
Strobel, J., Cannon, R., Christopher, G. S., Kendall, C. S., Biswas, G., and Bezdek, J.: Interactive (SEDPAK) simulation of clastic and carbonate sediments in shelf to basin settings, Comput. Geosci., 15, 1279–1290, https://doi.org/10.1016/0098-3004(89)90092-7, 1989. a
Sultana, D., Burgess, P., and Bosence, D.: How do carbonate factories influence carbonate platform morphology? Exploring production-transport interactions with numerical forward modelling, Sedimentology, 69, 372–393, https://doi.org/10.1111/sed.12943, 2022. a, b, c, d
Sylvester, Z., Straub, K. M., and Covault, J. A.: Stratigraphy in space and time: A reproducible approach to analysis and visualization, Earth-Sci. Rev., 250, 104706, https://doi.org/10.1016/j.earscirev.2024.104706, 2024. a
Tetzlaff, D.: Stratigraphic forward modeling software package for research and education, arXiv [preprint], https://doi.org/10.48550/arXiv.2302.05272, 2023. a
Warrlich, G., Bosence, D., Waltham, D., Wood, C., Boylan, A., and Badenas, B.: 3D stratigraphic forward modelling for analysis and prediction of carbonate platform stratigraphies in exploration and production, Mar. Petrol. Geol., 25, 35–58, https://doi.org/10.1016/j.marpetgeo.2007.04.005, 2008. a, b
Warrlich, G.-M. D.: 3D computer forward modelling of carbonate platform evolution, PhD thesis, Royal Holloway, University of London, 2000. a, b, c
Warrlich, G. M. D., Waltham, D. A., and Bosence, D. W. J.: Quantifying the sequence stratigraphy and drowning mechanisms of atolls using a new 3‐D forward stratigraphic modelling program (CARBONATE 3D), Basin Res., 14, 379–400, https://doi.org/10.1046/j.1365-2117.2002.00181.x, 2002. a
Weij, R., Reijmer, J. J. G., Eberli, G. P., and Swart, P. K.: The limited link between accommodation space, sediment thickness, and inner platform facies distribution (Holocene–Pleistocene, Bahamas), Deposit. Rec., 5, 400–420, https://doi.org/10.1002/dep2.50, 2019. a
Wild, T. B., Loucks, D. P., and Annandale, G. W.: SedSim: A River Basin Simulation Screening Model for Reservoir Management of Sediment, Water, and Hydropower, J. Open Res. Softw., 7, https://doi.org/10.5334/jors.261, 2019. a
Xi, H. and Burgess, P. M.: The stratigraphic significance of self-organization: Exploring how autogenic processes can generate cyclical carbonate platform strata, Sedimentology, 69, 1769–1788, https://doi.org/10.1111/sed.12974, 2022. a, b
Zimmt, J. B., Holland, S. M., Finnegan, S., and Marshall, C. R.: Recognizing pulses of extinction from clusters of last occurrences, Palaeontology, 64, 1–20, https://doi.org/10.1111/pala.12505, 2021. a
- Abstract
- Introduction
- Model
- Transport
- Validation
- Software design
- Examples
- Conclusions
- Appendix A: Derivation of transport equations
- Appendix B: Model parameters
- Code and data availability
- Author contributions
- Competing interests
- Disclaimer
- Acknowledgements
- Financial support
- Review statement
- References
- Abstract
- Introduction
- Model
- Transport
- Validation
- Software design
- Examples
- Conclusions
- Appendix A: Derivation of transport equations
- Appendix B: Model parameters
- Code and data availability
- Author contributions
- Competing interests
- Disclaimer
- Acknowledgements
- Financial support
- Review statement
- References