REDUCE 3D 2.5.9
Program Notes: 31 July 2000
General
This program takes a merge file (text) representing the size and location of each crystal of a certain phase in a volume, and calculates various statistics on the set of crystals. A set of holes can optionally be included as well, and the statistics can be tuned and excluded by the user. The set of crystals can be interactively rendered in 3D, however this functionality has also been moved into Render3D (and is more current there), which has supplanted Reduce3D for rendering.
Memory Required: 4096K (really depends on file size and program settings)
Input File Type
TEXT
Input Limits
Dictated by available memory.
Input Format
Reads in files from Crystallize91, Crystallize95, or Integrate. Can read old style, in which fields have specific lengths, or new (better) style, in which fields are delimited by tab characters. The file must be consistent - using tabs in the header, but spaces in the body is not allowed. A persistent issue in which a blank line was required at the end of files should now be fixed.
Output File Types
TEXT
Output Format
The first line of each file is a file-type identifier, to be used by subsequent programs. The second line is the comment line present in the input file. In all cases, the labels are separated from the numeric fields by a tab character. The file names are produced automatically, first by stripping off the ".MERGE" extension (or, if that is not the extension, it strips off whatever the last extension is, if any) and then appending either [".Reduce3D", ".Reduce3DXl", ".MeanCSD", ".MaxCSD", ".LogCSD", ".RegCSD", ".NNCSD"] or [".RED3", ".R3ST", ".CSD1", ".CSD2", ".CSD3", ".CSD4", ".CSD5"], depending on the length of the root file name, and the file type.
The REDUCE3D file is the main data set, containing the results of the statistics and the settings used to produce those statistics. The settings are saved in the text, and as a resource readable by the same version of Reduce3D that produced it, as discussed below. The structure of the text file is as follows:
Line(s) | Data |
1 | Filename of input file |
2 | Label of Reduce3D version used to make the file |
3 | Comment from input file |
4-61 | Processing parameters |
62-132 | Main single-value statistics, many with envelope values on the same line. All labels are separated from values by tab characters. |
133-? | Table of correlation function values and envelope values for same. These are best not read directly, but by GraphCFs, code written for displaying these graphs. |
?-? | The table can be followed by a table of crystals. |
Note that the Reduce3D file is set up with the creator as GraphCFs, so it can be double-clicked to display the results immediately. All other saved files are set up with CodeWarrior as the creator.
The CSD1 file consists of: a one-line header; a line with the name of the MERGE file; a line citing the number of size classes used in generating the data that follow for the mean-normalized cumulative CSD plot; a title line giving the name of the plot and the number of means the values were normalized to; and finally one line per size class, containing the fractional distance along the inverse normalized radius axis at the low limit of the size class, followed by the cumulative percentage of the crystals that fall into that size class. These entries may be read simply as the abscissa and ordinate values for the cumulative CSD plot.
The CSD2 file consists of: a one-line header; a line with the name of the MERGE file; a line citing the number of size classes used in generating the data that follow for the maxn-normalized cumulative CSD plot; a title line giving the name of the plot; and finally one line per size class, containing the fractional distance along the inverse normalized radius axis at the low limit of the size class, followed by the cumulative percentage of the crystals that fall into that size class. These entries may be read simply as the abscissa and ordinate values for the cumulative CSD plot.
The CSD3 file consists of: a one-line header; a line with the name of the MERGE file; a line citing the number of size classes used in generating the data that follow for the maxn-normalized cumulative CSD plot; a title line giving the name of the plot; and finally one line per size class, containing the upper limit of the size class (in cm) followed by the natural log of the slope of the cumulative size distribution plot (ln [dN*/dL], in the notation of Cashman and Ferry, 1988) at that size class. These entries may be read simply as the abscissa and ordinate values for the logarithmic CSD plot.
ResTypes (not registered with Apple)
Application (Blob 1.0) = qtRD
Operator Notes
Program Notes
In version 1.0.2, all crystals in the data set are considered in making the nearest neighbor calculations. In later versions, it is planned to eliminate from consideration those crystals that are close enough to the boundaries of the analysis region to make it probable that their nearest neighbors lie outside the region.
To make 3d calculations which require knowing the exact spatial extent of the sample, a 3d bounding box calculation was included in the code in version 1.0.5. For details, see the documentation for program 3DBB.
The area correction for the Avrami test is the correction in VOLUME. Thus, it does not take into account areas where more than 2 crystals overlap. This should be a minor effect, as it shouldn't happen very often.
Starting in version 1.1.7, all of the CSD plots use extended radius, rather than actual. This is so theyll be analogous to other CSDs in the literature.
Since it is a lot faster to tell if a sphere is inside a volume than a cube (only check one point and a distance instead of 8 points...), we experimented with the idea of using a sphere for the quadrat test instead of a cube. After many tests they seemed to give about the same answer (as they really should), so as of version 1.1.3 we took out the cubic quadrat test and only calculate the spherical one. The old code is still intact, though, in case it's needed.
See Hirsch, et al. (2000) at http://gmr.minsocam.org/papers/v2/v2n3/v2n3abs.html for detailed notes on the current calculation methods.
Note that the inset primitive isnt as elegant as would be desired, as it throws out all crystals outside its bounds after figuring out the best primitive. Ideally, it would use these crystals in measuring statistics, to alleviate the problem with crystals and random points near the sides of the box needing to be ignored in statistics calculations. Additionally, this region could be used as a kind of pre-existing guard region for the CF calculations, if one could figure out how to do it in a reasonable way.
There is a hash table of crystal locations that is constructed at various points to speed in locating crystals in an area, a frequent task for many statistics. Certain operations on the crystal array will make the hash table invalid and it will need to be reconstructed with "RebuildLists"
Known Bugs
None at this time.
Planned Improvements
None at this time.
Release History
This program was based on a version to analyze 2D data sets, called Reduce. That was renamed Reduce2D and this evolved into Reduce3D in 1992.
Reduce history
1.0.0 11 June 91
Initial release.
1.0.1 16 June 91
Added possibility of inputting multiple MERGE files; fixed bug in 'GetInfo' dialog to restore default values; added check for exceeding total number of crystals.
1.0.2 27 June 91
Added ability to recognize hack files.
1.0.3 16 November 1991
Added 2d and 3d random point test, though the 3d test only works on rectangular samples, since for normal samples we need a 3d bounding box.
1.0.3a 28 November 1991
Cambria fixed a bug in 3d random point test.
1.0.4 6 December 1991
Put in 2d and 3d quadrat test, with same 3d limitation as in 1.0.3. Also now allows crystals with negative volumes for spacial statistics, although it informs the user if there are in fact any zero or negative radii.
1.0.5 13 January 1992
Put in 3d bounding box calculation, so random point and quadrat tests now work in 3d.
Reduce3D history
1.1.0 1 December 1992
Basically stripped out 2d stuff, put in mean-normalized CSD and volume correction. Allows user to select which calculations to perform.
1.1.1 17 February 1993
Put in batch runs, isolation stats, ordering index boundary corrections and t-test.
1.1.2 23 February 1993
Worked out some kinks in batch runs, put in crystal density and volume fraction, fixed it so Portia would run.
1.1.3 14 July 1993
Took out the cubic (i.e. regular) quadrat test, so it only uses the spherical one now. Also put in some checks to warn the user and exit if the quad test is doomed to fail (in either case) because the quad is too big, and sped up the spherical calculations.
1.1.4 10 June 1994
Corrected a minor bug Carlotta discovered in the bounding box calculation, which only got tripped off in very unusual cases.
1.1.5 21 July 1994
As it turns out, the correction in 1.1.4 made it so it only works in those unusual cases. This version gets it right.
1.1.6 29 July 1994
Put in skewness and kurtosis.
1.1.7 5 August 1994
Changed formats of CSD files to correspond to changes in REDSIM3D.
1.1.8 14 March 1995
Changed random point calculation so it will not accept a point placement if it is nearer to a wall of the bounding box than the nearest crystal.
1.2.0 9 April 1995
Combined it with REDSIM3D, put in "shaving" functions, changed RP test back to original, but left old logic in program.
2.0.0 18 July 1995
Added version 2 enhancements.
(Program Notes hiatus)
2.5.3 28 September, 1999
Rewritten in C++ (was in Pascal), using Metrowerks Codewarrior & PowerPlant framework.
Added all cool Mac behavior: icons, cool UI, AppleEvents, Nav Services, etc.
Added 3-D rendering of crystal array, holes array, and bounding box.
Added logic for null-hypothesis envelopes.
Added observability filtering.
Removed user interface for 3-D rendering (this has been moved to a separate program, Render3D), separated settings for envelopes into their own tab. Added ability to make "diffusion-controlled envelopes" a la Daniel & Spear (99).
2.5.4 1 October, 1999
Added selection for verbose logging, and made this independent of debugging status. Also changed DC envelope implementation to reduce beta until a good simulation is made.
(Program Notes hiatus)
2.5.7 3 May 2000
Changed verbose logging from occurring with debug builds to a Settings Window checkbox.
Changed parameters for "diffusion-controlled envelope" calculation
Added special code for the bad analysis of Claude
Fixed problem with Adjusting crystal volume for overlap.
2.5.9 1 August 2000
First Carbon version. Runs on Mac OS X DP4, more or less!
Authorship
REDUCE was written by William Carlson in early June 1991. Versions 1.0.3 and 1.0.4 written by Richard Ketcham in November and December 1991. Version 1.0.3a fix was done by Cambria Johnson. Version 1.0.5 done by Richard Ketcham in January 1992.
REDUCE3D was writted by Richard Ketcham at the end of July and November-December, 1992. Versions through 2.0.0 by Rich Ketcham, dates as listed. Rewritten in Code Warrior PowerPlant C++ by David Hirsch in late 1995, and all later versions are by David Hirsch, dates as listed.
References
Daniel, C.G., and Spear, F.S. (1999) The clustered nucleation and growth processes of garnet in regional metamorphic rocks from north-west Connecticut, USA. Journal of Metamorphic Geology, 17(5), 503-520.
Hirsch, D.M., Ketcham, R.A., and Carlson, W.D. (2000) An evaluation of spatial correlation functions in textural analysis of metamorphic rocks. Geological Materials Research, 2(3), 1-41.
Raeburn, S.P. (1996) New methods in quantitative metamorphic petrology. Unpub. Ph.D. Thesis, 281 p. Pennsylvania State University.