Electronic Supplement to
Equivalent Medium Parameters for Numerical Modeling in Media with Near-Surface Low Velocities
by Leo Eisner and Robert W. Clayton
Program Documentation for emp_3D
This code finds the equivalent medium parameters for a gridded three
dimensional model. It is using the algorithm of Eisner & Clayton, BSSA,
2001. The code was compiled and used only on the Solaris UNIX platform. The
following instructions will lead you through compiling and running of this
code on that platform. To compile the code, download the file
emp.tar.Z. Uncompress the file emp.tar.Z (uncompress emp.tar.Z) and untar the file
emp.tar (tar xvf emp.tar). A new directory "emp" should be created with
source code, change your current directory to "emp/getpar" (cd emp/getpar)
and run command "make" to compile getpar libraries, then change directory
to the parent directory and run "make" again to compile the main code.
You should have created an executable file emp_3D. The example data
are in a subdirectory called "data". To run the example change directory to subdirectory
data and run the command.
../emp_3d par=emp_3D.in
The example data is a cube of 20x20x20 points representing a layer over
a halfspace with the following parameters:
|
P-wave velocity (km/s) |
S-wave velocity (km/s) |
Density (kg/m^3) |
layer (thickness 0.1 km) |
0.8 |
0.2 |
1500 |
halfspace |
1.6 |
0.5 |
2000 |
And a new model is searched for with top homogeneous layer of thickness
of 0.1, 0.15, 0.2, ...km given by the values in a data file depths.dat.
The code is using three types of input data files and output a single
data file.
The input files are: In-line ASCII file sets the basic input variables
in a user friendly way; binary model file describes 3-D model on a rectangular
grid with x,y,z (z=depth) coordinates, the ASCII depth file sets the new
depth layering if user wishes to use it.
The output files is a binary with the modified parameters of the specified
grid.
Input data
description:
In-line input ASCII file
(emp_3D.in) controls basic input data:
Period_low - is the lowest period of
interest in seconds (required)
Period_high - is the highest period we want to
compare (required)
Period number - is the number of periods used
for comparison (required)
dc_search - is a numerical increment used for
evaluation of the phase and group velocities (required)
dvs_search - is a numerical increment used for
searching of our new minimum velocity (required)
v_min - is the minimum velocity in our new model
(required)
Multiple - is a maximum number of layers replaced
with as a homogeneous layer (optional, default 3)
Model_in - is a name of the original model (required)
Model_out - is a name of output (EMP) model (required)
file_depths - is a name of file with new depths
for the EMP model (optional)
The input binary model file (model3D.dat in our example)
has the following structure:
-
int nx,ny,nz -
dimensions of the 3D original model.
-
float z_1,...,z_nz, -
depths of gridpoints in z direction starting from the first gridpoint below
free surface
-
(nx*ny*nz) times (float l,mu,rho) - values
of the lambda parameter (l), shear modulus (mu) and density (rho) in mutually
consistent units. The values are read: the inner cycle is over nz grid
points, and the outer cycle is over nx grid points: [for(ix=0;ix<nx;ix++)for(iy=0;iy<ny;iy++)for(iz=0;iz<nz;iz++)
read(l,mu,rho);]
The input ASCII depth file (depths.dat in our example)
has the following structure (This file is optional see above):
-
nz_new times (float depth) - nz_new
times line with depth of the new grid points in the z-th direction. Starting
at the first horizon below the free surface.
Output
data description:
The output binary model file (test.out in our
example) has the following structure:
-
(nx*ny*nz) times (float l,mu,rho) - values
of the lambda parameter (l), shear modulus (mu) and density (rho) in mutually
consistent units. The values are read: the inner cycle is over nz_new,
and the outer cycle is over nx [for(ix=0;ix<nx;ix++)for(iy=0;iy<ny;iy++)for(iz=0;iz<nz;iz++)
write(l,mu,rho);].
[ Back ]
|