-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathreadme.txt
121 lines (102 loc) · 5.01 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* dc3dm: Software to form and apply a 3D DDM operator for a nonuniformly
* discretized rectangular fault
* Version 0.3
* Andrew M. Bradley
* CDFM Group, Geophysics, Stanford
* https://pangea.stanford.edu/research/CDFM/software
* dc3dm is licensed as follows:
* Open Source Initiative OSI - Eclipse Public License 1.0
* http://www.opensource.org/licenses/eclipse-1.0
*/
This package provides:
- A program to
- Nonuniformly mesh a rectangular fault in an elastic whole or half space.
- Calculate the matrix entries of the displacement discontinuity method (DDM)
linear operator for this nonuniform mesh. This DDM uses Y. Okada's routines;
see below for the refererence.
- Create an H-matrix approximation to this matrix.
- An optional Matlab interface to create the input files to build the H-matrix.
- An optional Matlab interface to analyze mesh data.
- An optional Matlab interface to compute MVP.
- C++ routines to compute matrix-vector products (MVP) and related operations
using this H-matrix approximation.
- A limited C interface to the MVP routines.
- A limited Fortran interface to the MVP routines.
- A limited C++ MPI interface to the MVP routines.
dc3dm is a layer on top of, and comes with, the separate package hmmvp. You
should download and use hmmvp by itself rather than dc3dm if you have your own
Green's function or if your fault model is something more complicated than a
rectangle.
Installation
------------
- If you are working in a Unix-like developer environment, follow these
instructions. I don't have anything for Windows or Macs that lack Unix-like
developer tools. But you can still follow the Makefile as a guide to how to
write the appropriate build script for your environment.
- Edit the top of Makefile with compiler and LAPACK/BLAS information. Set the
optimization level (opt =) and serial/parallel mode (mode =, with
(s)erial, OpenMP (omp), and MPI (mpi)).
- On the command line, type 'make'.
- (Optional.) Start Matlab and cd to 'matlab/'. Type 'make'. It seems Macs have
a problem with recent versions of Matlab; follow these instructions:
http://www.mathworks.com/matlabcentral/answers/94092
Usage
-----
The basic usage pattern is to write key-value files that describe the problem,
run bin/dc3dm 'mesh', 'build', and 'compress' commands, and then to compute
matrix-vector products with the resulting matrix in your own code by linking
against lib/libhmmvp.
Instructions and examples:
- In a terminal, type
./bin/dc3dm help
./bin/dc3dm help mesh
./bin/dc3dm help build
./bin/dc3dm help compress
- In Matlab, type
addpath matlab; help dc3dm; help hmmvp;
- See examples/ex.m for Matlab usage. ('addpath examples/' to access it in
Matlab.) Even if you don't intend to use dc3dm in Matlab, reading through ex.m
can be useful.
- As explained in greater detail in ex.m and the dc3dm help, you need to create
key-value files to describe your problem. This can be done in Matlab using
matlab/dc3dm.Read/WriteKvf (no mex file needed) or in C++ using
util/include/KeyValueFile.hpp
- See examples/mvp_*.c* for example matrix-vector product usage.
- To apply an H-matrix, link against lib/libhmmvp_*.a, lapack, and blas. Follow
the example in the Makefile target 'mvp'.
The Matlab interface makes using dc3dm simpler. However, it is not
necessary. util/include/KeyValueFile.hpp creates and reads key-value files in
C++. The .elem file emitted by the 'build' operation provides the necessary
information about the mesh and element ordering.
If you use this software in research that you publish, I would appreciate your
citing this software package as follows:
A. M. Bradley, Software for efficient static dislocation-traction
calculations in fault simulators, Seis. Res. Lett. 85(6), 2014.
Feel free to contact me at (my permanent email address) [email protected]
to check for a new version of this software. In addition, current versions are
maintained on these sites:
pangea.stanford.edu/research/CDFM/software
cs.stanford.edu/~ambrad
Limitations
-----------
- Not all transpose MVP functionality is implemented.
- bin/dc3dm is parallelized by OpenMP but not MPI; however, libhmmvp uses MPI if
desired (for MVP).
Plans
-----
- Command 'mesh-rsf' that implements one example of a resolution function.
- Command 'compress-jxk' to implement multicomponent problems using a tolerance
appropriate for the whole problem.
- Command 'est-con-tol' that estimates a conservative tolerance.
- A python interface.
Acknowledgements
----------------
Paul Segall, my postdoc advisor, and I gratefully acknowledge support from the
National Science Foundation (EAR-0838267), the U.S. Geological Survey
(G12AP20030), and SCEC (13096). I would also like to thank Paul for his support
of this work. (Any errors are mine.)
dc3dm uses the code dc3.f (with modifications described at the top of
external/dc3omp.f) of Y. Okada:
Y. Okada, Internal deformation due to shear and tensile faults in a
half-space, Bull. Seism. Soc. Am., 1992.