fabricsim (version 1.6, 2005/11/04)
index
/Users/schwehr/projects/xcore/src/pmag-kds-py/fabricsim.py

Utility for simulating clay fabrics.  Not very sophisticated and has
no direct application to real sediments.
 
     Copyright (C) 2005  Kurt Schwehr
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 
Modules
       
math
pylab
struct
sys

 
Classes
       
DevRandom

 
class DevRandom
    Use /dev/random to get some random numbers.  Quality depends on OS.
 
Probably good for random number seeds... that is what I am using
it for.
 
http://www.python.org/doc/current/lib/module-struct.html
 
  Methods defined here:
__init__(self)
getInt4(self)
return a 4 byte signed integer
 
Approximately -2G to 2G

 
Functions
       
const_density(width, minDepth, maxDepth, step, start)
linear_density(width, minDepth, maxDepth, step, start, end)
Create a density increasing linearly down core
make_particles_uniform_dist(density, width, minLength, maxLength, verbosity=0)
Generate a random fabric of platy particles
 
Uniform distribution... any angle possible
make_particles_uniform_dist_max_angle(density, width, minLength, maxLength, maxAngle=0, verbosity=0)
Generate a random fabric of platy particles
Uniform distribution...  angle is constrained to possible angles
max angle in radians
make_particles_uniform_dist_range_angle(density, width, minDepth, maxDepth, minLength, maxLength, startAngle=5, endAngle=20, verbosity=0)
Generate a random fabric of platy particles
Uniform distribution...  angle is constrained to possible angles
max angle in radians
 
FIX: pull the min max depth out of the distribution density!
particles_gnuplot_dat(particles, width, minDepth, maxDepth, filename='fabricsim.dat', verbosity=0)
Write out a gnuplot data file and some code to plot it
 
filename - where to write the data file.  The gnuplot command file has .gp on the end
printTodo()
Things that need to be done to this code:
 
FIX: perterb the depth +/- 1/2 of depth step that the code is at
FIX: Plot the density curve down the side of the plot
FIX: Plot the compaction (angular) distribution down the other side of the plot
FIX: Make the line color represent something like composition or magnetic properties
FIX: Otherwise make all the particles the same color
FIX: Allow multimodal distributions of size... e.g. clay size fraction, nano's, and sand size
FIX: particle thickness
show_particles(density, width, depth, minLength, maxLength, paritcles, filename=None, verbosity=0)
matplotlib code
 
FIX: It does not need min/maxLength!
writearray(filename, data, lineBetweenRow=False, breakInRow=None)
Ugly little data dumper
 
lineBetweenRow - if true, puts a blank line between rows.  Good for gnuplot
breakInRow - set to a number of points after which to make a line break
   e.g. 2: (x1,y1,x2,y2) -> x1 y1 newline x2 y2

 
Data
        ALWAYS = 0
BOMBASTIC = 4
TERSE = 1
TRACE = 2
VERBOSE = 3
VERSION = '0.11'
__author__ = 'Kurt Schwehr'
__date__ = '2005/11/04'
__version__ = '1.6'

 
Author
        Kurt Schwehr