NAME
rottnsr - module to rotate a tensor of multiple-
source/multiple-component (MS/MR) data (2s X 2r) about the
third axis. Used to re-orient VSP data, and also to find
the "principal time series" for split shear waves in aniso-
tropic media.
SYNOPSIS
rottnsr [ -Nroot_ntap ] [ -Oroot_otap ] [ -rsStart_record ]
[ -reEnd_record ] [ -nsStart_time ] [ -neEnd_time ] [
-axRotnAxis ] [ -rDegrees ] [ -Rfile ] [ -hwindex ] [ -V ] [
-? ]
DESCRIPTION
rottnsr : This routine performs multi-source/multiple-
receiver (MS/MR)rotation of a tensor of seismic data. It
expects four input data files and will produce four rotated
output data files [see DISCUSSION below for specifics].
rottnsr gets both its data and its parameters from command
line arguments. These arguments specify the input and out-
put file root names, the start and end records and traces
for processing, the rotation axis orientation, either a
static rotation angle or a file of rotation angles as a
function of some index down the line, the index mnemonic to
associate with said file, and a verbose printout flag. You
may use sticky or non-sticky arguments as you wish.
Command line arguments
-N name_root
Enter the input data set filename-root immediately
after typing -N. This input filename-root should
include the complete path name if the files reside in a
different directory. For example, -N/b/mc/test tells
the program to look for files test.21 and test.22 (or
files test.11 and test.12, depending on the source
index specified with -S), in directory '/b/mc'.
-O root_otap [optional]
Enter the output data set root filename immediately
after typing -O. This output filename-root should
include the complete path name if you want the files to
reside in a different directory. For example,
-O/b/mc/testout tells the program to create files
starting in testout in directory '/b/mc'.
-rs Start_record
Enter start record number. Default value is the first
record.
-re End_record
Enter end record number. Default value is last record.
-ns Start_trace
Enter start trace number. Default value is the first
trace.
-ne End_trace
Enter end trace number. Default value is last trace.
-ax axis_index
Enter the index of the rotation axis. The default is 3
(eg vertical).
-r degrees
Enter the rotation angle (in + or - degrees clockwise,
viewed from above, ie along the + direction of the
rotation axis). The tensor data will be rotated to
refer to new coordinates, rotated from the old ones, by
this amount. rottnsr will unwrap angles outside +/-
90 degrees. The default is 45.
-R file
Enter the fully qualified filename of a flat file con-
taining (index, angle) pairs used to vary the rotation
angle down the line. The flat file format is one pair
per line. The program reads them in free format so you
can either separate the index from the angle with a
space or a comma as you wish and use integers or float-
ing point numbers also as you wish. rottnsr will
unwrap angles outside +/- 90 degrees. [see DISCUSSION
below for convention on measurement of angle]. The
output dataset will have the axis and component
appended to the output root as well as the string
_var_ to signify a variable rotation angle. If no
entry is present the static rotation angle input at -r
above will be used.
-hw index
Enter the trace header mnemonic with which to associate
the index in the attached (index, angle) file. The
default is RecNum .
-V Enter the command line argument '-V' to get additional
printout.
-V Enter the command line argument '-IKP' for IKP process-
ing.
-? Enter the command line argument '-?' to get online
help. The program terminates after the help screen is
printed.
DISCUSSION
: This routine performs multiple-source/multiple-receiver
rotation of a tensor of seismic data. It is used in two
contexts:
1) As a simple re-orientation of tensor seismic data, as
when a 9C VSP dataset must be rotated from the survey coor-
dinate system into a system aligned with the downgoing ray.
2) To find the "principal directions", and "principal time
series" for shear waves split by propagation through an
anisotropic medium (sometimes called "Alford" rotation
(cf T86-E-24, Azimuthal Anisotropy: Determination of the
Principal Time-Series). In this way, one can separate the
two pure modes of shear-wave propagation, which travel at
different speeds (unless by chance the medium happens to be
isotropic), and interfere with one another (and hence with
interpretation) on any single recorded component (unless by
chance both source and receiver happen to be favorably
oriented).
Strictly speaking, the algorithm should be applied only to
traces resulting from a single raypath; a stacked trace may
be an acceptable noise-reduced surrogate for a vertical-ray
trace under certain (poorly-understood) conditions. The
algorithm assumes that, for rays in this single direction,
the directions of the principal axes do not vary with dis-
tance.
In order to eliminate the need for you to input manually all
filenames (four input and four output), a MULTICOMPONENT
NAMING CONVENTION is used (see below). Hence, the input
files are identified on the command line (after "-N") by the
root of their filenames only, as with a matrix. (BUT see IKP
exception, below!)
rottnsr rotates the data about one of the (right-handed)
coordinate vectors, specified on the command line (after "-
AX") by 1, 2, or 3; the default is 3.
rottnsr rotates the data with one angle only (for all
times); different rotation angles for different times is
unphysical, in a split-shear wave context. (If the princi-
pal axes have different directions in different layers, then
there will be multiple splitting (at each such layer), and
the output of the rotation will not conform to the descrip-
tion below. See USP routine mctshift to address this prob-
lem.) The rotation angle is specified on the command line
(after "-R").
For split shear-wave data, finding the optimum rotation
angle requires multiple applications of rottnsr, followed by
a selection among the various results. The selection cri-
terion is: that rotation angle is best for which the two
off-diagonal output traces contain the lowest signal/noise
ratio (usually measured as the lowest continuity on the
corresponding off-diagonal sections). The two diagonal
traces should then resemble each other closely, except for
smooth stretching, and possibly non-smooth amplitude differ-
ences. (By contrast, before rotation, all four traces may
have similar signal/noise ratios, because of interference
between the two pure modes of shear propagation.) This cri-
terion is currently implemented only by eyeball; quantifica-
tion and automation will come later.
The two diagonal output traces, rotated with the optimum
split-shear angle, are called the "principal time-series"
(cf T86-E-24), because they contain the two pure modes of
shear-wave propagation (the eigen-modes, or principal modes)
when the assumptions of the algorithm (see above) are met.
The results of rotating 4 files test.ij about the z-axis by
angle 75 degrees are written in 4 files named test.R3+75.ij,
stored in the directory from which rottnsr was executed.
(BUT see IKP exception, below!)
MULTICOMPONENT NAMING CONVENTION
All multicomponent files are stored as SEPARATE COMPONENTS
in SIS format, and conform to all conventions established
for single- component seismic data (including headers, his-
torical line headers, etc.). The tie between the various
components is established in their names, which end in
'.ij', like subscripts on a matrix. The subscripts i and j
are taken as integers (1, 2, or 3) following the normal
algebraic convention (also adapted in the proposed multi-
component data standards of the SEG) as follows:
* The FIRST subscript (i) refers to the orientation of the
source, since the source action occurs prior to the recep-
tion.
* The SECOND subscript (j) refers to the orientation of the
receiver.
* The indices refer to a RIGHT-HANDED coordinate system,
which may be either:
# line-oriented (if only a single line is under considera-
tion), or
# map-consistent (if multiple lines are considered, then
most multicomponent situations require that a single coordi-
nate system be used throughout, in order to avoid error).
As long as one is consistent, some flexibility is avail-
able, but it is easy to err; the best advice is to just
follow the "most natural" choices defined below. Use your
creativity somewhere else!
* The POLARITY of the signals must conform to the coordinate
system, so that a positive trace value on any component
implies motion in the positive direction of that axis. With
multicomponent data, it is much easier to screw up the
polarities than with single-component data (roughly 3**2 = 9
times easier!); take care (in both acquisition and process-
ing)!
In some contexts (eg in an offset VSP), the indexing may
correspond to another right-handed coordinate system (eg
with the z-axis aligned with the downgoing ray, and the x-
axis lying in the saggital plane). In such a case, this
coordinate system should be derived from the foregoing by a
proper rotation, using rottnsr.
* The numerical identifiers are:
1 = x-axis (horizontal) If line-oriented, this is most
naturally the INLINE direction (since we are accustomed to
drawing x-z cross-sections); the polarity must be the same
on both sides of the source. If map-consistent, this is
most naturally EAST, or aligned with the long-axis of a mul-
tiline or 3D survey.
2 = y-axis (horizontal) If line-oriented, this is most
naturally the CROSSLINE direction, and (right-handed) care
must be used in the polarity. If map-consistent, this is
most naturally SOUTH, rather than north, or (for a multiline
or 3D survey) 90 degrees clockwise from +x viewed from
above, (as with a matrix), rather than counter-clockwise (as
with a graph); see below.
3 = z-axis (vertical) Whether line-oriented or map-
consistent, the SEG convention is to take positive DOWN,
rather than up, as a physicist might prefer. (This conven-
tion, along with +x = East, is what forces +y to be South,
or 90 degrees clockwise, as discussed above. If you insist
on North (or 90 degrees counter-clockwise), the right-handed
convention means that +z is UP; this may get you into trou-
ble later... )
ALGORITHM
rottnsr implements the following equation at every time t:
y.ij(t) = sum-over-m,n: R[iaxis].im(degs) *
R[iaxis].jn(degs) * x.mn(t)
where y(t) is the output tensor, x(t) is the input tensor,
and R[iaxis](degrees) is the rotation matrix for rotation
about iaxis.
rottnsr gets both its data and its parameters from command
line arguments. These arguments specify the input, the start
and end records, the start and end traces, the rotation
axis, the rotation angle, and the IKP and verbose printout
flags.
IKP processing
If rottnsr is run inside IKP, the input and output com-
ponents are connected via the process box, rather than by
the command line argument -N. The connections are specified
in the following manner: spigots 0,3, 5, 7 are for input
components IN THIS ORDER (using here the above MULTICOM-
PONENT NAMING CONVENTION):
For rotation about the x-axis: 22, 23, 32, 33.
For rotation about the y-axis: 11, 13, 31, 33.
For rotation about the z-axis: 11, 12, 21, 22.
You must specify the FULL identifier for each spigot; ie NOT
just the name-root, as is done outside IKP (consequently,
the names need not conform to the CONVENTION). Similarly,
spigots 1, 4, 6, 8 are for the output components (in the
same order as the input). Again, you must specify fully the
desired destination of these outputs.
BUGS
None known; please notify the AUTHOR if you find any.
SEE ALSO
rotvctr(1) mctshift(1)
AUTHOR
Leon Thomsen (APR x 3920; zlat02)
USP updates by P.G.A. Garossino
(APR x3932; pgarossino@trc.amoco.com )
COPYRIGHT
copyright 2001, Amoco Production Company
All Rights Reserved
an affiliate of BP America Inc.
Man(1) output converted with
man2html