Kenneth M. Cruikshank
Fracture Programs

Kenneth M. Cruikshank
Fold Simulations

Below are some programs and functions for generating stress and displacement fields near one or more fractures (Modes I, II, and III).

History and Notes

These programs were written in 1989. You should be able to compile the code my making necessary modifications to the makefile.

Some of these functions require Complex variables. Most languages now have a Complex number type build in, but in years ago this was not always the case, so some of these programs contain my own complex math routines (well, a library I made with the help of sources such as the "Numerical Recipes" series). My own library for run-time generation of arrays is also included.

The Fracture program was written for some of my PhD work, on the interaction of two joints. It has the ability to extend the two interacting fractures using the solution of Cottrell and Rice (1980). Please see the following papers for more details.

Cottrell, B. & Rice, J. R. 1980. Slightly curved or kinked cracks. Int. J. Fract. 16, 155-169.

Cruikshank, K.M., Zhao, G. & Johnson, A.M. 1991. Analysis of secondary fractures associated with joints and faulted-joints. Journal of Structural Geology. 13(8):865-886. PDF


Stresses are normalizes with the Shear Modulus (G), and lengths are normalized with the 1/2 fracture length (a). In Crack, the fracture extends from (-1,0) to (1,0) in the (x,y) plane. See the file fracture.c for an explanation of the coordinate system used in that program

Program Crack and Pollard

Crack and Pollard are perhaps the simplest programs. You simple enter the normalized coordinates of a point, and the stress and displacement field is returned. This was written to work on a PC and UNIX using a standard C complier. Crack uses a complex stress function solutions from Tada et al. (1985), whereas Pollard used the solution from Pollard and Segall (1987)

Pollard, D. D. & Segall, P. 1987. Theoretical displacements and stresses near fractures in rock: with applications to faults, joints, veins, dikes, and solution surfaces. In: Fracture Mechanics of Rock (edited by Atkinson, B. K.). Academic Press, London, 277-349..

Tada, H., P. C. Paris, and G.R. Erwin, 1985. The Stress Analysis of Cracks Handbook. Second Edition. Paris Productions Incorporated. St. Louis

Program Fracture

This is the next level of program complexity, with many options. The options for the program are set using a series of #define statements set in the makefile. The program was very much a tool for investigating the process of fracturing. As a result we often wanted to make minor changes, or compare two methods for doing the same thing. The easiest way was to to pragma statements to control which part of the code was used in any run. I know I would not program it this way now!

Output grid files are formatted to work with Golden Software's Surfer: (well, back then it was a DOS program)

The options are:

JOINT : Fracture behaves as a mode I fracture
MODE_I_WORK : Allows mode I work to be done at crack tips
FAULT : fracture behaves as a mode II fracture
GRID : Calculate stresses and displacements on a regular grid
GROWTH : Grow fault by adding patches
NOPAUSE : Do not pause program at any stage. Set bu STEP, GRID & POINT
POINT : Calculate stresses & displacements at different points
RICE_GROW : Grow tail crack using Cotterell & Rice solution
X_STEP : Calculate stress intensities for several different x values
Y_STEP : Calculate stress intensities for several different x values, changes Y
TERSE : Minimizes output - skips display of tractions on patches
UNIX : Program is compiled for a UNIX OS
MSDOS : Program compiled for MS DOS OS (may be defined by compiler)


  • C-Code (Source code (.c), Include Files (.h), and Makefile): or Fracture.tar.z
  • Library Functions (Source Code, Include Files, and Makefile) or Library.tar.z
  • Matlab Code (for Pollard)

Geology Department

Copyright © 1994-2015 · K.M. Cruikshank ·