| When I participated in the
NSF short course Teaching Physics Using the World Wide Web in 1996,
it became obvious to me that web pages are identical in form to poster
sessions common at professional meetings in the geophysical sciences. It
seemed to me that the WWW would be the ideal medium where undergraduate
students could present the results of their senior research projects, capstone
projects or independent studies and have them be seen by someone other
than their advisors.
Since I throw nothing away (as evidenced by my office), I still had the poster materials I presented at the annual meeting of the Geological Society of America in 1987. This page tests the feasibility of using the web for student poster presentations. |
![]() |
KALSBEEK
GRID
The Kalsbeek counting net is shown as it is used in this set of programs, a triangular finite element grid. All 331 nodes are shown, with some of them labeled. Half of the 600 triangular elements have been drawn in as well. As will be seen in the flow chart, what I want to do with this grid is very simple. The major programming headaches are in the bookkeeping for all the nodes and triangles. Once the bookkeeping problems have been solved, you might as well get all the mileage out of the code as possible. That is the point of this poster. The Kalsbeek grid is not the only grid used for the contouring of stereonets, and it may not be the best. The nodes are not quite uniformly distributed over the surface of the hemisphere and the spacing of the grid is rather coarse. The biggest hole in the net occurs just inside the primitive where locations exist that are almost 6 degrees away from any node. Fortunately, these shortcomings are only significant in rather extreme circumstances. The advantages of direct comparison to hand contoured diagrams and general familiarity with the grid I think outweigh its deficiencies. |
![]() |
| HEMISPHERICAL CAPS
The illustration shows that a cone with its apex at the center of a sphere will intersect that sphere and cut out a circular spherical cap. This is generally referred to as a hemispherical cap, since we normally only use the lower hemisphere in contouring structural data and the area of this cap is easily related to the area of a hemisphere as shown. The angle q is called the search radius. As will be seen, these caps are used with the SCHMIDT, USER and KAMB counting methods and with the MagPlot.PAS program in the following manner: 1) The direction cosines are calculated for the position of the data point and each node in turn. 2) Since these are unit vectors, the dot product between the data point and the node can be interpreted as the cosine of the angle between these two vectors. 3) All computations using hemispherical caps are done in the lower hemisphere, so we've got to remember to count points that are on the opposite side of the net. Due to the symmetry of the cosine function, IF WE USE THE ABSOLUTE VALUE OF THE DOT PRODUCT, WE TEST ONLY THE ACUTE ANGLE BETWEEN THE TWO VECTORS. 4) The absolute value of the dot product is tested against the cosine of the search radius as defined in the illustration. |
![]() |
FLOW CHART INTRODUCTION
I program to help me with other research. I don't use the programming as an end unto itself. The result is that the programs I write are unsophisticated and probably do not use the full power of the computer and the programming language. The earliest version of the contouring program was written in IBM-PC BASICA 1.1 and later translated into Turbo Pascal 3.0. Although the programs presented here are greatly improved over the original BASICA version, the approach to the programming has remained the same. Turbo Pascal 3.0 has a maximum code size of 64k and a maximum data size of 64k. For my purposes, it is easier to live within these restrictions than to learn how to use overlays and stacks and heaps that I didn't have to use in BASIC and FORTRAN. As a result, each of the programs presented requires no more than 128k of computer memory. THE PROGRAM GUTS
COMMON MODULES
I/O PROCEDURES
|
| THE CONTOURED DATA SET
Within the contouring program, the test that relates a data position to the nodes of the finite element grid can be set to 4 different counting methods. The results from these 4 methods are shown so you can see how changing the test of the counting process generates sometimes markedly different contoured diagrams. To make this a valid comparison, the same data set was used in each of the examples. The following just describes the data set for anyone who might be interested. These are quartz c-axis petrofabric data from the Matasiete Trondhjemite outcropping at Puerto Fermín on Isla de Margarita, Venezuela. Approximately 100 c-axes were measured in each of three mutually perpendicular thin sections on a universal stage. These U-stage data were reduced using a series of programs I've developed to help with a research project on the kinematics of the deformational structures exposed in the rocks of Margarita. Here the data set has been rotated from the geographic reference frame so that the mesoscopic foliation is vertical, striking EW and the lineation is horizontal in the foliation plane. The dotted great circle girdle on these diagrams is the rotated geographic horizon. A scatter diagram of the input data is shown on the right and several other diagrams relating these data to Bingham and Fisher distributions are shown below. |
![]() |
![]() |
![]() |
| The Bingham distribution is a simple eigen vector analysis of the sample population to find the maximum, intermediate and minimum moment axes. The ellipses about each axis is the a95 "cone" of confidence for the location of each axis. The bottom two displays were generated by SferStat.PAS, a separate program I wrote to examine the spherical statistics of my structural and petrofabric data. | These histograms show the angular relationship between the sample data and the moment axes (top three) and the Fisher axis (bottom). The Fisher axis is the vector sum of the sample population when each is treated as a unit vector and all vector additions are done using the ends of the vectors forming acute angles. The class width is 3 degrees and the "+" indicates the expected class percentage for a uniform distribution. |
| SPHERICAL TESSELLATION
The dictionary defines a tessellation to be a mosaic composed of small square tiles. This definition is expanded in mathematics to include any shape or set of shapes that can cover a surface with no gaps or overlaps. It follows that a spherical tessellation must use a shape or set of shapes to completely cover the surface of a sphere with no gaps or overlaps. It's readily apparent that the circular hemispherical caps used with the other counting methods will not tessellate -- that some other shape must be used. Furthermore, it turns out that the Kalsbeek counting net which forms the finite element grid for this entire family of programs has nodal points that are not quire uniformly distributed over the surface of a sphere. Working with actual shapes would be cumbersome and likely each spherical polygon of the tessellation would have to be individually defined. The following visualization was used to define another property of the tessellation which could be more easily tested. Imagine that the hemisphere is made of double-pane insulated glass. The 331 nodes are seen as straws that go through the inner pane of glass and end in the dead air space between the panes. If you now started blowing soap bubbles through these straws so that each bubble nucleated at the same time and grew at the same rate, the bubbles would form circular disks centered at the node and grow outward until they started to impinge on each other. The final result would be a tessellation formed by a set of spherical polygons, each centered over its associated node. Because these spherical polygons were generated from circular disks all growing at the same rate, each point within the polygon is closer to the central node than to any other node of the grid. THIS PROPERTY OF THE TESSELLATION WAS USED AS THE TEST IN THE COUNTING PROCESS SO THAT ONLY THE BIN ASSOCIATED WITH THE NODE CLOSEST TO THE DATA POINT IS INCREMENTED. |
![]() |
![]() |
![]() |
| CONSIDERATIONS: Viewed in the above manner, this particular spherical tessellation counting method in fact quantizes the data so that they exist only at the nodal locations and no where else. The test for the spherical tessellation counting used here specifies that each datum be shifted to the closest mode possible before contouring. For comparison with the other counting methods, the program keeps track of the largest angular shift needed to place a datum coincident with a node, and the area of a circular hemispherical cap with that radius is reported as a "counting area". |
| SCHMIDT COUNTING METHOD
The Schmidt counting method increments all the nodes within a 1% area centered on each data point. From the previous discussion under the heading "HEMISPHERICAL CAPS" cos q = 0.99 q = 8.1 degrees and the program's test becomes IF THE ABSOLUTE
VALUE OF THE DOT PRODUCT BETWEEN THE DATA POINT AND THE NODE IS GREATER
THAN OR EQUAL TO 0.99, THEN INCREMENT THE BIN ASSOCIATED WITH THAT NODE.
|
![]() |
![]() |
![]() |
![]() |
| Contour Interval = 1% per 1% area
Unshaded area is 0% |
Contour Interval = 0.5% per 1% area
Unshaded area is 0% (lower right stereonet only) |
| USER DEFINED COUNTING AREA
The user defined counting area method increments all the nodes within some defined area centered on each data point. From the previous discussion under the heading "HEMISPHERICAL CAPS" and the program's test becomes IF THE ABSOLUTE VALUE OF THE DOT PRODUCT BETWEEN THE DATA POINT AND THE NODE IS GREATER THAN OR EQUAL TO cos q THEN INCREMENT THE BIN ASSOCIATED WITH THAT NODE. In this example, the counting area was chosen to be 2% of the area of the hemisphere. From the notes about the Kalsbeek counting net used as a finite element grid, it was mentioned that if the counting cap became too small, it would be possible to have a data point slip between the nodes uncounted. For the Kalsbeek grid, the user defined counting area can be no smaller than 0.55% of the area of the hemisphere. |
![]() |
![]() |
![]() |
| KAMB COUNTING METHOD
Kamb (1959) proposed using a counting area which is related to the size of the sample population (N). He defined this counting area so that for a uniform distribution sampled randomly, the expected number of points falling in the counting area would be three times the standard deviation for the sample population. Rearranging his relationship, this fractional area of the hemisphere is From the previous discussion under the heading "HEMISPHERICAL CAPS" and the program's test becomes IF THE ABSOLUTE
VALUE OF THE DOT PRODUCT BETWEEN THE DATA POINT AND THE NODE IS GRATER
THAN OR EQUAL TO cos q,
THEN INCREMENT THE BIN ASSOCIATED WITH THAT NODE.
|
| Kamb Shading
The Kamb counting method is actually comparing your data to a uniform population and I've chosen a shading scheme to emphasize this. Rearranging the equation of Kamb and put into the program's terminology: E = expected nodal (bin) value = 9N/(N
+ 9)
I contour the values of (O - E)/s at each
node, or the number of standard deviations above or below the mean for
a uniform distribution sampled randomly.
|
![]() |
![]() |
![]() |
![]() |
![]() |
| Contour Interval = 1s from the mean
Unshaded area is within 1s of the mean for a uniform distribution |
Contour Interval = 1% per 2.98% area
Unshaded area is pole free (0%) |
| STEREONET CONTOURING
SUMMARY DIAGRAM
For this web poster, I've added this section to make comparisons of the contouring methods easier to see. With the three large panels available for posters at the GSA meeting, this synoptic display was not needed. Due to the marginal results of the scans, I've displayed unshaded contours with the data points superimposed. |
| TESSELLATION CONTOURING
Contour Interval = 0.5% per 0.54% area |
SCHMIDT CONTOURING
Contour Interval = 1.00% per 1.00% area |
![]() |
![]() |
![]() |
![]() |
| USER DEFINED CONTOURING
Contour Interval = 1.00% per 2.00% area |
KAMB CONTOURING
Contour Interval = ±1.00 standard deviation from the mean |
| MAGPLOT.PAS
As I've mentioned, this programming was done to help with our research on Isla de Margarita, Venezuela. Margarita lies about 20 km off the Venezuelan mainland in the Caribbean Sea and is therefore caught up in the dextral deformation associated with the Caribbean-South American plate boundary. Paleomagnetics from many islands along this boundary suggest that major rotations have occurred due to the Caribbean-South American plate interaction. In relating our kinematic information obtained on Margarita to possible causative plate geometries, it will be important to remove any post-deformational rotations. Hargraves and Skerlec (1980) published paleomagnetic results from Margarita which other authors have used to argue that Margarita is unrotated. Plotting these data up, I could not see it. To try to simplify the pattern, I modified the contouring program SContour.PAS I wanted to look at the regions of overlapping alpha-95 (a95) cones of confidence. Instead of using a single search radius for all data points as was done with the contouring program, I change the search radius for each paleomagnetic vector, setting the search radius to be equal to a95. The output is displayed, and I still cannot convince myself that the island is unrotated from these data. This is included to show the first and easiest modification to the contouring program. |
![]() |
![]() |
![]() |
| FRY STRAIN ANALYSIS
When doing Fray strain analysis, my eye is often fooled because I tend to see the hole in the pattern and not the high concentration of points defining the centers of the nearest neighbors. Contouring seemed to be the best way of emphasizing patterns within the Fry plot. Going from spherical data to a stereographic projection is a one-to-one map, so there exists an inverse map to go from the projection back to spherical data. Alternatively, planar data can be projected onto the lower hemisphere using the same inverse map. Since I already had written the code to contour lower hemisphere stereographic projections, I wrote my Fry program to write out to file all points within a user defined radius from the center of the Fry plot. These points are stored on file as plunge and trend data, having been mapped from the plane onto the lower hemisphere. This file is then directly readable to the stereonet contouring program I had already written. The output of the stereonet contouring program is shown for test data digitized from Ramsay and Huber's (1983) Figure 7-7. Because of the large number of data points created in the analysis (here 2138), the Kamb counting method could not be used. Spherical tessellation was used to show the data with the least smoothing possible. The central peak of the crater results when you lose track of where you are on the digitizing tablet and input the same point twice. |
![]() |
![]() |
![]() |
| CONSIDERATIONS
As already mentioned, the large number of points may make the search radius of the Kamb counting method too small for the Kalsbeek grid. Other special considerations come from the fact that these are planar data that have been treaded as spherical data. The most important of these will be that data from near the primitive but on opposite sides of the stereonet will be counted as being close together, when in fact these data are the farthest apart possible. There will therefore be a rim on the outer edge of the diagram that will contain false data, with the width of this rim depending on the counting scheme used. When the projected file is created, the user just defines the Fry plot field-of-view radius large enough so that the edge data can be later disregarded. The second consideration is the well known fact that the equal area projection turns counting circles on the sphere into ellipses in the planar projection. This is shown in the diagram on the right that I generated with the program MagPlot.PAS. The result of this is a slight spatial filtering, emphasizing tangential patterns over radial. This last consideration benefits our goal of defining an ellipse centered on the stereonet. |
![]() |
![]() |
| The above illustration
shows the coordinate frame used to change the stereonet contouring program
into a program used to perform a dynamic analysis for a population of faults
based on the method of Pressure and Tension dihedra of Angelier and Mechler
(1977). The data file read by the program contains for each fault the orientation
of the fault plane, the plunge and trend of the slip direction and the
type of fault (normal, reverse, dextral or sinistral). A coordinate frame
is hung on the hanging wall block so that its outward normal (the lower
hemisphere pole to the fault plane) is assigned to be +Nk and
the direction of motion of the hanging wall block is +Lk. Unlike
any other quantity in any other program, +Lk can be in either
the upper or lower hemisphere.
Against this coordinate frame, each of the 331 nodes of the Kalsbeek finite element grid is tested. The test criterion is the Schmid factor, defined as or, in terms of vector dot products Schmid factor = (+Nk • node)(+Lk • node) The output presented used test data from Angelier (1979). The fault plane and slickenside striation data are shown, and all of the faults were observed to have normal motions. The dynamic analysis using this program agrees well with the results obtained with the inversions done by Angelier (1979) and Michael (1984). |
| Slickenside striations (N = 38)
Contour Interval 2% per 1% area |
Poles to fault planes (N = 38)
Contour Interval 2% per 1% area |
![]() |
![]() |
![]() |
![]() |
| Faults compatible with a maximum compressive
stress axis parallel to nodal orientation
Contour Interval = 10% of sample population |
Faults compatible with a maximum compressive
stress axis parallel to nodal orientation
Contour Interval = 10% of sample population (Unshaded version showing the inferred principal stress axes based on the program output) |