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 ]