TIERRA was developed to allow tomographic imaging
of seismic structure using travel time data from active source experiments.
The tomography code is written in Fortran 77. Much of the I/O and
plotting of results is done using Matlab 5.
Descriptions of the tomographic method may be found in the following
papers:
nsts | Number of stations |
nsht | Number of shots |
npdsc | Number of pick descriptions (data types) |
pick | Array of pick descriptions |
nitmax | Maximum number of forward and inverse iterations |
lsqr_its | Number of least squares iterations |
q_du_p | Lagragian multiplier on isotropic model length |
q_du_sxy | Lagrangian multiplier for horizontal isotropic smoothing |
q_du_sz | Lagrangian multiplier for vertical isotropic smoothing |
q_da_p | Lagrangian multiplier on norm of percent anisotropy model |
q_dt_p | Lagrangian multiplier on norm of azimuthal anisotropy model |
q_da_sxy | Lagrangian multiplier for horizontal anisotropic smoothing |
q_da_sz | Lagrangian multiplier for vertical anisotropic smoothing |
xhalf_a | Anisotropy smoothing length, x direction |
yhalf_a | Anisotropy smoothing length, y direction |
zhalf_a | Anisotropy smoothing length, z direction |
tf_in_tt | Logical: Read in TT files on first iteration? |
tf_out_tt | Logical: Write out TT files after first iteration? |
tf_syn_tt | Logical: Write out synthetic data for the starting model? |
tf_out_dws | Logical: Write out derivative weight sum? |
tf_out_A | Logical: Write out the sparse A matrix? |
tf_line_integrate | Logical: Perform Line Integration during ray tracing? |
tf_carve | Logical: Carve out sections of the slowness model for faster ray tracing? |
* The control file is an unformatted ascii file. The only restriction
is that each line of the file must be organized as above. The variable
names and comments to the right are not read in.
ltdo | Latitude of coordinate center (degrees only, postivie to north) |
oltm | Latitude of coordinate center (decimal minutes) |
lndo | Longitude of coordinate center (degrees only, +'ve to east) |
olnm | Longitude of coordinate center (decimal minutes) |
rota | Rotation of cartesian coordinate system in degrees (+'ve is CCW) |
zdatum | Mean depth of seismic array relative to sea level (kilometers) |
istn(nsta) | Station number (integer) |
ltds(nsta) | Latitude of station (degrees only, postive to north) |
sltm(nsta) | Latitude of station (decimal minutes) |
lnds(nsta) | Longitude of station (degrees only, positive to east) |
slnm(nsta) | Longitude of station (decimal minutes) |
ielev(nsta) | Depth of instrument (meters) |
Example ascii file: station.dat*
*The station file is an unformatted ascii file. Defintions of
each line of the file are as follows:
Line 1 | ltdo, oltm, lndo, olnm, rota, zdatum |
Line 2 | nsta (number of stations to be read in) |
Line 3:nsta | istn(i), ltds(i), sltm(i), lnds(i), slnm(i), ielev(i) |
nshot(nsht) | Shot number |
iyr(nsht) | Year of event |
imo(nsht) | Month of event |
iday(nsht) | Day of event |
ihr(nsht) | Hour of event |
mino(nsht) | Minute of event |
seco(nsht) | Second of event |
ltde(nsht) | Event latitude (degrees, integer) |
eltm(nsht) | Event latitude (decimal minutes) |
lnde(nsht) | Event longitude (degrees, integer) |
elnm(nsht) | Event longitude (decimal minutes) |
dep | Event depth (km beneath sea-level for shots) |
ista(nsts) | Station indentifier (integer) |
ides(nsts) | Pick description (e.g., 1) |
sdev(nsts) | 1 sigma uncertainty in travel time (sec) |
secp(nsts) | P wave travel time (sec) |
Example ascii file:
Line 1 | nshot, iyr, imo, iday, ihr, mino, seco, ltde, eltm, lnde, elnm, dep |
Line 2 | ista(nsts) |
Line 3 | ides(nsts) |
Line 4 | sdev(nsts) |
Line 5 | secp(nsts) |
Line 6 | Blank line (also at very end of file). |
Notes on the bathymetry file:
rlongmin | Minimum longitude of map area (decimal degrees; north and east of Greenwich are positive) |
rlongmax | Maximum longitude of map area. |
rlatmin | Minimimum latitude of map area. |
rlatmax | Maximum latitude of map area. |
gsmin | Grid interval in decimal minutes. |
ncol_cb | Number of columns in the map. |
nrow_cb | Number of rows in the map. |
z_cb(i,j) | Depth in meters; positive below sea-level. |
Here is how to make a binary map:
! common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Observ.f'
INCLUDE 'Shortd.f'
INCLUDE 'Zdatum.f'
! Variables Read
! common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Graph7.f'
INCLUDE 'MatLab.f'
! Reads Matlab file of carved region for each reciever
! and its pick types (Up to 5 pick types and 5 regions
! for each pick type.)
!
! Format of Mat file:
!
! carve = [station# #ofpicktypes #ofregionsforptype1 #ofregionsforptype2
...
!
xmin xmax ymin ymax zmin zmax xmin xmax ...]
! common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'MatLab.f'
INCLUDE 'Intrvl.f'
! Variables read
carve
! Reads in the P travel times for ALL stations in the station
list.
! First source parameters are read, then station names, pick
types,
! weights, and travel times.
!
! 1) All stations in the station file must report a
! travel time; a zero time is used to indicate shots
! without an observation.
!
! 2) An array sdev(nsta,nevt) has been added to record estimates
! observational
standard deviation in seconds.
!
! 3) An array ides(nsta,nevt) has been added to describe the
! the arrival type (secondaries , P, PmP, Pn, etc..)
!
! Arrivals at stations not in the station list are discarded;
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Events.f'
INCLUDE 'Observ.f'
INCLUDE 'Stodat.f'
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Observ.f'
INCLUDE 'Bathym.f'
INCLUDE 'Shortd.f'
INCLUDE 'Zdatum.f'
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Graph3.f'
INCLUDE 'Contrl.f'
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Graph8.f'
INCLUDE 'Graph7.f'
INCLUDE 'Contrl.f'
! Reads READ(3,*) nxda,nyda,nzda
READ(3,*) (xnda(i),i=1,nxda)
READ(3,*) (ynda(j),j=1,nyda)
READ(3,*) (znda(k),k=1,nzda)
READ(3,*) dummy(k)
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Observ.f'
INCLUDE 'MatLab.f'
! Variables read in:
inTTset :: LOGICAL Matrix (ones
and zeros)
Row number equals station number
Column number equals pick type
example:
0 0 0
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Graph2.f'
INCLUDE 'ArcSet.f'
INCLUDE 'Contrl.f'
INCLUDE 'MatLab.f'
! This routine may be called iteratively.
! It inputs:
! > Travel times t(nodes$)
! > Ray paths iprec(nodes$)
!
! Format:
! > binormat_ray = true Binary unfomatted
! > binormat_ray = false Mat-file format.
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Observ.f'
INCLUDE 'MatLab.f'
ghead
glnkm
= sngl(d_data(1))
gltkm
= sngl(d_data(2))
rlong(1) = sngl(d_data(3))
rlong(2) = sngl(d_data(4))
rlat(1) = sngl(d_data(5))
rlat(2) = sngl(d_data(6))
nx
= sngl(d_data(7))
ny
= sngl(d_data(8))
nz
= sngl(d_data(9))
gx
= sngl(d_data(10))
gy
= sngl(d_data(11))
gz
= sngl(d_data(12))
! Common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Graph3.f'
INCLUDE 'Graph7.f'
INCLUDE 'Graph8.f'
INCLUDE 'Modinv.f'
INCLUDE 'MatLab.f'
u
ghead
a_r
a_t
a_p
! common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Events.f'
INCLUDE 'Observ.f'
INCLUDE 'Stodat.f'
! common block variables:
INCLUDE 'Params.f'
INCLUDE 'Contrl.f'
INCLUDE 'Graph1.f'
INCLUDE 'Graph2.f'
INCLUDE 'Observ.f'
INCLUDE 'MatLab.f'
Top of Page