Skip to content

Instantly share code, notes, and snippets.

@mcflugen
Last active February 24, 2016 23:52
Show Gist options
  • Save mcflugen/0ef5d40076628f06594f to your computer and use it in GitHub Desktop.
Save mcflugen/0ef5d40076628f06594f to your computer and use it in GitHub Desktop.
iPython notebook that shows an example of how to use the CEM BMI Python interface.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Before we begin...\n",
"\n",
"## Install the CSDMS tools\n",
"\n",
"Create a new folder to hold the Python installation, which will contain the CSDMS tools, and grab the Miniconda installer.\n",
"```bash\n",
"> mkdir py-csdms\n",
"> cd py-csdms\n",
"> curl http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -o miniconda.sh\n",
"```\n",
"There are also Miniconda installers for [Mac](http://repo.continuum.io/miniconda/Miniconda-latest-MacOSX-x86_64.sh). Unfortunately, we are yet to build our software stack on Windows.\n",
"\n",
"Install a fresh Python with the installer you just downloaded and add it to your `PATH`.\n",
"```bash\n",
"> bash miniconda.sh -f -b -p $(pwd)/conda\n",
"> export PATH=$(pwd)/conda/bin:$PATH\n",
"```\n",
"\n",
"Install the necessary CSDMS packages and then ipython notebook (and matplotlib so we can look at some pictures).\n",
"```bash\n",
"> conda install coupling csdms-cem --override-channels -c csdms/channel/dev -c defaults\n",
"> conda install ipython-notebook matplotlib\n",
"```\n",
"\n",
"## Links\n",
"* [CEM source code](https://github.com/csdms/cem-old/tree/mcflugen/add-function-pointers): Look at the files that have *deltas* in their name.\n",
"* [CEM description on CSDMS](http://csdms.colorado.edu/wiki/Model_help:CEM): Detailed information on the CEM model."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Interacting with the Coastline Evolution Model BMI using Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Setting some stuff up for the example"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some magic that allows us to view images within the notebook."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here I define a convenience function for plotting the water depth and making it look pretty. You don't need to worry too much about it's internals for this tutorial. It just saves us some typing later on."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def plot_coast(spacing, z):\n",
" import matplotlib.pyplot as plt\n",
" from matplotlib.colors import LinearSegmentedColormap\n",
" \n",
" land = plt.cm.terrain(np.linspace(.4, 1, 128))\n",
" ocean = plt.cm.ocean(np.linspace(.5, .8, 128))\n",
" colors = np.vstack((ocean, land))\n",
" m = LinearSegmentedColormap.from_list('land_ocean', colors)\n",
" \n",
" (y, x) = np.meshgrid(np.arange(z.shape[0]) * spacing[0],\n",
" np.arange(z.shape[1]) * spacing[1], indexing='ij')\n",
" \n",
" plt.pcolormesh(y * 1e-3, x * 1e-3, z, cmap=m, vmin=-100, vmax=100)\n",
" \n",
" plt.gca().set_aspect(1.) \n",
" plt.colorbar(orientation='horizontal').ax.set_xlabel('Elevation (m)')\n",
" plt.xlabel('Along shore (km)')\n",
" plt.ylabel('Cross shore (km)')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a model and query it"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Import the `Cem` class, and instantiate it. In Python, a model with a BMI will have no arguments for its constructor. Note that although the class has been instantiated, it's not yet ready to be run. We'll get to that later!"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/huttone/git/csdms/coupling/cmt/framework/bmi_setup.py:28: UserWarning: missing units for sediment_flux_flag\n",
" warnings.warn('missing units for {name}'.format(name=name))\n"
]
}
],
"source": [
"from cmt.components import Cem\n",
"cem = Cem()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are several values that can be set when setting up a *Cem* simulation. These are initial values for parameters that can only be set before the model begins stepping through time. To see what these parameters (and their units) are and their default values, use the `defaults` attribute of the cem object."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[('sediment_flux_flag', (1, '-')),\n",
" ('shoreface_depth', (10.0, 'm')),\n",
" ('shelf_slope', (0.001, '-')),\n",
" ('shoreface_slope', (0.01, '-')),\n",
" ('grid_spacing', (1000, 'm')),\n",
" ('number_of_cols', (1000, '-')),\n",
" ('number_of_rows', (50, '-')),\n",
" ('run_duration', (3650.0, 'd'))]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.defaults"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now use the `setup` method to stage a cem simulation and set any parameters that we want to change from their default values. The first argument is a folder in which to stage the new simulation (if it already exists, it will be overwritten). New parameters are passed as keywords. Now that the model is staged, we can initialize it!"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"cem.setup('_run_cem', number_of_cols=100, number_of_rows=300, grid_spacing=5000.)\n",
"cem.initialize('_run_cem/cem.txt')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now look at the current set of paramters."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[('sediment_flux_flag', 1),\n",
" ('shoreface_depth', 10.0),\n",
" ('shelf_slope', 0.001),\n",
" ('shoreface_slope', 0.01),\n",
" ('grid_spacing', 5000.0),\n",
" ('number_of_cols', 100),\n",
" ('number_of_rows', 300),\n",
" ('run_duration', 3650.0)]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As will all BMI objects, we can query the names of values that can set as the model updates through time. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"('sea_surface_water_wave__azimuth_angle_of_opposite_of_phase_velocity',\n",
" 'basin_outlet_water_sediment~bedload__mass_flow_rate',\n",
" 'land_surface_water_sediment~bedload__mass_flow_rate',\n",
" 'sea_surface_water_wave__period',\n",
" 'basin_outlet_water_sediment~suspended__mass_flow_rate',\n",
" 'sea_surface_water_wave__height',\n",
" 'land_surface__elevation')"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.get_input_var_names()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or the names of values that are provided by the model."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"('basin_outlet~coastal_center__x_coordinate',\n",
" 'basin_outlet~coastal_water_sediment~bedload__mass_flow_rate',\n",
" 'land_surface__elevation',\n",
" 'sea_water__depth',\n",
" 'basin_outlet~coastal_center__y_coordinate')"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.get_output_var_names()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also get information about specific variables. Here we'll look at some info about wave direction. This is the main input of the Cem model. Notice that BMI components always use [CSDMS standard names](http://csdms.colorado.edu/wiki/CSDMS_Standard_Names). The CSDMS Standard Name for wave angle is,\n",
"```python\n",
"\"sea_surface_water_wave__azimuth_angle_of_opposite_of_phase_velocity\"\n",
"```\n",
"Quite a mouthful, I know. With that name we can get information about that variable and the grid that it is on (it's actually not a one)."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data type: double\n",
"Units: radians\n",
"Grid id: 0\n",
"Number of elements in grid: 1\n",
"Type of grid: scalar\n"
]
}
],
"source": [
"angle_name = 'sea_surface_water_wave__azimuth_angle_of_opposite_of_phase_velocity'\n",
"\n",
"print \"Data type: %s\" % cem.get_var_type(angle_name)\n",
"print \"Units: %s\" % cem.get_var_units(angle_name)\n",
"print \"Grid id: %d\" % cem.get_var_grid(angle_name)\n",
"print \"Number of elements in grid: %d\" % cem.get_grid_size(0)\n",
"print \"Type of grid: %s\" % cem.get_grid_type(0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Set values of the model"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before running the model, let's set a couple input parameters. These two parameters represent the wave height and wave period of the incoming waves to the coastline."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"cem.set_value(\"sea_surface_water_wave__height\", 2.)\n",
"cem.set_value(\"sea_surface_water_wave__period\", 7.)\n",
"cem.set_value(\"sea_surface_water_wave__azimuth_angle_of_opposite_of_phase_velocity\", 0. * np.pi / 180.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"One of the main outputs of the Cem model is elevation."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Type of grid: uniform_rectilinear (2D)\n",
"The grid has 300 rows and 100 columns\n",
"The spacing between rows is 5000.000000 and between columns is 5000.000000\n"
]
}
],
"source": [
"grid_id = cem.get_var_grid('land_surface__elevation')\n",
"grid_type = cem.get_grid_type(grid_id)\n",
"grid_rank = cem.get_grid_rank(grid_id)\n",
"spacing = cem.get_grid_spacing(grid_id)\n",
"shape = cem.get_grid_shape(grid_id)\n",
"\n",
"print 'Type of grid: %s (%dD)' % (grid_type, grid_rank)\n",
"print 'The grid has %d rows and %d columns' % (shape[0], shape[1])\n",
"print 'The spacing between rows is %f and between columns is %f' % (spacing[0], spacing[1])"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"Get the initial elevations and plot them."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/huttone/_z/conda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"image/png": "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\nHF5MAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x103e8e290>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"z0 = cem.get_value('land_surface__elevation').reshape(shape)\n",
"plot_coast(spacing, z0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Right now we have waves coming in but no sediment entering the ocean. To add some discharge, we need to figure out where to put it. For now we'll put it on a cell that's next to the ocean.\n",
"Allocate memory for the sediment discharge array and set the discharge at the coastal cell to some value."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"qs = np.zeros_like(z0)\n",
"qs[0, 50] = 1250"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The CSDMS Standard Name for this variable is:\n",
"\n",
" \"land_surface_water_sediment~bedload__mass_flow_rate\"\n",
"\n",
"You can get an idea of the units based on the quantity part of the name. \"mass_flow_rate\" indicates mass per time. You can double-check this with the BMI method function **get_var_units**."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'kg / s'"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.get_var_units('land_surface_water_sediment~bedload__mass_flow_rate')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.2, 'd', 0.0)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cem.get_time_step(), cem.get_time_units(), cem.get_current_time()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Advance the model through time"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"times = np.linspace(0, 1000 * 365, 100)\n",
"for time in times:\n",
" cem.set_value('land_surface_water_sediment~bedload__mass_flow_rate', qs)\n",
" cem.update_until(time)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108f1dd90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_coast(cem.get_grid_spacing(2), cem.get_value('land_surface__elevation').reshape(shape))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment