Package: coastal-cascade
🌀 🌊 🏄‍♀️ 🏚️ 🌀 🌊 🏄‍♀️ 🏚️ 🌀 🌊 🏄‍♀️ 🏚️ 🌀 🌊 🏄‍♀️ 🏚️cascadeThe CoAStal Community-lAnDscape Evolution (cascade) model is a coupled landscape and human-dynamics modeling framework.cascadecombines elements of two exploratory morphodynamic models of barrier evolution --barrier3d(Reeves et al., 2021) and the BarrierR Inlet Environment (brie) model (Nienhuis & Lorenzo-Trueba, 2019) -- into a
single model framework (figure below).barrier3d, a spatially-explicit cellular exploratory model, is the core ofcascade.
It is used within thecascadeframework to simulate the effects of individual storm events and SLR on shoreface
evolution; dune dynamics, including dune growth, erosion, and migration; and overwash deposition by individual storms.brieis used to simulate large-scale coastline evolution arising from alongshore sediment transport processes; this is
accomplished by connecting individualbarrier3dmodels through diffusive alongshore sediment transport. Human dynamics
are incorporated incascadein two separate modules. The first module simulates strategies for preventing roadway
pavement damage during overwashing events, including rebuilding roadways at sufficiently low elevations to allow for
burial by overwash, constructing large dunes, and relocating the road into the barrier interior. The second module
incorporates management strategies for maintaining a coastal community, including beach nourishment, dune construction,
and overwash removal. For a full description of model dynamics, please see the pre-print of "The Future of Developed
Barrier Systems: Pathways Toward Uninhabitability, Drowning, and Rebound" by Anarde et al., (in review,Earth ArXiv preprint).In development:cascaderepresents decisions about coastal land-use (e.g., housing markets) and community-level
mitigation measures using an empirically-grounded agent-based real estate model – the Coastal Home Ownership Model (chom).chomreceives information about the coastal environment and acts on that information to cause change to the environment,
including decisions about beach nourishment and dune construction and maintenance.Model couplingcascadecan initialize a series ofbarrier3dmodels, each describing a barrier segment with different initial conditions
or management strategies (detailed below). Thebarrier3dsegments are then coupled alongshore through a
diffusive wave-driven sediment transport model (with periodic boundary conditions; i.e., Ashton & Murray, 2006)
housed within thebriemodel, which distributes sediment alongshore amongst the different barrier segments.
This coupling is possible because both models describe shoreface and shoreline dynamics using the formulations of
Lorenzo-Trueba and Ashton (2014). Functionally, this coupling ofbarrier3d’s cross-shore morphodynamics withbrie’s
alongshore transport model requires 1) initializing both models with equivalent barrier geometry and environmental
parameters, 2) separating dune migration withinbarrier3dfrom the other model processes in the one year time step
(Figure 1), and 3) turning off all other model processes withinbrie(i.e., cross-shore barrier model and tidal inlet model). While the version ofbarrier3din thecascadeframework
produces equivalent results to the version used in Reeves et al., (2021; version testing is automated incascade,
see thetestsfolder), the default parameters are modified to match the shoreface configuration inbrie, which depends
on local wave and sediment characteristics as well as the offshore wave climate (Hallermeier, 1980; Ferguson & Church, 2004;
Lorenzo-Trueba & Ashton, 2014; Ortiz & Ashton, 2016). For ease of model coupling,brieandchomwere rewritten in Python
and all models (barrier3d,brie,chom) were appended with a basic-model interface with the help of the
Community Surface Dynamics Modeling System. The repositories for the models coupled withincascadeare noted here:barrier3d:GitHub Python Repository - Version 2.0 (BMI)brie:GitHub Python Repository - Version 1.0 (BMI)chom:GitHub Python Repository - Version 0.0.1.dev0 (BMI)InstallationThis ReadMe corresponds to the development version ofcascadeused for the
simulations detailed in"The Future of Developed Barrier Systems: Pathways Toward
Uninhabitability, Drowning, and Rebound" by Anarde et al., (in review,Earth ArXiv preprint). Prior
to publication,cascadewill be made available for easy installation using eitherpiporconda. Reviewers can follow the instructions provided below for installation
ofcascade.To install the latest release ofcascadeusingpip, simply run the following
in your terminal of choice:pip install coastal-cascadeYou can also useconda:conda install coastal-cascadeFrom Sourcecascadeis actively being developed on GitHub, where the code is freely available.
If you would like to modifying code or contributing new code tocascade, you will first
need to getcascade's source code, and then installcascadefrom that code.To get the source code you can either clone the repository withgit:git clone git@github.com/UNC-CECL/cascadeor download azip file:curl -OL https://github.com/UNC-CECL/CASCADE/archive/refs/heads/main.zipOnce you have a copy of the source code, you can install it into your current
environment,pip install -e .We usenoxto automate routine maintenance tasks like running the tests,
removing lint, etc. Installnoxwithpip::pip install noxWhen you're done making changes, you can now runnoxto check that the tests
pass and that there isn't any lint:nox -s test  # run the unit tests
  nox -s test-notebooks  # test that the notebooks run successfully
  nox -s lint  # find and, where possible, remove lint (black, flake8, etc.)To run all of the above in a single command:noxExample simulationsFor a more complete set of example model runs and description of module functionality, we direct the use to the examples
provided innotebooks.Example (default) data inputs for cascade are provided in thedatadirectory:from cascade.cascade import Cascade

datadir = "data/"To initialize an instance ofcascadewith no human dynamics, 3 barrier segments (each 500-m long), and
defaultbarrier3dandbrieparameters:cascade = Cascade(
    datadir,
    name="no_human_dynamics_3_barrier_segments",
    alongshore_section_count=3,
    roadway_management_module=False,
    alongshore_transport_module=True,
    beach_nourishment_module=False,
    community_economics_module=False,
)To initialize an instance ofcascadewith roadway barrier management on 1 barrier segment:cascade = Cascade(
    datadir,
    name="roadway_mgmt_1_barrier_segments",
    alongshore_section_count=1,
    roadway_management_module=True,
    alongshore_transport_module=False,
    beach_nourishment_module=False,
    community_economics_module=False,
)To initializecascadewith community barrier management on 1 barrier segment:cascade = Cascade(
    datadir,
    name="community_mgmt_1_barrier_segments",
    alongshore_section_count=1,
    roadway_management_module=False,
    alongshore_transport_module=False,
    beach_nourishment_module=True,
    community_economics_module=False,
)Once initialized, acascadetime loop can be completed as follows:for time_step in range(cascade.time_step_count - 1):
    cascade.update()
    if cascade.b3d_break:
        breakCreditsDevelopment LeadsKatherine Anardekanarde@ncsu.eduContributorsEric Huttonmcflugen@gmail.comZachary Williamszachary.c.williams@duke.eduChangelog for CASCADE0.1.1 (2023-03-21)Added additional tests for therebuild_dunesfunction that uses that newnumpyinterpolator,RegularGridInterpolator.
(#36 <https://github.com/UNC-CECL/cascade/issues/36>_)0.1.0 (2023-03-17)This is the version ofcascadeused for the simulations in "The Future of
Developed Barrier Systems: Pathways Toward Uninhabitability, Drowning, and
Rebound" by Anarde et al., (in review).