GithubHelp home page GithubHelp logo

stgl / poly3d Goto Github PK

View Code? Open in Web Editor NEW
33.0 7.0 15.0 63 KB

Boundary element method for modeling faults and fractures discretized into polygonal elements, reproduced from M.S. thesis of A. Thomas, 1993

Makefile 0.81% C 98.54% C++ 0.65%
boundary-element stress

poly3d's Introduction

poly3d

This repository reproduces code for poly3d, a boundary element method program first released in the M.S. thesis Thomas, 1993. It is intended to make this legacy code easily available for use in structural geology, geomechanics, and active tectonics research.

Documentation

The primary poly3d manual is Thomas, 1993. It covers the details of the boundary value problems behind poly3d and explains the input and output file formats.

Prof. Michele Cooke (University of Massachussetts, Amherst) maintains a poly3d tutorial page that previously included the thesis source code provided here. The original poly3d tutorial is available there, as are several examples and other software packages.

Other examples are available on the Stanford Structural Geology and Geomechanics website.

Compiling poly3d

This version of poly3d has been tested and modified under Debian Linux and CentOS using gcc 4.8.

The makefile provided here assumes you are using a recent version of gcc, the GNU Compiler Collection. Mac OS X 10.8 and above alias gcc to a clang front-end; to compile poly3d in those environments, you must install gcc using Homebrew or macports.

Both versions of poly3d must be compiled with the -O2 flag. Over-optimization (e.g. -O3 or -ffast-math) can lead to unpredictable numerical errors and large singularities in the resulting displacement fields. Just say no!

Using poly3d

poly3d -i <input> -o <output>

Contributors

poly3d and a related commercial software package were developed by researchers and students of Profs. David Pollard and Atilla Aydin associated with the Stanford Rock Fracture Project and the Structural Geology and Geomechanics research group. This repository is intended for academic use only, and is solely derived from the publicly available source code printed in Thomas, 1993 with modifications to fix the "shadow effect."

References

Please cite this thesis and related publications if you use poly3d in published work.

Thomas, A. L., 1993, Poly3D: A three-dimensional, polygonal element, displacement discontinuity boundary element computer program with applications to fractures, faults, and cavities in the Earth's crust (Doctoral dissertation, Stanford University).

To see a recent example of poly3d in action, take a look at this 2014 paper by Fattaruso, Cooke, and Dorsey on uplift produced by tectonic activity in the Coachella area.

Contact

Please open an issue if you have a question.

poly3d's People

Contributors

rmsare avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

poly3d's Issues

Error Occurs in poly3d-inv When Running Inversion on a Complex, Multi-Segment Curved Fault Earthquake Model

Problem Description:

I have been working with an earthquake model that involves a curved fault. When I attempt to run the "poly3d-inv -i inv.in" command to perform inversion analysis, I encounter an error (cannot calc element normal. Elt must have avery odd shape, and I am unsure about the root cause of this issue. The following are key aspects of the problem:

  1. The earthquake model comprises two faults. One of these faults is considerably larger and curved, while the other fault is oriented nearly east-west.
  2. When I execute the "poly3d-inv -i inv.in" command on a single segment of the fault, it runs successfully without any errors. However, when I attempt to run the same command on all the segments simultaneously, the error is triggered
  3. My operating system environment is a virtual machine running "Windows XP."

solution for contemporary gcc version incompatibility

This doesn't seem to build with me for contemporary (2023) versions of gcc on ubuntu.

However, this little shell script uses docker to build a container with gcc 4.8, build poly3d, and write the compiled binary back to the local file system:

#!/bin/bash
git clone https://github.com/stgl/poly3d.git
cd poly3d
docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp gcc:4.8 make

The created poly3d runs fine (ubuntu 22).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.