tfirst commit - granular-channel-hydro - subglacial hydrology model for sedimentary channels
 (HTM) git clone git://src.adamsgaard.dk/granular-channel-hydro
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 6ce83970ccaba7dd7c4f0ad316ce4f25f1e38e30
 (HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
       Date:   Fri, 13 Jan 2017 21:02:16 -0800
       
       first commit
       
       Diffstat:
         A README.md                           |       2 ++
         A granular_channel_drainage/__init__… |       5 +++++
         A granular_channel_drainage/model.py  |      73 +++++++++++++++++++++++++++++++
         A requirements.txt                    |       4 ++++
       
       4 files changed, 84 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/README.md b/README.md
       t@@ -0,0 +1,2 @@
       +# README
       +
 (DIR) diff --git a/granular_channel_drainage/__init__.py b/granular_channel_drainage/__init__.py
       t@@ -0,0 +1,5 @@
       +#!/usr/bin/env python
       +__all__ = ['model']
       +__version__ = '0.01'
       +
       +from model import model
 (DIR) diff --git a/granular_channel_drainage/model.py b/granular_channel_drainage/model.py
       t@@ -0,0 +1,73 @@
       +#!/usr/bin/env python
       +import numpy
       +import matplotlib.pyplot as plt
       +import landlab
       +
       +class model:
       +    def __init__(self, name='unnamed'):
       +        '''
       +        Initialize a blank hydrology model object and optionally assign a
       +        simulation name to it.
       +
       +        :param name: A uniquely identifying simulation name
       +        :type name: str
       +        '''
       +        self.name = name
       +
       +    def generateVoronoiDelaunayGrid(self, Lx, Ly, N, structure='pseudorandom'):
       +        '''
       +        Generate a Voronoi Delaunay grid with randomly positioned nodes using
       +        Landlab.
       +
       +        :param Lx: A tuple containing the length along x of the model
       +            domain.
       +        :type Lx: float
       +        :param Ly: A tuple containing the length along y of the model
       +            domain.
       +        :type Ly: float
       +        :param N: The number of random model nodes in the model.
       +        :type N: int
       +        :param structure: The type of numeric distribution used to seed the
       +            grid. A ``random`` grid will produce uniformly random-distributed
       +            grid points, while ``pseudorandom`` (default) will add random noise
       +            to a regular grid.
       +        :type structure: str
       +        '''
       +        self.grid_type = 'VoronoiDelaunay'
       +
       +        if structure == 'random':
       +            x = numpy.random.rand(N)*Lx
       +            y = numpy.random.rand(N)*Ly
       +        elif structure == 'pseudorandom':
       +            noise_amplitude = Lx/(N**0.5)*0.01
       +            x = numpy.linspace(0, Lx, N) + \
       +                numpy.random.normal(0., noise_amplitude, N)
       +            y = numpy.linspace(0, Ly, N) + \
       +                numpy.random.normal(0., noise_amplitude, N)
       +            print x
       +            print y
       +            x = numpy.random.shuffle(x) # why does this return an empty array?
       +            y = numpy.random.shuffle(y)
       +            print x
       +            print y
       +
       +        self.grid = landlab.grid.VoronoiDelaunayGrid(x, y)
       +
       +        self.grid.add_zeros('node', 'bed__topographic__elevation')
       +        self.grid.add_zeros('node', 'surface__topographic__elevation')
       +
       +    def plotGrid(self, save=False, saveformat='pdf'):
       +        #landlab.plot.imshow_grid(self.grid, self.grid.node_x)
       +        fig = plt.figure()
       +        plt.plot(self.grid.x_of_node, self.grid.y_of_node, '.')
       +        plt.xlabel('$x$ [m]')
       +        plt.ylabel('$y$ [m]')
       +        if save:
       +            plt.savefig('grid.' + saveformat)
       +        else:
       +            plt.show()
       +        plt.close()
       +
       +
       +
       +
 (DIR) diff --git a/requirements.txt b/requirements.txt
       t@@ -0,0 +1,4 @@
       +scipy>=0.14
       +numpy
       +landlab
       +matplotlib