Title: | Rock Fabric and Strain Analysis Tools |
---|---|
Description: | Provides functions to complete three-dimensional rock fabric and strain analyses following the Rf Phi, Fry, and normalized Fry methods. Also allows for plotting of results and interactive 3D visualization functionality. |
Authors: | Jeffrey R. Webber |
Maintainer: | Jeffrey R. Webber <[email protected]> |
License: | GPL |
Version: | 1.2.1 |
Built: | 2024-12-09 06:51:32 UTC |
Source: | CRAN |
Provides functions to complete three-dimensional rock fabric and strain analyses following the Rf Phi, Fry, and normalized Fry methods. Also allows for plotting of results and interactive 3D visualization functionality.
Package: | RockFab |
Type: | Package |
Version: | 1.2 |
Date: | 2014-01-14 |
License: | GPL |
Jeffrey R. Webber
Maintainer: Jeffrey R. Webber <[email protected]>
ElliIn reads output files generated from the program Ellipsoid 2003 in order to create stereonets, Nadai plots, and interactive 3D ellipsoid models.
ElliIn(elli.files)
ElliIn(elli.files)
elli.files |
Path of Ellipsoid 2003 file (.elli) to be read into R. |
Returns a data frame object containing properties of fitted ellipsoids including the filename of the Ellipsoid 2003 file; X, Y, and Z axial lengths of the ellipsoids; X, Y, Z axial azimuths and inclinations; strike and dip of the XY plane; rake of lineation within XY plane; number of sections used to fit ellipsoid; incompatibility index; octahedral shear strain, and Lode parameter.
Jeffrey R. Webber
Launeau, P. and P. Robin (2005). Determination of fabric and strain ellipsoids from measured sectional ellipses implementation and applications. Journal of structural geology 27 (12), 2223–2233
ElliOut writes an ASCII file formated for use in the program Ellipsoid 2003 for ellipsoid fitting to sectional data.
ElliOut(my.results, setup.file, out.file, use.ratio = FALSE)
ElliOut(my.results, setup.file, out.file, use.ratio = FALSE)
my.results |
An object or list of objects of class RFPHI or FRY. |
setup.file |
Location of setup.txt file containing orientation data corresponding to the sectional fabric or strain data. |
out.file |
File to write Ellipsoid 2003 file to. |
use.ratio |
Logical, if TRUE, Rs ratio is used instead of axial lengths. Best used when axial lengths between sectional analyses are not meaningful. |
File for use in Ellipsoid 2003.
Jeffrey R. Webber
Launeau, P. and P. Robin (2005). Determination of fabric and strain ellipsoids from measured sectional ellipses implementation and applications. Journal of structural geology 27 (12), 2223–2233
Function uses the octahedral shear strain and Lode parameter of a desired strain ellipsoid and returns the normalized axial lengths X Y and Z.
EllipAxes(es, nu)
EllipAxes(es, nu)
es |
Octahedral shear strain. Values must be positive. |
nu |
Lode parameter. Values must be between -1 and 1. |
A numeric vector of length three with values returned in descending order (i.e. X, Y, and Z)
Not used in RockFab scripts but can be useful for other endeavors.
Jeffrey R. Webber
See for example: Ramsay, J. and M. Huber (1993). The techniques of modern structural geology.
es <- runif(min = 0, max = 3, n = 1) nu <- runif(min = -1, max = 1, n = 1) EllipAxes(es = es, nu = nu)
es <- runif(min = 0, max = 3, n = 1) nu <- runif(min = -1, max = 1, n = 1) EllipAxes(es = es, nu = nu)
Function deforms a unit sphere based on the parameters of the calculated fabric or strain ellipsoid and opens an rgl device to interactively view the result.
ElliView(elli.dat, out.file, obj.res = 3)
ElliView(elli.dat, out.file, obj.res = 3)
elli.dat |
Data frame object returned from |
out.file |
PLY file to save ellipsoid object to. |
obj.res |
Number of divisions to apply to spherical mesh. Larger numbers better approximate the ellipsoid surface but at the expense of file size and render time. |
PLY 3D object file.
Jeffrey R. Webber
Function produces a standardized linear Flinn diagram from the octahedral shear strains and Lode parameters of fitted ellipsoids.
FlinnPlot(oss = 1, lp = 0, out.file, max.k = 5, plot.title = "Flinn diagram", labs)
FlinnPlot(oss = 1, lp = 0, out.file, max.k = 5, plot.title = "Flinn diagram", labs)
oss |
A vector of octahedral shear strain values. |
lp |
A vector of Lode parameters |
out.file |
Path to PDF file for plotting. |
max.k |
Maximum x and y plotting limits. Either X/Y or Y/Z. Default 5 is good for moderate strains. Higher strains may need larger values. |
plot.title |
Title of the plot. |
labs |
Vector of labels of length equal to the length of |
Creates a PDF of Flinn diagram.
Jeffrey R. Webber
Flinn, Derek. "On the deformation of the Funzie conglomerate, Fetlar, Shetland." The Journal of Geology (1956): 480-505.
"FRY"
A class to hold data from sectional Fry analyses.
Objects can be created by calls of the form new("FRY", ...)
.
sectionName
:Object of class "character"
defining the section ID string.
vectorMean
:Object of class "numeric"
for the calculated calculated central void rake.
strainRatio
:Object of class "numeric"
for calculated strain ratio.
sampleSize
:Object of class "numeric"
containing the number of objects used in sectional analysis.
rsAxes
:Object of class "numeric"
with length of two containing the major and minor axial lengths of central void.
meanObjectArea
:Object of class "numeric"
the average object area.
fryParams
:Object of class "data.frame"
containing fry point coordinates, angle from origin, and distance from origin.
voidScale
:Object of class "numeric"
containing the distance from origin plot should be scaled.
No methods defined with class "FRY" in the signature.
Jeffrey R. Webber
showClass("FRY")
showClass("FRY")
Function takes locations of object centroids and calculates the parameters required to execute an interactive Fry plot. This function also determines a scale parameter that aids in data reduction.
FryData(object.data, pie.step = 5, expansion = 2, section.name)
FryData(object.data, pie.step = 5, expansion = 2, section.name)
object.data |
Data frame object returned from |
pie.step |
Angular distance in degrees as a multiple of 180. This is used to divide the fry plot into n wedge shaped regions of distance |
expansion |
An expansion factor to be multiplied to the central void diameter estimate in order to properly scale Fry plots. |
section.name |
The name of the sectional analysis. |
Returns an object of class FRY
.
Jeffrey R. Webber
Function takes locations of object centroids and calculates the parameters required to execute an interactive Fry plot. This function also determines a scale parameter that aids in data reduction.
FryNormData(object.data, pie.step = 5, expansion = 2, section.name)
FryNormData(object.data, pie.step = 5, expansion = 2, section.name)
object.data |
Data frame object returned from |
pie.step |
Angular distance in degrees as a multiple of 180. This is used to divide the fry plot into n wedge shaped regions of distance |
expansion |
An expansion factor to be multiplied to the central void diameter estimate in order to properly scale Fry plots. |
section.name |
The name of the sectional analysis. |
Returns an object of class FRY
.
Jeffrey R. Webber
Function selects nearest points to Fry plot origin in angular wedges and fits an ellipse to these points using a deterministic least squares method. The wedges are iteratively modified from the resultant ellipse to better define selection bins that are narrower near the apogee of the central void and wider near the perigee.
FryObjective(object.data, n.pass = 15, pie.step = 12, expansion = 1.5, pie.pts = 1, section.name, ave.piepts = FALSE, norm = TRUE)
FryObjective(object.data, n.pass = 15, pie.step = 12, expansion = 1.5, pie.pts = 1, section.name, ave.piepts = FALSE, norm = TRUE)
object.data |
Data frame object returned from |
n.pass |
Number of ellipse fitting iterations. |
pie.step |
Angular distance in degrees as a multiple of 360. This is initially used to divide the fry plot into n wedge shaped regions of distance |
expansion |
An expansion factor to be multiplied to the central void diameter estimate in order to properly scale Fry plots. |
pie.pts |
The number of nearest points to the plot origin that are selected in each wedge bin. |
section.name |
The name of the sectional analysis. |
ave.piepts |
Logical, if TRUE, the coordinates of n |
norm |
Logical, if TRUE, a normalized Fry method is used. |
This function creates either a normalized or standard Fry plot data frame from the centroids of object traces and attempts to objectively fit an ellipse to the central void. This is done initially by determining the nearest n pie.pts
to the origin within each angular bin of length pie.step
in degrees. A deterministic least squares method of ellipse fitting (modified code written by Michael Bedward) is applied to these points in order to make an initial estimate of the central void. This initial estimate will likely underestimate the Rs ratio because a bias of more points near the perigees of the central void and fewer points near the apogees. The bins are modified based on the estimate ellipse so that so that a smaller angular distance is used near the apogees and a larger angular distance near the perigees. Points are selected from these bins are previously described and a new ellipse is fitted. This procedure is repeated n.pass
times to return the parameters of the objectively fitted central void ellipse.
Returns an object of class FRY
.
Jeffrey R. Webber
Deterministic least squares method of ellipse fitting function is modified from code written by Michael Bedward.
Halir, Radim, and Jan Flusser. "Numerically stable direct least squares fitting of ellipses." Proc. 6th International Conference in Central Europe on Computer Graphics and Visualization. WSCG. Vol. 98. 1998.
Fry, N. (1979) Random point distributions and strain measurement in rocks.
Erslev, E. (1988) Normalized center-to-center strain analysis of packed aggregates.
RfPhi
, FryData
,
FryNormData
,FrySelect
Creates an interactive Fry or normalized plot that enables a user to select the parameters of the central void.
FrySelect(fry.data, max.dim, out.file, normalized = FALSE, select = TRUE)
FrySelect(fry.data, max.dim, out.file, normalized = FALSE, select = TRUE)
fry.data |
An object of class |
max.dim |
Fry plot diameter. |
out.file |
Path to desired PDF file for results. |
normalized |
Logical, if TRUE, a normalized Fry plot is made. |
select |
Logical, if TRUE, manual selection is required. If FALSE, an object of |
Function produces a standardized PDF file containing the results of the sectional analysis and returns an object of class FRY
with all parameters of the sectional analyses.
Jeffrey R. Webber
Fry, N. (1979) Random point distributions and strain measurement in rocks.
Erslev, E. (1988) Normalized center-to-center strain analysis of packed aggregates.
Function creates a standardized Nadai plot to better display calculated octahedral shear strain and Lode parameters of fabric and strain ellipsoids.
NadaiPlot(oss = 1, lp = 0, out.file, oss.int = 1, max.oss = 3, plot.title = "Nadai plot", labs)
NadaiPlot(oss = 1, lp = 0, out.file, oss.int = 1, max.oss = 3, plot.title = "Nadai plot", labs)
oss |
Octahedral shear strain. |
lp |
Lode parameter. |
out.file |
Path to PDF file for plotting. |
oss.int |
Interval used between arcs of equal octahedral shear strain in plot. |
max.oss |
Maximum octahedral shear strain to be plotted at top of graph (used to scale the plot). Value must be an integer. |
plot.title |
Title of the plot. |
labs |
Vector of labels of length equal to the length of |
Creates PDF of Nadai plot.
Jeffrey R. Webber
Nadai, A. (1963) Theory of fracture and flow of solids.
Function reads in an image file as accepted by the readImage
function from the EBImage
package and uses routines therein to obtain location, eccentricity, and orientation data.
ParEx(img.file, out.file, section.title)
ParEx(img.file, out.file, section.title)
img.file |
Path to image file of sectional object traces. |
out.file |
Path of PDF file to plot fitted object ellipses. |
section.title |
Title of PDF plot. |
Function creates a PDF plot of fitted ellipses and returns a data frame object containing the parameters of each object.
All image analysis routines are obtained from the EBImage package
Jeffrey R. Webber
Pau, G., A. Oles, M. Smith, O. Sklyar, and W. Huber. (2013) EBImage: Image processing toolbox for R.
This function applies the RfPhi technique to object data following a Chi squared statistical test for the most uniform distribution of object orientations.
RfPhi(my.par, out.file, section.title, weight.vec = TRUE, unit.area = "px")
RfPhi(my.par, out.file, section.title, weight.vec = TRUE, unit.area = "px")
my.par |
A data frame object returned by |
out.file |
Path to PDF file where a standardized plot of the sectional results is made. |
section.title |
Title of the sectional analysis. |
weight.vec |
Logical, if TRUE an eccentricity weighting is applied such that more elliptical objects influence the vector mean stronger than objects with more circular shapes. |
unit.area |
The unit of measure in which the mean object area is calculated. If, for example, the input data is returned from |
Function creates a standardized PDF file containing an RfPhi plot, sectional Rs ellipse, Chi square plot, and a list of calculated properties. These properties are also returned via an object of class RFPHI
.
Jeffrey R. Webber
Dunnet, D. (1969). A technique of finite strain analysis using elliptical particles.
Ramsay, J. (1969). Folding and fracturing of rocks.
Lisle, R. (1985). Geological strain analysis, a manual for the rf/phi method.
Mulchrone, K. and P. Meere (2001). A windows program for the analysis of tectonic strain using deformed elliptical markers.
Mookerjee, M. and S. Nickleach (2011). Three-dimensional strain analysis using Mathematica.
FryData
, FryNormData
, FrySelect
"RFPHI"
Class to hold basic RfPhi data.
Objects can be created by calls of the form new("RFPHI", ...)
.
sectionName
:Object of class "character"
defining the section ID string.
vectorMean
:Object of class "numeric"
containing the calculated vector mean of object long axes.
harmonicMean
:Object of class "numeric"
containing the harmonic mean of object axial ratios.
strainRatio
:Object of class "numeric"
containing the calculated sectional strain or fabric ratio.
indexSymmetry
:Object of class "numeric"
containing the index of symmetry based on the vector and harmonic means.
sampleSize
:Object of class "numeric"
containing the number of objects used in the analysis.
meanObjectArea
:Object of class "numeric"
containing the average object area based on fitted object ellipses.
rsAxes
:Object of class "numeric"
of length two containing the axial lengths of the calculated sectional strain or fabric ellipse.
chiSquare
:Object of class "data.frame"
containing the results of the chi squared statistical test for uniform distribution at each increment of anti-strain.
No methods defined with class "RFPHI" in the signature.
Jeffrey R. Webber
showClass("RFPHI")
showClass("RFPHI")
This function creates a data frame object typically constructed from sectional image data when manual Rf/Phi data is used.
RfPhiParRead(rfphi.file)
RfPhiParRead(rfphi.file)
rfphi.file |
A tab delineated text file containing the length of the long axis, short axis, and the orientation (rake) of objects measured in the field using a convention of rake measured positive clockwise from the direction of strike following right hand rule. Text file header must be used and should be defined as follows: l.axis s.axis phi |
Returns a data frame object for use as input in RfPhi
.
Jeffrey R. Webber
This function simply adds a primitive circle to an existing plot and is used in coordination with other stereonet plotting tools.
StereoCirc(n.seg = 360)
StereoCirc(n.seg = 360)
n.seg |
The number of segments to use in circle plot. Defaults to 360. |
Adds primitive circle to open plot.
Jeffrey R. Webber
Modified from the package RFOC by Jonathan M. Lees.
StereoPlot
, StereoWeb
, StereoPlane
, StereoPoint
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
Function adds a great circle to existing plot based on the strike and dip of a plane.
StereoPlane(my.strike = 0, my.dip = 45, my.color = "black")
StereoPlane(my.strike = 0, my.dip = 45, my.color = "black")
my.strike |
The strike of the plane to plot as a great circle. |
my.dip |
The dip of the plane to plot as a great circle. |
my.color |
The line color used in the plot. |
Adds great circle of plane to existing plot.
Jeffrey R. Webber
Modified from the package RFOC by Jonathan M. Lees.
StereoPlot
, StereoWeb
, StereoCirc
, StereoPoint
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
Creates a standardized plot with predetermined extents and margins to used with other stereonet tools.
StereoPlot(my.title = "Stereonet", new = TRUE, pdf.file)
StereoPlot(my.title = "Stereonet", new = TRUE, pdf.file)
my.title |
Title of the stereonet plot. |
new |
Logical, if FALSE, new plot will open in active window. |
pdf.file |
The filename to plot stereonet as a pdf. If missing, windows() is used. |
Sets up a plot for stereographic projections.
Jeffrey R. Webber
Modified from the package RFOC by Jonathan M. Lees.
StereoCirc
, StereoWeb
, StereoPlane
, StereoPoint
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
Adds point to stereonet based on the trend and plunge of linear data.
StereoPoint(my.az = 90, my.inc = 45, my.color = "black", my.pch = 19, my.size = 0.25, my.label)
StereoPoint(my.az = 90, my.inc = 45, my.color = "black", my.pch = 19, my.size = 0.25, my.label)
my.az |
Lineation trend as an azimuth. |
my.inc |
Lineation plunge or inclination. |
my.color |
Point color. |
my.pch |
pch value. See ?par |
my.size |
Size of points. Calls cex(my.size). See ?par |
my.label |
Label to add next to point |
Adds point to stereonet based on the trend and plunge of linear data.
Jeffrey R. Webber
Modified from the package RFOC by Jonathan M. Lees.
StereoPlot
, StereoWeb
, StereoPlane
, StereoCirc
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
Creates an equal-area net to existing stereographic projection.
StereoWeb()
StereoWeb()
Plots an equal-area net to existing stereographic projection with 10 degree cells.
Jeffrey R. Webber
Modified from the package RFOC by Jonathan M. Lees.
StereoPlot
, StereoCirc
, StereoPlane
, StereoPoint
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }
#Plot random plane and lineation strike <- runif(min = 0, max = 360, n = 1) dip <- runif(min = 0, max = 90, n = 1) trend <- runif(min = 0, max = 360, n = 1) plunge <- runif(min = 0, max = 90, n = 1) if(interactive()){ StereoPlot(my.title = "Example Stereonet") StereoWeb() StereoCirc() StereoPoint(my.az = trend, my.inc = plunge) StereoPlane(my.strike = strike, my.dip = dip) }