+ All Categories
Home > Documents > GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

Date post: 16-Oct-2021
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
199
GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN BRYANT HARDY A dissertation submitted in partial fulfilment of the requirements for the degree of DOCTOR OF PHILOSOPHY WASHINGTON STATE UNIVERSITY School of Mechanical and Materials Engineering MAY 2015 © Copyright by GRADEN BRYANT HARDY, 2015 All Rights Reserved
Transcript
Page 1: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

GENERATING TRIPLE JUNCTION

DISTRIBUTIONS

By

GRADEN BRYANT HARDY

A dissertation submitted in partial fulfilment of

the requirements for the degree of

DOCTOR OF PHILOSOPHY

WASHINGTON STATE UNIVERSITY

School of Mechanical and Materials Engineering

MAY 2015

© Copyright by GRADEN BRYANT HARDY, 2015

All Rights Reserved

Page 2: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

© Copyright by GRADEN BRYANT HARDY, 2015

All Rights Reserved

Page 3: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

ii

To the Faculty of Washington State University:

The members of the Committee appointed to examine the dissertation of

GRADEN BRYANT HARDY find it satisfactory and recommend that it be

accepted.

___________________________________

David P. Field, Ph.D., Chair

___________________________________

Jow-Lian Ding, Ph.D.

___________________________________

Hussein M. Zbib, Ph.D.

___________________________________

Robert H. Dillon, Ph.D.

Page 4: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

iii

ACKNOWLEDGEMENT

I would like to first acknowledge the contributions of my advisor Dr. David Field. He

devised the topic for this dissertation and it was through his efforts in securing funding that I had

the opportunity to complete this work. I would also like to thank him for his willingness to give

me a position on this project when I first approached him five years ago. I want to acknowledge

his consistent financial support and outstanding patience over the course of completing this

dissertation. In addition, I would like to recognize his steadfast guidance and willingness to

make time for the many discussions we have had when working through problems.

I would like to recognize the efforts of my research committee in reviewing this work and

the National Science Foundation for supporting this project under Award DMR-1003004. Thank

you for the consistent support of my family, particularly my wife, who have continually

encouraged and supported me in my efforts. I would also like to acknowledge the Lord who has

continually sustained me in this work. It was largely through His assistance that I was able to

complete this dissertation.

Page 5: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

iv

GENERATING TRIPLE JUNCTION

DISTRIBUTIONS

Abstract

by Graden Bryant Hardy, Ph.D.

Washington State University

May 2015

Chair: David P. Field

Substantial studies indicate polycrystalline triple junctions are independent

microstructural defects with distinct properties and effects from their constituent grain

boundaries. Triple junctions are also descriptive of grain boundary networks and can provide

relative grain boundary energies. Despite their undeniable influence within microstructures,

there is a lack of techniques for characterizing triple junctions on a large scale. This is the result

of the difficulty of measuring their many parameters and three-dimensional features. In a first

step towards triple junction characterization, this work has developed a method of characterizing

twin-dependent triple junction distributions. All necessary parameters and conventions are

established for generating twin-dependent distributions within a discrete space. A novel method

of weighting distribution values to remove inherent sampling biases is developed. As a result of

the distribution weighting, a novel technique for generating twin-dependent triple junctions with

unequal volume cells is created. Grain boundary plane stereological methods are adopted to

enable forming twin-dependent distributions from electron back-scatter diffraction data on a

single section plane. This method has been prepared in a software format for the automated

Page 6: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

v

generation of distributions. The method has been optimized by empirical techniques and through

the implementation of simulated microstructures it has been qualitatively and quantitatively

validated. Quantitative measures of distribution quality are developed and implemented to

approximate the relative reliability of results with respect to data quantity. The implications of

this method to general triple junctions are discussed and the parameters and conventions of a

general triple junction distribution are presented as a foundation for future development. This

work prepares the fundamentals to general triple junction characterization and makes progress

towards integrated materials engineering.

Page 7: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

vi

TABLE OF CONTENTS

Page

ACKNOWLEDGEMENT ............................................................................................................. iii

LIST OF TABLES ......................................................................................................................... ix

LIST OF FIGURES ........................................................................................................................ x

CHAPTER 1 INTRODUCTION .................................................................................................... 1

1.1 Polycrystalline Structure .................................................................................................... 1

1.2 The Need for Triple Junction Characterization ................................................................. 3

1.3 Lack of Reliable Characterization Techniques with Fully Descriptive Parameters .......... 5

1.4 Shortcomings of Current Three-Dimensional Characterization Techniques for

Characterizing Triple Junction Distributions ..................................................................... 8

1.5 Advantages of a Stereological Approach ........................................................................ 10

CHAPTER 2 THEORY ................................................................................................................ 13

2.1 Triple Junction Parameters .............................................................................................. 13

2.2 The Parameter Space ....................................................................................................... 17

2.3 Reducing the Distribution Space to a Fundamental Zone ............................................... 20

2.3.1 Reducing the Distribution Space by Geometric Constraints ..................................... 20

2.3.2 Reducing the Distribution Space by Selecting a Fundamental Zone ........................ 22

2.3.3 Examining the Distribution Space ............................................................................. 26

2.4 Weighting the Distribution Values .................................................................................. 31

2.4.1 Sampling Biases within the Distribution ................................................................... 31

Page 8: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

vii

2.4.2 Correcting the Sampling Biases within the Distribution ........................................... 32

2.5 Distributions with Unequal Volume Cells ....................................................................... 35

2.6 Interpreting Distribution Plots ......................................................................................... 39

2.7 Adoption of the Grain Boundary Stereological Approach .............................................. 43

2.7.1 Implementation of Grain Boundary Stereology to Characterize Triple

Junctions .................................................................................................................... 43

2.7.2 Advantages and Disadvantages of the Grain Boundary Plane Stereology ................ 47

CHAPTER 3 EMPIRICAL OPTIMIZATION OF THE TECHNIQUE ...................................... 50

3.1 Practical Application Specifics ........................................................................................ 50

3.2 Mapping the Distribution Space ...................................................................................... 50

3.3 Selecting Optimal Mapping, Distribution, and Stereological Parameters ....................... 55

3.3.1 Optimizing the Distribution Generation Parameters ................................................. 57

3.3.1.1 Two-Level Factorial Design ............................................................................ 59

3.3.1.2 Response Surface Design ................................................................................ 71

3.3.2 Optimizing the Stereological Parameters .................................................................. 75

3.3.2.1 Selecting a Value for Cos111N2Discrt ........................................................... 75

3.3.2.2 Optimizing CosN1Discrt and CosN3Discrt .................................................... 78

CHAPTER 4 RESULTS ............................................................................................................... 85

4.1 Validating the Method ..................................................................................................... 85

4.1.1 Visual Validation of the Technique ........................................................................... 87

4.1.2 Quantitative Validation of the Technique ................................................................. 96

CHAPTER 5 CONCLUSIONS .................................................................................................. 102

CHAPTER 6 FUTURE WORK ................................................................................................. 104

Page 9: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

viii

6.1 Experimental Application .............................................................................................. 104

6.1.1 Decreasing the Weighting Factor Computational Time .......................................... 104

6.2 Generating a Generalized Triple Junction Distribution ................................................. 106

6.2.1 Parameters and Conventions of a Generalized Triple Junction Distribution .......... 107

6.2.2 Selecting a Fundamental Zone ................................................................................ 109

6.2.3 Stereology and Data Requirements of a Generalized Triple Junction

Distribution .............................................................................................................. 111

BIBLIOGRAPHY ....................................................................................................................... 114

APPENDIX ................................................................................................................................. 119

A. PROGRAM CODE EXCERPTS AND DETAILS ....................................................... 120

A.1 TJDinit() ........................................................................................................................ 121

A.2 SpaceGen() .................................................................................................................... 126

A.3 RebuildSpace() .............................................................................................................. 137

A.4 SimDataGen() ................................................................................................................ 143

A.5 SpaceTJDexpGen() ........................................................................................................ 152

A.6 TJDexpGen() ................................................................................................................. 163

A.7 StoreDists() .................................................................................................................... 173

A.8 RebuildDists() ................................................................................................................ 175

B. TWIN-DEPENDENT TRIPLE JUNCTION DISTRIBUTION FUNCTION ............... 178

B.1 Motivation ...................................................................................................................... 178

B.2 Definition of the Function ............................................................................................. 178

B.3 Series Expansion ............................................................................................................ 179

B.4 Definitions ..................................................................................................................... 182

Page 10: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

ix

LIST OF TABLES

Table 3.1 - Table of parameters necessary for generating triple junction distributions. .............. 56

Table 3.2 – Table of parameters necessary for adopting grain boundary plane stereology to

triple junctions. ....................................................................................................................... 57

Table 3.3 – Response surface results from the Minitab Response Optimizer. ............................. 82

Table 4.1 – Summary of cells at a fixed misorientation, triple junctions per cell, and triple

junctions for the full space for varying levels of fixed misorientation data. (a) Actual data

taken from the simulated distributions in Figure 4.5. (b) Values calculated for a 12.9

degree resolution at the10 degree resolution filtering levels. (c)Values calculated for a 15

degree resolution at the10 degree resolution filtering levels. ................................................. 97

Page 11: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

x

LIST OF FIGURES

Figure 1.1 – EBSD map of grain boundary engineered copper with a single triple junction

identified on the section plane. ................................................................................................. 2

Figure 1.2 – Two identical triple junctions with dissimilar dihedral angles in the section

plane. The dihedral angles are shown to be subject to the angle of the sectioning plane

with respect to the junction orientation. .................................................................................... 3

Figure 2.1 – All 17 parameters of a fully characterized polycrystalline triple junction. .............. 14

Figure 2.2 – Six parameter characterization and conventions of a triple junction within the

twin-dependent triple junction distribution. ............................................................................ 17

Figure 2.3 – Parameter space of the twin-dependent triple junction distribution. The

misorientation space and plane parameter space have been separated into two three-

dimensional spaces. An example discrete cell is visible in both spaces. ............................... 18

Figure 2.4 – (a) Triple junction not following plane normal convention of all normals

pointing in the same direction about the triple line. (b) Triple junction following plane

normal convention of all normals pointing in the same direction about the triple line. ......... 22

Figure 2.5 – The standard 111 stereographic projection and the three possible

misorientation axis zones. For every misorientation class, each of the three

misorientation axes pertains to one of the three labeled zones. .............................................. 26

Figure 2.6 – (a) Southern hemispheres of the A1n stereographic projections for decreasing

values of cos . The distribution is a simulated triple junction distribution within a

single fundamental zone. The peak value is found at 1211 An and 73.0cos or

Page 12: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xi

1033 An . (b) Northern hemispheres of the A1n stereographic projections for

decreasing values of cos . The distribution is a simulated triple junction distribution

within a single fundamental zone. .......................................................................................... 28

Figure 2.7 – (a) Triple junction at simulated distribution peak with 1211 An , 1112 An ,

and 1033 An . (b) Triple junction with inverted A1n value from the distribution peak

A1n value. 2111 An , 1112 An , and 1033 An . (c) Triple junction with

2111 An , 1112 An , and 5269.,8433.,1058.3 An . ................................................ 30

Figure 2.8 – The standard 001 stereographic projection and the labeled 111 zone. All

triple lines for the twin-dependent triple junction distribution lie along the 111 zone. ....... 31

Figure 2.9 – (a) Southern hemispheres of the A1n stereographic projections for decreasing

values of cos . The distribution is a simulated uniform random triple junction

distribution formed within a single fundamental zone. The peak values are found as

values approach 1111 An and 1cos or 1113 An and 1cos or

1113 An . (b) Northern hemispheres of the A1n stereographic projections for decreasing

values of cos . The distribution is a simulated uniform random triple junction

distribution within a single fundamental zone. The peak value is found as values

approach 1111 An and 1cos or 1113 An . ........................................................... 33

Figure 2.10 – (a) Southern hemispheres of the A1n stereographic projections for increasing

values of α. This distribution is identical to Figure 2.6 with the exception that it is formed

with discrete unequal volume cells as opposed to equal volume cells. (b) Northern

Page 13: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xii

hemispheres of the A1n stereographic projections for increasing values of α. This

distribution is identical to Figure 2.6 with the exception that it is formed with discrete

unequal volume cells as opposed to equal volume cells. ........................................................ 37

Figure 2.11 – (a) Two-dimensional depiction of the cell volume dimensions and associated

cell angular dimensions for the equal volume parameterization by cos . (b) Two-

dimensional depiction of the cell volume dimensions and associated cell angular

dimensions for the unequal volume parameterization by . .................................................. 39

Figure 2.12 - (a) Southern hemisphere of the A1n stereographic projection for

73.0cos within the equal volume distribution space. The peak value is found at

1211 An and 73.0cos or 1033 An . (b) Southern hemisphere of the A1n

stereographic projection for 17410.cos within the equal volume distribution

space. The peak value is found at 1221 An and 17410.cos or 3113 An . (c)

Southern hemisphere of the A1n stereographic projection for 100 within the

unequal volume distribution space. The peak value is found at 1221 An and

100 or 3113 An . ........................................................................................................ 41

Figure 2.13 - (a) Frequency values for triple junctions according to their proximity to the

peak value of 1211 An and 73.0cos or 1033 An . (b) Frequency values for

triple junctions according to their proximity to the peak value of 1221 An and

17410.cos or 3113 An . ............................................................................................ 42

Page 14: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xiii

Figure 2.14 – The progression of steps to characterize a twin-dependent triple junction from a

section plane. (a) Identify the coherent twin trace in the section plane. (b) Apply

developed conventions to the twin-dependent triple junction grains and trace normals. (c)

Identify the twin boundary plane orientation by selecting the potential trace normal

nearest a 111 direction. Transform the normal to the 111 direction. (d) Apply the

grain boundary stereology by generating potential 1n normals. For every 1n normal the

corresponding 3n may be found and both transformed to the crystal coordinate frame. ........ 44

Figure 3.1 – The A1n planes of random triple junctions generated within the parameter space

at a fixed cos index. ........................................................................................................... 52

Figure 3.2 – The A1n planes at a fixed cos value for a uniform random triple junction

distribution with all expected sampling biases. ...................................................................... 53

Figure 3.3 – Filtered weighting factors within their corresponding cells within the

distribution space. ................................................................................................................... 54

Figure 3.4 – Residual plots for difference response ..................................................................... 61

Figure 3.5 – Residual plots for range response ............................................................................. 61

Figure 3.6 – Standard deviation vs. mean for both the range and difference values. These

plots demonstrate the increase in variance with increasing magnitude. ................................. 63

Figure 3.7 - Standard deviation vs. mean for the transformed range and difference values.

These plots demonstrate the result of the equal variance transformation. .............................. 64

Figure 3.8 – Residual plots for reciprocal square root range response. ........................................ 65

Figure 3.9 – Residual plots for reciprocal square root difference response. ................................. 65

Figure 3.10 – Main effects for reciprocal square root range. ........................................................ 67

Page 15: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xiv

Figure 3.11 – Normal plot of the standardized effects with the reciprocal square root range as

the response. This plot distinguishes significant from non-significant effects. ..................... 67

Figure 3.12 – Main effects for reciprocal square root difference. ................................................ 68

Figure 3.13 – Normal plot of the standardized effects with the reciprocal square root

difference as the response. This plot distinguishes significant from non-significant

effects. ..................................................................................................................................... 68

Figure 3.14 – Interactions for reciprocal square root range. ......................................................... 69

Figure 3.15 – Interactions for reciprocal square root difference. ................................................. 69

Figure 3.16 - The cells within the empty geometric region of the parameter space as a

function of RandCellPtsGeom ................................................................................................ 70

Figure 3.17 – Optimal parameter values for the distribution generation parameters as

produced by the response surface design. ............................................................................... 73

Figure 3.18 – The rate of filtering according to the quantity of data. ........................................... 74

Figure 3.19 – (a) The failures in the twin boundary plane reconstruction for 10,000 twin

traces as a function of Cos11N2Discrt. (b) The twin boundary plane reconstruction

computational time for 10,000 twin traces as a function of Cos11N2Discrt. ......................... 77

Figure 3.20 – (a) The rate of boundary plane assignation failure and computational time

normalized and plotted on the same graph as a function of Cos111N2Discrt. (b) The

equated normalized rates of boundary plane assignation failure and computational time as

a function of Cos111N2Discrt. ............................................................................................... 77

Figure 3.21 – Performance of optimal parameter values within the actual program. (a) The

computational time versus difference for using the selected parameter value in the left of

the legend to generate weighting factors. (b) The computational time versus difference

Page 16: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xv

for using the selected parameter value in the right of the legend to generate the

experimental distribution from simulated trace values. .......................................................... 83

Figure 3.22 – Performance of parameter values within the actual program where the

parameter values are equally matched when forming the weighting factors and the

experimental distribution. ....................................................................................................... 84

Figure 4.1 – Simulated distribution generated in the equal volume cell distribution space.

The peak of the distribution is located at 1211 An , 1112 An , and 1023 An or

2582.cos . (a) Southern hemispheres of the stereographic projections of A1n for

fixed values of cos at center cell values. (b) Northern hemispheres of the

stereographic projections of A1n for fixed values of cos at center cell values. ............... 88

Figure 4.2 – Stereologically generated distribution from simulated experimental data created

from the junctions in Figure 4.1. Comparison of Figure 4.1 and Figure 4.2 provide a

qualitative visual validation of the implemented stereological method. (a) Southern

hemispheres of the stereographic projections of A1n for fixed values of cos at center

cell values. (b) Northern hemispheres of the stereographic projections of A1n for fixed

values of cos at center cell values. ................................................................................... 89

Figure 4.3 – Simulated distribution generated in the unequal volume cell distribution space.

The peak of the distribution is located at 1211 An , 1112 An , and 1023 An or

104.96 . (a) Southern hemispheres of the stereographic projections of A1n for fixed

values of at center cell values. (b) Northern hemispheres of the stereographic

projections of A1n for fixed values of at center cell values. .............................................. 90

Page 17: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

xvi

Figure 4.4 – Stereologically generated distribution from simulated experimental data created

from the junctions in Figure 4.3. Comparison of Figure 4.3 and Figure 4.4 provide a

qualitative visual validation of the implemented stereological method. (a) Southern

hemispheres of the stereographic projections of A1n for fixed values of at center cell

values. (b) Northern hemispheres of the stereographic projections of A1n for fixed values

of at center cell values. ....................................................................................................... 91

Figure 4.5 – Simulated distribution peak projections composed of approximately (a) 500,000

(b) 250,000 (c) 100,000 (d) 50,000 (e) 25,000 (f) 10,000 twin-dependent junctions at a

fixed misorientation. ............................................................................................................... 94

Figure 4.6 – Distribution peak projections stereologically generated from (a) 500,000 (b)

250,000 (c) 100,000 (d) 50,000 (e) 25,000 (f) 10,000 simulated measurements of twin-

dependent junctions at a fixed misorientation. ....................................................................... 95

Figure 4.7 – Difference values of similarity between the simulated and stereologically

reconstructed boundaries in Figure 4.5 and Figure 4.6. .......................................................... 99

Figure 6.1 - Parameters and conventions of a general triple junction distribution. .................... 108

Page 18: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

1

CHAPTER 1

INTRODUCTION

1.1 Polycrystalline Structure

In nature, metals are composed of the union of many individual crystals or grains. This

conglomeration of grains is formally known as a polycrystalline structure. Each grain within the

polycrystal is composed of a periodic lattice of atoms in three-dimensions. There are several

topological components of the polycrystal which may be approximated by macroscopic

parameters. These components include grains, grain boundaries, triple junctions, and quadruple

points. Grain boundaries are the common plane where two grains meet and triple junctions are

the common intersection of three grains. A fully characterized triple junction consists of three

grains, three grain boundaries, and a common triple line. A quadruple point is formed by four

grains, six grain boundaries, and the intersection of four triple lines which meet at a point.

In efforts to understand and improve materials, experimental techniques have been

developed to characterize polycrystalline topology. A powerful and widespread technique for

automated polycrystalline characterization is electron back-scatter diffraction (EBSD). By this

technique, the diffraction patterns of back-scattered electrons are indexed point by point along

the surface of a properly prepared material sample. The indexed diffraction patterns provide the

local orientation of the crystal lattice at a point. When these points are combined in a map, the

polycrystalline structure as it appears in the section plane is apparent. An EBSD map of grain

boundary engineered copper is shown in Figure 1.1.

Page 19: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

2

Figure 1.1 – EBSD map of grain boundary engineered copper with a single triple junction

identified on the section plane.

As apparent in Figure 1.1, the grains of the polycrystal are visible and their lattice

orientations indicated by the color of the grains. The traces of the grain boundaries are found

where two grains meet in the EBSD map. As an EBSD map is generated on a section plane

through the three-dimensional polycrystal, the grain boundary plane orientation is not readily

available from a single map. A single polycrystalline triple junction has been identified in the

section plane and magnified for clarity. As with a single grain boundary plane, neither the planes

of the triple junction nor the triple junction dihedral angles are readily available from the

geometry of the traces in the section plane.

An example of the inability to measure triple junction dihedral angles from a section

plane is given in Figure 1.2. In the figure, two identical triple junctions are sectioned at two

different angles with respect to the triple junction. As apparent in the figure, the section plane

dihedral angles are a function of the angle of the sectioning plane with respect to the triple

junction orientation. As the triple junction orientation is typically unknown with respect to the

section plane, extracting dihedral angles directly from the plane isn’t possible. These

Page 20: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

3

observations highlight the difficulty of measurement and the large dimensionality of triple

junctions. As compared to grain boundaries, triple junctions are an emerging frontier in

materials research. This introduction will attempt to demonstrate the need for triple junction

characterization as well as an effective strategy for doing so.

Figure 1.2 – Two identical triple junctions with dissimilar dihedral angles in the section

plane. The dihedral angles are shown to be subject to the angle of the sectioning plane

with respect to the junction orientation.

1.2 The Need for Triple Junction Characterization

For much of the last century grain boundaries have been a main focus of materials

science research [1]. This has been under the limited assumption that the properties of

polycrystalline structure as a whole may be derived from the sum of its parts [2]. While the

study of grain boundaries has led to innumerable materials advances, the grain boundary

distribution gives incomplete information of the network as a whole. While grain boundaries

Page 21: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

4

have various properties on a local scale, corresponding macroscale material properties are likely

the result of the grain boundary network [3]. For example, this was demonstrated through

studies of grain boundary engineered materials. In these materials, the improvement in

properties such as intergranular cracking were shown as the result of the break-up of the random

boundary network [4,5].

The grain boundary character distribution (GBCD) [6], where a distribution is a

normalized probability distribution, provides the relative fraction of grain boundaries without

consideration for geometrical or topological correlations within the network [7]. These

correlations become particularly important for grain boundary networks with a high fraction of

symmetric boundaries such as twin boundaries [8]. Several studies have shown that the

percolation threshold for a crystallographically consistent grain boundary network is shifted from

that generated by a random network [9–12]. In these studies, boundaries were classified with a

binary representation of special vs. high-angle random (or general). These studies also indicated

that the deviations from the random percolation threshold were the result of crystallographic

correlations at triple junctions.

Within the context of special vs. random boundaries, it has been further shown that while

the GBCD is incapable of reliably describing the boundary network topology, the triple junction

distribution can describe network properties [5,10]. Intuitively, this is because the triple junction

distribution contains local boundary correlation data and thus serves as the most basic measure of

connectivity within the boundary network. Given its geometry, the triple junction has been

designated as a first order constraint and a quadruple node or the intersection of four grains, six

boundaries, and four triple junctions as a second order constraint. Frary and Schuh indicated that

at least 75% of the correlations within a grain boundary network were accounted for by the triple

Page 22: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

5

junction first order constraints whereas the quadruple node 2nd

order constraints account for the

minority fraction [13,14]. Therefore the triple junction distribution not only describes network

topology but also accounts for the majority of the network constraints.

The mentioned studies highlight the fundamental ability of the triple junction distribution

to describe the topology of the grain boundary network. In addition to describing network

connectivity, triple junctions are distinct microstructural features with independent properties

and effects from their constituent boundaries [15]. Gottstein and Shvindlerman have shown that

triple junctions exert a drag effect on grain boundary motion which can significantly impact

grain growth [16–19]. They have additionally reported triple junction energies from basic

experimental geometries and shown an orientation dependence for energy [20–22]. Triple

junctions are prime locations for heterogeneous solute segregation as observed by the

segregation of bismuth in copper [23]. In this study it was shown that the varying concentration

of bismuth at each junction was a function of junction character. Rapid diffusion has also been

experimentally observed along triple junctions in aluminum [24]. Triple junctions are prime

sites for heterogeneous nucleation of precipitates given that there exists 50% less boundary

material at a triple junction as opposed to a grain boundary [25]. In addition, the growth of the

precipitate at a triple junction is favored by diffusion along the constituent boundaries.

1.3 Lack of Reliable Characterization Techniques with Fully Descriptive Parameters

The listed triple junction properties are far from comprehensive and others are accounted

for in more detailed reviews [25]. This list does illustrate that many triple junction properties are

junction specific and are not accounted for by the comprising boundaries. Additionally, despite

an understanding of unique junction phenomena, there is minimal research quantitatively linking

Page 23: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

6

junction character to properties. Likewise, there is little research quantitatively linking triple

junction distributions to macroscopic material properties. This is largely due to the inherent

experimental difficulty of characterizing the junction’s many three-dimensional parameters.

Many simplified techniques have been developed and used over the years to characterize

triple junctions. Through extension of the O-lattice method, Bollmann classified triple lines as I-

lines or U-lines according to whether there exists a dislocation balance about the triple line or not

[26–28]. The U-lines were characterized as disclinations which were likely to have a higher

disorder and energy than I-lines. Doni and Bleris characterized triple junctions using the

coincident site lattice (CSL) model and examined common boundary symmetry properties [29].

Palumbo and Aust formalized a coincident axial direction description of triple junctions. This

model may be described as a one-dimensional limit of the three-dimensional CSL junction model

or the one dimensional limit to Bollmann’s U-lines [30]. As previously mentioned, triple

junctions have most commonly been examined using a binary model where boundaries within

the junction are identified as special or random. Typically triple junctions are ranked according

to their number of special boundaries whether zero, one, two, or three. Specialness in boundary

character is application specific where boundaries are designated as special according to the

desired material properties. For instance, Frary and Schuh designated triple junction low angle

boundaries as special while investigating the percolation behavior in high temperature

superconductors [11]. Most frequently, boundaries with low CSL values have been termed

special by researchers.

The aforementioned techniques of triple junction characterization have been beneficial to

the materials community. The binary model of specialness has been particularly useful in

determining grain boundary network properties. While there are advantages to simplifying the

Page 24: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

7

large junction dimensionality to a binary model, there are also significant disadvantages. By

treating boundaries as either special or random there is no resolution of character. Junctions with

superior qualities may be lost in a sea of junctions with moderate to poor qualities. In addition,

by examining the boundary plane orientation at CSL misorientations, the coincident site lattice

model has been shown by Rohrer et al. [3,31] to be true for a select few values and to be a

poor predictor of grain boundary energy [32]. Rather than following the plane of highest

coincidence density, most frequently the grain boundary plane is oriented along a low index

plane common to the material. Many boundaries which are frequently termed special by the

CSL model are therefore not necessarily special at all.

While advances have been made in the past by simplified models, the technology now

exists to experimentally produce more complete triple junction distributions. By developing a

method for experimentally characterizing complete triple junction distributions, junction

character could be better linked to microscopic as well as macroscopic material properties. As

already described, these distributions could also provide grain boundary network information

which is unavailable from grain boundary distributions alone. A method of characterizing triple

junction distributions would also allow grain boundary energy distributions to be easily

approximated on a large scale. Grain boundary energy distributions have been extracted over the

full range of grain boundary parameters in a few significant studies, but always with great

experimental effort [33–38]. By enabling triple junction distributions to be generated from

measurements on a section plane, the grain boundary character and energy distributions could be

extracted from this data [39,40]. In short, a method of fully characterizing triple junction

distributions provides an indispensable tool for integrated materials engineering.

Page 25: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

8

This work will focus primarily upon fully characterizing twin-dependent triple junction

distributions. This reduces the dimensionality of the problem and allows for sufficient

experimental data to be collected. It may be argued that including a coherent twin boundary

debilitatingly limits the application of the distribution. While the application is seriously

reduced, there are still a significant number of materials to which this distribution can be applied.

There are many FCC materials with low to moderate stacking fault energy that form an

abundance of annealing twins. Any of these materials could be successfully examined and, more

specifically within these materials, the grain boundary engineered alloys could be investigated.

These alloys contain a preponderance of annealing twins and would serve as prime candidates

for analysis. In addition, these alloys have already been the source of intense grain boundary

studies given their impressive properties. This provides a good foundation of knowledge upon

which to build. Focusing upon twin-dependent triple junction distributions enables the first

comprehensive characterization of triple junctions which would otherwise remain unobtainable.

When analyzing these results, researchers should be able to put them in the proper context of

their limitations as well as their implications. In addition, this work prepares the way for a more

generalized approach to measuring triple junctions by establishing the needed foundational work.

1.4 Shortcomings of Current Three-Dimensional Characterization Techniques for

Characterizing Triple Junction Distributions

Three-dimensional characterization techniques have seen great advances over the past

decade and will continue to increase in efficiency and efficacy [41,42]. The techniques

mentioned here are those capable of characterizing polycrystalline microstructures on the grain

and grain boundary scale. These techniques include methods of high-energy X-ray tomography

Page 26: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

9

or diffraction and serial sectioning methods such as three-dimensional electron back-scatter

diffraction (EBSD) by mechanical sectioning, focused ion beam milling, or laser ablation [43–

55]. These techniques have advantages over traditional two-dimensional techniques in that they

can reveal information which cannot be extracted from two-dimensional planes [56,57]. Despite

these advantages and advances in automated techniques [58,59], the three-dimensional

techniques are typically expensive and tend to require substantial time and effort to carry out.

Given the time and effort required to collect data, current three dimensional approaches

are incapable of providing the quantity of data necessary for practically forming statistically

reliable triple junction distributions. For grain boundary distributions, Morawiec recently

showed that despite the great advances in the ability to collect three dimensional datasets, these

datasets are still relatively small compared to the quantity of measurements required for

reasonable resolution and statistical reliability [60]. He estimated that for the largest dataset

measured at the time, the relative error of the grain boundary distribution at 1 MRD was

approximately 53% at best. The relative error for the distribution at its peak was approximately

34%. These error estimates were made for a 5-dimensional grain boundary distribution which

included both the boundary misorientation and plane orientation. Smaller datasets would likely

result in higher estimates of relative error over the full boundary distributions.

While the generated grain boundary distributions will require more measurements to

reduce the approximate relative errors, triple junction distributions would require substantially

more data. This is because the quantity of data for minimal statistical reliability increases as the

dimensionality of the characterized feature increases. Bunge approximated that the quantity of

measurements for minimal statistical reliability of a distribution is approximately N10 , where N

Page 27: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

10

is the dimensionality of the desired feature [61]. While grain boundaries may be

macroscopically characterized by 5 dimensions or parameters, a twin-dependent triple junction

requires 6. The data required for generation of a twin-dependent triple junction distribution is

then approximately an order of magnitude greater than that for a grain boundary distribution.

This number increases greatly for a generalized triple junction distribution. It may be concluded

that if it is challenging for the three dimensional techniques to generate grain boundary plane

distributions with an acceptable relative error, then they would be ineffective or impractical

when the quantity of data must be increased an order of magnitude for twin-dependent triple

junction distributions.

1.5 Advantages of a Stereological Approach

Despite the inability of current three-dimensional techniques to generate reliable triple

junction distributions, the technology exists to generate these distributions through stereology.

As defined by Russ, “stereology is the science of the geometrical relationships between a

structure that exists in three dimensions and the images of that structure that are fundamentally

two-dimensional,” [62]. In this instance, the two-dimensional images would be EBSD maps

from a section plane through the triple junctions.

There are several advantages to characterizing a triple junction distribution by a

stereological technique. Primarily, a stereological technique could supply the quantity of data

necessary for statistical reliability. The nature of a three dimensional technique requires

characterizing each microstructural feature from many progressive planes in order to measure the

feature with a reasonable resolution. A stereological technique will typically require less time

since each individual feature requires a single measurement. From a single measurement applied

Page 28: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

11

to many similar features, the three dimensional data is extracted. As previously explained,

Bunge gave the rough estimate that approximately 610 triple junctions would be required for

minimal statistical reliability of a twin-dependent triple junction distribution [61]. Note that this

is an approximate value. It will be shown later that this value is a little low but of the correct

order of magnitude. Currently, EBSD cameras are being sold with the capability of indexing up

to 1400 points per second and speeds have been continually increasing. While it might still take

anywhere from days up to a few weeks to measure the required quantity of data, it is an

automated process and not out of the question.

Additionally, a stereological method does not require reconstruction of a three-

dimensional polycrystalline structure. For many of the three-dimensional techniques it is

estimated that researchers often spend more time in reconstruction than in data collection

[42,63]. Reconstruction generally may consist of data handling activities such as image

processing or alignment. Changes in the reconstruction process have been shown to have a

significant effect on results and great care must be taken to ensure the data is reconstructed

properly [38]. Given the tedious task of reconstructing polycrystalline structures, care must be

taken to ensure errors are not inadvertently introduced into the datasets through the image and

data processing steps. For a stereological technique there is no polycrystalline reconstruction

process and much of the data handling can be automated. For good statistical reliability the data

collection time is still significant, but does not require attention to alignment. In addition, the

measured features can be acquired from EBSD scans over many representative regions of a

material rather than from a single volume. These reductions in the required effort for image and

section processing remove the possibilities of potential errors from these activities. This is not

Page 29: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

12

to say that a stereological method is more accurate than a three dimensional approach. As will

be emphasized later, this approach provides good results but it is an approximate technique that

relies on several assumptions. The emphasis here is that the labor involved in forming

distributions from a stereological technique appears significantly reduced from what is required

from common three dimensional approaches.

As EBSD systems are commonplace in materials characterization labs, a stereological

technique would also put twin-dependent triple junction characterization into the hands of

students and researchers everywhere. Many of the advanced three-dimensional characterization

techniques, such as the variations of automated serial sectioning or high-energy X-ray

diffraction, require expensive highly specialized equipment which is available to only elite

research programs. The experimental setup and requisite software for an EBSD-based

stereological method are widespread and relatively inexpensive. This accessibility allows the

technique to be used by many researchers and also allows the technique to be easily incorporated

into larger studies.

This work describes the framework of a characterization method capable of

characterizing twin-dependent triple junction distributions from a single section plane. The

developed foundational material, adopted stereology, and methods of implementation will be

described. The efficacy of the technique will be demonstrated by some quantitative measures as

well as by plots of results generated from simulated distributions. Fundamental material for

characterizing general triple junction distributions will also be discussed along with potential

areas for future development.

Page 30: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

13

CHAPTER 2

THEORY

2.1 Triple Junction Parameters

In polycrystalline microstructures a triple junction is formed by the common intersection

of three grains and is composed of an intersection line or grain edge, three grain boundaries, and

three crystal lattices. Given these components, a triple junction is characterized by 17

macroscopic parameters consisting of a triple line direction t (2 parameters), three lattice

orientations Ag , Bg , Cg (3×3 parameters), and three grain boundary plane normals 1n , 2n , 3n (3×2

parameters) as indicated in Figure 2.1. The line direction t and boundary plane normals are

given by and , the azimuthal and polar angles respectively. The lattice orientations are

given by Euler angles 1 , , 2 in the Bunge convention [64]. Microscopic translations between

grains, sometimes used in grain boundary characterization, are not considered in this work.

All 17 macroscopic parameters are not independent and steps may be taken to reduce the

dimensionality of the space. By characterizing the lattice orientations using lattice

misorientation, three parameters corresponding to the redundant misorientation may be

eliminated. This is according to the relation:

I CABCAB ggg

Where I is the second rank identity matrix and misorientations are defined by

T

ABAB ggg . The three parameters corresponding to the external or laboratory reference frame

Page 31: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

14

have been eliminated using this approach. Given this exclusion, triple line directions and

boundary plane normals must be referenced from an internal reference frame or one of the

crystal lattices. Three redundant parameters from the boundary normals and triple line direction

may also be arbitrarily removed to reduce the parameterization to 11 independent parameters.

Figure 2.1 – All 17 parameters of a fully characterized polycrystalline triple junction.

As mentioned in the Introduction, Bunge estimated that approximately N10

measurements are required for generating a microstructural distribution with minimal statistical

reliability, where N is the dimensionality of the microstructural feature [61]. Clearly 1110 triple

junction measurements are currently beyond the capabilities of any experimental technique. In

order to reduce the dimensionality of the triple junction to measurable levels and make the

function experimentally tractable, a coherent twin boundary may be introduced into the triple

junction. In cubic materials the boundary plane of a coherent twin boundary is always a {111}

crystal plane. The coherent twin boundary misorientation consists of a 60 degree rotation about

a 111 direction corresponding to the boundary plane normal. If the reference frame is rotated

n2(φ

2,θ

2)

n3(φ

3,θ

3)

gA(ϕ

1,Φ,ϕ

2)

n1(φ

1,θ

1)

gC(ϕ

1,Φ,ϕ

2)

t (φ,θ)

gB(ϕ

1,Φ,ϕ

2)

1e2e

3e

Page 32: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

15

such that the 111 twin boundary normal sits in the [111] direction, the twin boundary normal

becomes a known parameter. Therefore the constraints of the coherent twin boundary reduce the

number of independent parameters by five, consisting of the known twin boundary normal and

twin boundary misorientation. The twin-dependent triple junction distribution is then fully

characterized by a boundary plane normal, a single misorientation, and a dihedral angle between

the fixed twin plane normal and the remaining undefined boundary plane normal.

Conventions of the characterization will be established as follows: Of the two

misorientations other than the twin boundary, the misorientation with the minimum rotation

angle will be selected as ABg . Grain B is selected opposite the twin and grain A neighboring the

twin. The remaining grain will be identified as grain C. The ABg boundary plane will be

labeled as plane 1 with boundary normal 1n and the twin boundary as plane 2 with normal 2n .

The remaining grain boundary plane will be labeled as plane 3 with normal 3n . Clearly, in the

experimental two-dimensional section plane, grain A will occur both clockwise and

counterclockwise from the twin. The apparent inconsistency of either clockwise or

counterclockwise locations in the section plane has no significance in the three dimensional

microstructure. If two twin boundaries are present within a single triple junction, the twin

boundary with character closest to an ideal twin boundary is selected as the known twin with

normal 2n . The remaining twin is then managed with the same conventions as any other

boundary.

By convention each triple junction will be characterized by a misorientation ABg , a

boundary normal 1n , and a dihedral angle between 3n and the fixed twin boundary 2n . As

Page 33: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

16

explained, the elimination of the laboratory or sample reference frame reduces the

dimensionality of the characterization by three parameters and all parameter values will be

referenced from a crystal reference frame. Grain A will be assigned as the crystal reference

frame with a standard Cartesian coordinate system attached to the crystal lattice. From this

coordinate frame all oriented parameters will be referenced. To distinguish values in the sample

or laboratory coordinate frame from those within the crystal coordinate frame, the subscript A

will be appended to parameters within that frame [65]. As the A2n plane or twin boundary must

be constrained to the [111] direction, after identifying ABg the grain A orientation Ag will be

selected such that the twin normal lies in the [111] direction. This is accomplished by applying

cubic symmetry operators to the initial Ag orientation and selecting the operator which provides

A2n in the [111] direction and a minimum rotation angle. This new Ag will then be used as the

distribution reference frame. This process is given by the relation:

initial

ArotateAA gCgg A ]111[

1112n

Where ]111[rotateC are elements of SO(3) belonging to the octahedral (or cubic) symmetry

group. The selected ]111[rotateC symmetry operator will also be applied to grain B or Bg so that

the ABg misorientation remains true to its original value. This operation does not reduce the

symmetry of Bg as for Ag . The reduced six parameter triple junction distribution is then given

by: ABAA g ,,, 11 where A1 and A1 are the spherical coordinates of A1n . The

characterization and conventions are illustrated in Figure 2.2. While six parameters provide a

large distribution space, the order of 610 measurements is within the capabilities of current two-

dimensional automated electron backscatter diffraction (EBSD) mapping technology. The

Page 34: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

17

methodology to extract the three-dimensional triple junction distribution from two-dimensional

EBSD measurements in a section plane relies on the adoption of established grain boundary

plane stereology [66]. This adoption is described in Section 2.7 on page 43.

Figure 2.2 – Six parameter characterization and conventions of a triple junction within the

twin-dependent triple junction distribution.

2.2 The Parameter Space

The triple junction parameter space is given by the region enclosed by the parameter

domains. In the method followed by Saylor for grain boundary distributions [34], the continuous

triple junction distribution ABAA g ,,, 11 will be approximated by discrete representations

over the triple junction parameter space. The discretization makes possible the practical

experimental generation of the distribution and this method has been carried out numerous times

in previous studies [31,37,66,67]. Each parameter will be divided into equal discrete units.

These units correspond to equal volume cells in the space or parameter array which prevents

biasing the distribution for any parameters associated with a polar angle over the unit sphere

[68]. The parameter space is shown in Figure 2.3. For visualization purposes, in the figure the

α

n3A

(α)

gAB

(ϕ1,Φ,ϕ

2)

(Minimum

Misorientation)

n1A

(φ1A

,θ1A

)

t

n2A

[111]

Grain A

Grain B

Grain C

Plane 1

Plane 3

Plane 2

(Coherent Twin)

Page 35: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

18

space has been broken into two 3-dimensional arrays separating 21 ,, ABg from

AAA 111 ,n and dihedral angle . This also conveniently divides the misorientation parameters

from the triple junction plane parameters. In reality, the parameter space consists of a 6-

dimensional array with no division between parameters. The domain of the A1n boundary plane

normal coordinates A1 and A1 is parameterized by the spherical coordinates A1 and A1cos

over the range of 20 1 A and 1cos1 1 A . The domain of the dihedral angle is

parameterized by cos over 1cos1 . The domain of the Euler angles 1 , , 2 is

parameterized by 1 , cos , and 2 over 20 1 , 1cos0 , and 20 2 . The

adopted parameters A1cos , cos , and cos have been used in place of A1 , , and as

these parameterizations provide equal volume cells when equally divided.

Figure 2.3 – Parameter space of the twin-dependent triple junction distribution. The

misorientation space and plane parameter space have been separated into two three-

dimensional spaces. An example discrete cell is visible in both spaces.

Page 36: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

19

The discretization of the array and equivalently each parameter determines the resolution

of the distribution. The resolution increases as the discretization increases and the size of the

cells decreases. As noted by Rohrer et al., while boundary properties begin to vary significantly

at resolutions of just 10 degrees, it is uncommon to measure boundaries with a resolution less

than 5 degrees. An appropriate resolution may therefore be designated from 5 to 10 degrees

[68,69]. While this is a justifiable guideline, an increased resolution or increase in the total

number of cells also increases the amount of measurements required to reliably form the

distribution. While a 10 degree resolution provides sufficient topological detail so as to link

properties to character, it might require too much data to reliably form a distribution. Therefore

conclusions could not be reliably made despite the suitable resolution. In this work a resolution

of 10 degrees is typically used, but the 15 degrees resolution will be provided as an alternative

distribution which is easier to form reliably but with less topological detail.

To form the discussed resolutions, 1 and A1 are equally divided into 36 or 24 cells,

cos and 2 are divided into 9 or 6 cells, and A1cos and cos are divided into 18 or 12

cells. These discretizations correspond to resolutions of approximately 10 or 15 degrees

respectively. To assist with visualization of the array structure, a single example cell has been

marked in each of the three dimensional units within Figure 2.3. In practice, each unit is entirely

composed of individual cells and every cell corresponds to distinct discrete parameter values of

the triple junction distribution ABAA g ,,, 11 . For every measured triple junction a unit

value is added to its corresponding cell in the parameter space or array. The distribution is

formed after adding a statistically significant number of triple junction values to the array. To

Page 37: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

20

convert the distribution values to multiples of random distribution (MRD), each cell may be

normalized by the average value of all the cells.

2.3 Reducing the Distribution Space to a Fundamental Zone

2.3.1 Reducing the Distribution Space by Geometric Constraints

The above parameterizations take no account for energetically imposed geometric

constraints occurring in actual polycrystalline triple junctions. In an actual triple junction it is

energetically unfavorable for a dihedral angle to exceed 180 degrees. With A2n in the [111]

direction, there are many combinations of A1n and cos that exceed this criteria. Given this

constraint, it is obvious that there is a substantial region of the parameter space which does not

pertain to actual polycrystalline triple junctions. In other words, the space of the triple junction

distribution is a subregion of the parameter space.

The discrete cells within the parameter space may be divided into three classes: cells

which lie entirely within the distribution space, cells entirely outside of the distribution space,

and cells which lie on the border of the distribution space and the empty region outside of the

distribution. Each cell class is determined according to whether the parameter values within the

class cells pertain to triple junctions with dihedral angles less than or greater than 180 degrees.

Clearly, the border cells are cells where only a fraction of the cell parameter values correspond to

triple junctions with dihedral angles less than 180 degrees. The border cells may be alternatively

described by considering the volume of the distribution space with respect to the cell and

parameter space volumes. The volume of the triple junction distribution is exactly 50% of the

parameter space volume, though the borders of the volume do not coincide with the discrete cell

borders. The distribution volume therefore indiscriminately sections through cells which lie at

Page 38: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

21

its edges resulting in border cells with only a fraction of their volume corresponding to

distribution triple junctions.

The distribution space pertains to a fraction of the cells in the parameter space depending

on the resolution of the distribution. For a fixed misorientation and a resolution of 10 degrees,

6575 of the 11664 parameter space cells pertain to the distribution. As explained, cells outside

of the distribution subregion are empty space. Of the 6575 distribution cells, 1493 border the

distribution volume and the empty space. While 1493 cells border the distribution only a

fraction of the cell volume within these cells is enclosed by the distribution. The distribution

therefore entirely encompasses 5082 cells and a fraction of 1493 cells for a total cell volume of

5832 equal volume cells, (50% of the parameter space volume). For a fixed misorientation and a

resolution of 15 degrees, 2062 of the 3456 parameter space cells pertain to the distribution. Of

the distribution cells, 668 cells lie on the border of the distribution. As expected, the distribution

volume consists of a cell volume of 1728 equal volume cells, (50% of the parameter space

volume).

The dihedral angle geometric constraint is not only responsible for excluded cells in the

parameter space but also accounts for a sampling bias in the distribution. This bias is caused by

the border cells where only a portion of their cell values exceed 180 degrees. The distribution

array consists of equal volume cells and relies on those cells being filled with values according to

their occurrence. Generally, for a random distribution each cell would be filled with a uniform

frequency since every cell has an equal volume [68]. In the triple junction distribution this is not

the case. All cells remain equal volume, though a varying number of cell values are excluded

from the distribution. In effect the cells are not equal volume cells anymore despite no change in

cell dimensions. Accordingly, cells with excluded values will be filled at a slower rate than the

Page 39: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

22

remaining cells even when a uniform distribution is measured. Corrections for this geometric

sampling bias as well as other sampling biases will be addressed in Section 3.

2.3.2 Reducing the Distribution Space by Selecting a Fundamental Zone

This distribution is measured in FCC materials. Given unconstrained symmetries, the

distribution space may be divided into symmetrically equivalent regions termed fundamental

zones or asymmetric domains. Here a fundamental zone is defined as a region of the distribution

space where each unique triple junction is represented only once. Across all the fundamental

zones within the distribution space there exist multiple symmetrically equivalent triple junctions.

While equivalent, these triple junctions pertain to distinct and difficult to correlate parameter

values. In order to distinguish equivalent triple junctions, a single fundamental zone must be

selected from all potential characterizations [34,65].

Figure 2.4 – (a) Triple junction not following plane normal convention of all normals

pointing in the same direction about the triple line. (b) Triple junction following plane

normal convention of all normals pointing in the same direction about the triple line.

n1A

(φ1A

,θ1A

)

α

n3A

(α)

gAB

(ϕ1,Φ,ϕ

2)

(Minimum

Misorientation)

n2A

[111]

t

(a)

n1A

(φ1A

,θ1A

)

α

n3A

(α)

gAB

(ϕ1,Φ,ϕ

2)

(Minimum

Misorientation)

n2A

[111]

t

(b)

Page 40: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

23

The triple junction parameter space allows inversion symmetry of the plane normals as

they may be formed for either side of the plane. Given the inversion symmetry of the crystal

lattice, these normals correspond to crystallographically identical directions. An example of this

is given in Figure 2.4. Figure 2.4a and Figure 2.4b correspond to crystallographically identical

triple junctions but the inverted boundary plane normal provides distinct A1n values. In order to

constrain the distribution inversion symmetry, the azimuthal angles i or normals in in the sample

frame will always be defined according to the following convention: 2 or equivalently 2n will

point into grain A and 1 or 1n and 3 or 3n will point in the same direction as 2n , whether

clockwise or counterclockwise about the triple line. While all in vectors will be transformed to

the Ag crystal coordinate frame, the convention is maintained through the transformation and

will eliminate the inversion symmetry of the parameter space. This convention is illustrated in

Figure 2.4b.

This convention also constrains the junction boundary normals to consistently point in the

same direction about the triple line. Without all boundaries consistently pointing in the same

direction, boundary normals with greater than 180 degrees between them would not necessarily

correspond to boundary planes with angles greater than 180 degrees. This is demonstrated in

Figure 2.4. In the figure both triple junctions are identical and both have planes with dihedral

angles less than 180 degrees between them though that is not true for the boundary normals. As

the boundary normals in Figure 2.4a do not follow the established convention, the dihedral angle

between A1n and A3n exceeds 180 degrees despite the legitimacy of the junction geometry. This

Page 41: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

24

convention is therefore necessary for not only reducing inversion symmetries but for simply and

uniquely characterizing junction geometry.

In addition to inversion symmetries, the distribution is also subject to the remaining

unconstrained cubic crystal symmetries. For a cubic crystal orientation g there exist 24

equivalent orientations by the relation: gCg i where iC are the cubic symmetry operators and

i = 1 to 24. As grain A or Ag has been rotated and constrained such that A2n points in the [111]

direction, the active symmetry operators for this grain have been reduced. For the distribution

misorientation ABg there exist 72 potential equivalent misorientations by the relation:

TAjBiAB gCgCg where i = 1 to 24 and j = 1 to 3. The three remaining jC symmetry

operators correspond to the tri-axial symmetry about [111] which remains unconstrained after the

A2n rotation to the [111] direction. Given the conventions of the distribution, misorientations

will only be considered with respect to Bg and not Ag as for TBiAjBA gCgCg .

Given that the triple junction plane parameters are defined within Ag , for every

equivalent TAjBiAB gCgCg there exist equivalent plane parameters according to

iAj

eq

iA C nn . As emphasized by Morawiec for grain boundary plane distributions [70], each

symmetry element simultaneously couples both Ag and iAn determining equivalent plane

parameters for every equivalent misorientation. A single fundamental zone may be designated

by selecting a unique set of symmetry operators for each misorientation which simultaneously

selects a unique set of associated plane parameters. As the methodology of selecting

fundamental zones for misorientations is already well established [71–74], this methodology will

be adapted to the triple junction distribution.

Page 42: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

25

The used misorientation space, 20 1 , 1cos0 , and 20 2 , is a

subregion 1/8th the size of the full space where 20 1 , 1cos1 , and 20 2 .

Since 97281 , the misorientation space subregion encompasses only 9 equivalent

misorientations of the 72 misorientations within the full space. As described by Neumann [72],

the full set of 72 misorientations may be divided into 24 classes of three misorientations. This is

according to the 24 symmetry operators within grain B and the three active symmetry operators

within grain A. The misorientations within each class consist of three identical misorientation

angles and three misorientation axes. The three axes may be generated by transforming one of

them by the grain A symmetry operators. The 9 misorientations within the misorientation space

are selected from the 72 misorientations within the full space with disregard to class. Most

frequently misorientations from 9 different classes are selected though misorientations within the

same class do occasionally occur.

To designate a single representative fundamental zone both a misorientation axis and

angle must be consistently selected from the 9 equivalent misorientations. Since most frequently

the misorientations are from 9 different classes with 9 different misorientation angles, it is

usually sufficient to select the misorientation with the smallest angle. This selection rule is

sufficient even if misorientations from the same class occur as long as they are not the minimum

angles within the 9 present. If two misorientations from the same class occur with identical

minimum misorientation angles, then a misorientation must be further selected by its axis. The

three misorientation axes corresponding to the identical misorientation angles within a class sit in

one of three zones defined by the symmetry within grain A [72]. These zones are depicted in

Figure 2.5 on the standard [111] stereographic projection. When minimum misorientation angles

Page 43: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

26

of the same class occur within the misorientation space, the angle with a misorientation axis in

zone 1 is selected as the representative misorientation. If a misorientation with axis in zone 1 is

not present the misorientation with an axis in zone 2 is selected. These selection criteria identify

a single unique representative misorientation from all symmetrically equivalent misorientations

and concurrently select a single fundamental zone for all distribution parameters.

Figure 2.5 – The standard 111 stereographic projection and the three possible

misorientation axis zones. For every misorientation class, each of the three misorientation

axes pertains to one of the three labeled zones.

2.3.3 Examining the Distribution Space

A simulated distribution with a resolution of 10 degrees is depicted in Figure 2.6. The

method of forming a simulated distribution was adapted from Saylor et al. [66] and Morawiec

[70]. The figure consists of stereographic projections of A1n for progressing values of cos

from 1 to -1. As distribution values are uniform within each cell, the number of stereographic

projections in Figure 2.6 corresponds to the cos discretization with cos at center cell

values. All stereographic projections are for a fixed misorientation which in this case is a 20

degree rotation about [952]. This misorientation axis was originally selected as it represents a

truly general boundary with no special symmetries [34,68,75,76]. The developed method of

Zone 3

111 111

111

111

112 121

211

Zone 1 Zone 2

Page 44: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

27

weighting distribution values, as introduced later in this work, should compensate for special

symmetries making the example axis selection arbitrary. The southern and northern hemispheres

of the stereographic projections have been plotted separately in Figure 2.6a and Figure 2.6b.

To assist in understanding the distribution plot, it may be described in coordination with

the distribution space in Figure 2.3 on page 18. The entire figure corresponds to a single cell in

the misorientation space in the left of Figure 2.3, which is a single fixed misorientation. Each

stereographic projection is a slice through the plane parameter space in the right of Figure 2.3,

corresponding to a single cos value and the entire domain of A1cos and A1 . Following

the stereographic projections from left to right and top to bottom corresponds to stepping through

the plane parameter space slice by slice beginning at the slice adjoining cos at 1 and

progressing to -1. In other words, the stereographic projections are generated by slicing the

plane parameter space one cell layer at a time progressing out of the page. The discrete cells of

the distribution array are visible in the figure as the distribution has not undergone any sort of

smoothing or averaging technique. This accounts for the projections’ pixelated appearance.

Given that the distribution is being displayed exactly as it exists in the array structure, the quality

of the raw technique may be visibly analyzed from these images.

Page 45: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

28

Figure 2.6 – (a) Southern hemispheres of the A1n stereographic projections for decreasing

values of cos . The distribution is a simulated triple junction distribution within a

single fundamental zone. The peak value is found at 1211 An and 73.0cos or

1033 An . (b) Northern hemispheres of the A1n stereographic projections for

decreasing values of cos . The distribution is a simulated triple junction distribution

within a single fundamental zone.

Page 46: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

29

The designated distribution peak sits in the southern hemisphere at 1211 An and

73.0cos or 1033 An . The peak location at 73.0cos accounts for increasing

peak intensities as cos approaches 73.0 . The empty space in each stereographic projection

corresponds to junction locations where a dihedral angle is greater than 180 degrees, or rather to

locations of infeasible junction geometry. This geometrically infeasible empty region also

accounts for the two empty stereographic projections in the northern hemisphere of Figure 2.6.

In these locations there are no parameter values with dihedral angles less than 180 degrees,

therefore both stereographic projections consist solely of empty space.

In a common stereographic projection with crystal symmetry, the northern and southern

hemispheres are identical and overlay without contradiction. Such is not the case for the

boundary planes of triple junction distributions. Given the previous discussion on defining the

fundamental zone, it is clear that the inversion of a single plane normal is inconsistent with the

established inversion symmetry conventions. For clarity, the triple junction distribution peak

will be used as an example. The peak of the distribution sits in the southern hemisphere with the

value of 1211 An and 73.0cos or 1033 An . This junction is shown in Figure 2.7a.

By reversing A1n to the 211 direction, as in Figure 2.7b, the triple junction normals are no

longer consistent with the established inversion symmetry convention and do not lie in the same

direction about the triple line.

Page 47: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

30

Figure 2.7 – (a) Triple junction at simulated distribution peak with 1211 An ,

1112 An , and 1033 An . (b) Triple junction with inverted A1n value from the

distribution peak A1n value. 2111 An , 1112 An , and 1033 An . (c) Triple

junction with 2111 An , 1112 An , and 5269.,8433.,1058.3 An .

While reversing a single junction boundary plane normal is inconsistent with the

established conventions, there are configurations of triple junctions in the distribution which

have inverted A1n boundary planes. For instance, as explained the distribution peak sits in the

southern hemisphere of the stereographic projection. In the northern hemisphere of the

distribution stereographic projection lies a different unique junction with values 2111 An and

73.0cos or approximately 5269.,8433.,1058.3 An as in Figure 2.7c. The

distribution values of 1211 An and 73.0cos and 2111 An and 73.0cos only

differ by the inversion of A1n , though they represent distinguishable unique triple junctions.

These junctions therefore are not interchangeable and the stereographic projections of their

distribution values do not coincide in the northern and southern hemispheres. From this example

it is also clear that equivalent cos distribution values do not necessarily correspond to

equivalent A3n values.

Page 48: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

31

2.4 Weighting the Distribution Values

2.4.1 Sampling Biases within the Distribution

It was explained that given the discretization of the parameter space there exist cells

which border the distribution subspace. A fraction of the values within these cells sit outside of

the distribution space and are excluded from the distribution. These cells cause a sampling bias

within the distribution. If this bias were to go uncorrected, intensity values within cells would

not accurately represent the frequency of occurrence for those cells. The sampling bias from

geometric constraints is not the only bias that has been introduced into this distribution. Another

bias for A1n and A3n has been created as the result of only selecting triple junctions with an

associated twin boundary. This bias has been further augmented by rotating the Ag frame such

that A2n consistently points in the 111 direction. As A2n always sits in the 111 direction, the

junction triple line always sits in the 111 plane or on the stereographic projection in a direction

along the 111 great circle. This great circle is shown in Figure 2.8.

Figure 2.8 – The standard 001 stereographic projection and the labeled 111 zone. All

triple lines for the twin-dependent triple junction distribution lie along the 111 zone.

[111] Zone or

Great Circle

111 001

100

010

Page 49: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

32

The A1n and A3n directions always sit in the plane of the triple line. These planes are the

planes of the 111 zone where all planes within the zone are parallel to the 111 direction or

zone axis [77]. In addition to being parallel to the 111 zone axis, it should be emphasized that

every plane of the zone contains the zone axis as a possible direction. Since A1n and A3n sit

exclusively in these planes they sample the 111 and 111 directions more frequently than any

other direction.

An alternative and perhaps simpler way of observing the A1n and A3n sampling bias is

by examining the geometry of a triple junction within the space. The peak triple junction in

Figure 2.7a is a suitable example. In the figure, according to the established convention, A2n

points in the 111 direction. It can be imagined that through variations of triple junctions, A1n

and A3n swing along the triple line plane shown in the figure as a grid. Through varied junction

geometries the junction plane may rotate about 111 or A2n , but it is fixed to that direction. As

A1n and A3n approach the A2n pole they are always approaching 111 or 111 and taking on

that value.

2.4.2 Correcting the Sampling Biases within the Distribution

The sampling biases listed above are shown in Figure 2.9. Figure 2.9a and Figure 2.9b

consist of a simulated random distribution which in this case has not been corrected for the

present sampling errors. While the value of the distribution should be 1 everywhere, in this case

it varies according to the sampling biases in the distribution.

Page 50: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

33

Figure 2.9 – (a) Southern hemispheres of the A1n stereographic projections for

decreasing values of cos . The distribution is a simulated uniform random triple

junction distribution formed within a single fundamental zone. The peak values are found

as values approach 1111 An and 1cos or 1113 An and 1cos or

1113 An . (b) Northern hemispheres of the A1n stereographic projections for decreasing

values of cos . The distribution is a simulated uniform random triple junction

Page 51: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

34

distribution within a single fundamental zone. The peak value is found as values approach

1111 An and 1cos or 1113 An .

As explained, the most frequent values in the distribution occur as both A1n and A3n

approach either 111 or 111 . In the southern hemisphere or Figure 2.9a, the peaks are found

as the values approach 1111 An and 1cos or 1113 An and 1cos or

1113 An . In the northern hemisphere or Figure 2.9b, the intensity increases as the values

approach 1111 An and 1cos or 1113 An . These values are clearly at the limit of

the distribution geometrical values with dihedral angles at 180 degrees and equivalent or inverse

A1n , A2n and A3n values. In practice these values may be approached but they are the limit of

reality since they do not correspond to triple junction geometry.

To correct the triple junction distribution such that its values represent true distribution

values, the distribution may be weighted according to the error present in each cell. The random

distribution shown provides the perfect measure of all present biases and can be implemented in

this correction. To make this correction, each cell of a biased distribution may be multiplied by

the inverse intensity value of the corresponding cell in the random distribution. After this

procedure, all present distribution peaks and valleys are true values since the peaks and valleys

as a result of the sampling biases have been annihilated. This is a simple method which can be

easily applied to all biased triple junction distributions no matter what the actual distribution

features. In practice, a random distribution may be simulated and its inverse weighting factors

generated and stored in a file format. Anytime a triple junction distribution is formed these

weighting factors may be recalled to correct the distribution to representative values.

Page 52: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

35

Occasionally a cell on the distribution edge has an exceptionally small value since the

majority of the space within it lies outside the distribution. When these values near zero are

inverted to form weighting factors they become exceptionally large and unstable. These cells

generate singular points within the weighted distribution which obscure its true features. These

cells must be filtered from the distribution according to their instability. This artificial reduction

in distribution space introduces a small error into the distribution, but is a necessary result of the

weighting process. Intuitively this error should decrease as the cell resolution increases.

The simulated distribution in Figure 2.6 has been weighted with a uniform random

distribution to provide true values. This distribution was formed from 5E5 simulated triple

junctions at a fixed misorientation. The simulated dataset is about an order of magnitude beyond

what is experimentally practical for the entire distribution, but the intention is to demonstrate the

success of the methodology. Steps can be taken to improve convergence and the rates of

convergence will be addressed in CHAPTER 4. The unstable distribution edge cells were

filtered from this distribution which accounts for the jagged distribution edges in the projections.

It is visually evident from the minor areas removed that the majority of the filtered cell volumes

were outside of the distribution. In this distribution the filtered cell volumes account for .7% of

the distribution space.

2.5 Distributions with Unequal Volume Cells

In this work the misorientation Euler angles 1 , , and 2 were parameterized by 1 ,

cos , and 2 . The A1n boundary plane normal coordinates A1 and A1 were parameterized

by A1 and A1cos . The dihedral angle was parameterized by cos . As noted, some of

the parameters implement the cosine function to produce equal volume cells over the parameter

Page 53: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

36

space. With minor exceptions, this convention maintains a uniform random sampling rate across

the distribution space for grain boundary planes [34,68,75,76]. This has been a standard

approach to discretized grain boundary plane studies and was an appropriate starting point for

characterizing triple junctions. In retrospect of this work, the primary motivation for using equal

volume cells has been largely negated by the inherent triple junction distribution sampling

biases. These biases were corrected by weighting the distribution with a uniform random

distribution, and this weighting would also correct the biases generated by unequal volume cells.

The adopted parameterizations were utilized in order to avoid further sampling biases and this

parameterization maintains uniformity with previous works [34,36,66]. However, Morawiec

[78] has recently shown that the equal volume cell parameterization is responsible for artifacts

over the grain boundary plane distribution. Given this insight, it becomes advantageous to also

produce distributions with unequal volume cells over the distribution space.

The method of generating unequal volume cell twin-dependent triple junction

distributions is almost identical to that of the equal volume approach. The only difference for the

unequal volume procedure is that the cosine functions are removed from the boundary plane

parameterizations. In this work, the 21 ,, ABg Euler angle domains will remain identical

for the equal and unequal volume discretization as this parameterization remains the standard in

the field of texture analysis. The twin-dependent triple junction distribution produced in Figure

2.6 is reproduced in Figure 2.10 with unequal volume cells.

Page 54: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

37

Figure 2.10 – (a) Southern hemispheres of the A1n stereographic projections for

increasing values of α. This distribution is identical to Figure 2.6 with the exception that it

is formed with discrete unequal volume cells as opposed to equal volume cells. (b)

Northern hemispheres of the A1n stereographic projections for increasing values of α. This

distribution is identical to Figure 2.6 with the exception that it is formed with discrete

unequal volume cells as opposed to equal volume cells.

Page 55: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

38

Clearly in these stereographic projections the small border cells are not the only cells

filtered from the distribution. As the cells at the northern and southern poles of the distribution

become exceptionally small, they also become unstable and are filtered from the distribution. In

this instance, a few of these cells at the poles remain unfiltered and present in the plots. This

distribution is identical to that plotted in Figure 2.6 in that it is composed of 5E5 simulated triple

junctions and .7% of the distribution has been filtered from the distribution volume. The

necessary weighting factors were computed in an identical manner as well.

A key difference between the methods, many of which are apparent in the plots, is the

difference in cell angular dimensions [78]. There are four empty stereographic projections

within Figure 2.10b, whereas there are only two empty projections within Figure 2.6b. The first

two cells of the cosine parameterization within Figure 2.6b, or the equal cell volume

parameterization, span approximately 38.94 degrees. The first four cells in the unequal cell

volume parameterization span an almost equivalent 40 degrees. The shift in other features,

including the distribution peak, is also a result of this difference in cell dimensions as a result of

the parameterizations. While the unequal cell volume parameterization results in unequal

volume cells over the distribution space, each cell is consistent in angular dimensions. The

difference in cell volume and angular dimension between both parameterizations is demonstrated

through a two-dimensional depiction in Figure 2.11. This figure provides a convenient

visualization of the interaction of the parameters with the distribution space.

Page 56: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

39

Figure 2.11 – (a) Two-dimensional depiction of the cell volume dimensions and associated

cell angular dimensions for the equal volume parameterization by cos . (b) Two-

dimensional depiction of the cell volume dimensions and associated cell angular

dimensions for the unequal volume parameterization by .

2.6 Interpreting Distribution Plots

Now that the distribution plots have been introduced and the method of forming unequal

volume distributions described, it is appropriate to emphasize additional principles for

interpreting these plots. While the stereographic projection of the triple junction A1n plane at a

fixed dihedral angle may provide plots which appear similar to more conventional

distributions, it should be noted that the more subtle parameter is active within the plots. At

times can cause unanticipated results.

The effect of the dihedral angle parameter on the distribution plots is nicely demonstrated

by comparing the effects of moving the peak within the distribution. As mentioned in Section

2.3.3, the method of forming a simulated distribution was adapted from Saylor et al. [66] and

Morawiec [70]. In this method, the peak within the simulated distribution was produced by

Page 57: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

40

conditionally adding random triple junctions to the distribution space according to their

proximity to the peak triple junction. The shape of the peak is determined by the generating

function implemented. In this work, the generating function is Gaussian in nature and adapted

from that used by Saylor [66]. Further details of the process of generating simulated

distributions will be provided in Section 4.1, Validating the Method.

For enhanced visual detail, only the projection containing the peak of the simulated

distribution in Figure 2.6 is shown in Figure 2.12a. The peak of the distribution looks fairly

smooth and the peak intensity appears nicely distributed about the peak value. The plot appears

to properly reflect the Gaussian generating function. The result of using the same generating

function for a different peak value is plotted in Figure 2.12b. In this plot the peak has been

moved to 1221 An and 17410.cos or 3113 An . In a more conventional distribution

plot, such as a pole figure or even grain boundary plane distribution, it is expected that simulated

distributions generated by the same generating function would have similar plots despite a

change in peak location. This is clearly not the case for the twin-dependent triple junction

distribution.

Page 58: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

41

Figure 2.12 - (a) Southern hemisphere of the A1n stereographic projection for

73.0cos within the equal volume distribution space. The peak value is found at

1211 An and 73.0cos or 1033 An . (b) Southern hemisphere of the A1n

stereographic projection for 17410.cos within the equal volume distribution space.

The peak value is found at 1221 An and 17410.cos or 3113 An . (c) Southern

hemisphere of the A1n stereographic projection for 100 within the unequal volume

distribution space. The peak value is found at 1221 An and 100 or 3113 An .

The smooth and spherical peak in Figure 2.12a becomes only a strip of a peak in Figure

2.12b. This was the result of just shifting the arbitrary peak. At first glance the change between

Figure 2.12a and Figure 2.12b might be assumed to be an artifact of the varying angular

dimensions within the equal volume cells as described in Section 2.5. A plot of the same

distribution in the unequal volume space is given in Figure 2.12c. This plot appears almost

identical to Figure 2.12b. Given the similarity of Figure 2.12b and Figure 2.12c, it may be

concluded that this is not an artifact of the equal volume space angular dimensions. Plotting the

frequency values from the generating function sheds light on the root cause of the difference in

plot appearance.

The generating function outputs frequency values according to the proximity of the

plotted junction A1n and A3n planes to the peak A1n and A3n planes. Proximity is approximated

Page 59: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

42

by the average angular distance between the peak and the plotted junction A1n and A3n planes.

The frequency values increase with proximity to the peak and decrease as the junction character

diverges from the peak. In Figure 2.13, the frequency values are plotted for the stereographic

projections of A1n planes at a fixed cos value. Clearly, the distribution plots in Figure 2.12

agree nicely with the generating function frequency values. The plot differences then are the

nature of the twin-dependent junction space and not an artifact or error.

Figure 2.13 - (a) Frequency values for triple junctions according to their proximity to the

peak value of 1211 An and 73.0cos or 1033 An . (b) Frequency values for

triple junctions according to their proximity to the peak value of 1221 An and

17410.cos or 3113 An .

The intensity for every point in the twin-dependent triple junction distribution plots is the

result of both the A1n and A3n planes. While the stereographic projection is for the A1n planes,

these planes are selected for a fixed dihedral angle . The value is the dihedral angle

between the twin A2n and A3n plane. Therefore, when examining these plots, points within the

projections correspond to the full twin-dependent triple junction geometry and not just the A1n

plane. In addition, the triple junctions have geometric constraints associated with them. Not

Page 60: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

43

only must the dihedral angles remain less than 180 degrees, but the A1n , A2n , and A3n planes

must remain in a single plane. Therefore, the proximity of a triple junction to a peak orientation

after a modification to the A1n plane orientation depends on the direction of the change with

respect to the triple junction plane. If A1n moves in the plane of A2n and A3n , A3n does not

move to remain in plane and maintain the fixed value. This would result in a higher

frequency value. If A1n moves an equal distance out of the plane, A3n must shift to remain in

plane and maintain the fixed value. This would result in a lower frequency value. The plots

of results from actual twin-dependent triple junction distributions will assist in knowing whether

changes to the simulated generating function are necessary.

In summary, the differences between the plots in Figure 2.12 are the result of changes in

the full junction geometry and not just A1n . While the method of plotting the twin-dependent

triple junction distribution facilitates viewing the six-dimensional space, care must be taken so as

not to judge results with preconceived notions of how conventional distributions should appear.

2.7 Adoption of the Grain Boundary Stereological Approach

2.7.1 Implementation of Grain Boundary Stereology to Characterize Triple Junctions

The majority of the parameters required to fully characterize a triple junction containing a

coherent twin boundary are measurable from a two-dimensional section plane. As depicted in

Figure 2.14a, from a section plane the grain orientations and plane traces are apparent.

Page 61: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

44

Figure 2.14 – The progression of steps to characterize a twin-dependent triple junction

from a section plane. (a) Identify the coherent twin trace in the section plane. (b) Apply

developed conventions to the twin-dependent triple junction grains and trace normals. (c)

Identify the twin boundary plane orientation by selecting the potential trace normal

nearest a 111 direction. Transform the normal to the 111 direction. (d) Apply the grain

boundary stereology by generating potential 1n normals. For every 1n normal the

corresponding 3n may be found and both transformed to the crystal coordinate frame.

Page 62: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

45

While the traces don’t indicate the orientation of the junction planes, the traces indicate a

range of possible orientations. This information may be used to identify the actual orientation of

the coherent twin boundary and approximate the orientations of the remaining planes. The

method of accomplishing this will be described progressively with Figure 2.14.

Commercial EBSD software already contains algorithms for identifying coherent twins

according to the proximity of a boundary misorientation angle to a twin misorientation and the

boundary trace to the twinning plane trace [79,80]. As depicted in Figure 2.14a, once an EBSD

map is generated, the triple junctions containing a coherent twin may be identified as a subset of

all the triple junctions. After each twin is identified within every junction, misorientation ABg

is identified as the minimum misorientation. The normals to each trace and Grain A, B, and C

can then be assigned according to the established conventions as depicted in Figure 2.14b. As

illustrated in Figure 2.14c, the normal vector to the twin plane, or 2n as identified in the sample

or laboratory reference frame, must be normal to the trace of the twin in the section plane.

Therefore, a range of potential normal vectors may be identified over a hemisphere about the

trace. Note that when 2n is represented by the spherical angles 2 and 2 , angle 2 is known

while the range of 2 values provides potential normals. As this method is applied to FCC

materials, it is known the twin boundary normal points in a 111 direction within grain A. The

potential normals may be transformed to the crystal coordinate system according to the

transformation:

22 nn AA g

Page 63: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

46

The normal closest to a 111 direction is selected as the true normal and the grain A

reference frame, or Ag , is rotated such that A2n points in the 111 direction according to the

relation:

initial

ArotateAA gCgg A ]111[

1112n

Where ]111[rotateC are elements of SO(3) belonging to the octahedral (or cubic) symmetry

group. The selected ]111[rotateC symmetry operator is applied to grain B, or Bg , so the ABg

misorientation remains consistent. Once A2n points in the 111 orientation it becomes known

and doesn’t require representation in the distribution space. The only unknown parameters

remaining within the triple junction are 1 and 3 or the polar angles of 1n and 3n . In order to

complete characterization of the triple junction, only 1n or rather 1 must be identified. Once this

plane is known, the constraints of the junction geometry allows 3n to be constructed solely from

the known value 3 .

To characterize 1n we can conveniently adopt the grain boundary stereology as already

developed by Saylor et al. A brief summary of this stereology will be provided here, but further

details and proofs may be found in the original publication of the technique [66]. This

stereology functions in a similar manner to what has already been described and demonstrated

for identification of A2n in Figure 2.14c. For a given grain boundary trace, potential plane

orientations are obtained. For every potential boundary orientation and associated

misorientation, the boundary length of the corresponding trace is added to a cell within a

discretized five parameter grain boundary space. The discrete space acts as an accumulator array

since potential boundaries are progressively stored within the array. Because every set of

Page 64: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

47

potential boundaries contains the true boundary orientation, as more and more sets of potential

boundaries are added to the array, eventually the peaks of the true distribution will become

apparent. Clearly while the true grain boundary plane orientations are added to the accumulator

array, many false orientations are also included. To compensate for this error within the

distribution, an approximate background subtraction is performed to subtract the erroneous grain

boundaries from the distribution.

As only 1n must be characterized to finish forming the triple junction distribution, the

grain boundary stereology may be directly applied. This is roughly depicted in Figure 2.14d.

Potential 1n normals are formed about the plane 1 trace and for every potential 1n normal a 3n

may be found according to the potential junction geometry. Both of these are transformed to the

crystal coordinate frame and a unit value corresponding to the potential triple junction geometry

may then be added to the twin-dependent triple junction space. After this occurs for every twin-

dependent triple junction trace in the section plane, the background subtraction is applied. The

values within the distribution space are then normalized to values of MRD.

2.7.2 Advantages and Disadvantages of the Grain Boundary Plane Stereology

There are many advantages as well as a few notable disadvantages of the grain boundary

stereology. The primary advantage of the technique is its ease of application. The technique is

exceptionally simple compared to three dimensional techniques since it relies exclusively upon a

two-dimensional EBSD orientation map. This accounts for the many studies which have

employed this technique [36,38,81–84]. As already noted, this ease of application along with the

high data collection capacity of automated EBSD systems enables collecting the quantity of data

necessary to form twin-dependent triple junction distributions.

Page 65: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

48

The primary disadvantage of the technique is its inherent errors given its employed

approximations. One of the primary approximations of most concern is that of a random

distribution. In estimating an appropriate background subtraction, the applied distribution was

assumed to be random. While this enables the subtraction to be easily performed, the end result

is that the accuracy of the technique decreases as the sharpness of a measured texture increases.

This can clearly become problematic when attempting to analyze microstructures with a high

degree of anisotropy. As noted by Morawiec in a recent review of the technique, this assumption

makes it difficult to separate genuine features of distributions from artifacts of the method. He

also correctly observes that at times this technique has been applied with no accounting for its

potential inaccuracies [60]. These are valuable observations which should be accounted for

when analyzing results and drawing conclusions through this technique.

Despite its potential inaccuracies, this technique is still very valuable as a

characterization method. In previous studies good quantitative as well as qualitative results have

been obtained and validated. In these instances, distributions generated from the stereology were

compared to distributions obtained through a three-dimensional characterization technique and

good agreement was obtained [36–38]. This method has shown reliability for common textures

and while results will become less accurate as anisotropy increases, this method can still provide

general features of a distribution. As this technique in some applications provides quantitative

results and consistently provides qualitative results, it may be effectively used by recognizing its

limitations.

The value of this technique is also appreciated when the reliability of three-dimensional

results is considered as mentioned in the Introduction. As explained, the current three-

dimensional grain boundary plane characterization techniques have difficulty in collecting the

Page 66: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

49

quantity of data necessary for reliable distributions. Morawiec suggested focusing on the most

reliable points in the distribution which are the peaks. This could be accomplished by measuring

the grain boundary misorientations and plane orientations separately. Once the peaks are

identified the characterization techniques could focus upon the boundary planes at the peaks of

the misorientation distribution and vice versa. This would enable a sufficient amount of data for

statistical reliability to be collected in these regions of the distributions [60]. While this is a

valuable insight, identifying regions of interest is still a challenging task. A stereological

technique is perfectly suited to this task. As it is a relatively simple and inexpensive technique, it

could relatively easily identify regions of interest for boundary or triple junction distributions. In

addition to identifying distribution areas of interest, the twin-dependent triple junction

stereological technique could be applied in parallel with three dimensional approaches. This was

successfully demonstrated by Rohrer who used grain boundary plane stereology to refine his

three-dimensional reconstruction of serial sectioned EBSD data [38]. This was carried out by

comparing initial results to stereological results. When the results differed significantly,

refinements were made to the reconstruction process which brought the results into closer

agreement.

Page 67: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

50

CHAPTER 3

EMPIRICAL OPTIMIZATION OF THE TECHNIQUE

3.1 Practical Application Specifics

While all necessary theory for characterizing twin-dependent triple junctions from a

section plane has been provided, there are many practical details which have been briefly

mentioned or excluded. These are necessary for physically applying the technique whether for a

simulated or experimental distribution. CHAPTER 3 seeks to at least briefly summarize the

majority of these application specifics. The information within CHAPTER 3 will provide an

excellent resource for those seeking to apply this technique or to understand how portions of the

code function within the program. In addition, CHAPTER 3 provides understanding and

optimization techniques for those seeking to make modifications or improvements to this method

in the future. CHAPTER 3 principally addresses the method of mapping the distribution space

within the space array as well as optimizing the various distribution generation and stereological

parameters.

3.2 Mapping the Distribution Space

As explained, the distribution space is a subdomain of the full parameter space. This

subdomain has been selected from the parameter space by identifying cell parameters

corresponding to triple junctions with dihedral angles less than 180 degrees. The subdomain

distribution volume consists of 50% of the parameter space volume, though the subdomain

divides cells with disregard to cell boundaries. The distribution space therefore consists of

Page 68: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

51

discrete cells and portions of cells. The full parameter space then consists of three classes of

cells, those entirely within the distribution space, those which border the distribution space, and

those outside of the distribution space within the geometrically infeasible region. In addition, all

cells with any volume within the distribution space require a weighting factor which corrects the

inherent sampling biases within the distribution. To simplify the process of generating a triple

junction distribution, the space may first be mapped to determine which parameter cells

correspond to the distribution space and which cells require a weighting factor. After mapping

the distribution, the weighting factors for distribution cells may be generated.

As previously noted, for cells where much of the cell space lies outside of the distribution

space, the weighting can cause these cells to become unstable singular points within the

distribution. This is because few junctions within a uniform random distribution contribute to

these cells causing their values to approach zero. When the cell values are inverted to form

weighting factors, they become extremely large. To control these minor potentially unstable

distribution points, a filtering is applied to remove them from the distribution. Further details of

the process of mapping the space, generating weighting factors, filtering the distribution, and

generating a simulated triple junction distribution will be given. This will guide the reader more

thoroughly through the process and assist one in understanding the functionality and purpose

behind some of the code included within Appendix A.

The parameter space is developed within the software program as a six-dimensional

dynamic array which allows users to change the size of the array according to the desired

resolution. Program functions have been developed to identify cell indices within the array

according to input parameter values. To determine the cells which pertain to the distribution

space, the parameter space is analyzed cell by cell through the full range of indices. Random

Page 69: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

52

triple junctions are generated within each cell according to the corresponding cell parameters.

Triple junctions are generated according to cell parameters with disregard to whether the

junction dihedral angles are greater than or less than 180 degrees. For every triple junction

generated with dihedral angles less than 180 degrees, a unit value is added to the selected cell.

Clearly, after analyzing each cell, only cells which border the distribution space or are found

within the distribution space will have values added to them. Cells outside of the distribution

will have zero values associated with them. This method of mapping the space has been plotted

in Figure 3.1.

Figure 3.1 – The A1n planes of random triple junctions generated within the parameter

space at a fixed cos index.

Figure 3.1 consists of the southern hemisphere of the A1n stereographic projection at a

fixed cos index. The index was arbitrarily selected for demonstration purposes and pertains

to the peak index of the simulated distribution within CHAPTER 4. This fixed index is the cell

pertaining to 2582.cos . In the figure, 50 random triple junctions were generated within

each cell and these have been plotted as points in the projection. While 50 junctions per cell are

used in the figure to demonstrate the process, many more junctions per cell are required to

accurately map the space. For cells which border the distribution, the ratio of junctions

Page 70: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

53

generated to unit values added to each cell may be used as an estimate of the cell volume inside

and outside of the distribution. As the fixed number of random junctions generated for every cell

increases, the accuracy of this estimate increases.

The weighting factors are generated for all cells which have some volume within the

distribution space. These are created by generating uniform random triple junctions with all

sampling biases and geometries to be expected within a random twin-dependent triple junction

distribution. For every triple junction created, a unit value is added to the corresponding

distribution array cell until the random distribution converges. This typically requires on the

order of 107 triple junctions for a fixed misorientation at 10 degrees resolution. This results in

substantial computational time for the full space. A plot of this converged uniform random

distribution is given in Figure 3.2. This distribution was formed by 71053 . random triple

junctions at a fixed misorientation which is the appropriate number for a resolution of 10

degrees. The distribution is not normalized as the value within every distribution cell is the

cell’s corresponding weighting factor prior to filtering or inversion. Clearly, the cells along the

edge of the distribution have exceptionally small values relative to those at the biased peaks.

Figure 3.2 – The A1n planes at a fixed cos value for a uniform random triple junction

distribution with all expected sampling biases.

Page 71: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

54

Both the mapped distribution space data and weighting factors only need to be computed once as

they may be used for any triple junction distribution. For this reason they are written out to a file

to be recalled when generating distributions.

Prior to generating a triple junction distribution the weighting factors must be filtered to

remove singular points. This filtering must increase as the measured distribution data decreases

given the measured distributions contain more scatter. The weighting factors are filtered by

generating or recalling them from a file and removing factors according to size as a fraction of

the distribution average. The smallest values are removed in the process as this is prior to

inverting the factors. The weighting factors are then converted to values of MRD by dividing by

the distribution average. The process of generating the weighting factors is completed by

inverting them. The filtered weighting factors for a resolution of 10 degrees are plotted in their

corresponding cells in Figure 3.3.

Figure 3.3 – Filtered weighting factors within their corresponding cells within the

distribution space.

Notice the inverse relationship between Figure 3.2 and Figure 3.3. A few notable filtered cells

are visible along the edge of the distribution space. All of these cells had much of their volume

outside of the distribution and several of them are so minute they are barely visible in the figure.

Page 72: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

55

When forming a simulated distribution, the weighting factors may be recalled from their stored

location and the biased distribution multiplied cell by cell to remove all present biases.

The method outlined above for forming weighting factors is applicable to simulated

distributions. The same method is utilized when forming weighting factors for a stereologically

formed experimental distribution with the exception that the stereological approach is adapted

into the process. This method is briefly described as follows. A biased uniform random

distribution is reduced to experimental data as would appear in the section plane. This data is

then used to reconstruct the distribution using the stereological method. The filtered weighting

factors are then formed from the reconstructed random distribution. In this manner, the slight

differences in bias as introduced by the stereological method are incorporated into the

experimental weighting factors. When implementing the stereological method, in this instance

the background subtraction isn’t needed given the distribution implemented was a uniform

random distribution [66].

3.3 Selecting Optimal Mapping, Distribution, and Stereological Parameters

While the method of mapping, weighting, and filtering the distribution has been

described in moderate detail, one might question how quantitative values are selected for the

many implemented distribution generation parameters? For instance, intuitively the distribution

results tend to improve as the singular points along the edge of the distribution are filtered. In an

equal measure, as the distribution is filtered and cells eliminated, the distribution is being

reduced in volume and accuracy. At what point do the improved results and volumetric error

strike an optimal balance? How are the values of the filtering parameters selected so as to

generate the optimal results? This section will focus on the methods used to find optimal values

Page 73: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

56

for all parameters utilized in the generation of twin-dependent triple junction distributions. A

table of distribution generation parameters is given along with basic definitions in Table 3.1.

Generation Parameter Definition

RandCellPtsGeom

The integer number of random triple junctions created in each cell in order to map the

distribution space. As this number increases so does the accuracy of determining

regions of cells inside and outside of the distribution space.

RandTraceVects

The integer number of random triple junctions generated within the distribution space

in order to form weighting factors. The name is derived from the fact that these triple

junctions are first formed from random traces in a section plane in order to create

natural distribution biases.

AvgPtFractionSim

The fraction of the distribution normal below which a cell will be filtered from the

distribution after filling the space with RandTraceVects.

SimDataValues

The integer number of simulated triple junctions within the simulated distribution.

This number also reflects the number of simulated junctions which will be converted

to simulated experimental data for application of the stereological method.

Table 3.1 - Table of parameters necessary for generating triple junction distributions.

The listed parameter names are the variable names as implemented in the program in the

Appendix. These parameters are those used for generating a simulated distribution. As the

experimental portion of the program is so similar in construction to the simulated portion, it is

considered a suitable approximation to use the optimized simulation parameter values for their

experimental parallels.

The stereological method has several parameters which have already been described in

the application of the grain boundary plane stereological approach. These parameters must also

be analyzed so as to find their values which provide the optimal balance of performance and

computational time. These factors and their brief descriptions are given in Table 3.2.

Page 74: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

57

Stereological Parameter Definition

Cos111N2Discrt

The integral number of potential 2n planes implemented in finding the 111

direction from the measured plane 2 trace.

CosN1Discrt

The integral number of potential 1n planes implemented in the grain boundary plane

stereology to find the actual 1n orientation.

CosN3Discrt

The integral number of potential 3n planes implemented in finding the 3n

orientation given the potential 1n orientation.

Table 3.2 – Table of parameters necessary for adopting grain boundary plane stereology

to triple junctions.

Given the distribution generation parameters may be applied to a simulated distribution

with no required stereology, these parameters may be optimized independent of the stereological

factors. Once the generation parameters are optimized, the stereological parameters may then be

found at optimal values.

3.3.1 Optimizing the Distribution Generation Parameters

Given the nature of the distribution generation parameters and preliminary experience in

developing them, it was expected that the selected magnitudes of the parameters would have

significant effect on the quality of the distribution. It was also anticipated that a few parameter

interactions would be present as some parameters are interdependent. Given these expectations,

factorial designs were progressively implemented to determine optimal values for the generation

parameters. Quantitative measures of distribution quality had to be developed prior to carrying

out the factorial designs. Three measures may be implemented to quantify distribution quality.

These measures are a difference value, distribution range, and the fraction of the filtered cell

volume. The difference value is formed by adaptation of the relation provided by Morawiec for

comparing smooth orientation functions/distributions. This relation is given by:

Page 75: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

58

dOOfOf 212

1

where 1f and 2f are the distributions of interest and O is a given orientation. Given the

normalization of 1f and 2f , the result of this method provides a number between 0 and 1 with 0

corresponding to identical distributions [70]. The technique may be adapted to the discrete twin-

dependent triple junction distribution in an attempt to provide a quantitative measure of

similarity between functions. While this technique should be applied to smooth distributions, the

distributions in this application will be assumed smooth enough. To adapt this method to the

discretized twin-dependent triple junction distribution the following relation may be used:

N

i

iiN 1

212

1 ( 3.1 )

where i1 and i2 are two discrete triple junction distributions at cell i and N is the

number of cells within the distribution space. Identical to the relation given by Morawiec, this

relation provides difference values in the range of 0 to 1. In order to apply this relation in a

factorial design, all distributions should be formed identically and compared to a target ideal

distribution. If a uniform random distribution is selected as the target distribution, it will have

the value of 1 everywhere. Equation ( 3.1 ) may be adapted to this specific application by the

following relation:

N

i

iN 1

12

1

where i is the uniform random twin-dependent triple junction distribution generated at each

run of the factorial design. The difference value as a result of this relation provides a single

scalar value which describes the similarity of the distribution to a random distribution.

Page 76: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

59

Experience has shown the relation to be quite sensitive to quantifying distribution similarity. For

a uniform distribution the value provides a nice measure of convergence for the distribution as a

whole, but might not necessarily be sensitive to singular points within the distribution.

To more expressly quantify the presence of singular points within the distribution, the

range of the random distribution will be measured for each factorial run. The range of a

distribution is ideal for recognizing distribution outliers. As a random distribution should have

the value of 1 everywhere, the singular points are cells of uncharacteristically high intensity far

from the average value of 1. Therefore, a large range value will tend to be indicative of singular

points. A large range might also indicate a distribution with significant scatter whereas a smaller

range indicates a converged distribution. The final measure of distribution quality is the fraction

of cell volume filtered from the distribution space. This cell volume is excluded from the

distribution space on account of filtering the singular points from the distribution. While the

fraction of excluded cell volume is typically low, on the order of 1% of the distribution space,

this value should be kept at the minimal possible level as it indicates missing volume from the

distribution. Given these measures are applied to a uniform random distribution, the best quality

distribution would have the lowest possible values of difference, range, and fraction excluded

cell volume. As the fraction excluded cell volume and range and difference values are

competing responses, the factorial designs will allow values of the implemented generation

factors to be identified so as to provide the optimal results.

3.3.1.1 Two-Level Factorial Design

A preliminary two-level factorial design was implemented to analyze the effects and

interactions of the distribution generation parameters. One of the motives for implementing the

Page 77: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

60

two-level factorial design was to identify factors with no effect or interactions on the

distribution. These factors could then be excluded in the following designs where optimization

is possible and more runs are necessary. The four distribution generation parameters:

RandCellPtsGeom, RandTraceVects, AvgPtFractionSim, and SimDataValues where

implemented as factors in the design. The generated uniform distribution difference and range

values were implemented as responses. Most of the factorial work was carried out using Minitab

17 statistical software. The high and low factor levels were identified by preliminary experience

with the parameters. Given the computational time per run was relatively short, 8 replicates at

each level of the design was selected. This was assumed to be more than sufficient, but a

retrospective analysis was completed after determination of the responses using the Minitab

Power and Sample Size estimator. The results indicated that with 95% power the design was

capable of reliably determining changes in effect at the sizes of .001 and .0001. Clearly this

number of replicates was ample as the transformed responses were on the order of 110and

010 .

Page 78: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

61

Figure 3.4 – Residual plots for difference response

Figure 3.5 – Residual plots for range response

Page 79: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

62

Before the Analysis of Variance (ANOVA) procedure may be reliably used to judge the

statistical significance of effects within a factorial design, necessary assumptions must be

satisfied. The essential assumptions for performing an ANOVA is the normal distribution and

equal variance of values for every factor level [85]. After generating the responses at each factor

level for the two-level design, the plots of the residuals clearly indicate issues with both of these

assumptions [86]. If the values at each factor level were normally distributed, the points in the

Normal Probability Plot would follow a straight line.

This is not the case for either the difference or range values. In addition, as the results of

the normal probability plots are at times difficult to quantify, the Anderson-Darling test may be

applied to test the assumption of normality. This test was applied in concordance with the

generation of the normal plot. As evidenced by the p-value to the right of the normal plots in

both Figure 3.4 and Figure 3.5, the Anderson-Darling test indicates that the normality

assumption does not hold for the difference or range values.

The residual plots and statistical tests also indicate that the assumption of equal variance

does not hold for the selected responses. The Versus Fits plots in both Figure 3.4 and Figure 3.5

resemble a megaphone in which the variance is increasing with magnitude. If the assumption of

equal variance held, these plots would have no distinguishable pattern. This conclusion is further

corroborated by plots of the standard deviation of the responses vs. the mean of the responses.

These plots directly demonstrate an increase in variance with magnitude [87].

Page 80: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

63

Figure 3.6 – Standard deviation vs. mean for both the range and difference values. These

plots demonstrate the increase in variance with increasing magnitude.

As quantitative statistical tests may be easily performed within Minitab, Leverne’s test and

Multiple Comparisons were applied to assess the equal variance assumption. The range and

difference values also consistently failed these tests.

In order to apply an ANOVA to the two-level factorial, a variance stabilizing

transformation may be applied to the responses such that the necessary assumptions are met.

Conclusions may be drawn about the transformed data in order to find the optimal parameter

values. As a variance stabilizing transformation tends to improve the normality of the data, this

transformation will be applied prior to attempts to address the non-normality of the data.

Montgomery has provided a table for empirically selecting a suitable transformation and a

simple method of empirically estimating the appropriate transformation [86]. Both of these

methods were used to select a transformation for the two-level factorial.

The transformed responses were tested with the Bartlett’s, Leverne’s, and the Multiple

Comparisons test for equal variance to determine if the transformation was successful. The most

successful transformation was identified as that which resulted in the highest p-values for all

three tests. Unsurprisingly, the best transformation identified by empirically trying all possible

transformations was the same transformation identified using the empirical estimation method.

Page 81: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

64

This transformation was the reciprocal square root of the responses. After identifying the

reciprocal square root transformation for equal variance, the Anderson-Darling test was applied

to verify if the normality assumption was met by the transformed data. The Anderson-Darling

test indicated that the normality assumption was met and the ANOVA could therefore proceed.

For comparison to Figure 3.4 - Figure 3.6, plots of the standard deviation vs. mean and residuals

of the transformed data are shown in Figure 3.7 - Figure 3.9.

Figure 3.7 - Standard deviation vs. mean for the transformed range and difference values.

These plots demonstrate the result of the equal variance transformation.

Page 82: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

65

Figure 3.8 – Residual plots for reciprocal square root range response.

Figure 3.9 – Residual plots for reciprocal square root difference response.

Page 83: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

66

The outcomes of the ANOVA on the transformed responses are given in Figure 3.10 -

Figure 3.15 [88]. As apparent in these plots, with good confidence we can conclude that the

parameter RandCellPtsGeom has no effect on the responses. This is indicated by the horizontal

lines on the Main Effect plots. This observation is further supported by the Normal Plots of

Standardized Effects where the significant effects diverge from the plotted red line. For an

unknown reason RandCellPtsGeom was plotted as a significant effect in Figure 3.13 despite its

position on the plotted red line and the absolutely horizontal line in Figure 3.12 which indicate

otherwise. In addition to having no effect on the responses, RandCellPtsGeom has no

interactions with any other parameters as indicated by the consistently parallel lines in Figure

3.14 and Figure 3.15.

In retrospect, the lack of effects and interactions on account of RandCellPtsGeom seems

obvious given the role of the parameter. RandCellPtsGeom is used to map the parameter space

and identify the cells that pertain to the distribution space and those which lie outside of the

distribution space. Large values of RandCellPtsGeom would accurately map the space while

small values would poorly map it and effectively filter out the smallest edge cells. This should be

the role of the following generation parameter AvgPtFraction. Changing values of

RandCellPtsGeom will affect the amount of partial cells filtered by AvgPtFraction, but have

almost no effect on the total volume filtered. This is because AvgPtFraction is filtering much

more volume than RandCellPtsGeom is inadvertently doing through poor mapping. Therefore,

RandCellPtsGeom has no effect on distribution quality since it is followed by the filtering

parameter AvgPtFraction.

Page 84: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

67

Figure 3.10 – Main effects for reciprocal square root range.

Figure 3.11 – Normal plot of the standardized effects with the reciprocal square root

range as the response. This plot distinguishes significant from non-significant effects.

Page 85: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

68

Figure 3.12 – Main effects for reciprocal square root difference.

Figure 3.13 – Normal plot of the standardized effects with the reciprocal square root

difference as the response. This plot distinguishes significant from non-significant effects.

Page 86: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

69

Figure 3.14 – Interactions for reciprocal square root range.

Figure 3.15 – Interactions for reciprocal square root difference.

Page 87: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

70

As the value of RandCellPtsGeom has no effect on distribution quality or interactions

with other parameters, a fixed value may be selected for this parameter without concern for

affecting the distribution results. It makes better sense to do a true job of mapping the space

prior to filtering the distributions. The size of the empty geometric region within the parameter

space was plotted as a function of RandCellPtsGeom for both the equal and unequal volume cell

distributions. The plot is shown below in Figure 3.16. As the computational time for this factor

is relatively short and the space requires mapping only once, it made the best sense to select a

value which provided a nicely converged space. The RandCellPtsGeom value of 12,500

sufficiently meets the discussed criteria.

Figure 3.16 - The cells within the empty geometric region of the parameter space as a

function of RandCellPtsGeom

It might be noted that the fraction of the filtered cell volume was not included in this

factorial design as a response, as were the difference and range values. That was because at this

point in the project the fraction of the filtered cell volume had not yet been identified as a key

measure for parameter optimization. Nonetheless, this should not affect the results of this two-

level factorial. The key purpose of this factorial was to exclude parameters which have no effect

on the distribution quality. As RandCellPtsGeom had no effect on the difference or range

Page 88: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

71

values, it wouldn’t have effect on the fraction of filtered cell volume. This is because the

AvgPtFraction parameter primarily excludes values from the distribution. It was for this same

reason that the difference and range values were not affected by the RandCellPtsGeom factor.

As the fraction of filtered cell volume and difference and range values are inversely related, it

seems impossible to affect the filtered cell volume without affecting the difference and range.

3.3.1.2 Response Surface Design

After successfully identifying important parameters in the two-level factorial design, a

two-level factorial design with center points was implemented to test for curvature within the

model. If curvature does not exist, the linear model as generated through a two-level factorial

design should be sufficient for optimization. After testing for curvature it was found that

curvature is statistically significant. For this reason a response surface design was implemented

in order to find the optimal values of the remaining distribution generation parameters which

provide the maximum distribution quality.

A response surface design was created using the remaining distribution generation

parameters, RandTraceVects, AvgPtFractionSim, and SimDataValues, as factors. Each factor

was tested at five levels corresponding to two axial points, two cube points, and a center point.

The responses of the design were the range, difference, and the fraction excluded cell volume for

the generated random distributions. Eight replicates were implemented for each run of the

design. As this number of replicates was more than sufficient for the two-level design, it will no

doubt be ample for this design where the factors are decreased and run levels increased.

A similar procedure was followed in this experiment as was followed for the two-level

factorial. Plots of the standard deviation vs. mean for each response indicated a variance

Page 89: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

72

stabilizing transformation would be necessary. Variance stabilizing transformations were

empirically estimated and then selected as previously described. The responses were

transformed as follows: the range was transformed with the reciprocal square root

transformation and the difference and fraction excluded cell volume were transformed with a log

transformation. While the equal variance transformations visibly improved the equal variance of

all the responses, the difference transformation was the only transformation which passed all of

the statistical tests for equal variance. Unlike the transformed responses in the two-level

factorial, the equal variance transformation did not sufficiently improve the normality of any of

the responses such that the assumption of normality was met by the Anderson-Darling test.

Because the reciprocal square root range transformation results in a positive response, a Box Cox

normality transformation could be applied until the normality assumption was met for this

response. As Bower noted, an ANOVA works fairly well even if the normality assumption

remains unmet, as long as the distributions are not highly skewed or the variances are very

different [85]. This appears to be the case for these transformations and we will assume we have

met the assumptions sufficiently in this design to proceed with the analysis.

Once the models were fit to the design, the Response Optimizer tool within MINITAB

was utilized to find the parameter values which provided the optimal response. The responses

were all equally weighted within the optimizer and the graph produced by the optimization tool

is given below in Figure 3.17. While the graph shown provides optimal values in red, each

parameter may be individually adjusted and optimal values found for that setting. This was

utilized in order to find optimal values as SimDataValues, or the number of data points within

the distribution, was reduced. As was expected, as SimDataValues is reduced, AvgPtFraction, or

the filtering, had to increase. RandTraceVects, or the number of triple junctions implemented to

Page 90: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

73

form the weighting factors, remained constant at the shown optimal level. The change between

SimDataValues and AvgPtFraction was plotted in Excel and a polynomial fit to this relationship.

This fit was then coded into the program in order to identify the level of filtering for a given

quantity of data.

Figure 3.17 – Optimal parameter values for the distribution generation parameters as

produced by the response surface design.

Page 91: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

74

Figure 3.18 – The rate of filtering according to the quantity of data.

In summary, factorial designs were implemented in order to find optimal values for the

distribution generation parameters RandCellPtsGeom, RandTraceVects, AvgPtFractionSim, and

SimDataValues. As RandCellPtsGeom was identified as having no effect on the quality of the

distributions, a fixed value was selected where the empty geometric region within the space had

practically converged. The values for the factors RandTraceVects, AvgPtFractionSim, and

SimDataValues were selected using the Minitab response optimizer on the results of a response

surface design. RandTraceVects was optimally selected at 61035 triple junctions and the value

of AvgPtFractionSim varies according to the quantity of SimDataValues. The relationship

between these two parameters was fit with a polynomial and included in the program. The

values identified here were for the equal volume space distribution. As the equal and unequal

volume distributions differ in structure, the method had to be repeated for the unequal volume

space. Optimal parameter values and a relationship between AvgPtFractionSim and

SimDataValues was also identified for the unequal volume distributions and included in that

program. The results here were found for a 10 degree resolution. For another resolution the

distribution generation parameters must be found anew. They might be scaled from these

Page 92: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

75

parameters according to the change of cells within the space, but that would likely provide only a

rough estimate of the true values.

3.3.2 Optimizing the Stereological Parameters

As explained in Section 3.3, the distribution generation parameters were generated for a

simulated twin-dependent triple junction distribution in which all parameters of the given triple

junction are known. When generating a twin-dependent triple junction distribution

experimentally, identical generation parameters are necessary as well as several parameters

implemented in the stereological approach. Given the similarity of the structure of the simulated

and experimentally formed distributions, the values of the simulated distribution generation

parameters may be implemented in the experimental portion of the program. This substitution is

approximate in nature, but significantly simplifies the process of finding suitable generation

parameter values and seems to yield good results. The values of the parameters associated with

the stereological portion of the program also require optimization and this section will describe

the methods used in doing so.

3.3.2.1 Selecting a Value for Cos111N2Discrt

As described in Section 2.7.1, after identifying the coherent twins in a section plane,

potential boundary plane normals may be formed over a hemisphere about the twin trace. Given

the boundary is a coherent twin within an FCC material, it is known that the true boundary

normal points in a 111 direction within grain A. The potential normals may be transformed

from the sample reference frame to the crystal frame according to the relation:

22 nn AA g

Page 93: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

76

The transformed potential normal closest to a 111 direction may be identified as the true

normal. This procedure was depicted in Figure 2.14c on page 44. The parameter

Cos111N2Discrt is the integral number of potential twin normals formed about a trace to find the

true normal. It might be asked, what is the required quantity of potential normals to successfully

identify the true twin normal?

Potential twin normals were generated about the traces of 10,000 simulated known

coherent twin boundaries at varying levels of Cos111N2Discrt. The reconstructed twin was

tracked and failures in the reconstruction process recorded. The results of this study are shown

in Figure 3.19a. As apparent in the figure, as the number of potential normals increase, the

number of incorrectly reconstructed normals decrease. This relationship follows a power law

and the greatest rate of improvement occurs early in the plot. The failures are likely due to the

hemisphere of potential normals crossing a 111 direction in addition to the true 111 direction.

When the discretization is low, a potential normal is occasionally closer to an incorrect 111

direction than the potential normal nearest the true 111 direction. As the discretization

increases, the likelihood of a potential normal being nearer an incorrect 111 direction than the

potential normal nearest the true 111 direction decreases. The computational time for

increasing values of Cos111N2Discrt is plotted in Figure 3.19b. As visible in the figure, this

relationship follows a linear relationship.

Page 94: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

77

Figure 3.19 – (a) The failures in the twin boundary plane reconstruction for 10,000 twin

traces as a function of Cos11N2Discrt. (b) The twin boundary plane reconstruction

computational time for 10,000 twin traces as a function of Cos11N2Discrt.

In an attempt to try to find an optimal balance between the rate of boundary plane

assignation failure and the computational time as a function of Cos111N2Discrt, these

relationships were normalized and equated as shown in Figure 3.20. The intersection of the two

relationships in Figure 3.20a, or the root of the function in Figure 3.20b, was found by Newton’s

method. For a relative error of 6101 the root is 527.01.

Figure 3.20 – (a) The rate of boundary plane assignation failure and computational time

normalized and plotted on the same graph as a function of Cos111N2Discrt. (b) The

equated normalized rates of boundary plane assignation failure and computational time as

a function of Cos111N2Discrt.

Page 95: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

78

The root 527 will be treated as a minimal rather than optimal value given the small

penalty in computational time for increased accuracy. This seems especially reasonable when it

is noted that a boundary plane assignation failure results in the diminishing of an experimental

value since the triple junction has been mis-identified and stored in the incorrect location within

the array. In estimating the convergence of the failures vs. discretization in Figure 3.19a, a step

size of one was implemented for the plotted relationship and the error between each progressive

step and the previous step computed. For a relative error of .001 and absolute error of .01 a

value of 1631 was obtained. This value may be utilized as an approximate convergence point for

the Failures vs Cos111N2Discrt relationship. While 527 might be treated as a minimum bound,

1631 could be treated as a maximum bound given there is little improvement in accuracy of

assignation after this point. There is only 6 additional seconds in computational time between

the upper and lower bounds for an improvement in failures from approximately .5% to .09%.

This 6 additional seconds becomes approximately 10 minutes when the 10,000 triple junctions

are scaled to 610 , which is the expected order of magnitude for the required experimental data.

10 minutes is almost negligible compared to the time required for the experimental data

collection, therefore the value of 1631 is utilized in this work. If computational time becomes a

significant problem, it might be reduced for a minute loss in quality by decreasing the value of

Cos111N2Discrt.

3.3.2.2 Optimizing CosN1Discrt and CosN3Discrt

As explained in Section 2.7.1, the stereological method is similar to the twin boundary

plane identification in that potential boundary normals are assigned to the traces of plane 1 and

plane 3 as they appear in the section plane. As opposed to the twin boundary, the correct

Page 96: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

79

orientations of A1n and A3n are unknown from the trace alone and therefore all potential normals

are added to the distribution space array. After all potential boundaries are added to the

distribution, the true peaks of the distribution will become apparent and a background subtraction

is applied to remove the effects of the incorrect potential boundaries. CosN1Discrt and

CosN3Discrt are the integral number of potential boundary normals applied to the plane 1 and

plane 3 traces.

CosN1Discrt and CosN3Discrt are utilized not only for the experimental application of

the stereology, but are first implemented in forming the experimental weighting factors. To form

the experimental weighting factors, the stereological method is applied to trace vectors generated

from a highly converged uniform random triple junction distribution. Identical to the method of

forming simulated distributions, these weighting factors are then stored so that they may be

recalled when experimentally forming a distribution through the stereological method. Given the

random distribution utilized to form the experimental weighting factors must be highly

converged, it requires millions of triple junctions at a fixed misorientation. This number of triple

junctions is the experimental equivalent of the simulated parameter RandTraceVects, therefore

for a fixed misorientation at 10 degrees resolution, 61035 triple junctions are utilized. Clearly,

applying large values of CosN1Discrt and CosN3Discrt to this large number of traces greatly

increases the computational time. For this reason, values of CosN1Discrt and CosN3Discrt must

be selected so as to provide the optimal balance of experimental distribution quality for the

minimal amount of computational time.

Similar to the method utilized in optimizing the distribution generation parameters,

factorial designs were progressively implemented in order to find optimal values of CosN1Discrt

Page 97: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

80

and CosN3Discrt. While CosN1Discrt and CosN3Discrt were always kept simultaneously at the

same level, the level of CosN1Discrt and CosN3Discrt was tested for generating weighting

factors and the experimental distribution. Therefore there were two factors within the designs

consisting of the value of CosN1Discrt and CosN3Discrt for the weighting factors and the value

of CosN1Discrt and CosN3Discrt for the experimental method. The responses implemented in

these designs were a difference value from 0 to 1 and the computational time. The

stereologically generated distribution was constructed from traces generated from a known

simulated distribution. The known simulated distribution was not a uniform distribution as for

the distribution generation parameters, but had features which the stereological method

attempted to reconstruct. The similarity relation in Equation ( 3.1 ) on page 58 was utilized with

the adaptation that one of the distributions was the simulated distribution while the other was the

stereologically reconstructed distribution. For clarity this relation may be rewritten as:

N

istereosim ii

N 12

1 ( 3.2 )

A two-level factorial design with center points was generated with six replicates at every

run. As before, a retrospective analysis confirmed the number of replicates using the Minitab

Power and Sample Size tool. The preliminary two-level factorial allowed prerequisite testing for

curvature, significance, and sample size prior to the anticipated response surface design. The

high and low levels of CosN1Discrt and CosN3Discrt were 90 and 15. Given experience in

working with the stereological parameters, it was estimated that the optimal values were within

this range. Saylor also indicated there were no changes in results for values down to 15 in the

grain boundary plane stereology [66].

Page 98: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

81

After generating the difference and computational time responses, the plots of the

residuals revealed that the difference response likely held true to both the assumption of

normality and equal variance whereas the computational time response did not. The statistical

tests for validity were applied as well. The computational time results failed the Anderson

Darling test for normality while the difference results passed. The difference results passed the

statistical tests for equal variance, or the Bartlett’s, Leverne’s, and the Multiple Comparisons

tests, while the computation time results failed almost all of them. A plot of the standard

deviation vs. mean showed an identical trend of unequal variance for the computational time.

Identical to the factorial design applied to the distribution generation parameters, a

variance stabilizing transformation was empirically estimated in the method suggested by

Montgomery for the computational time response. After applying this transformation, which

was the reciprocal square root transformation, the residual plots greatly improved and the

normality and equal variance assumptions were validated by the previously applied statistical

tests. The Box-Cox transformation for normality was applied to the computational time results

after removing insignificant terms from the model. As curvature was significant within the

design a response surface design was needed to select optimal parameter values.

The response surface design was formed and both the variance stabilizing

transformations and automated Box Cox normalizing transformations applied. The Minitab

response optimizer was applied in order to identify optimal parameter values. As the response

optimizer allows weighting the responses according to importance, several sets of optimal

parameters were generated according to various levels of weighting. These results are shown

below in Table 3.3. The first column in the table indicates the relative weighting of the

responses according to importance. For instance, in the first row the reciprocal square root

Page 99: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

82

computational time and difference values are weighted equally in importance. As the emphasis

on the quality of results might be considered more important than the computational time, the

difference is progressively weighted higher in importance in the lower rows. In the last column,

the reciprocal square root computational time is given no importance. The intention of these

rows of data was to look for trends in the parameter values and to be able to consider the effects

of differing levels of relative importance. The parameter values were as provided within the

optimizer with the exception of the last row. In this instance, the values were manually adjusted

as low as possible while still keeping them close to optimal positions within the model.

Table 3.3 – Response surface results from the Minitab Response Optimizer.

After generating the table of results, the parameter values were tested at these levels

within the program. The results of these runs at optimal levels are summarized in Figure 3.21.

The figures require some explanation to clarify what they demonstrate. The pairs of number in

the legend are the sets of parameter levels. The number on the left in the legend is the value of

CosN1Discrt and CosN3Discrt when forming weighting factors. The number on the right in the

legend is the value of CosN1Discrt and CosN3Discrt when forming the experimental distribution

from simulated trace values. The graphs in parts (a) and (b) should be examined together as they

individually show different features of the same parameter pairs. From the figure it is clear that a

small relative increase in the computational time can cause a significant improvement in the

1/sqrt(Comp. Time)

Vs. Difference

Weighting

CosN1Discrt

CosN3Discrt

Weighting Value

CosN1Discrt

CosN3Discrt

Experimental Value

1 to 1 39 18

1 to 2 43 25

1 to 3 46 29

1 to 4 48 33

1 to 5 50 36

0 to 1 60 60

Page 100: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

83

difference value. In addition, the amount of time to form the experimental distribution is

miniscule compared to the amount of time required to form weighting factors. Therefore the

values in the right of the legend could be increased to the level of the weighting factor level in

the left for a small penalty in computational time. In addition, it makes more logical sense that a

distribution be weighted with the same CosN1Discrt and CosN3Discrt parameter levels with

which it was formed.

Figure 3.21 – Performance of optimal parameter values within the actual program. (a)

The computational time versus difference for using the selected parameter value in the left

of the legend to generate weighting factors. (b) The computational time versus difference

for using the selected parameter value in the right of the legend to generate the

experimental distribution from simulated trace values.

A set of parameter levels where the weighting values and distributions are formed with

the same level of CosN1Discrt and CosN3Discrt were tested in the program and these results are

demonstrated in Figure 3.22. When comparing these values to those in Figure 3.21, note that

almost all the points in Figure 3.21 have a higher difference value than those in Figure 3.22.

This is occasionally for comparable computational time. Clearly, matching the parameter values

will provide consistently better performance. The key to selecting optimal values from Figure

3.22 is to choose values which are as low and as far left as possible. The values tested at a

Page 101: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

84

matched value of 46 for CosN1Discrt and CosN3Discrt standout in that they gave the best

performance for the smallest amount of computational time. Given the first data point appeared

to be an outlier, several more were generated at this level but they appear to consistently

outperform the other levels. These values were selected and implemented in the program.

Figure 3.22 – Performance of parameter values within the actual program where the

parameter values are equally matched when forming the weighting factors and the

experimental distribution.

Section 3.3.2 describes the methods implemented to select optimal values for the

stereological parameters. As the stereological parameters were optimized at a fixed

misorientation, the computational time and other data in Section 3.3.2 should be considered in

that context. Despite selecting the parameter values for a single fixed misorientation, the

parameter values should be applicable to other misorientations and the full space. These results

are for a resolution of 10 degrees and different optimal parameter levels would have to be found

for a change in resolution. The parameter values found in Section 3.3.2 were directly

implemented in the unequal volume solution since it implements the identical stereological

method. This assumption of equivalence has provided good results for unequal volume

distributions.

Page 102: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

85

CHAPTER 4

RESULTS

4.1 Validating the Method

The proposed technique of generating twin-dependent triple junctions from a section

plane was validated by applying the method to a known twin-dependent triple junction

distribution. The results between the known and stereologically generated distribution were

compared to assess the accuracy of the procedure. The method of validation employed in this

work is very similar to the approach utilized by Saylor et al. for the grain boundary stereology

[66]. A simulated twin-dependent triple junction distribution was generated and then two-

dimensional EBSD data, as would be collected in a section plane, were generated from this

known distribution. The simulated distribution was produced in the method outlined by

Morawiec for generating non-uniform distributions [70]. An arbitrary peak was selected within

the distribution space at 1211 An , 1112 An , and 1023 An or 104.96 and

2582.cos . The frequency function, which is Gaussian in nature and forms the peak in the

distribution, was adopted from that used by Saylor et al. [66]. The function is given by:

CB

AF

2

exp

Where factors A, B, and C were selected as 10, 15, and 3.5. These factors differ from

those used by Saylor as they were adapted for the change in space. is the average angle

Page 103: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

86

between A1n and A3n of the selected peak triple junction and the A1n and A3n planes of a randomly

generated junction. Clearly, values with greater proximity to the peak value result in a larger

frequency value F. A distribution was formed by conditionally accepting randomly generated

junctions. Random twin-dependent triple junctions were formed and a frequency value F

generated for every junction. This F value was then compared to a randomly generated number

within the range [0, Fpeak], where Fpeak is the maximum possible frequency value or where

equals 0. The triple junction was accepted and added to the distribution space if its

corresponding F value was greater than or equal to the randomly generated number. When a

triple junction was added to the space, a unit value was added to the cell within the distribution

space corresponding to the triple junction character.

The experimental data were generated from the simulated distribution by adapting the

method implemented by Saylor [66]. A random orientation Ag was formed and the neighboring

orientation Bg was generated according to a preselected misorientation relationship ABg . Each

accepted junction and associated crystal frame was randomly rotated such that the twin pointed

to a 111 direction. Each junction was then rotated by 1

Ag , the inverse of the crystal reference

frame, so as to rotate the values to the sample reference frame. Trace vectors were then

generated from the triple junction boundary planes. At this point the trace vectors and ABg

appeared as if extracted from section plane EBSD data. This data generated from the simulated

distribution was then characterized by the stereological method. If the experimentally generated

distribution resembled the simulated distribution, the technique could be considered successful.

Page 104: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

87

4.1.1 Visual Validation of the Technique

The results of the validation method are produced visually by plotting the simulated and

stereologically generated distributions in Figure 4.1 through 8. The validation was performed for

a fixed misorientation in order to simplify the computational process. The conclusions drawn

from inferring these results to the full space will be discussed within the Conclusions section.

The fixed misorientation was selected as a 20 degree rotation about 952 . Originally this

rotation was selected given it is at the center of the stereographic triangle and not subject to any

special bi-crystal symmetries [34,68,75,76]. Now that the method of weighting the distribution

to remove sampling biases is implemented, bi-crystal symmetries should have no effect and the

misorientation angle/axis selection is arbitrary.

Figure 4.1 depicts a simulated distribution generated in the equal volume cell distribution

space, while Figure 4.3 depicts the same distribution in the unequal volume cell distribution

space. This distribution was generated with an arbitrary peak at 1211 An , 1112 An , and

1023 An as previously mentioned. Figure 4.1a and Figure 4.1b consist of the southern and

northern hemispheres of the stereographic projections of A1n for fixed values of cos at center

cell values. Figure 4.3a and Figure 4.3b consist of the southern and northern hemispheres of the

stereographic projections of A1n for fixed values of at center cell values. Figure 4.1 or Figure

4.3 represent the full distribution boundary space at a fixed misorientation.

Page 105: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

88

Figure 4.1 – Simulated distribution generated in the equal volume cell distribution space.

The peak of the distribution is located at 1211 An , 1112 An , and 1023 An or

2582.cos . (a) Southern hemispheres of the stereographic projections of A1n for

fixed values of cos at center cell values. (b) Northern hemispheres of the stereographic

projections of A1n for fixed values of cos at center cell values.

Page 106: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

89

Figure 4.2 – Stereologically generated distribution from simulated experimental data

created from the junctions in Figure 4.1. Comparison of Figure 4.1 and Figure 4.2

provide a qualitative visual validation of the implemented stereological method. (a)

Southern hemispheres of the stereographic projections of A1n for fixed values of cos

at center cell values. (b) Northern hemispheres of the stereographic projections of A1n for

fixed values of cos at center cell values.

Page 107: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

90

Figure 4.3 – Simulated distribution generated in the unequal volume cell distribution

space. The peak of the distribution is located at 1211 An , 1112 An , and 1023 An

or 104.96 . (a) Southern hemispheres of the stereographic projections of A1n for fixed

values of at center cell values. (b) Northern hemispheres of the stereographic

projections of A1n for fixed values of at center cell values.

Page 108: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

91

Figure 4.4 – Stereologically generated distribution from simulated experimental data

created from the junctions in Figure 4.3. Comparison of Figure 4.3 and Figure 4.4

provide a qualitative visual validation of the implemented stereological method. (a)

Southern hemispheres of the stereographic projections of A1n for fixed values of at

center cell values. (b) Northern hemispheres of the stereographic projections of A1n for

fixed values of at center cell values.

Page 109: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

92

The white areas of the plots represent the regions of the parameter space pertaining to

thermodynamically or rather geometrically infeasible triple junctions. The distribution space

within the parameter space pertains to the colored areas of the plots. As apparent in the plots, the

distribution discrete cells are plotted directly with no interpolation between cells. This accounts

for the pixel-like colored squares of the projections. While these raw distribution plots are not as

visually appealing as a plot that has been artificially smoothed, the results are true to the actual

distribution. Further details for interpreting these plots were discussed in Section 2.3.3.

The EBSD or stereographic data used to generate the equal volume distribution in Figure

4.2 were created from the triple junctions within the simulated distribution in Figure 4.1.

Likewise, the stereographic data used to generate the unequal volume distribution in Figure 4.4

were created from the triple junctions within the simulated distribution in Figure 4.3. The

experimental distributions in Figure 4.2 and Figure 4.4 were generated from 500,000 triple

junction measurements at a fixed misorientation. The simulated distributions in Figure 4.1 and

Figure 4.3 were generated from approximately 500,000 triple junctions at a fixed misorientation.

The slight difference in triple junctions implemented in the experimental and simulated

distributions is a result of the filtering process.

Visual comparison of the distributions provides a simple analysis of the stereological

technique. As apparent when comparing Figure 4.1 and Figure 4.2 and Figure 4.3 and Figure

4.4, at these high data levels the technique shows excellent visual agreement. The

stereologically produced distributions demonstrate some minor peak broadening as evident in the

northern and southern hemisphere of the distributions. This is a slight artifact of the technique

and the broadening may be anticipated when generating results. The stereologically

Page 110: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

93

reconstructed distributions in Figure 4.2 and Figure 4.4 demonstrate good agreement in peak

magnitude. While the peak magnitudes happened to be very close in these instances, there is still

some variance between the simulated and reconstructed magnitudes at this data level. For 12

distributions in both the equal and unequal distribution spaces, the average difference between

the simulated and reconstructed distribution peak magnitudes was .30 and .32. The standard

deviation of these peak difference values was .1787 and .1626.

To demonstrate the performance of the technique over a range of data levels, simulated

and stereologically reconstructed experimental distributions have been generated within the

equal volume cell distribution space for decreasing numbers of triple junctions. For conciseness

and greater visual detail, only the projection containing the distribution peak will be plotted at

each data level. Figure 4.5a – Figure 4.5f contain the simulated distribution peak projections for

distributions composed of approximately 500,000, 250,000, 100,000, 50,000, 25,000, and 10,000

twin-dependent junctions at a fixed misorientation. Figure 4.6a – Figure 4.6f contain the

corresponding stereologically generated distribution peak projections at the same data levels as

those found in Figure 4.5a – Figure 4.5f. For example, Figure 4.5a is the peak projection for a

simulated distribution composed of approximately 500,000 triple junctions. Figure 4.6a is the

stereologically generated distribution formed from 500,000 triple junction measurements

produced from the distribution in Figure 4.5a.

Page 111: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

94

Figure 4.5 – Simulated distribution peak projections composed of approximately (a)

500,000 (b) 250,000 (c) 100,000 (d) 50,000 (e) 25,000 (f) 10,000 twin-dependent junctions

at a fixed misorientation.

Page 112: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

95

Figure 4.6 – Distribution peak projections stereologically generated from (a) 500,000 (b)

250,000 (c) 100,000 (d) 50,000 (e) 25,000 (f) 10,000 simulated measurements of twin-

dependent junctions at a fixed misorientation.

This comparison at decreasing data levels visually demonstrates the performance of the

stereological technique as well as the distribution convergence behavior. It is apparent that as

the distribution data input decreases, the scatter increases within the distributions. This appears

to occur equally for both the simulated and stereological distributions. The stereologically

generated distributions also tend to perform poorer as the distributions diverge. Thus, the

performance of the stereological technique must be considered in the context of the quantity of

data inputs. From examining the distributions, it is evident that the distribution peak was

identified by the stereological technique all the way down to 25,000 triple junctions. This

demonstrates a degree of robustness within the technique since the peak was identified despite

significant scatter within the distributions. As apparent in the simulated distribution at 10,000

Page 113: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

96

triple junctions, this number of junctions was not sufficient to form a peak in the distribution.

Therefore, there was nothing for the stereological technique to reconstruct. While the peaks

were identified down to approximately 25,000 triple junctions, the peak magnitudes were closely

approximated only until 100,000–50,000 triple junctions. Below this point the magnitudes

between the simulated and stereological distributions began to vary significantly. This behavior

indicates that the method can at least provide qualitative identification of distribution peaks at

low levels of data, but care must be taken to ensure sufficient data was measured to reliably form

the distribution character.

If quantitative results are expected from the stereological technique, significant data must

be collected in order to form a reliable distribution. Clearly, significant data is required to form a

reliable distribution even if all parameters were known, as indicated by the simulated

distributions. Further insight into the reliability of the technique as well as the distribution

convergence behavior can be gained by examining several quantitative performance factors.

4.1.2 Quantitative Validation of the Technique

A measure of relative distribution convergence may be created by considering the

number of data inputs per cell within the distribution space. This has been employed previously

when analyzing results from grain boundary distributions [38]. As the number of triple junctions

within each cell increases, the distribution converges and the results become more reliable. A

summary of the triple junctions per cell has been created in Table 4.1.

Page 114: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

97

Table 4.1 – Summary of cells at a fixed misorientation, triple junctions per cell, and triple

junctions for the full space for varying levels of fixed misorientation data. (a) Actual data

taken from the simulated distributions in Figure 4.5. (b) Values calculated for a 12.9

degree resolution at the10 degree resolution filtering levels. (c)Values calculated for a 15

degree resolution at the10 degree resolution filtering levels.

This work was performed at 10 degrees resolution and will focus on the results within

Table 4.1a. The first two columns of Table 4.1a indicate the number of triple junctions

Page 115: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

98

implemented in the distribution at a fixed misorientation and the number of cells in the grain

boundary space at a fixed misorientation. The change in cells across the rows in the second

column is the result of the distribution filtering. The third column is the number of triple

junctions per cell if the included triple junctions from the first column were randomly dispersed

throughout the distribution space. In this application the distribution was not random; therefore,

the distribution peak cells will have values greater than this number while the valley cells will be

lower. The difference in the triple junctions per cell at the distribution peaks and valleys

depends on the degree of distribution anisotropy. While the number of random triple junctions

per cell does not represent the actual distribution of triple junctions within the space, this value

may still provide a simple method of determining relative convergence. For example, for the

distributions formed at a fixed misorientation with 10,000 triple junctions, a random distribution

would have provided less than two triple junctions per cell. In the anisotropic case, the minimum

values would have been even lower than this. Clearly, this wasn’t nearly enough to form a

distribution. Note that the distributions began converging and the stereological procedure began

reconstructing the peaks accurately from 50,000 – 100,000 triple junctions at a fixed

misorientation. This corresponds to 8.63 – 17.25 random triple junctions per cell.

A better comparison of distribution similarity, to be used for the stereological validation,

is provided by the relation given in Equation ( 3.2 ) on page 80 when18 comparing the simulated

and stereological results within the factorial design. This is the relation adapted from Morawiec

which provides a single scalar value between 0 and 1 according to the similarity of the

distributions over the full distribution space [70]. The value 0 corresponds to identical

distributions while 1 corresponds to opposing distributions. The adapted relation has been

applied to the distributions whose peaks are listed in Figure 4.5 and Figure 4.6. A graph of these

Page 116: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

99

results is shown in Figure 4.7. As apparent in the figure, the difference values seem to accurately

describe the similarities of the figures with a quantitative value. Most notable is the rate of

change of the curve’s negative slope. This value begins increasing dramatically below 100,000

triple junctions where the magnitudes of the simulated and stereologically generated distributions

begin diverging. For this simple application, this technique seems to hold good promise in

providing insights into distribution results.

Figure 4.7 – Difference values of similarity between the simulated and stereologically

reconstructed boundaries in Figure 4.5 and Figure 4.6.

The fourth column of Table 4.1a corresponds to the approximate quantity of triple

junctions necessary for expanding the results at a fixed misorientation to the full distribution

space. It is somewhat alarming to note that the reasonable convergence obtained at 50,000 –

100,000 triple junctions at a fixed misorientation corresponds to 16 – 32 million triple junctions

in the full space. In this same column the lowest levels of convergence and stereological

validation, which provided only rough qualitative results, would require measuring anywhere

from 3-8 million triple junctions. This would result in significant experimental time despite

using two-dimensional EBSD measurements on a single section plane. Clearly, the 10^6 triple

junction approximation provided by Bunge is of the correct order of magnitude but on the low

Page 117: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

100

end of data requirements [61]. As apparent in the fourth column of Table 4.1a, quantitative

results with better reliability would require data at another order of magnitude which becomes

impractical.

The amount of data required to generate the full distribution with reasonable reliability

may be reduced to practical levels by slightly reducing the distribution resolution. Table 4.1a

indicates that a full distribution with a resolution of 10 degrees requires approximately 3.24

million triple junctions for 1.72 random triple junctions per cell. This data quantity was not

sufficient to form the distribution peak. By reducing the resolution to approximately 12.9

degrees, or 7 cells per 90 degrees, 3.81 million triple junctions provides approximately 9.23

random triple junctions per cell. By comparing the levels of random triple junctions per cell, this

is better relative convergence than could be achieved with 16.2 million triple junctions at 10

degrees resolution. This dramatic improvement in convergence with a slight decrease in

resolution is the nature of a discretized high-dimensional space. Small changes in the numbers

of cells on each level compound across all levels for a large reduction in total numbers of cells.

Table 4.1c is provided as a reference for the data reduction and improved convergence for a

resolution of 15 degrees. While data suggests boundary properties vary above 10 degrees,

reducing the resolution slightly would enable characterizations with much greater reliability [69].

This is a reasonable approach for the current limitations in the speed of experimental

measurements. Despite a loss of resolution, the distributions could be formed reliably and some

conclusions drawn. As automated data collection methods improve, smaller resolutions could be

attempted.

Further improvements in the distribution convergence rates could be achieved without

reducing the resolution. This could be accomplished by implementing more sophisticated array

Page 118: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

101

cell assignment functions. In this study triple junctions were assigned to cells with a unit value.

The location of a value within the cell made no difference in assignment. If unit values were

divided between cells according to their proximity to cell borders, the distribution would be

naturally smoothed. For instance, if a value lands practically at a cell border the unit value

should be split between the neighboring cells. If a value lands at the center of a cell the entire

unit value should be assigned to that cell. Anything in between these extremes is divided

between cells according to proximity to the border. This would provide a more converged

distribution for the same quantity of data without interpolation or approximate methods of

smoothing.

Page 119: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

102

CHAPTER 5

CONCLUSIONS

The results of this work indicate that this is an effective method for twin-dependent triple

junction characterization on a large scale. Given the sampling biases introduced by the required

geometric and symmetric constraints, distribution values have been weighted by a uniform

random distribution. This weighting correction is not dependent on the features of the

distribution and may be uniformly applied to all biased distributions. The weighting also enables

distributions with unequal volume cells to be produced to assist in identifying distribution

artifacts.

Care must be taken to ensure sufficient data are measured to provide reliable results,

though this is the case with all distributions of microstructural features. The ease and speed of

experimental measurements through automated EBSD on a single section plane enables this

technique to measure the high quantities of data necessary for generating twin-dependent triple

junction distributions. For clarity it should be noted that in the case of highly-textured materials,

analysis on more than one section plane might be necessary in order to randomly sample the

distribution. The removal of the need to reconstruct a three-dimensional polycrystalline

microstructure gives this technique a further advantage in ease and speed over common three-

dimensional approaches. The accessibility of the experimental equipment necessary for this

approach also puts this method into the hands of researchers everywhere and empowers them

with an additional tool. While this method is limited to materials with a high fraction of coherent

Page 120: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

103

twin boundaries, it will provide the first experimental look at triple junctions on a large scale.

Despite its limitations, this technique will lead to advances in understanding triple junction

phenomena and the grain boundary network. The experience and framework gained through this

work also prepares the foundation for a generalized approach in the future.

Page 121: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

104

CHAPTER 6

FUTURE WORK

6.1 Experimental Application

The validated stereological method and developed reliability measures provide an

excellent foundation for the experimental application of this work. Experimental studies

characterizing twin-dependent triple junctions should now be carried out in a variety of materials

with a high fraction of coherent twin boundaries. This work will provide a first look at triple

junctions and hopefully insight into their significance within the polycrystalline structure.

6.1.1 Decreasing the Weighting Factor Computational Time

Despite the advances of this work, the computational time to form weighting factors

provides a minor obstacle to generating experimental twin-dependent triple junction

distributions. As plotted in Figure 3.22, the computational time to generate the weighting factors

at the selected CosN1Discrt and CosN3Discrt levels of 46 was approximately 39 hours. It

should be noted that these weighting factors were generated at a fixed misorientation. In order to

generate the weighting factors for the full distribution space, substantially more time will be

required.

To estimate the required computing time for the full space, the number of distinct

misorientation cells within the distribution space may be approximated. The domain of the Euler

angles 1 , , 2 is parameterized by 1 , cos , and 2 over 20 1 , 1cos0 , and

Page 122: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

105

20 2 . For an approximate 10 degrees resolution the domain is discretized into 9 bins per

90 degrees. Therefore the volume of bins within the misorientation space consists of

29169936 bins. It should be recalled that there exist 9 equivalent misorientations for

every unique misorientation within the space. The conventions utilized for selecting a

fundamental zone identified a single representative misorientation from all equivalent

representations. We may therefore approximate the distribution fundamental zone to be 1/9th

of

the misorientation space. There are then 32492916 unique misorientation cells within the

distribution space. At a rate of 39 hours per cell, 526.5 days of computational time are required

to compute the weighting factors.

While the weighting factors only need to be computed a single time per selected

resolution, this quantity of computational time is still unacceptable. Clearly, substantial work

must be done in developing improved methods of generating weighting factors. Several

strategies for future development will be briefly discussed. The above estimate of computational

time assumed that all work would be done on a single processor. Given the discrete nature of the

space and algorithms implemented, it is assumed that the weighting factors could be generated

using parallel processors. On an advanced cluster the computational time could be reduced to a

small fraction of the approximated time. In addition, the code currently has not been optimized

for speed. Surely strategic changes to the code could have an effect on reducing the

computational time. It is also notable that the computational time listed above was for a

resolution of 10 degrees. In the end of Section 4.1.2, Quantitative Validation of the Technique, it

was noted that it is currently experimentally prohibitive to implement a resolution of 10 degrees.

This was the result of the impractical quantity of data required to generate a 10 degree

Page 123: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

106

distribution with statistical reliability. It was advised for a researcher to decrease the resolution

by a few degrees which would allow distributions to be formed with reasonable reliability.

Conclusions could then be reliably made, albeit with less detailed microstructures. A decreased

resolution requires new weighting factors to be computed, but given the reduction in cells, they

may be generated much faster. By using approximate generation parameter values and the

stereological factor levels for a 10 degree resolution, the weighing factors for a 15 degree

resolution were computed in a mere 11.4 hours. Given the reduction of cells, the approximate

computational time for the full space would amount to 45.6 days. If the stereological parameters

were found at optimal levels, this number could be reduced even further. As also noted in

Section 4.1.2, the convergence rates of the distributions could be achieved by implementing

improved array assignment functions. These functions would reduce the computational time for

generating triple junction distributions and the corresponding weighting factors.

Several strategies for reducing the computational time for the requisite weighting factors

are listed above. It should also be emphasized that significant analysis could be performed at

fixed misorientations. When peaks within a distribution are identified, weighting factors could

be formed at fixed misorientations corresponding to those peaks. This would most likely provide

triple junction data corresponding to the most common features within the distribution and also

provide sufficient data for statistical reliability.

6.2 Generating a Generalized Triple Junction Distribution

As already emphasized, the development of the methodology for measuring twin-

dependent triple junction distributions is preparatory to forming generalized triple junction

distributions. The fundamentals developed for twin-dependent distributions have facilitated the

Page 124: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

107

development of the basic foundational theory for characterizing triple junctions universally. This

theory will be briefly developed here for future expansion.

6.2.1 Parameters and Conventions of a Generalized Triple Junction Distribution

Now that twin-dependent triple junction distributions have been successfully formed,

their parameters and conventions may be adapted and expanded to a general junction. The twin-

dependent triple junction consists of six independent parameters: the spherical coordinates A1

and A1 of A1n , the dihedral angle between A2n and A3n , and the misorientation ABg . As a

general triple junction does not contain the assumed twin boundary as the twin-dependent

junction, five parameters must be added to the characterization. These parameters are for the

additional plane parameters which in this work consist of two spherical coordinates for the

boundary plane orientation and three for the boundary misorientation. The parameters of a

general triple junction are shown in Figure 6.1.

While there are many variations of triple line or boundary plane parameters which may

be utilized for characterizing the triple junction planes, for now the 11 independent parameters as

given in Figure 6.1 will be utilized. The general triple junction may be characterized by the

minimum junction misorientation ABg , the maximum junction misorientation CAg , the

boundary normals A1n and A3n in terms of spherical coordinates A1 , A1 and A3 , A3 , and a

dihedral angle between A1n and A2n . The misorientations are parameterized by the Euler

angles 1 , , 2 in the Bunge convention [64]. The minimum misorientation boundary is

identified as plane 1 and the maximum misorientation boundary is assigned as plane 2. The

remaining plane defaults to plane 3. The plane parameter spherical coordinates are referenced

Page 125: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

108

within the grain A coordinate frame which is identified between planes 1 and 3. Grain B is

assigned between planes 1 and 2 and Grain C between planes 2 and 3. The boundary normals

A1n , A2n , and A3n all point about the triple line in the direction from minimum to maximum

misorientation.

Figure 6.1 - Parameters and conventions of a general triple junction distribution.

Many of the parameters and conventions of the general method are similar to those of the

twin-dependent technique and are adopted for identical reasons. For instance, the convention of

all boundary normals pointing in the direction of minimum to maximum misorientations removes

the inversion symmetry of the system and ensures that a triple junction is characterized

identically whether observed from any direction. This convention also allows the dihedral angles

between planes to be easily calculated. As for the twin-dependent distributions, the crystal

coordinate frame is utilized to reduce the dimensionality of the space. The boundary plane

Page 126: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

109

normal parameterization is used for plane characterization as it may enable further adaptation of

the grain boundary plane stereology.

While the assignment of parameters is largely arbitrary, the boundaries adjacent to grain

A were selected given they border the reference frame by which the plane parameters are

characterized. It seems most convenient to assign the distribution parameters to the planes and

misorientations which border the grain where the characterization activity is occurring. In

addition, by choosing the minimum and maximum misorientations for characterization of the

junction, the remaining dependent misorientation exists between these. In some applications

these misorientations might be utilized as upper and lower misorientation bounds.

6.2.2 Selecting a Fundamental Zone

As for the twin-dependent triple junction distribution, crystal symmetries within the

characterized grains provide numerous symmetrically equivalent triple junctions with distinct

and difficult to correlate parameter values. Of all the equivalent regions within the parameter

space, a single fundamental zone must be selected so that every unique triple junction will be

assigned a single set of parameters. A fundamental zone may be selected for the generalized

triple junction by adapting the method used for twin-dependent junctions. The method for twin-

dependent junctions is itself an adaptation of the method of selecting a fundamental zone for

grain boundaries and misorientations [34,65,70–74,89,90].

The relations here will be formed for cubic symmetries. In order to form a fundamental

zone for the general triple junction, the minimum misorientation ABg will first be selected

within a fundamental zone. For misorientation ABg , there exist 576 equivalent misorientations

by the relation: TAjBi

eq

AB gCgCg where iC , jC are the cubic symmetry operators and i , j =

Page 127: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

110

1 to 24. As explained by Morawiec for grain boundary distributions, the symmetry operator

applied to the crystal orientation Ag must simultaneously be applied to the boundary A1n , which

is referenced within the Ag frame [70]. This relationship between the symmetry operator and

the orientations of the grains and plane boundary cannot be decoupled. Therefore the equivalent

A1n planes are given by: Aj

eq

A C 11 nn . In the triple junction, the neighboring plane A3n is also

referenced within the Ag frame and equivalent A3n planes are given by: Aj

eq

A C 33 nn . To form a

fundamental zone for a misorientation and associated plane, selection rules must be applied to

the symmetry operators to select a unique misorientation within each equivalent class.

Following the well-established criteria for selecting a fundamental zone for cubic

misorientations, symmetry operators will be selected such that the misorientation has the

minimum possible misorientation angle and a misorientation axis which lies within the

stereographic triangle [70–74,89,90].

The selection of this unique misorientation for ABg and its implications for planes A1n

and A3n may be written as follows:

TAjBi

FZ

AB gCgCg

Aj

FZ

1A C 1nn

Aj

FZ

3A C 3nn

Where iC and jC are the symmetry operators which select ABg within the fundamental

zone or FZ

ABg . Clearly, A1n and A3n are coupled to the symmetry operator jC . For the triple

junction characterization an additional misorientation CAg is required which has equivalent

Page 128: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

111

representations by the relationship TCkAj

eq

CA gCgCg . Clearly, when selecting a

fundamental zone for the boundary ABg , jC was already selected. To finish forming the

fundamental zone for the junction, the remaining symmetry operator kC must be selected

according to a consistent criterion. As kC will determine the orientation of the CAg

misorientation axis, kC will be selected such that the misorientation axis lies within the

stereographic triangle. While jC does not provide the minimum misorientation angle for CAg ,

the selection criteria for ABg should provide consistent values of jC which uniquely define

CAg . A single representation for each unique triple junction is the goal of selecting a

fundamental zone and this appears to be satisfied by these conventions.

6.2.3 Stereology and Data Requirements of a Generalized Triple Junction Distribution

Though the potential parameters and a fundamental zone of the generalized triple

junction have been developed in the previous two sections, a stereological method for the

generalized triple junction requires future development. A stereological method is necessary as

only 8 parameters of the triple junction’s 11 independent parameters are measurable from a

section plane. These include the azimuthal angles A1 and A3 of A1n and A3n and the

misorientations ABg and CAg . A stereological method is the characterization method of

choice given the data requirements to form this distribution. As noted previously, the data to

form a distribution may be approximated by 10N measurements, where N is the dimensionality of

the desired feature [61]. According to this guideline, approximately 1011

triple junctions might

be required to form a general triple junction distribution. For the twin-dependent triple junction

Page 129: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

112

distribution the 10N measurements approximation was shown to be a little conservative and even

more measurements were required for reasonable reliability. Even if the 1011

approximation is

used, this is far beyond what is possible through two-dimensional measurements. As two-

dimensional measurements consistently outpace what can be done through three-dimensional

methods, it seems logical to pursue a stereological method despite current limitations.

The immeasurable parameters from a section plane are the A1 and A3 polar angles of

A1n and A3n and the dihedral angle between A1n and A2n . If the A1 and A3 angles are

known, the dihedral angle can be found from the trace of plane 2 within the section plane and

the geometric constraints of the triple junction. This method was used for finding for the

twin-dependent triple junction. A reasonable starting point for developing the general triple

junction stereology is to adapt the grain boundary stereology to be applied to both A1n and A3n

[66]. This is a literal expansion of what was applied to the twin-dependent triple junction

distribution and the algorithm would be very similar. A possible obstacle to this adaptation is

that the probabilities of the method go down an order of magnitude given the addition of another

plane. For instance, when applying the grain boundary stereology to a single plane at an

approximate resolution of 10 degrees, the probability of a potential plane being the actual

orientation is 1 over the discretization of the hemisphere or 1/18. If this same technique were

applied to two planes as for the general triple junction, the probability would become

3241181181 / . This might not be problematic after all since the space of the distribution

has increased in dimensionality from 610 to

1110 . In addition, perhaps the geometric constraints

of the triple junction could be leveraged in the process. This was not the case for twin-dependent

Page 130: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

113

triple junctions as an almost negligible fraction of potential triple junctions with dihedral angles

greater than 180 degrees were generated during the stereological method.

While the physical capability of measuring a general triple junction distribution in the

section plane might be years away experimentally, there is no reason to delay in developing this

method. Given the great advancements in computing and data storage technology, this

methodology could be developed using simulated microstructures as the twin-dependent method

was. Waiting until experimental data collection speeds have increased appropriately will waste

valuable time during which this method could be developed, adapted, and advanced. Ideally, this

method would be refined using simulations and would be ready for breakthroughs in

experimental techniques. Given the success with the twin-dependent methodology, this future

work holds great potential. In addition, the value of an experimental method for developing

general triple junction distributions is far beyond that of the twin-dependent method in that it is

not restricted to a small field of materials. This method will allow materials engineering to take

a much needed leap from grain boundaries and will surely lead to a more complete

understanding of polycrystalline topology and phenomena.

Page 131: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

114

BIBLIOGRAPHY

[1] Hardy GB, Field DP. Metall Mater Trans A 2015;46:2273. With permission of Springer

Science+Business Media

[2] Priester L. Grain Boundaries: From Theory to Engineering, 1st ed. Dordrecht: Springer;

2013.

[3] Rohrer GS. J Am Ceram Soc 2011;94:633.

[4] Kumar M, King WE, Schwartz AJ. Acta Mater 2000;48:2081.

[5] Schuh CA, Kumar M, King WE. Acta Mater 2003;51:687.

[6] Watanabe T. Res Mech 1984;11:47.

[7] Fionova L, Konokenko O, Matveev V, Priester L, Lartigue S, Dupau F. Interface Sci

1994;1:207.

[8] Randle V. Scr Metall Mater 1993;28:889.

[9] Minich RW, Schuh CA, Kumar M. Phys Rev B 2002;66:1.

[10] Schuh CA, Minich RW, Kumar M. Philos Mag 2003;83:711.

[11] Frary M, Schuh CA. Appl Phys Lett 2003;83:3755.

[12] Frary M, Schuh CA. Phys Rev B 2004;69:1.

[13] Frary M, Schuh CA. Philos Mag 2005;85:1123.

[14] Frary M, Schuh CA. Acta Mater 2005;53:4323.

[15] Balogh Z, Stender P, Chellali MR, Schmitz G. Metall Mater Trans A Phys Metall Mater

Sci 2013;44:4487.

[16] Czubayko U, Sursaeva VG, Gottstein G, Shvindlerman LS. Acta Mater 1998;46:5863.

[17] Gottstein G, Shvindlerman LS, Zhao B. Scr Mater 2010;62:914.

[18] Barrales-Mora LA, Gottstein G, Shvindlerman LS. Acta Mater 2012;60:546.

Page 132: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

115

[19] Zhao B, Gottstein G, Shvindlerman LS. Acta Mater 2011;59:3510.

[20] Zhao B, Verhasselt JC, Shvindlerman LS, Gottstein G. Acta Mater 2010;58:5646.

[21] Zhao B, Ziemons A, Shvindlerman LS, Gottstein G. Acta Mater 2012;60:811.

[22] Zhao B, Shvindlerman L, Gottstein G. Int J Mater Res 2014;105:1151.

[23] Yin K-M, King AH, Hsieh TE, Chen F-R, Kai JJ, Chang L. Microsc Microanal

1997;3:417.

[24] Bokstein B, Ivanov V, Oreshina O, Peteline A, Peteline S. Mater Sci Eng A 2001;302:151.

[25] King AH. Scr Mater 2010;62:889.

[26] Bollmann W. Philos Mag A 1984;49:73.

[27] Bollmann W. Philos Mag A 1988;57:637.

[28] Bollmann W. Mater Sci Eng A 1989;113:129.

[29] Doni E, Bleris G. Phys status solidi 1988;110:383.

[30] Palumbo G, Aust KT. Scr Metall Mater 1990;24:1771.

[31] Rohrer GS, El Dasher BS, Miller HM, Rollett AD, Saylor DM. Distribution of Grain

Boundary Planes at Coincident Site Lattice Misorientations, in:. MRS Spring Meet. 2004.

[32] Rohrer GS. J Mater Sci 2011;46:5881.

[33] Saylor DM, Morawiec A, Rohrer GS. Commun Am Ceram Soc 2002;85:3081.

[34] Saylor DM, Morawiec A, Rohrer GS. Acta Mater 2003;51:3663.

[35] Saylor DM, Morawiec A, Rohrer GS. Acta Mater 2003;51:3675.

[36] Dillon S, Rohrer G. J Am Ceram Soc 2009;92:1580.

[37] Li J, Dillon SJ, Rohrer GS. Acta Mater 2009;57:4304.

[38] Rohrer GS, Li J, Lee S, Rollett a. D, Groeber M, Uchic MD. Mater Sci Technol

2010;26:661.

[39] Herring C. Surface Tension as a Motivation for Sintering, in:. Phys. Powder Metall. 1951.

Page 133: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

116

[40] Morawiec A. Acta Mater 2000;48:3525.

[41] Robertson IM, Schuh C a., Vetrano JS, Browning ND, Field DP, Jensen DJ, Miller MK,

Baker I, Dunand DC, Dunin-Borkowski R, Kabius B, Kelly T, Lozano-Perez S, Misra A,

Rohrer GS, Rollett AD, Taheri ML, Thompson GB, Uchic M, Wang X-L, Was G. J Mater

Res 2011;26:1341.

[42] Uchic MD. Serial Sectioning Methods for Generating 3D Characterization Data of Grain-

and Precipitate-Scale Microstructures, in:. Ghosh S, Dimiduk D (Eds.). Comput. Methods

Microstruct. Relationships. Boston, MA: Springer US; 2011.

[43] Buffiere JY, Cloetens P, Ludwig W, Maire E, Salvo L. MRS Bull 2008;33:611.

[44] Kastner J, Harrer B, Requena G, Brunke O. NDT E Int 2010;43:599.

[45] Poulsen HF, Nielsen SF, Lauridsen EM, Schmidt S, Suter RM, Lienert U, Margulies L,

Lorentzen T, Juul Jensen D. J Appl Crystallogr 2001;34:751.

[46] Larson BC, Yang W, Ice GE, Budai JD, Tischler JZ. Nature 2002;415:887.

[47] Poulsen HF, Jensen DJ, Vaughan GBM. MRS Bull 2004:166.

[48] Ludwig W, King A, Reischig P, Herbig M, Lauridsen EM, Schmidt S, Proudhon H, Forest

S, Cloetens P, Roscoat SR Du, Buffière JY, Marrow TJ, Poulsen HF. Mater Sci Eng A

2009;524:69.

[49] Li SF, Lind J, Hefferan CM, Pokharel R, Lienert U, Rollett a. D, Suter RM. J Appl

Crystallogr 2012;45:1098.

[50] Spanos G, Rowenhorst DJ, Lewis AC, Geltmacher AB. MRS Bull 2008;33:597.

[51] Rowenhorst DJ, Voorhees PW. Annu Rev Mater Res 2012;42:105.

[52] Kubis AJ, Shiflet GJ, Hull R, Dunn DN. Metall Mater Trans A 2004;35:1935.

[53] Uchic MD, Groeber M, Wheeler IV R, Scheltens F, Dimiduk DM. Microsc Microanal

2004;10:1136.

[54] Groeber M a., Haley BK, Uchic MD, Dimiduk DM, Ghosh S. Mater Charact 2006;57:259.

[55] Echlin MP, Mottura A, Torbet CJ, Pollock TM. Rev Sci Instrum 2012;83:023701.

[56] DeHoff RT. J Microsc 1983;131:259.

Page 134: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

117

[57] Kral M V., Mangan M a., Spanos G, Rosenberg RO. Mater Charact 2000;45:17.

[58] Alkemper J, Voorhees PW. J Microsc 2001;201:388.

[59] Spowart JE, Mullens HE, Puchala BT. Jom 2003;55:35.

[60] Morawiec A. Mater Sci Forum 2012;702-703:697.

[61] Bunge H-J. Mater Sci Forum 1994;157-162:13.

[62] Russ JC, Dehoff RT. Practical Stereology. 2001.

[63] Handwerker C a., Pollock TM. Jom 2014;66:1321.

[64] Bunge H-J. Texture Analysis in Materials Science, English. London: Butterworths; 1982.

[65] Morawiec A. Symmetries of Grain Boundary Distributions, in:. Grain Growth Polycryst.

Mater. III. 1998.

[66] Saylor DM, El-Dasher BS, Adams BL, Rohrer GS. Metall Mater Trans A 2004;35:1981.

[67] El Dasher B, Sano T, Rohrer GS. J Am Ceram Soc 2004;87:670.

[68] Rohrer GS, Saylor DM, El Dasher B, Adams BL, Rollett AD, Wynblatt P. Int J Mater Res

2004;95:197.

[69] Sutton AP, Balluffi RW. Thermodynamics of Interfaces, in:. Interfaces Cryst. Mater.

Oxford: Clarendon Press; 1996.

[70] Morawiec A. Orientations and Rotations: Computations in Crystallographic Textures, 1st

ed. Berlin: Springer-Verlag; 2004.

[71] Frank FC. Metall Trans A 1988;19:403.

[72] Neumann P. Textures Microstruct 1991;14-18:53.

[73] Heinz A, Neumann P. Acta Crystallogr Sect A Found Crystallogr 1991;47:780.

[74] Morawiec A, Field DP. Philos Mag A 1996;73:1113.

[75] Pond R, Bollmann W. Philos Trans R Soc London 1979;292:449.

[76] Kalonji G, Cahn JW. Le J Phys Colloq 1982;43:C6.

Page 135: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

118

[77] Cullity BD. Elements of X-Ray Diffraction, 1st ed. Reading, MA: Addison-Wesley

Publishing Company; 1956.

[78] Glowinski K, Morawiec A. Metall Mater Trans A 2014;45:3189.

[79] Randle V. Scr Mater 2001;44:2789.

[80] Wright SI, Larsen RJ. J Microsc 2002;205:245.

[81] Bennett T a., Kim CS, Rohrer GS, Rollett AD. Mater Sci Forum 2004;467-470:727.

[82] Kim C-S, Hu Y, Rohrer GS, Randle V. Scr Mater 2005;52:633.

[83] Rohrer GS, Randle V, Kim C-S, Hu Y. Acta Mater 2006;54:4489.

[84] Randle V, Rohrer GS, Miller HM, Coleman M, Owen GT. Acta Mater 2008;56:2363.

[85] Bower KM. Sci Comput Instrum 2000;17:64.

[86] Montgomery DC. Design and Analysis of Experiments, 5th ed. New York: John Wilery &

Sons, Inc.; 2001.

[87] Lawson J, Erjavec J. Modern Statistics for Engineering and Quality Improvement.

Duxbury Thomson Learning; 2001.

[88] Sleeper A. Minitab Demystified. New York: McGraw Hill; 2012.

[89] Saylor DM. The Character Dependence of Interfacial Energies in Magnesia. Carnegie

Mellon University, 2001.

[90] Morawiec A. Acta Crystallogr Sect A Found Crystallogr 1997;53:273.

Page 136: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

APPENDIX

Page 137: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

120

A. PROGRAM CODE EXCERPTS AND DETAILS

As indicated in the body of this work, the method of forming twin-dependent triple

junction distributions was developed in a software format with the intent to automate the

distribution generation process. Separate programs were developed for generating the equal and

unequal volume twin-dependent triple junction distributions. The distinct equal and unequal

volume parameters result in disparate spaces and discretizations between the two methods.

Therefore the individual programs greatly facilitated the program development process.

Components of both programs are incompatible, while others are identical. The key to

the differences between the programs is the interactions of the method with the parameters and

space arrays. Now that the programs are developed and fully functional, it is possible to

combine them into a single program though their distinct algorithms must remain independent.

Joining the programs will require significant effort and attentiveness. If this code and method is

continually advanced and improved, it would be advisable to join the programs. Then a single

program could be improved rather than independently adapting two nearly similar programs.

Each triple junction distribution generation program consists of approximately 12,000

lines of code. While a small fraction of this code has been adapted from Stuart Wright’s

program gshelite, the large majority has been independently created for this project. The source

of adapted code has been credited in the comments preceding the adapted functions. As

inserting all of the source code for just one of the programs would require over 200 pages,

selections from just one of the programs will be inserted with some instructional comments. The

Page 138: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

121

full program may be acquired by contacting the author or Dr. David Field. Excerpts from the

equal volume triple junction distribution generation program will be given accompanied by a

brief description of functionality.

A.1 TJDinit()

This function is the triple junction distribution initialization function. It assigns many

important global variables to be used by the other functions within the program. It also

initializes important file streams and assigns essential values for the distribution such as the

resolution and the distribution peak for a simulated distribution. This function also sets values

for distribution generation parameters according to the resolution and quantity of data. In short,

this function contains essentials for forming a distribution or running other functions. It typically

must be run prior to any program function or set of functions.

/* ------------------------------------------------------------------------------------ * The following function is an initialization routine which provides all necessary * values to begin the simulation/experimental analysis * ----------------------------------------------------------------------------------- */ void TJDinit() { char CPath[_MAX_PATH]; string Filename, Filename1; //Assign datafile names datafile = "Experimental_Data.txt"; UniformDatafile = "Uniform_Data.txt"; logfile = "Log_File.txt"; AnalysisFile = "Values_Analysis.txt"; AbsGeomFile10 = "Values_Abs_Geom_Space_10.txt"; AbsGeomFile15 = "Values_Abs_Geom_Space_15.txt"; //Find current directory path _getcwd(CPath, _MAX_PATH); CurrentPath = CPath; Filename = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename.c_str()); if (outlogfile.fail()) {

Page 139: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

122

cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } Filename1 = CurrentPath + "\\" + AnalysisFile; ofstream outAnalysisFile(Filename1.c_str()); if (outAnalysisFile.fail()) { cout << "Error: Couldn't open " << AnalysisFile << endl; outAnalysisFile.close(); exit(1); } //Generate symmetries CubicSymmetries(); //Initialize random seed srand(time(NULL)); /*Initialize values*/ if (verbose) cout << "Initializing parameters and values for equal volume solution\n"; if (verbose) outlogfile << "Initializing parameters and values for equal volume solution\n"; //Set domain of misorientation space (The algorithms using cosPHIRange must be adapted for //values greater than 1) phi1Range = 2*PI; cosPHIRange = 1; phi2Range = PI/2; //Setting resolution and discretization values (Discretization values for CosDiscrt and //CosAlphaDiscrt must be even valued. Otherwise their corresponding alogorithms must be //adapted) Resolution = 10; if (verbose) cout << endl << "Resolution = " << Resolution << endl << endl; if (verbose) outlogfile << endl << "Resolution = " << Resolution << endl << endl; if (Resolution == 15) { Phi1Discrt = 24; CosPHIDiscrt = 6; Phi2Discrt = 6; CosDiscrt = 12; PhiDiscrt = 24; CosAlphaDiscrt = CosDiscrt; //Setting Space mapping values RandCellPtsGeom = 4219; RandTraceVects = 10370370; if (verbose) cout << "Geometric Random Cell Points = " << RandCellPtsGeom << endl;

Page 140: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

123

if (verbose) cout << "Space Random Trace Vectors = " << RandTraceVects << endl << endl; if (verbose) outlogfile << "Geometric Random Cell Points = " << RandCellPtsGeom << endl; if (verbose) outlogfile << "Space Random Trace Vectors = " << RandTraceVects << endl << endl; //Setting number of simulated or experimental values SimDataValues = 10370370; if (verbose) cout << "Number of simulated or experimental values = " << SimDataValues << endl << endl; if (verbose) outlogfile << "Number of simulated or experimental values = " << SimDataValues << endl << endl; //Setting average point fractions AvgPtFractionSim = 0; AvgPtFractionExp = AvgPtFractionSim; if (verbose) cout << "Simulated Average Point Fraction = " << AvgPtFractionSim << endl; if (verbose) cout << "Experimental Average Point Fraction = " << AvgPtFractionExp << endl << endl; if (verbose) outlogfile << "Simulated Average Point Fraction = " << AvgPtFractionSim << endl; if (verbose) outlogfile << "Experimental Average Point Fraction = " << AvgPtFractionExp << endl << endl; //Setting stereological discretization Cos111N2Discrt = 1631; CosN1Discrt = 46; CosN3Discrt = 46; if (verbose) cout << "N2 stereological discretization = " << Cos111N2Discrt << endl; if (verbose) cout << "N1 stereological discretization = " << CosN1Discrt << endl; if (verbose) cout << "N3 stereological discretization = " << CosN3Discrt << endl << endl; if (verbose) outlogfile << "N2 stereological discretization = " << Cos111N2Discrt << endl; if (verbose) outlogfile << "N1 stereological discretization = " << CosN1Discrt << endl; if (verbose) outlogfile << "N3 stereological discretization = " << CosN3Discrt << endl << endl; } if (Resolution == 10) { Phi1Discrt = 36; CosPHIDiscrt = 9; Phi2Discrt = 9; CosDiscrt = 18; PhiDiscrt = 36; CosAlphaDiscrt = CosDiscrt;

Page 141: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

124

//Setting Space mapping values RandCellPtsGeom = 12500; RandTraceVects = 35E6; if (verbose) cout << "Geometric Random Cell Points = " << RandCellPtsGeom << endl; if (verbose) cout << "Space Random Trace Vectors = " << RandTraceVects << endl << endl; if (verbose) outlogfile << "Geometric Random Cell Points = " << RandCellPtsGeom << endl; if (verbose) outlogfile << "Space Random Trace Vectors = " << RandTraceVects << endl << endl; //Setting number of simulated or experimental values SimDataValues = 500000; if (verbose) cout << "Number of simulated or experimental values = " << SimDataValues << endl << endl; if (verbose) outlogfile << "Number of simulated or experimental values = " << SimDataValues << endl << endl; //Setting average point fractions AvgPtFractionSim = -1.7312E-20*pow((double)SimDataValues,3) + 9.4668E-14*pow((double)SimDataValues,2) - 1.9971E-07*SimDataValues + 2.3492E-01; if (AvgPtFractionSim < 0 || AvgPtFractionSim >= 1) { AvgPtFractionSim = 0; } AvgPtFractionExp = AvgPtFractionSim; if (verbose) cout << "Simulated Average Point Fraction = " << AvgPtFractionSim << endl; if (verbose) cout << "Experimental Average Point Fraction = " << AvgPtFractionExp << endl << endl; if (verbose) outlogfile << "Simulated Average Point Fraction = " << AvgPtFractionSim << endl; if (verbose) outlogfile << "Experimental Average Point Fraction = " << AvgPtFractionExp << endl << endl; //Setting stereological discretization Cos111N2Discrt = 1631; CosN1Discrt = 46; CosN3Discrt = 46; if (verbose) cout << "N2 stereological discretization = " << Cos111N2Discrt << endl; if (verbose) cout << "N1 stereological discretization = " << CosN1Discrt << endl; if (verbose) cout << "N3 stereological discretization = " << CosN3Discrt << endl << endl; if (verbose) outlogfile << "N2 stereological discretization = " << Cos111N2Discrt << endl; if (verbose) outlogfile << "N1 stereological discretization = " << CosN1Discrt << endl;

Page 142: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

125

if (verbose) outlogfile << "N3 stereological discretization = " << CosN3Discrt << endl << endl; } //Setting distribution plotting values RandomPlotPts = 500000; //RandomPlotPts = 400000; //RandomPlotPts = 200000; Shemisphere = true; //Setting ideal triple junction values (TJ at [-1 -2 3]) //Peak 1 /*P1[0] = 1; P1[1] = -2; P1[2] = -1; P2[0] = 1; P2[1] = 1; P2[2] = 1; P3[0] = -3; P3[1] = 0; P3[2] = -1;*/ //Peak 2 P1[0] = 1; P1[1] = -2; P1[2] = -1; P2[0] = 1; P2[1] = 1; P2[2] = 1; P3[0] = -2; P3[1] = 1; P3[2] = 0; Vector2ThetaPhi(P1,Ptheta1a,Pphi1a); Palpha = MinAngle(P2,P3); /*Fix a single misorientation*/ //Declare constants double GAB[3][3]; //Define misorientation //FixedMis = 38.94*D2R; FixedMis = 20*D2R; //FixedAxis[0] = 1; FixedAxis[1] = 1; FixedAxis[2] = 0; FixedAxis[0] = 9; FixedAxis[1] = 5; FixedAxis[2] = 2; if (verbose) cout << "Fixed misorientation axis = " << FixedAxis[0] << " " << FixedAxis[1] << " " << FixedAxis[2] << endl; if (verbose) cout << "Fixed misorientation angle = " << FixedMis << endl; if (verbose) outlogfile << "Fixed misorientation axis = " << FixedAxis[0] << " " << FixedAxis[1] << " " << FixedAxis[2] << endl; if (verbose) outlogfile << "Fixed misorientation angle = " << FixedMis << endl; //Find transformation matrix GAB AATogMat(FixedMis,FixedAxis,GAB); //Find GAB within selected fundamental zone FundZoneMis(GAB,GABfm); gMatToEang(GABfm,phi1ABfm,PHIABfm,phi2ABfm); ArrayIndicesEuler(phi1ABfm,PHIABfm,phi2ABfm,ifm,jfm,kfm); if (verbose) cout << "Fixed misorientation = " << phi1ABfm << " " << PHIABfm << " " << phi2ABfm << endl; if (verbose) cout << "Fixed misorientation indices = " << ifm << " " << jfm << " " << kfm << endl << endl; if (verbose) outlogfile << "Fixed misorientation = " << phi1ABfm << " " << PHIABfm << " " << phi2ABfm << endl;

Page 143: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

126

if (verbose) outlogfile << "Fixed misorientation indices = " << ifm << " " << jfm << " " << kfm << endl << endl; //Verify misorientation /*EangTogMat(phi1ABfm,PHIABfm,phi2ABfm,GAB); gMatToAxAng(GAB,FixedAxis,FixedMis); if (verbose) cout << "Fixed misorientation axis = " << FixedAxis[0] << " " << FixedAxis[1] << " " << FixedAxis[2] << endl; if (verbose) cout << "Fixed misorientation angle = " << FixedMis << endl;*/ //Set relative and absolute error Epsilon = .001; EpsilonAbs = 1E-8; outlogfile.close(); outAnalysisFile.close(); }

A.2 SpaceGen()

This function is an essential function to forming a simulated or experimental distribution.

In the program the experimental functions may be utilized in the future to form distributions

from experimental EBSD data. Until now they have exclusively used simulated experimental

data and the structure of the program reflects that. SpaceGen() has slowly evolved to its current

state at which it performs several key functions. The function first maps the distribution space

within the parameter space by generating random triple junctions within each cell and recording

the volume of distribution space within each cell. After recording essential information about

the space geometry it then labels cells entirely outside the distribution with a 0 and those within

or bordering the distribution with a 1. These values are then written to the Space.geom array. In

this manner, cells outside the distribution can be entirely avoided while running routines.

After mapping the space, SpaceGen() forms weighting factors for simulated distributions.

As both mapping the space and forming simulated weighting factors are very time consuming, it

writes these values to files so they may be recalled when generating distributions. SpaceGen()

has two user inputs which allows the user the choice whether to map the space or generate

Page 144: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

127

simulated weighting factors. If the user already has this information from previous program runs

the user may opt not to recalculate the values but to read them from the files instead.

After either forming weighting factors or reading them from a file, SpaceGen() will filter

these values according to the quantity of simulated values to be used. It then stores the filtered

weighting values in the Space.Sim array to be recalled when generating simulated distributions.

In a brief summary, SpaceGen() generates and stores geometric space data which is necessary for

forming a simulated or experimental distribution. It also generates, filters, and stores simulated

weighting factors for forming a simulated distribution.

/* ------------------------------------------------------------------------------------ * The following function first maps the distribution space and then fills the Space * array with weighted values for all junctions within the fundamental zone. All * junctions outside the of the distribution space or rather within the empty space * within the parameter space receive a zero value. The values are filtered to remove * singular border points. The experimental distribution weighting values are then * assigned to the array. * ----------------------------------------------------------------------------------- */ void SpaceGen(bool CalcAbsGeomSpace, bool CalcSimWeightFactors) { int i, j, k, l, m, q, r, ncellsTJDholeSim, CellDistValues, CellExcludedValues, TotalCellDistValues, TotalCellExcludedValues, TotalValues, ncellsTJDbody, ncellsTJDborder; double costheta1a, phi1a, cosAlpha, N1[3], N2[3], N3[3], Wfactor, Norm, FractionSpaceGeom, Geom, Sim; string Filename, Filename1, Filename2, Filename3, Filename4; Filename = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename.c_str(), ios_base::app); if (outlogfile.fail()) { cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } Filename1 = CurrentPath + "\\" + AnalysisFile; ofstream outAnalysisFile(Filename1.c_str(), ios_base::app); if (outAnalysisFile.fail()) { cout << "Error: Couldn't open " << AnalysisFile << endl; outAnalysisFile.close(); exit(1);

Page 145: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

128

} if (Resolution == 10) { Filename2 = CurrentPath + "\\" + AbsGeomFile10; } else if (Resolution == 15) { Filename2 = CurrentPath + "\\" + AbsGeomFile15; } else { cout << "Resolution value not matched" << endl; exit(1); } if (Resolution == 10) { Filename3 = CurrentPath + "\\" + "WeightFactorsSim10.txt"; } else if (Resolution == 15) { Filename3 = CurrentPath + "\\" + "WeightFactorsSim15.txt"; } else { cout << "Resolution value not matched" << endl; exit(1); } //Allocate space array SpaceAlloc(); //Initialize necessary values N2[0] = 1/sqrt(3.); N2[1] = 1/sqrt(3.); N2[2] = 1/sqrt(3.); ncellsTJDholeSim = 0; Norm = 0; if (CalcAbsGeomSpace == true) { //Initialize necessary values ncellsTJD = 0; ncellsTJDbody = 0; ncellsTJDborder = 0; TotalCellDistValues = 0; TotalCellExcludedValues = 0; /*Determine cells within the absolute geometric space of the distribution*/ if (verbose) cout << "Determining cells within the absolute geometric space of the distribution" << endl << endl; if (verbose) outlogfile << "Determining cells within the absolute geometric space of the distribution" << endl << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k)

Page 146: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

129

for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Initialize values r = 0; CellDistValues = 0; CellExcludedValues = 0; //Add unit values to each cell within the geometric domain while (r < RandCellPtsGeom) { //Generate random triple junctions within each cell RandomTJVectorDihedralIndices(l,m,q,N1,N3); //Exclude triple junctions where a dihedral angle exceeds 180 degrees if(ExcessiveDihedral(N1,N2,N3)) { ++CellExcludedValues; ++r; continue; } //Add unit value to corresponding cell Space[i][j][k][l][m][q].geom += 1; ++CellDistValues; ++r; } TotalCellDistValues += CellDistValues; TotalCellExcludedValues += CellExcludedValues; } //Zero cells absolutely outside domain and give all cells within domain or on border a unit value i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { if (Space[i][j][k][l][m][q].geom == RandCellPtsGeom) { ncellsTJDbody++; } if (Space[i][j][k][l][m][q].geom != RandCellPtsGeom && Space[i][j][k][l][m][q].geom != 0) { ncellsTJDborder++; } if (Space[i][j][k][l][m][q].geom > 0) { Space[i][j][k][l][m][q].geom = 1; ncellsTJD++; } }

Page 147: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

130

if (verbose) cout << "Number of cells within fixed misorientation parameter space = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt << endl; if (verbose) cout << "Number of cells pertaining to the geometric hole of the distribution = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt - ncellsTJD << endl; if (verbose) cout << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) cout << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) cout << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl << endl; if (verbose) outlogfile << "Number of cells within fixed misorientation parameter space = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt << endl; if (verbose) outlogfile << "Number of cells pertaining to the geometric hole of the distribution = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt - ncellsTJD << endl; if (verbose) outlogfile << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) outlogfile << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) outlogfile << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl << endl; //Determine fraction of distribution space within included cells TotalValues = TotalCellDistValues + TotalCellExcludedValues; FractionSpaceGeom = (double)TotalCellDistValues/(double)TotalValues; VolumeCellsDistribution = FractionSpaceGeom*PhiDiscrt*CosDiscrt*CosAlphaDiscrt; if (verbose) cout << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) cout << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; if (verbose) outlogfile << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) outlogfile << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; //Write absolute geometric space data out to file ofstream outAbsGeomFile(Filename2.c_str()); if (outAbsGeomFile.fail()) { cout << "Error: Couldn't open " << Filename2 << endl; outAbsGeomFile.close(); exit(1); } outAbsGeomFile << ncellsTJD << endl << ncellsTJDbody << endl << ncellsTJDborder << endl << FractionSpaceGeom << endl << VolumeCellsDistribution << endl;

Page 148: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

131

i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { outAbsGeomFile << Space[i][j][k][l][m][q].geom << endl; } outAbsGeomFile.close(); } else { //Read absolute geometric space data from file if (verbose) cout << "Reading distribution absolute geometric space data from file" << endl << endl; if (verbose) outlogfile << "Reading distribution absolute geometric space data from file" << endl << endl; ifstream infile(Filename2.c_str()); if (infile.fail()) { cout << "Error: Couldn't open " << Filename2 << endl; infile.close(); exit(1); } infile >> ncellsTJD >> ncellsTJDbody >> ncellsTJDborder >> FractionSpaceGeom >> VolumeCellsDistribution; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { infile >> Space[i][j][k][l][m][q].geom; } infile.close(); if (verbose) cout << "Number of cells within fixed misorientation parameter space = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt << endl; if (verbose) cout << "Number of cells pertaining to the geometric hole of the distribution = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt - ncellsTJD << endl; if (verbose) cout << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) cout << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) cout << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl << endl; if (verbose) outlogfile << "Number of cells within fixed misorientation parameter space = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt << endl; if (verbose) outlogfile << "Number of cells pertaining to the geometric hole of the distribution = " << PhiDiscrt*CosDiscrt*CosAlphaDiscrt - ncellsTJD << endl;

Page 149: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

132

if (verbose) outlogfile << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) outlogfile << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) outlogfile << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl << endl; if (verbose) cout << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) cout << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; if (verbose) outlogfile << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) outlogfile << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; } if (CalcSimWeightFactors == true) { //Generate simulation weighting factors if (verbose) cout << "Generating simulation weighting factors" << endl << endl; if (verbose) outlogfile << "Generating simulation weighting factors" << endl << endl; //Initialize r r = 0; while (r<RandTraceVects) { //Generate random triple junctions in selected fundamental zone RandomTJ(N1,N3); //Find array indices of each triple junction cosAlpha = cos(MinAngle(N3,N2)); Vector2ArrayIndices(N1,l,m); ArrayIndicesCosAlpha(cosAlpha,q); //Add unit value to each corresponding cell //Exclude cells where a dihedral angle is absolutely greater than 180 degrees //This catches the rare few that slip by given finite values of RandCellPtsGeom if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Add unit value to cell Space[i][j][k][l][m][q].Sim += 1; Norm += 1; //cout << i << " " << j << " " << k << " " << l << " " << m << " " << q << endl;

Page 150: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

133

++r; //cout << r << endl << endl; } //Write simulated weighting factors out to file ofstream outSimWeightFile(Filename3.c_str()); if (outSimWeightFile.fail()) { cout << "Error: Couldn't open " << Filename3 << endl; outSimWeightFile.close(); exit(1); } outSimWeightFile << RandTraceVects << endl << Norm << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { outSimWeightFile << Space[i][j][k][l][m][q].Sim << endl; } outSimWeightFile.close(); } else { //Read simulated weighting factors from file if (verbose) cout << "Reading simulated weighting factors from file" << endl << endl; if (verbose) outlogfile << "Reading simulated weighting factors from file" << endl << endl; ifstream infile1(Filename3.c_str()); if (infile1.fail()) { cout << "Error: Couldn't open " << Filename3 << endl; infile1.close(); exit(1); } infile1 >> RandTraceVects >> Norm; if (verbose) cout << "Simulation weighting factors formed with " << RandTraceVects << " RandTraceVects" << endl; if (verbose) outlogfile << "Simulation weighting factors formed with " << RandTraceVects << " RandTraceVects" << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { infile1 >> Space[i][j][k][l][m][q].Sim; } infile1.close();

Page 151: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

134

//PlotN1VectorsRandom(false,phi1ABfm,PHIABfm,phi2ABfm,-.258199); //For plotting weighting factors } //Finish forming normalization factor Norm = Norm/ncellsTJD; /*Filter simulated distribution according to quantity of data to remove singularities*/ if (verbose) cout << "Filtering data to remove singularities at distribution border cells" << endl << endl; if (verbose) outlogfile << "Filtering data to remove singularities at distribution border cells" << endl << endl; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } if (Space[i][j][k][l][m][q].Sim < AvgPtFractionSim*Norm) { //cout << i << " " << j << " " << k << " " << l << " " << m << " " << q << endl; Space[i][j][k][l][m][q].Sim = 0; ncellsTJDholeSim++; continue; } } if (verbose) cout << "Number of cells below simulated zero filter = " << ncellsTJDholeSim << endl; ncellsTJDsim = ncellsTJD - ncellsTJDholeSim; if (verbose) cout << "Total number of cells pertaining to the simulated distribution = " << ncellsTJDsim << endl << endl; if (verbose) outlogfile << "Number of cells below simulated zero filter = " << ncellsTJDholeSim << endl; ncellsTJDsim = ncellsTJD - ncellsTJDholeSim; if (verbose) outlogfile << "Total number of cells pertaining to the simulated distribution = " << ncellsTJDsim << endl << endl; /*Regenerate normalization factor*/ Norm = 0; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0)

Page 152: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

135

{ continue; } //Exclude cells within simulated hole of space if (Space[i][j][k][l][m][q].Sim == 0) { continue; } Norm += Space[i][j][k][l][m][q].Sim; } //Finish forming normalization factor Norm = Norm/ncellsTJDsim; /*Convert values in space to MRD values and give all cells in domain a weighted value*/ //i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within simulated filtered hole of space if (Space[i][j][k][l][m][q].Sim == 0) { continue; } //Divide every value by normalization coefficient so that the average value of all the cells = 1 Space[i][j][k][l][m][q].Sim = Space[i][j][k][l][m][q].Sim/Norm; //Form weighting factor Space[i][j][k][l][m][q].Sim = 1/Space[i][j][k][l][m][q].Sim; } //PlotN1VectorsRandom(false,phi1ABfm,PHIABfm,phi2ABfm,-.258199); //For plotting weighting factors outAnalysisFile.close(); //Store space values /*Create stream for writing experimental data out to file*/ //Write values out to files if (verbose) cout << "Writing Space data out to file\n" << endl; if (verbose) outlogfile << "Writing Space data out to file\n" << endl; //Combine current directory path with filenames if (Resolution == 10) { Filename4 = CurrentPath + "\\" + "Values_Space_10.txt"; }

Page 153: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

136

else if (Resolution == 15) { Filename4 = CurrentPath + "\\" + "Values_Space_15.txt"; } else { cout << "Resolution value not matched" << endl; outlogfile << "Resolution value not matched" << endl; outlogfile.close(); exit(1); } //Open and write to datafile ofstream outfile(Filename4.c_str()); if (outfile.fail()) { if (Resolution == 10) { cout << "Error: Couldn't open " << "Values_Space_10.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_10.txt" << endl; outfile.close(); outlogfile.close(); exit(1); } if (Resolution == 15) { cout << "Error: Couldn't open " << "Values_Space_15.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_15.txt" << endl; outfile.close(); outlogfile.close(); exit(1); } } //Define output format outfile << setprecision(8); outfile << fixed; //Output space calculation parameters outfile << Resolution << endl; outfile << RandCellPtsGeom << endl; outfile << RandTraceVects << endl; outfile << AvgPtFractionSim << endl; outfile << AvgPtFractionExp << endl; //Output absolute geometric data outfile << PhiDiscrt*CosDiscrt*CosAlphaDiscrt << endl; outfile << PhiDiscrt*CosDiscrt*CosAlphaDiscrt - ncellsTJD << endl; outfile << ncellsTJD << endl; outfile << ncellsTJDbody << endl; outfile << ncellsTJDborder << endl; outfile << FractionSpaceGeom << endl; outfile << VolumeCellsDistribution << endl;

Page 154: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

137

//Output filtered data outfile << ncellsTJDholeSim << endl; outfile << ncellsTJDsim << endl; outfile << ncellsTJDexp << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Find space characteristics for distributions Geom = Space[i][j][k][l][m][q].geom; Sim = Space[i][j][k][l][m][q].Sim; /*cout << "Geom = " << Geom << endl; cout << "Sim = " << Sim << endl; cout << "Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ //Write values out to file outfile << setw(3) << i << setw(3) << j << setw(3) << k << setw(3) << l << setw(3) << m << setw(3) << q << setw(13) << Geom << setw(13) << Sim << endl; } outfile.close(); outlogfile.close(); //Analyze filtered space AnalyzeFilteredSpace(true); }

A.3 RebuildSpace()

As SpaceGen() takes substantial runtime, all values formed while running that function

are written to files. RebuildSpace() may be run to reallocate the Space array and assign stored

Space.geom and Space.Sim array values to the Space array. This should only be done if the

quantity of simulated data will be the same as that used for filtering the stored Space.Sim

distribution weighting values.

/* -------------------------------------------------------------------- * This function rebuilds the Space distribution from stored data. The * function allocates the array and reads the Space array values from the * files Values_Space_10 or Values_Space_15 according to the given * resolution. The function then assigns the values to the arrays. * -------------------------------------------------------------------- */ void RebuildSpace() {

Page 155: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

138

int i, j, k, l, m, q, g, Resolution_Space, RandCellPtsGeom_Space, RandTraceVects_Space, CellsFixedMisSpace, CellsGeomHole, ncellsTJDbody, ncellsTJDborder, ncellsTJDholeSim, FilteredCells, s, ncellsTJDholeExp, FilteredCellsExp; double Geom, Sim, Exp, values, AvgPtFractionSim_Space, AvgPtFractionExp_Space, FractionSpaceGeom, FractionSpace, VolumeFilteredCells, FractionDistribution, VolumeCellsDistributionFiltered, data, FractionSpaceExp, VolumeFilteredCellsExp, FractionDistributionExp, VolumeCellsDistributionFilteredExp; string Filename, Filename1; Filename1 = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename1.c_str(), ios_base::app); if (outlogfile.fail()) { cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } /*Read distribution values in from file*/ //Combine current directory path with filename if (verbose) cout << "Reading Space data from files" << endl << endl; if (verbose) outlogfile << "Reading Space data from files" << endl << endl; if (Resolution == 10) { Filename = CurrentPath + "\\" + "Values_Space_10.txt"; } else if (Resolution == 15) { Filename = CurrentPath + "\\" + "Values_Space_15.txt"; } else { cout << "Resolution value not matched" << endl; outlogfile << "Resolution value not matched" << endl; outlogfile.close(); exit(1); } //Open and read from distribution file to determine number of cells in distributions ifstream infile(Filename.c_str()); if (infile.fail()) { if (Resolution == 10) { cout << "Error: Couldn't open " << "Values_Space_10.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_10.txt" << endl; infile.close(); outlogfile.close(); exit(1);

Page 156: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

139

} if (Resolution == 15) { cout << "Error: Couldn't open " << "Values_Space_15.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_15.txt" << endl; infile.close(); outlogfile.close(); exit(1); } } //Input space calculation parameters infile >> Resolution_Space; infile >> RandCellPtsGeom_Space; infile >> RandTraceVects_Space; infile >> AvgPtFractionSim_Space; infile >> AvgPtFractionExp_Space; //Input absolute geometric data infile >> CellsFixedMisSpace; infile >> CellsGeomHole; infile >> ncellsTJD; infile >> ncellsTJDbody; infile >> ncellsTJDborder; infile >> FractionSpaceGeom; infile >> VolumeCellsDistribution; //Input filtered data infile >> ncellsTJDholeSim; infile >> ncellsTJDsim; infile >> ncellsTJDexp; //Allocate arrays SpaceAlloc(); if (verbose) cout << "Assign Space values to array" << endl << endl; if (verbose) outlogfile << "Assign Space values to array" << endl << endl; //Read in measurements from datafile for (g=0; g<CellsFixedMisSpace; ++g) { infile >> i >> j >> k >> l >> m >> q >> Geom >> Sim; /*cout << "Geom = " << Geom << endl; cout << "Sim = " << Sim << endl; cout << "Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ //Assign values to arrays Space[i][j][k][l][m][q].geom = Geom; /*cout << "Geom = " << Geom << endl; cout << "Geom = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/

Page 157: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

140

Space[i][j][k][l][m][q].Sim = Sim; /*cout << "AsymSim = " << AsymSim << endl; cout << "AsymSim = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ } //Input simulated filtered cells data infile >> FilteredCells; infile >> FractionSpace; infile >> VolumeFilteredCells; infile >> FractionDistribution; infile >> VolumeCellsDistributionFiltered; //Input experimental data and experimental filtered cells data if it exists s = 0; while (infile >> data && s <= 6) { if (s == 0) { ncellsTJDholeExp = data; } else if (s == 1) { ncellsTJDexp = data; } else if (s == 2) { FilteredCellsExp = data; } else if (s == 3) { FractionSpaceExp = data; } else if (s == 4) { VolumeFilteredCellsExp = data; } else if (s == 5) { FractionDistributionExp = data; } else if (s == 6) { VolumeCellsDistributionFilteredExp = data; } ++s; } if (s > 6) { for (g=0; g<CellsFixedMisSpace; ++g) { //Assign values to array infile >> i >> j >> k >> l >> m >> q >> Exp; Space[i][j][k][l][m][q].Exp = Exp; /*cout << "Exp = " << Exp << endl;

Page 158: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

141

cout << "Exp = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ } } infile.close(); if (s == 0) { if (verbose) cout << endl << "Experimental space values not generated yet" << endl << endl; if (verbose) outlogfile << endl << "Experimental space values not generated yet" << endl << endl; } if (verbose) cout << endl << "Outputting stored Space parameters and properties: " << endl << endl; if (verbose) cout << endl << "Resolution = " << Resolution_Space << endl << endl; if (verbose) cout << "Geometric Random Cell Points = " << RandCellPtsGeom_Space << endl; if (verbose) cout << "Space Random Trace Vectors = " << RandTraceVects_Space << endl; if (verbose) cout << "Simulated Average Point Fraction = " << AvgPtFractionSim_Space << endl; if (verbose) cout << "Experimental Average Point Fraction = " << AvgPtFractionExp_Space << endl << endl; if (verbose) cout << "Number of cells within fixed misorientation parameter space = " << CellsFixedMisSpace << endl; if (verbose) cout << "Number of cells pertaining to the geometric hole of the distribution = " << CellsGeomHole << endl; if (verbose) cout << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) cout << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) cout << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl; if (verbose) cout << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) cout << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; if (verbose) cout << "Number of cells below simulated zero filter = " << ncellsTJDholeSim << endl; if (verbose) cout << "Total number of cells pertaining to the simulated distribution = " << ncellsTJDsim << endl << endl; if (verbose) cout << "Number of filtered cells = " << FilteredCells << endl; if (verbose) cout << "Fraction of distribution space within filtered cells = " << FractionSpace << endl; if (verbose) cout << "Excluded cell volume within the distribution space = " << VolumeFilteredCells << endl; if (verbose) cout << "Fraction of cell volume filtered from the entire distribution = " << FractionDistribution << endl; if (verbose) cout << "Cell volume within the distribution space after filtering = " << VolumeCellsDistributionFiltered << endl << endl;

Page 159: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

142

if (s != 0) { if (verbose) cout << "Number of cells below experimental zero filter = " << ncellsTJDholeExp << endl; if (verbose) cout << "Total number of cells pertaining to the experimental distribution = " << ncellsTJDexp << endl << endl; if (verbose) cout << "Number of filtered cells = " << FilteredCellsExp << endl; if (verbose) cout << "Fraction of distribution space within filtered cells = " << FractionSpaceExp << endl; if (verbose) cout << "Excluded cell volume within the distribution space = " << VolumeFilteredCellsExp << endl; if (verbose) cout << "Fraction of cell volume filtered from the entire distribution = " << FractionDistributionExp << endl; if (verbose) cout << "Cell volume within the distribution space after filtering = " << VolumeCellsDistributionFilteredExp << endl << endl; } if (verbose) outlogfile << endl << "Outputting stored Space parameters and properties: " << endl << endl; if (verbose) outlogfile << endl << "Resolution = " << Resolution_Space << endl << endl; if (verbose) outlogfile << "Geometric Random Cell Points = " << RandCellPtsGeom_Space << endl; if (verbose) outlogfile << "Space Random Trace Vectors = " << RandTraceVects_Space << endl; if (verbose) outlogfile << "Simulated Average Point Fraction = " << AvgPtFractionSim_Space << endl << endl; if (verbose) outlogfile << "Experimental Average Point Fraction = " << AvgPtFractionExp_Space << endl << endl; if (verbose) outlogfile << "Number of cells within fixed misorientation parameter space = " << CellsFixedMisSpace << endl; if (verbose) outlogfile << "Number of cells pertaining to the geometric hole of the distribution = " << CellsGeomHole << endl; if (verbose) outlogfile << "Number of cells pertaining to the absolute geometric space of the distribution\n= " << ncellsTJD << endl; if (verbose) outlogfile << "Number of cells pertaining to the body of the distribution geometric space\n= " << ncellsTJDbody << endl; if (verbose) outlogfile << "Number of cells pertaining to the border of the distribution geometric space\n= " << ncellsTJDborder << endl; if (verbose) outlogfile << "Fraction of parameter space within the absolute geometric space = " << FractionSpaceGeom << endl; if (verbose) outlogfile << "Cell volume within the distribution space = " << VolumeCellsDistribution << endl << endl; if (verbose) outlogfile << "Number of cells below simulated zero filter = " << ncellsTJDholeSim << endl; if (verbose) outlogfile << "Total number of cells pertaining to the simulated distribution = " << ncellsTJDsim << endl << endl; if (verbose) outlogfile << "Number of filtered cells = " << FilteredCells << endl; if (verbose) outlogfile << "Fraction of distribution space within filtered cells = " << FractionSpace << endl;

Page 160: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

143

if (verbose) outlogfile << "Excluded cell volume within the distribution space = " << VolumeFilteredCells << endl; if (verbose) outlogfile << "Fraction of cell volume filtered from the entire distribution = " << FractionDistribution << endl; if (verbose) outlogfile << "Cell volume within the distribution space after filtering = " << VolumeCellsDistributionFiltered << endl << endl; if (s != 0) { if (verbose) outlogfile << "Number of cells below experimental zero filter = " << ncellsTJDholeExp << endl; if (verbose) outlogfile << "Total number of cells pertaining to the experimental distribution = " << ncellsTJDexp << endl << endl; if (verbose) outlogfile << "Number of filtered cells = " << FilteredCellsExp << endl; if (verbose) outlogfile << "Fraction of distribution space within filtered cells = " << FractionSpaceExp << endl; if (verbose) outlogfile << "Excluded cell volume within the distribution space = " << VolumeFilteredCellsExp << endl; if (verbose) outlogfile << "Fraction of cell volume filtered from the entire distribution = " << FractionDistributionExp << endl; if (verbose) outlogfile << "Cell volume within the distribution space after filtering = " << VolumeCellsDistributionFilteredExp << endl << endl; } outlogfile.close(); }

A.4 SimDataGen()

This function forms a simulated distribution within the SimData array. Every value it

adds to the simulated distribution it also converts to experimental data as it would appear from an

EBSD scan. It writes this simulated experimental data out to a file so that it may be recalled and

used to form an experimental distribution by the stereological method. In this manner, it

generates simulated experimental data and the actual distribution from which that data was

derived to validate the stereologically formed distribution. The simulated distribution features a

peak intensity according to the frequency function selected within the code. SimDataGen()

contains many lines of code which have been commented out. While they are not necessary for

Page 161: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

144

forming the distribution, they were useful for validating the method of selecting a fundamental

zone.

SimDataGen() has a companion function, UniformSimDataGen(), which is identical with

the exception that it forms a uniform random distribution and uniform random simulated

experimental data. This data will be utilized when forming experimental weighting factors.

/* ------------------------------------------------------------------------------------ * The following function simultaneously generates a simulated distribution and * simulated experimental data of that distribution given the assigned frequency * function. It outputs this data to a file for solving with the stereological approach. * ----------------------------------------------------------------------------------- */ void SimDataGen() { int i, j, k, l, m, q, t, u, lP, mP, qP, ExpValues, SimDistPts, lMax, mMax, qMax, lMin, mMin, qMin; double N1[3], N2[3], N3[3], Fpeak, theta1a, costheta1a, phi1a, cosAlpha, alphaN1, alphaN3, alphaN1N3, F, rand, phi1, PHI, phi2, GA[3][3], RRotate[3][3], phi1A, PHIA, phi2A, GS[3][3], N1P[3], N2P[3], N3P[3], L1[3], L2[3], L3[3], GAB[3][3], GB[3][3], GAT[3][3], phi1B, PHIB, phi2B, Norm, alpha, IdealPeak, MaxSim, MinSim, Range; string Filename, Filename1; Filename1 = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename1.c_str(), ios_base::app); if (outlogfile.fail()) { cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } /*Initialization routine*/ if (!DefaultInputs) { //Determine number of experimental measurements to be generated /*cout << "Enter number of experimental measurements to be generated:" << endl; cin >> ndata; cout << endl;*/ ndata = SimDataValues; } //Allocate the simulated data array SimDataAlloc(); if (verbose) cout << "Generating experimental values" << endl << endl; if (verbose) outlogfile << "Generating experimental values" << endl << endl;

Page 162: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

145

//Initialize necessary values //Fpeak = 10*exp(-pow(0.*R2D/15,2)) + 1; Fpeak = 10*exp(-pow(0.*R2D/15,2)) + 3.5; //Frequency function peak /*ArrayIndices(cos(Ptheta1a),Pphi1a,lP,mP); ArrayIndicesCosAlpha(cos(Palpha),qP); */ //Delta peak ExpValues = 0; SimDistPts = 0; Norm = 0; MaxSim = 0; MinSim = 1; /*Create stream for writing experimental data out to file*/ //Combine current directory path with filename Filename = CurrentPath + "\\" + datafile; //Open and write to datafile ofstream outfile(Filename.c_str()); if (outfile.fail()) { cout << "Error: Couldn't open " << datafile << endl; outlogfile << "Error: Couldn't open " << datafile << endl; outfile.close(); exit(1); } /*Generate orientations according to distribution*/ //while (SimDistPts<ndata) //Simulated values mandate generation while (ExpValues<ndata) //Experimental values mandate generation { //Generate random triple junctions within frame N2[0] = 1/sqrt(3.); N2[1] = 1/sqrt(3.); N2[2] = 1/sqrt(3.); RandomTJ(N1,N3); //Generate costheta1a, phi1a, & cosAlpha values from vectors Vector2ThetaPhi(N1,theta1a,phi1a); costheta1a = cos(theta1a); cosAlpha = cos(MinAngle(N3,N2)); //Solve for indices of given vectors ArrayIndices(costheta1a,phi1a,l,m); ArrayIndicesCosAlpha(cosAlpha,q); //Exclude cells where a dihedral angle is absolutely greater than 180 degrees //This catches the rare few that slip by given finite values of RandCellPtsGeom i = ifm; j = jfm; k = kfm; if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Solve for closeness of triple junction to the ideal value alphaN1 = MinAngle(N1,P1);

Page 163: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

146

alphaN3 = MinAngle(N3,P3); alphaN1N3 = (alphaN1 + alphaN3)/2; //cout << "alphaN1N3 = " << alphaN1N3*R2D << endl; //Solve for frequency value of junction //F = 10*exp(-pow(alphaN1N3*R2D/15,2)) + 1; F = 10*exp(-pow(alphaN1N3*R2D/15,2)) + 3.5; /*Compare randomly generated number to TJDsim MRD value of the cell corresponding to the randomly generated planes*/ //Generate random number and multiply by the maximum MRD value to provide random //MRD value rand = Random(); rand = rand*Fpeak; //Compare TJDsim MRD value //cout << "TJDsim[" << i << "][" << j << "][" << k << "][" << l //<< "][" << m << "][" << q << "] = " << TJDsim[i][j][k][l][m][q] << endl //<< endl; //if (l == lP && m == mP && q == qP) //Delta peak if (rand <= F) //Frequency function peak { //cout << "Accepted value" << endl; /*cout << "N1 = " << N1[0] << " " << N1[1] << " " << N1[2] << endl; cout << "N2 = " << N2[0] << " " << N2[1] << " " << N2[2] << endl; cout << "N3 = " << N3[0] << " " << N3[1] << " " << N3[2] << endl;*/ /*Generate Experimental data and validate fundamental zone*/ //Generate random crystal orientation GA RandomEulerAngles(phi1,PHI,phi2); EangTogMat(phi1,PHI,phi2,GA); //Check Values /*cout << "GA = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GA[t][u] << " " ; } cout << endl; }*/ //Find orientation GB given GABfm and GA MultMatrix(GABfm,GA,GB); //Check values /*cout << "GB = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) {

Page 164: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

147

cout << GB[t][u] << " " ; } cout << endl; } cout << endl;*/ //Generate a random rotation from the [111] direction to a symmmetrical equivalent Random111Rotation(RRotate); //Randomly rotate GA, GB, and triple junction away for experimental data and validation MultMatrix(RRotate,GA,GA); MultMatrix(RRotate,GB,GB); MultMatVect(RRotate,N1,N1); MultMatVect(RRotate,N2,N2); MultMatVect(RRotate,N3,N3); /*cout << "N1R = " << N1[0] << " " << N1[1] << " " << N1[2] << endl; cout << "N2R = " << N2[0] << " " << N2[1] << " " << N2[2] << endl; cout << "N3R = " << N3[0] << " " << N3[1] << " " << N3[2] << endl;*/ //Check Values /*cout << "GAR = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GA[t][u] << " " ; } cout << endl; } cout << "GBR = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GB[t][u] << " " ; } cout << endl; } cout << endl;*/ //Find Euler angles of GA & GB gMatToEang(GA,phi1A,PHIA,phi2A); gMatToEang(GB,phi1B,PHIB,phi2B); //Rotate rotated vectors by inverse of GA Transpose(GA,GAT); MultMatVect(GAT,N1,N1P); MultMatVect(GAT,N2,N2P);

Page 165: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

148

MultMatVect(GAT,N3,N3P); //Calculate trace vectors from Nprime values TraceCalc(N1P,N2P,N1P,L1); TraceCalc(N1P,N2P,N2P,L2); TraceCalc(N1P,N2P,N3P,L3); //cout << "Sample: " << N2P[0] << " " << N2P[1] << " " << N2P[2] << endl; //cout << L2[0] << " " << L2[1] << " " << L2[2] << endl; //Given GA and random triple junction find values within fundamental zone //RotateGAGB111(N1,N2,N3,GA,GB,N1,N2,N3,GA,GB); /*cout << "N1[111] = " << N1[0] << " " << N1[1] << " " << N1[2] << endl; cout << "N2[111] = " << N2[0] << " " << N2[1] << " " << N2[2] << endl; cout << "N3[111] = " << N3[0] << " " << N3[1] << " " << N3[2] << endl;*/ //Check Values /*cout << "GA[111] = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GA[t][u] << " " ; } cout << endl; } cout << "GB Post [111] = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GB[t][u] << " " ; } cout << endl; } cout << endl;*/ //FundZoneGAGBTJ(N1,N3,GA,GB,N1,N3,GA,GB); /*cout << "N1 = " << N1[0] << " " << N1[1] << " " << N1[2] << endl; cout << "N2 = " << N2[0] << " " << N2[1] << " " << N2[2] << endl; cout << "N3 = " << N3[0] << " " << N3[1] << " " << N3[2] << endl;*/ //Check Values /*cout << "GA = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GA[t][u] << " " ;

Page 166: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

149

} cout << endl; } cout << "GB = " << endl; for (t=0; t<3; ++t) { for (u=0; u<3; ++u) { cout << GB[t][u] << " " ; } cout << endl; } cout << endl;*/ //Write experimental values out to a file outfile << setprecision(5); outfile << fixed; outfile << setw(9) << phi1A << setw(9) << PHIA << setw(9) << phi2A << setw(9) << phi1B << setw(9) << PHIB << setw(9) << phi2B << setw(9) << L1[0] << setw(9) << L1[1] << setw(9) << L2[0] << setw(9) << L2[1] << setw(9) << L3[0] << setw(9) << L3[1] << endl; //Generate costheta1a, phi1a, & cosAlpha values from vectors /*Vector2ThetaPhi(N1,theta1a,phi1a); costheta1a = cos(theta1a); cosAlpha = cos(MinAngle(N3,N2));*/ //Solve for indices of given vectors /*ArrayIndices(costheta1a,phi1a,l,m); ArrayIndicesCosAlpha(cosAlpha,q);*/ //Exclude cells which lie within the simulated filtered hole of space if (Space[i][j][k][l][m][q].Sim != 0) { SimData[i][j][k][l][m][q] += 1; SimDistPts++; } //cout << ExpValues << endl << endl; ExpValues++; } //cout << "Conditionally rejected" << endl << endl; } outfile.close(); /*Move through every cell applying weighting factors*/ i = ifm; j = jfm; k = kfm;

Page 167: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

150

//for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for (q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within filtered hole of space if (Space[i][j][k][l][m][q].Sim == 0) { continue; } //Apply weighting factors SimData[i][j][k][l][m][q] = SimData[i][j][k][l][m][q]*Space[i][j][k][l][m][q].Sim; Norm += SimData[i][j][k][l][m][q]; /*cout << "Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "].asym = " << Space[i][j][k][l][m][q].Sim << endl << endl;*/ } //Finish forming normalization coefficient by dividing by number of cells in distribution Norm = Norm/ncellsTJDsim; /*Convert values to MRD values*/ //i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within asymmetric hole of space if (Space[i][j][k][l][m][q].Sim == 0) { continue; } //Divide every value by normalization coefficient so that the average value of all the cells = 1 SimData[i][j][k][l][m][q] = SimData[i][j][k][l][m][q]/Norm; /*cout << "SimData[" << i << "][" << j << "][" << k << "][" << l

Page 168: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

151

<< "][" << m << "][" << q << "] = " << SimData[i][j][k][l][m][q] << endl << endl;*/ //Find maximum and minimum distribution values if (SimData[i][j][k][l][m][q] > MaxSim) { MaxSim = SimData[i][j][k][l][m][q]; lMax = l; mMax = m; qMax = q; } if (SimData[i][j][k][l][m][q] < MinSim) { MinSim = SimData[i][j][k][l][m][q]; lMin = l; mMin = m; qMin = q; } } //Output number of data points in simulated distribution if (verbose) cout << "Number of data points in simulated distribution = " << SimDistPts << endl; if (verbose) cout << "Number of experimental values generated = " << ExpValues << endl << endl; if (verbose) outlogfile << "Number of data points in simulated distribution = " << SimDistPts << endl; if (verbose) outlogfile << "Number of experimental values generated = " << ExpValues << endl << endl; /*Examine peaks in distribution*/ //Output maximum and minimum distribution values if (verbose) cout << "Maximum distribution value = " << MaxSim << endl << "Maximum value = SimData[" << i << "][" << j << "][" << k << "][" << lMax << "][" << mMax << "][" << qMax << "]" << endl << endl; if (verbose) cout << "Minimum distribution value = " << MinSim << endl << "Minimum value = SimData[" << i << "][" << j << "][" << k << "][" << lMin << "][" << mMin << "][" << qMin << "]" << endl << endl; if (verbose) outlogfile << "Maximum distribution value = " << MaxSim << endl << "Maximum value = SimData[" << i << "][" << j << "][" << k << "][" << lMax << "][" << mMax << "][" << qMax << "]" << endl << endl; if (verbose) outlogfile << "Minimum distribution value = " << MinSim << endl << "Minimum value = SimData[" << i << "][" << j << "][" << k << "][" << lMin << "][" << mMin << "][" << qMin << "]" << endl << endl; //Find array indices of Planes 1 and 3 Vector2ArrayIndices(P1,l,m); alpha = MinAngle(P2,P3); cosAlpha = cos(alpha); ArrayIndicesCosAlpha(cosAlpha,q); IdealPeak = SimData[i][j][k][l][m][q]; if (verbose) cout << "Ideal Peak = " << IdealPeak << endl << "Ideal Peak = SimData[" << i << "][" << j << "][" << k << "][" << l

Page 169: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

152

<< "][" << m << "][" << q << "]" << endl << endl; if (verbose) outlogfile << "Ideal Peak = " << IdealPeak << endl << "Ideal Peak = SimData[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl; Range = MaxSim - MinSim; cout << "Range = " << Range << endl << endl; outlogfile << "Range = " << Range << endl << endl; outlogfile.close(); }

A.5 SpaceTJDexpGen()

This function is the experimental equivalent of SpaceGen() in that it forms weighting

factors and filters these factors according to the quantity of experimental data. It then stores the

filtered weighting values in the Space.Exp array to be recalled when generating experimental

distributions. Like SpaceGen(), these factors are written out to a file so that they may be recalled

and filtered without regeneration if the user desires. This feature is exceptionally useful as

forming the experimental weighting factors is the most time consuming component of the code.

Unlike SpaceGen(), it doesn’t map the space for geometry as this was already accomplished by

SpaceGen().

SpaceTJDexpGen() inputs uniform simulated experimental data in order to form

weighting factors. As these factors are applied to stereologically generated distributions, they

must be formed while implementing the stereological method on random data. The Space.Exp

array values are added to the file containing the Space array data so that RebuildSpace() may be

utilized to rebuild the Space array. This removes the need to regenerate and filter values when

equivalent quantities of experimental data are being utilized.

/* ------------------------------------------------------------------------------------ * The following function reads in the uniform experimental data and generates the TJD * in the six-dimensional TJDexp accumulator array using Saylor's stereological * approach. It then generates the corresponding experimental weighting factors and

Page 170: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

153

* writes these out to the Space array. * ----------------------------------------------------------------------------------- */ void SpaceTJDexpGen(bool CalcExpWeightFactors) { int g, h, i, j, k, l, m, q, r, s, w, x, Ndata, ndataExp, numberpts, lMax, mMax, qMax, lMin, mMin, qMin, ZeroTJDexp, IndexImproper, IndexProper, ncellsTJDholeExp, ExcessiveD, NormalD, A; double data, phi1A, PHIA, phi2A, phi1B, PHIB, phi2B, L1[3], L2[3], L3[3], N1P[3], N2P[3], N3P[3], GA[3][3], GB[3][3], N2PD[3], N2D[3], thetaN2P, phiN2P, costhetaN2P, MinError, Error, N2i[3], N2[3], Rotate111[3][3], GAT[3][3], GAB[3][3], phi1AB, PHIAB, phi2AB, thetaN1P, phiN1P, costhetaN1P, N1PD[3], N1D[3], TL[3], thetaN3P, phiN3P, costhetaN3P, N3PD[3], N3D[3], Pangle, MinN3Error, N3Error, N3[3], cosAlpha, Norm, Exp, TimeInSeconds, TimeInMinutes, TimeInHours; string Filename, Filename1, Filename2, Filename3, ans; clock_t Time; Filename1 = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename1.c_str(), ios_base::app); if (outlogfile.fail()) { cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } if (Resolution == 10) { Filename2 = CurrentPath + "\\" + "WeightFactorsExp10.txt"; } else if (Resolution == 15) { Filename2 = CurrentPath + "\\" + "WeightFactorsExp15.txt"; } else { cout << "Resolution value not matched" << endl; exit(1); } //Combine current directory path with filenames if (Resolution == 10) { Filename3 = CurrentPath + "\\" + "Values_Space_10.txt"; } else if (Resolution == 15) { Filename3 = CurrentPath + "\\" + "Values_Space_15.txt"; } else { cout << "Resolution value not matched" << endl;

Page 171: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

154

outlogfile << "Resolution value not matched" << endl; outlogfile.close(); exit(1); } //Open and write to datafile ofstream outfile(Filename3.c_str(), ios_base::app); if (outfile.fail()) { if (Resolution == 10) { cout << "Error: Couldn't open " << "Values_Space_10.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_10.txt" << endl; outfile.close(); outlogfile.close(); exit(1); } if (Resolution == 15) { cout << "Error: Couldn't open " << "Values_Space_15.txt" << endl; outlogfile << "Error: Couldn't open " << "Values_Space_15.txt" << endl; outfile.close(); outlogfile.close(); exit(1); } } //Allocate the TJD experimental array TJDexpAlloc(); //Initialize necessary values Norm = 0; N2[0] = 1/sqrt(3.); N2[1] = 1/sqrt(3.); N2[2] = 1/sqrt(3.); IndexImproper = 0; IndexProper = 0; ncellsTJDholeExp = 0; ExcessiveD = 0; NormalD = 0; if(CalcExpWeightFactors == true) { /*Read experimental data in from file*/ //Combine current directory path with filename if (verbose) cout << "Reading experimental values" << endl; if (verbose) outlogfile << "Reading experimental values" << endl; Filename = CurrentPath + "\\" + UniformDatafile; //Open and read from datafile to determine number of rows in data ifstream infile(Filename.c_str()); if (infile.fail()) { cout << "Error: Couldn't open " << UniformDatafile << endl; infile.close();

Page 172: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

155

exit(1); } Ndata = 0; while(infile >> data) { Ndata++; } ndataExp = Ndata/12; cout << "Number of triple junctions in dataset = " << ndataExp << endl << endl; outlogfile << "Number of triple junctions in dataset = " << ndataExp << endl << endl; if (!DefaultInputs) { ////Number of triple junction measurements to be used //cout << "Use all triple junction measurements?\n"; //cin >> ans; cout << endl; //if((ans == "No")||(ans == "NO")||(ans == "no")||(ans == "N")||(ans == "n")) //{ // cout << "Enter number of measurements to be used in analysis:" << endl; // cin >> numberpts; // ndataExp = numberpts; //} //else if((ans == "Yes")||(ans == "YES")||(ans == "yes")||(ans == "Y")||(ans == "y")) //{ //} //else //{ // cout << "Invalid input" << endl; // exit(1); //} /*numberpts = 500000; ndataExp = numberpts; cout << "Using " << ndataExp << " triple junction measurements" << endl << endl;*/ cout << "Using all triple junction measurements" << endl << endl; outlogfile << "Using all triple junction measurements" << endl << endl; } if (verbose) cout << "Generating experimental distribution" << endl << endl; if (verbose) outlogfile << "Generating experimental distribution" << endl << endl; //Return to the beginning of file infile.clear(); infile.seekg(0, ios_base::beg); //Start timer Time = clock(); //Read in measurements from UniformDatafile

Page 173: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

156

for (g=0; g<ndataExp; ++g) { infile >> phi1A; if (infile.eof() == true) { cout << "Error: End of file reached" << endl; infile.close(); exit(1); } infile >> PHIA >> phi2A >> phi1B >> PHIB >> phi2B >> L1[0] >> L1[1] >> L2[0] >> L2[1] >> L3[0] >> L3[1]; //Check values /*cout << setprecision(5); cout << fixed; cout << left; cout << setw(9) << phi1 << setw(9) << PHI << setw(9) << phi2 << setw(9) << phi1B << setw(9) << PHIB << setw(9) << phi2B << setw(9) << L1[0] << setw(9) << L1[1] << setw(9) << L2[0] << setw(9) << L2[1] << setw(9) << L3[0] << setw(9) << L3[1] << endl;*/ //Convert traces to plane normals in x-y plane L1[2] = 0; L2[2] = 0; L3[2] = 0; ConvertTrace2NVector(L1,L2,L1,N1P); ConvertTrace2NVector(L1,L2,L2,N2P); ConvertTrace2NVector(L1,L2,L3,N3P); //Generate GA and GB EangTogMat(phi1A,PHIA,phi2A,GA); EangTogMat(phi1B,PHIB,phi2B,GB); /*Find rotation which transforms N2 to the [111] direction*/ //Generate theta and phi Vector2ThetaPhi(N2P,thetaN2P,phiN2P); //Generate all possible values of thetaN2P MinError = .01; for (h=1; h<=Cos111N2Discrt; ++h) { costhetaN2P = 1 - (2./Cos111N2Discrt*h - 2./Cos111N2Discrt/2); thetaN2P = acos(costhetaN2P); ThetaPhi2Vector(thetaN2P,phiN2P,N2PD); MultMatVect(GA,N2PD,N2D); MultScalVect(sqrt(3.),N2D); //cout << N2D[0] << " " << N2D[1] << " " << N2D[2] << endl; //Extract value closest to <111> Error = CalcVect111Error(N2D); if (Error < MinError) {

Page 174: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

157

MinError = Error; N2i[0] = N2D[0]; N2i[1] = N2D[1]; N2i[2] = N2D[2]; } if (MinError == 0.1) { cout << "Error: MinError = .1" << endl; } } //cout << N2i[0] << " " << N2i[1] << " " << N2i[2] << endl; //Extract signs of value closest to <111> q = Sign(N2i[0]); r = Sign(N2i[1]); s = Sign(N2i[2]); //cout << "Reconstructed: " << q << " " << r << " " << s << " " << endl; //Find GA minimum angle and [111] direction Rotation111(q,r,s,GA,Rotate111); //Rotate GA and GB MultMatrix(Rotate111,GA,GA); MultMatrix(Rotate111,GB,GB); //Generate GAB Transpose(GA,GAT); MultMatrix(GB,GAT,GAB); //Find misorientation within fundamental zone and identify symmetry operator FundZoneMisSymOp(GAB,GAB,A); //Extract Euler angles gMatToEang(GAB,phi1AB,PHIAB,phi2AB); ArrayIndicesEuler(phi1AB,PHIAB,phi2AB,i,j,k); //Count incorrectly assigned misorientations if (i != ifm || j != jfm || k != kfm) { IndexImproper++; } else { IndexProper++; } /*Given the plane normals in the x-y plane find all possible values of the N1 and associated N3 planes and assign them to their corresponding cells*/ //Generate theta and phi Vector2ThetaPhi(N1P,thetaN1P,phiN1P); Vector2ThetaPhi(N3P,thetaN3P,phiN3P); /*cout << "phiN1P = " << phiN1P << endl; cout << "phiN3P = " << phiN3P << endl;*/

Page 175: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

158

//Generate all possible values of thetaN1P for (w=1; w<=CosN1Discrt; ++w) { costhetaN1P = 1 - (2./CosN1Discrt*w - 2./CosN1Discrt/2); //cout << costhetaN1P << endl; thetaN1P = acos(costhetaN1P); //cout << "thetaN1P = " << thetaN1P << endl; ThetaPhi2Vector(thetaN1P,phiN1P,N1PD); //cout << "N1P = " << N1PD[0] << " " << N1PD[1] << " " << N1PD[2] << endl; MultMatVect(GA,N1PD,N1D); //MultScalVect(sqrt(3.),N1D); //cout << "N1 = " << N1D[0] << " " << N1D[1] << " " << N1D[2] << endl; //Solve for triple line direction given N1D and N2 if(Clockwise(N1D,N2)) { //cout << "N1 clockwise from N2" << endl; CrossProduct(N1D,N2,TL); } else { //cout << "N1 counterclockwise from N2" << endl; CrossProduct(N2,N1D,TL); } //Generate all possible values of thetaN3P and select N3 MinN3Error = 1; for (x=1; x<=CosN3Discrt; ++x) { costhetaN3P = 1 - (2./CosN3Discrt*x - 2./CosN3Discrt/2); //cout << costhetaN3P << endl; thetaN3P = acos(costhetaN3P); ThetaPhi2Vector(thetaN3P,phiN3P,N3PD); MultMatVect(GA,N3PD,N3D); //MultScalVect(sqrt(3.),N3D); //cout << N3D[0] << " " << N3D[1] << " " << N3D[2] << endl; //Solve for N3D most nearly perpendicular to TL Pangle = MinAngle(N3D,TL); //cout << "Pangle = " << Pangle << endl; N3Error = RelError(PI/2,Pangle); if(N3Error < MinN3Error) { MinN3Error = N3Error; //cout << "MinN3Error = " << MinN3Error << endl << endl; VectorCopy(N3D,N3); } }

Page 176: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

159

//cout << "N3 = " << N3[0] << " " << N3[1] << " " << N3[2] << endl; //cout << "MinN3Error Selected = " << MinN3Error << endl << endl; //Exclude cells where a dihedral angle exceeds 180 degrees if (ExcessiveDihedral(N1D,N2,N3)) { //cout << "Shouldn't happen" << endl; ExcessiveD++; continue; } NormalD++; //Find values within fundamental zone SymmetriesMultMatVect(A,N1D,N1D); SymmetriesMultMatVect(A,N3,N3); //Solve for dihedral angle alpha cosAlpha = cos(MinAngle(N2,N3)); //Solve for indices of potential vectors Vector2ArrayIndices(N1D,l,m); ArrayIndicesCosAlpha(cosAlpha,q); //Exclude cells where a dihedral angle is absolutely greater than 180 degrees //This catches the rare few that slip by given finite values of RandCellPtsGeom if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Add values to cell TJDexp[i][j][k][l][m][q] += 1; Norm++; } } infile.close(); //End timer and calculate time Time = clock() - Time; TimeInSeconds = Time/(double) CLOCKS_PER_SEC; TimeInMinutes = TimeInSeconds/60; TimeInHours = TimeInMinutes/60; cout << "Elapsed time = " << TimeInMinutes << " minutes" << endl << endl; cout << "Elapsed time = " << TimeInHours << " hours" << endl << endl; outlogfile << "Elapsed time = " << TimeInMinutes << " minutes" << endl << endl; outlogfile << "Elapsed time = " << TimeInHours << " hours" << endl << endl; if (verbose) cout << "Misorientation properly indexed = " << IndexProper << endl;

Page 177: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

160

if (verbose) cout << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) cout << "Normal dihedral angles = " << NormalD << endl; if (verbose) cout << "Excessive dihedral angles = " << ExcessiveD << endl; if (verbose) outlogfile << "Misorientation properly indexed = " << IndexProper << endl; if (verbose) outlogfile << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) outlogfile << "Normal dihedral angles = " << NormalD << endl; if (verbose) outlogfile << "Excessive dihedral angles = " << ExcessiveD << endl; //Write experimental weighting factors out to file ofstream outExpWeightFile(Filename2.c_str()); if (outExpWeightFile.fail()) { cout << "Error: Couldn't open " << Filename2 << endl; outExpWeightFile.close(); exit(1); } outExpWeightFile << ndataExp << endl << IndexProper << endl << IndexImproper << endl << NormalD << endl << ExcessiveD << endl << Norm << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { outExpWeightFile << TJDexp[i][j][k][l][m][q] << endl; } outExpWeightFile.close(); } else { //Read experimental weighting factors from file if (verbose) cout << "Reading experimental weighting factors from file" << endl << endl; if (verbose) outlogfile << "Reading experimental weighting factors from file" << endl << endl; ifstream infile1(Filename2.c_str()); if (infile1.fail()) { cout << "Error: Couldn't open " << Filename2 << endl; infile1.close(); exit(1); } infile1 >> ndataExp >> IndexProper >> IndexImproper >> NormalD >> ExcessiveD >> Norm; if (verbose) cout << "Misorientation properly indexed = " << IndexProper << endl;

Page 178: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

161

if (verbose) cout << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) cout << "Normal dihedral angles = " << NormalD << endl; if (verbose) cout << "Excessive dihedral angles = " << ExcessiveD << endl; if (verbose) outlogfile << "Misorientation properly indexed = " << IndexProper << endl; if (verbose) outlogfile << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) outlogfile << "Normal dihedral angles = " << NormalD << endl; if (verbose) outlogfile << "Excessive dihedral angles = " << ExcessiveD << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { infile1 >> TJDexp[i][j][k][l][m][q]; } infile1.close(); } //Finish forming normalization factor Norm = Norm/ncellsTJD; /*Filter data to remove singularities*/ if (verbose) cout << "Filtering data to remove singularities at distribution border cells" << endl << endl; if (verbose) outlogfile << "Filtering data to remove singularities at distribution border cells" << endl << endl; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } if (TJDexp[i][j][k][l][m][q] < AvgPtFractionExp*Norm) { //cout << i << " " << j << " " << k << " " << l << " " << m << " " << q << endl; TJDexp[i][j][k][l][m][q] = 0; ncellsTJDholeExp++; continue; } } if (verbose) cout << "Number of cells below experimental zero filter = " << ncellsTJDholeExp << endl; ncellsTJDexp = ncellsTJD - ncellsTJDholeExp;

Page 179: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

162

if (verbose) cout << "Total number of cells within the experimental distribution = " << ncellsTJDexp << endl << endl; if (verbose) outlogfile << "Number of cells below experimental zero filter = " << ncellsTJDholeExp << endl; ncellsTJDexp = ncellsTJD - ncellsTJDholeExp; if (verbose) outlogfile << "Total number of cells within the experimental distribution = " << ncellsTJDexp << endl << endl; //Store values in space file //Define output format outfile << setprecision(8); outfile << fixed; outfile << ncellsTJDholeExp << endl; outfile << ncellsTJDexp << endl; /*Regenerate normalization factor*/ //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) Norm = 0; for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within filtered experimental hole of space if (TJDexp[i][j][k][l][m][q] == 0) { continue; } Norm += TJDexp[i][j][k][l][m][q]; } //Finish forming normalization factor Norm = Norm/ncellsTJDexp; /*Write uniform distribution weighting factors to Space array*/ if (verbose) cout << "Writing experimental distribution weighting factors to space array and to file" << endl << endl; if (verbose) outlogfile << "Writing experimental distribution weighting factors to space array and to file" << endl << endl; //Convert values to multiples of random distribution //Divide every value by normalization coefficient so that the average value of all the cells = 1 i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for (q=0; q<CosAlphaDiscrt; ++q) {

Page 180: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

163

//Exclude cells where a dihedral angle is absolutely greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within filtered experimental hole of space if (TJDexp[i][j][k][l][m][q] == 0) { continue; } TJDexp[i][j][k][l][m][q] = TJDexp[i][j][k][l][m][q]/Norm; //Form and write weighting factors to Space Space[i][j][k][l][m][q].Exp = 1/TJDexp[i][j][k][l][m][q]; } //Analyze filtered space AnalyzeFilteredSpace(false); //Write values out to file i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Find space characteristics for distribution Exp = Space[i][j][k][l][m][q].Exp; /*cout << "Exp = " << Exp << endl; cout << "Exp = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ //Write values out to file outfile << setw(3) << i << setw(3) << j << setw(3) << k << setw(3) << l << setw(3) << m << setw(3) << q << setw(13) << Exp << endl; } outfile.close(); outlogfile.close(); }

A.6 TJDexpGen()

This function generates the twin-dependent triple junction distribution from EBSD

section plane measurements using the adopted stereological method. It generates the distribution

within the TJDexp array.

/* ------------------------------------------------------------------------------------ * The following function reads in the experimental data and generates the TJD in the * six-dimensional TJDexp accumulator array using Saylor's stereological approach.

Page 181: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

164

* ----------------------------------------------------------------------------------- */ void TJDexpGen() { int g, h, i, j, k, l, m, q, r, s, w, x, Ndata, ndataExp, numberpts, lMax, mMax, qMax, lMin, mMin, qMin, ZeroTJDexp, IndexImproper, IndexProper, ExcessiveD, NormalD, A; double data, phi1A, PHIA, phi2A, phi1B, PHIB, phi2B, L1[3], L2[3], L3[3], N1P[3], N2P[3], N3P[3], GA[3][3], GB[3][3], N2PD[3], N2D[3], thetaN2P, phiN2P, costhetaN2P, MinError, Error, N2i[3], N2[3], Rotate111[3][3], GAT[3][3], GAB[3][3], phi1AB, PHIAB, phi2AB, thetaN1P, phiN1P, costhetaN1P, N1PD[3], N1D[3], TL[3], thetaN3P, phiN3P, costhetaN3P, N3PD[3], N3D[3], Pangle, MinN3Error, N3Error, N3[3], cosAlpha, Norm, MRDaverage, D, Z, temp, MaxExp, MinExp, IdealPeak, alpha, TimeInSeconds, TimeInMinutes, TimeInHours; string Filename, Filename1, Filename2, ans; clock_t Time; Filename1 = CurrentPath + "\\" + logfile; ofstream outlogfile(Filename1.c_str(), ios_base::app); if (outlogfile.fail()) { cout << "Error: Couldn't open " << logfile << endl; outlogfile.close(); exit(1); } Filename2 = CurrentPath + "\\" + AnalysisFile; ofstream outAnalysisFile(Filename2.c_str(), ios_base::app); if (outAnalysisFile.fail()) { cout << "Error: Couldn't open " << AnalysisFile << endl; outAnalysisFile.close(); exit(1); } //Allocate the TJD experimental array TJDexpAlloc(); //Initialize necessary values Norm = 0; N2[0] = 1/sqrt(3.); N2[1] = 1/sqrt(3.); N2[2] = 1/sqrt(3.); IndexImproper = 0; IndexProper = 0; ExcessiveD = 0; NormalD = 0; MaxExp = 0; MinExp = 1; /*Read experimental data in from file*/ //Combine current directory path with filename if (verbose) cout << "Reading experimental values" << endl;

Page 182: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

165

if (verbose) outlogfile << "Reading experimental values" << endl; Filename = CurrentPath + "\\" + datafile; //Open and read from datafile to determine number of rows in data ifstream infile(Filename.c_str()); if (infile.fail()) { cout << "Error: Couldn't open " << datafile << endl; outlogfile << "Error: Couldn't open " << datafile << endl; infile.close(); exit(1); } Ndata = 0; while(infile >> data) { Ndata++; } ndataExp = Ndata/12; cout << "Number of triple junctions in dataset = " << ndataExp << endl << endl; outlogfile << "Number of triple junctions in dataset = " << ndataExp << endl << endl; if (!DefaultInputs) { //Number of triple junction measurements to be used /*cout << "Use all triple junction measurements?\n"; cin >> ans; cout << endl; if((ans == "No")||(ans == "NO")||(ans == "no")||(ans == "N")||(ans == "n")) { cout << "Enter number of measurements to be used in analysis:" << endl; cin >> numberpts; ndataExp = numberpts; } else if((ans == "Yes")||(ans == "YES")||(ans == "yes")||(ans == "Y")||(ans == "y")) { } else { cout << "Invalid input" << endl; exit(1); }*/ cout << "Using all triple junction measurements" << endl << endl; outlogfile << "Using all triple junction measurements" << endl << endl; } if (verbose) cout << "Generating experimental distribution" << endl << endl; if (verbose) outlogfile << "Generating experimental distribution" << endl << endl; //Return to the beginning of file infile.clear(); infile.seekg(0, ios_base::beg); //Start timer Time = clock();

Page 183: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

166

//Read in measurements from datafile for (g=0; g<ndataExp; ++g) { infile >> phi1A; if (infile.eof() == true) { cout << "Error: End of file reached" << endl; outlogfile << "Error: End of file reached" << endl; infile.close(); exit(1); } infile >> PHIA >> phi2A >> phi1B >> PHIB >> phi2B >> L1[0] >> L1[1] >> L2[0] >> L2[1] >> L3[0] >> L3[1]; //Check values /*cout << setprecision(5); cout << fixed; cout << left; cout << setw(9) << phi1 << setw(9) << PHI << setw(9) << phi2 << setw(9) << phi1B << setw(9) << PHIB << setw(9) << phi2B << setw(9) << L1[0] << setw(9) << L1[1] << setw(9) << L2[0] << setw(9) << L2[1] << setw(9) << L3[0] << setw(9) << L3[1] << endl;*/ //Convert traces to plane normals in x-y plane L1[2] = 0; L2[2] = 0; L3[2] = 0; ConvertTrace2NVector(L1,L2,L1,N1P); ConvertTrace2NVector(L1,L2,L2,N2P); ConvertTrace2NVector(L1,L2,L3,N3P); //Generate GA and GB EangTogMat(phi1A,PHIA,phi2A,GA); EangTogMat(phi1B,PHIB,phi2B,GB); /*Find rotation which transforms N2 to the [111] direction*/ //Generate theta and phi Vector2ThetaPhi(N2P,thetaN2P,phiN2P); //Generate all possible values of thetaN2P MinError = .01; for (h=1; h<=Cos111N2Discrt; ++h) { costhetaN2P = 1 - (2./Cos111N2Discrt*h - 2./Cos111N2Discrt/2); thetaN2P = acos(costhetaN2P); ThetaPhi2Vector(thetaN2P,phiN2P,N2PD); MultMatVect(GA,N2PD,N2D); MultScalVect(sqrt(3.),N2D); //cout << N2D[0] << " " << N2D[1] << " " << N2D[2] << endl; //Extract value closest to <111>

Page 184: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

167

Error = CalcVect111Error(N2D); if (Error < MinError) { MinError = Error; N2i[0] = N2D[0]; N2i[1] = N2D[1]; N2i[2] = N2D[2]; } if (MinError == 0.1) { cout << "Error: MinError = .1" << endl; outlogfile << "Error: MinError = .1" << endl; } } //cout << N2i[0] << " " << N2i[1] << " " << N2i[2] << endl; //Extract signs of value closest to <111> q = Sign(N2i[0]); r = Sign(N2i[1]); s = Sign(N2i[2]); //cout << "Reconstructed: " << q << " " << r << " " << s << " " << endl; //Find GA minimum angle and [111] direction Rotation111(q,r,s,GA,Rotate111); //Rotate GA and GB MultMatrix(Rotate111,GA,GA); MultMatrix(Rotate111,GB,GB); //Generate GAB Transpose(GA,GAT); MultMatrix(GB,GAT,GAB); //Find misorientation within fundamental zone and identify symmetry operator FundZoneMisSymOp(GAB,GAB,A); //Extract Euler angles gMatToEang(GAB,phi1AB,PHIAB,phi2AB); ArrayIndicesEuler(phi1AB,PHIAB,phi2AB,i,j,k); //Count incorrectly assigned misorientations if (i != ifm || j != jfm || k != kfm) { IndexImproper++; } else { IndexProper++; } /*Given the plane normals in the x-y plane find all possible values of the N1 and associated N3 planes and assign them to their corresponding cells*/ //Generate theta and phi Vector2ThetaPhi(N1P,thetaN1P,phiN1P); Vector2ThetaPhi(N3P,thetaN3P,phiN3P);

Page 185: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

168

//cout << "N1P = " << N1P[0] << " " << N1P[1] << " " << N1P[2] << endl; //cout << "N3P = " << N3P[0] << " " << N3P[1] << " " << N3P[2] << endl << endl; /*cout << "phiN1P = " << phiN1P << endl; cout << "phiN3P = " << phiN3P << endl;*/ //Generate all possible values of thetaN1P for (w=1; w<=CosN1Discrt; ++w) { costhetaN1P = 1 - (2./CosN1Discrt*w - 2./CosN1Discrt/2); //cout << costhetaN1P << endl; thetaN1P = acos(costhetaN1P); //cout << "thetaN1P = " << thetaN1P << endl; ThetaPhi2Vector(thetaN1P,phiN1P,N1PD); //cout << "N1P = " << N1PD[0] << " " << N1PD[1] << " " << N1PD[2] << endl; MultMatVect(GA,N1PD,N1D); //MultScalVect(sqrt(3.),N1D); //cout << "N1 = " << N1D[0] << " " << N1D[1] << " " << N1D[2] << endl; //Solve for triple line direction given N1D and N2 if(Clockwise(N1D,N2)) { //cout << "N1 clockwise from N2" << endl; CrossProduct(N1D,N2,TL); } else { //cout << "N1 counterclockwise from N2" << endl; CrossProduct(N2,N1D,TL); } //Generate all possible values of thetaN3P and select N3 MinN3Error = 1; for (x=1; x<=CosN3Discrt; ++x) { costhetaN3P = 1 - (2./CosN3Discrt*x - 2./CosN3Discrt/2); //cout << costhetaN3P << endl; thetaN3P = acos(costhetaN3P); ThetaPhi2Vector(thetaN3P,phiN3P,N3PD); MultMatVect(GA,N3PD,N3D); //MultScalVect(sqrt(3.),N3D); //cout << N3D[0] << " " << N3D[1] << " " << N3D[2] << endl; //Solve for N3D most nearly perpendicular to TL Pangle = MinAngle(N3D,TL); //cout << "Pangle = " << Pangle << endl; N3Error = RelError(PI/2,Pangle); if(N3Error < MinN3Error) { MinN3Error = N3Error; //cout << "MinN3Error = " << MinN3Error << endl << endl; VectorCopy(N3D,N3);

Page 186: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

169

} } //cout << "N3 = " << N3[0] << " " << N3[1] << " " << N3[2] << endl << endl; //cout << "MinN3Error Selected = " << MinN3Error << endl << endl; //Exclude cells where a dihedral angle exceeds 180 degrees if (ExcessiveDihedral(N1D,N2,N3)) { //cout << "Shouldn't happen" << endl; ExcessiveD++; continue; } NormalD++; //Find values within fundamental zone SymmetriesMultMatVect(A,N1D,N1D); SymmetriesMultMatVect(A,N3,N3); //Solve for dihedral angle alpha cosAlpha = cos(MinAngle(N2,N3)); //Solve for indices of potential vectors Vector2ArrayIndices(N1D,l,m); ArrayIndicesCosAlpha(cosAlpha,q); //Exclude cells where a dihedral angle is absolutely greater than 180 degrees //This catches the rare few that slip by given finite values of RandCellPtsGeom if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells which lie within the asymmetric hole of space //This catches the rare few that slip by given finite values of RandCellPts if (Space[i][j][k][l][m][q].Exp == 0) { continue; } //Add values to cell TJDexp[i][j][k][l][m][q] += 1; } } infile.close(); //End timer and calculate time Time = clock() - Time; TimeInSeconds = Time/(double) CLOCKS_PER_SEC; TimeInMinutes = TimeInSeconds/60; TimeInHours = TimeInMinutes/60;

Page 187: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

170

cout << "Elapsed time = " << TimeInMinutes << " minutes" << endl; cout << "Elapsed time = " << TimeInHours << " hours" << endl << endl; outlogfile << "Elapsed time = " << TimeInMinutes << " minutes" << endl; outlogfile << "Elapsed time = " << TimeInHours << " hours" << endl << endl; outAnalysisFile << TimeInMinutes << endl; if (verbose) cout << "Misorientation properly indexed = " << IndexProper << endl; if (verbose) cout << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) cout << "Normal dihedral angles = " << NormalD << endl; if (verbose) cout << "Excessive dihedral angles = " << ExcessiveD << endl; if (verbose) outlogfile << "Misorientation properly indexed = " << IndexProper << endl; if (verbose) outlogfile << "Misorientation improperly indexed = " << IndexImproper << endl << endl; if (verbose) outlogfile << "Normal dihedral angles = " << NormalD << endl; if (verbose) outlogfile << "Excessive dihedral angles = " << ExcessiveD << endl; /*Move through every cell applying weighting factors*/ i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for (q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells which lie within the asymmetric hole of space if (Space[i][j][k][l][m][q].Exp == 0) { continue; } //Apply weighting factors TJDexp[i][j][k][l][m][q] = TJDexp[i][j][k][l][m][q]*Space[i][j][k][l][m][q].Exp; Norm += TJDexp[i][j][k][l][m][q]; } /*Perform background subtraction*/ if (verbose) cout << "Applying background subtraction" << endl; if (verbose) outlogfile << "Applying background subtraction" << endl; //Find average of all cells //cout << "Normaliztion factor = " << Norm << endl; Norm = Norm/ncellsTJDexp; //cout << "Average = " << Norm << endl; //Define necessary values D = CosDiscrt;

Page 188: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

171

//D = D/3.; Z = 2./D; MRDaverage = 0; Peakexp = 0; ZeroTJDexp = 0; //double pnc=(2.0*CosDiscrt-1.0)/(2.0*CosDiscrt); //OIM BGS //double f=(1.0/CosDiscrt)*(pnc/(1.0-pnc)); //OIM BGS //Loop through every cell and subtract background i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for (q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within hole of space if (Space[i][j][k][l][m][q].Exp == 0) { continue; } temp = TJDexp[i][j][k][l][m][q]; temp = (temp + Norm*(Z - 1)*(D - 1)/(D))/(1 + Z*(D - 1)); //temp = (temp - Norm*(pnc-f + f*pnc))/(1+f); //OIM BGS if (temp > 0) { TJDexp[i][j][k][l][m][q] = temp; MRDaverage += temp; } else { TJDexp[i][j][k][l][m][q] = 0; ZeroTJDexp++; } } if (verbose) cout << "Number of zeroed cells within TJDexp distribution = " << ZeroTJDexp << endl << endl; if (verbose) outlogfile << "Number of zeroed cells within TJDexp distribution = " << ZeroTJDexp << endl << endl; //Find average of all used cells MRDaverage = MRDaverage/ncellsTJDexp; /*Convert values to multiples of random distribution*/ //Divide every value by normalization coefficient so that the average value of all the cells = 1 i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k)

Page 189: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

172

for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for (q=0; q<CosAlphaDiscrt; ++q) { //Exclude cells where a dihedral angle is greater than 180 degrees if (Space[i][j][k][l][m][q].geom == 0) { continue; } //Exclude cells within hole of distribution if (Space[i][j][k][l][m][q].Exp == 0) { continue; } TJDexp[i][j][k][l][m][q] = TJDexp[i][j][k][l][m][q]/MRDaverage; //Find maximum and minimum distribution values if (TJDexp[i][j][k][l][m][q] > MaxExp) { MaxExp = TJDexp[i][j][k][l][m][q]; lMax = l; mMax = m; qMax = q; } if (TJDexp[i][j][k][l][m][q] < MinExp) { MinExp = TJDexp[i][j][k][l][m][q]; lMin = l; mMin = m; qMin = q; } } /*Examine peaks in distribution*/ //Output maximum and minimum distribution values if (verbose) cout << "Maximum distribution value = " << MaxExp << endl << "Maximum value = TJDexp[" << i << "][" << j << "][" << k << "][" << lMax << "][" << mMax << "][" << qMax << "]" << endl << endl; if (verbose) cout << "Minimum distribution value = " << MinExp << endl << "Minimum value = TJDexp[" << i << "][" << j << "][" << k << "][" << lMin << "][" << mMin << "][" << qMin << "]" << endl << endl; if (verbose) outlogfile << "Maximum distribution value = " << MaxExp << endl << "Maximum value = TJDexp[" << i << "][" << j << "][" << k << "][" << lMax << "][" << mMax << "][" << qMax << "]" << endl << endl; if (verbose) outlogfile << "Minimum distribution value = " << MinExp << endl << "Minimum value = TJDexp[" << i << "][" << j << "][" << k << "][" << lMin << "][" << mMin << "][" << qMin << "]" << endl << endl; //Find array indices of Planes 1 and 3 Vector2ArrayIndices(P1,l,m); alpha = MinAngle(P2,P3); cosAlpha = cos(alpha); ArrayIndicesCosAlpha(cosAlpha,q); IdealPeak = TJDexp[i][j][k][l][m][q];

Page 190: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

173

if (verbose) cout << "Ideal Peak = " << IdealPeak << endl << "Ideal Peak = TJDexp[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl; if (verbose) outlogfile << "Ideal Peak = " << IdealPeak << endl << "Ideal Peak = TJDexp[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl; double Difference = SimExpDistDifference(); cout << "Difference = " << Difference << endl << endl; outlogfile << "Difference = " << Difference << endl << endl; outAnalysisFile.close(); outlogfile.close(); }

A.7 StoreDists()

There are three main arrays within the program. These are the Space array, the SimData

array, and the TJDexp array. The SimData and TJDexp arrays contain the simulated and

experimental distributions. The Space array has three components: Space.geom, Space.Sim, and

Space.Exp. As explained, the Space.geom array holds the geometric data or the cells which

pertain to the distribution space within the parameter space. Space.Sim contains the filtered

weighting factors for the simulated distribution and Space.Exp contains the filtered weighting

factors for the experimental distribution. The space values are placed in arrays as each array cell

has a corresponding cell in the simulated or experimental distributions. In other words, the space

values are placed in the distribution space in the cells to which they correspond. This greatly

simplifies the application of space values. The function StoreDists() writes all arrays within the

program out to a file. In this manner, any distribution can be easily stored for future analysis and

all pertinent information to the distributions can be retrieved from the file by reconstructing the

arrays.

/* -------------------------------------------------------------------- * This function writes the Space, Simdata, and TJDexp array values out * to the file Values_Dist. This file effectively stores the * distributions for later use.

Page 191: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

174

* -------------------------------------------------------------------- */ void StoreDists() { int i, j, k, l, m, q; double Geom, Sim, Exp, Intensity1, Intensity2; string Filename; /*Create stream for writing experimental data out to file*/ //Write values out to files if (verbose) cout << "Writing Distribution data out to file\n" << endl; //Combine current directory path with filenames Filename = CurrentPath + "\\" + "Values_Dist.txt"; //Open and write to datafile ofstream outfile(Filename.c_str()); if (outfile.fail()) { cout << "Error: Couldn't open " << "Values_Dist.txt" << endl; outfile.close(); exit(1); } //Output resolution outfile << setprecision(5); outfile << fixed; outfile << setw(3) << Resolution << endl; i = ifm; j = jfm; k = kfm; //for(i=0; i<Phi1Discrt; ++i) for(j=0; j<CosPHIDiscrt; ++j) for(k=0; k<Phi2Discrt; ++k) for(l=0; l<CosDiscrt; ++l) for(m=0; m<PhiDiscrt; ++m) for(q=0; q<CosAlphaDiscrt; ++q) { //Find space characteristics for distributions Geom = Space[i][j][k][l][m][q].geom; Sim = Space[i][j][k][l][m][q].Sim; Exp = Space[i][j][k][l][m][q].Exp; //Find intensity values for distributions if (SimDistAlloc) { Intensity1 = SimData[i][j][k][l][m][q]; } else { Intensity1 = 0; } if (ExpDistAlloc) { Intensity2 = TJDexp[i][j][k][l][m][q]; } else { Intensity2 = 0; }

Page 192: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

175

//Write values out to file outfile << setw(3) << i << setw(3) << j << setw(3) << k << setw(3) << l << setw(3) << m << setw(3) << q << setw(10) << Geom << setw(10) << Sim << setw(10) << Exp << setw(10) << Intensity1 << setw(10) << Intensity2 << endl; } outfile.close(); }

A.8 RebuildDists()

The function allocates and fills the Space, SimData, and TJDexp arrays from the data

written out to a file by StoreDists(). In effect a distribution can be stored and saved by

StoreDists() and recalled by RebuildDists(). This function is especially useful for plotting

distributions.

/* -------------------------------------------------------------------- * This function rebuilds the Space, SimData, and TJDexp distributions * from stored data. The function allocates the arrays and reads the * Space, Simdata, and TJDexp array values from the file Values_Dist. * The function then assigns the values to the arrays. * -------------------------------------------------------------------- */ void RebuildDists() { int i, j, k, l, m, q, nvalues, ncells, g; double Geom, Sim, Exp, Intensity1, Intensity2, values; string Filename; //Initialize necessary values nvalues = 0; /*Read distribution values in from file*/ //Combine current directory path with filename if (verbose) cout << "Reading SimData and TJDexp data from files" << endl; Filename = CurrentPath + "\\" + "Values_Dist.txt"; //Open and read from distribution file to determine number of cells in distributions ifstream infile(Filename.c_str()); if (infile.fail()) { cout << "Error: Couldn't open " << "Values_Dist.txt" << endl; infile.close(); exit(1); } //Find resolution of file values infile >> Resolution; if (verbose) cout << "Resolution of distribution = " << Resolution << endl;

Page 193: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

176

if (Resolution == 15) { Phi1Discrt = 24; //12 //24 //36 CosPHIDiscrt = 6; //3 //6 //9 Phi2Discrt = 6; //3 //6 //9 CosDiscrt = 12; //9 //12 //18 PhiDiscrt = 24; //18 //24 //36 CosAlphaDiscrt = CosDiscrt; } if (Resolution == 10) { Phi1Discrt = 36; //12 //24 //36 CosPHIDiscrt = 9; //3 //6 //9 Phi2Discrt = 9; //3 //6 //9 CosDiscrt = 18; //9 //12 //18 PhiDiscrt = 36; //18 //24 //36 CosAlphaDiscrt = CosDiscrt; } nvalues = 0; while(infile >> values) { nvalues++; } ncells = nvalues/11; cout << "Number of cells in parameter space of distributions = " << ncells << endl << endl; //Allocate arrays SpaceAlloc(); SimDataAlloc(); TJDexpAlloc(); if (verbose) cout << "Assign distribution values to arrays" << endl << endl; //Return to the beginning of file infile.clear(); infile.seekg(0, ios_base::beg); infile >> Resolution; //Read in measurements from datafile for (g=0; g<ncells; ++g) { infile >> i >> j >> k >> l >> m >> q >> Geom >> Sim >> Exp >> Intensity1 >> Intensity2; //Assign values to arrays Space[i][j][k][l][m][q].geom = Geom; /*cout << "Geom = " << Geom << endl; cout << "Geom = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ Space[i][j][k][l][m][q].Sim = Sim;

Page 194: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

177

/*cout << "AsymSim = " << AsymSim << endl; cout << "AsymSim = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ Space[i][j][k][l][m][q].Exp = Exp; /*cout << "AsymExp = " << AsymExp << endl; cout << "AsymExp = Space[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ SimData[i][j][k][l][m][q] = Intensity1; /*cout << "Intensity1 = " << Intensity1 << endl; cout << "Intensity1 = SimData[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ TJDexp[i][j][k][l][m][q] = Intensity2; /*cout << "Intensity2 = " << Intensity2 << endl; cout << "Intensity2 = TJDexp[" << i << "][" << j << "][" << k << "][" << l << "][" << m << "][" << q << "]" << endl << endl;*/ } infile.close(); }

Page 195: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

178

B. TWIN-DEPENDENT TRIPLE JUNCTION DISTRIBUTION FUNCTION

B.1 Motivation

In the body of this work, the continuous triple junction distribution was approximated by

discrete cells within the distribution space. If a mathematical representation of the distribution is

desired, the discrete distribution may be expanded in a Fourier series. This appendix details the

mathematical representation of the distribution and demonstrates the method of solving for the

series coefficients. Given the dimensionality of the distribution, even a moderate series

expansion rank would require a vast quantity of coefficients. While the mathematical

representation of the distribution is significantly more complex than the discrete representation,

it may be of value to future modeling efforts. The distribution function might even have a

positive effect on the results of the discrete distribution given the inherent smoothing of the

technique. Given the possible applications of a twin-dependent triple junction distribution

function, this appendix has been included as a resource to future researchers.

B.2 Definition of the Function

Let the triple junction distribution function be given by ABAA g ,,, 11 which

provides the frequency of occurrence of triple junctions with parameters A1cos , A1 , cos ,

ABg in values of MRD. The function may be formally defined by:

ABAAAABAA gddddgd

1113118

1sinsin,,,

Page 196: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

179

Where d is the MRD triple junction occurrence with parameters A1cos , A1 , cos ,

ABg within the subspace of ABAAA gdddd ,sin,,sin 111 . The function has been

normalized over the space of the distribution such that:

1

8

1111311 ABAAAABAA gddddg

sinsin,,, ( B.1 )

B.3 Series Expansion

The function may be expanded in a Fourier series:

0 0 01111

q

q

qr u l

l

lm

l

lnAB

mn

luAA

r

q

mn

l

u

qrABAA gTPKSg cos,,,, ( B.2 )

Where r

qK are the normalized spherical surface harmonics, uP are the Legendre

polynomials, mn

lT are the generalized spherical harmonics and mn

l

u

qr S are the coefficients of the

expansion. The expansion may be truncated to the desired order and as the discretized

distribution has already been reduced to a fundamental zone, no symmetry effects need be

addressed with symmetrized functions.

The coefficients of the expansion may be found by employing the orthogonal properties

of the base functions. For AA

r

qK 11 , , cosuP , and )( AB

mn

l gT the following is true:

''

'*

' sin,, rrqqAAAAA

r

qAA

r

q ddKK 1111111 ( B.3 )

''

12

2sincoscos uuuu

udPP

( B.4 )

nnmmllABAB

nm

lAB

mn

ll

gdgTgT

12

1)()( ( B.5 )

Page 197: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

180

Where denotes the complex conjugate and the Kronecker delta. In equation (2) the

indices may be substituted by ',',',',',' nmlurq and both sides may be multiplied by AA

r

qK 11 ,*,

cosuP , and )( AB

mn

l gT . Integrating over the space of the distribution provides:

ABAAAAB

mn

lAB

nm

luuAA

r

qAA

r

q

q

q

qr u l

l

lm

l

ln

nm

l

u

rq

ABAAAAB

mn

luAA

r

qABAA

gddddgTgTPPKK

S

gddddgTPKg

1111111

0 0 0

1111111

sinsin)(coscos,,

sinsin)(cos,,,,

''

''

*'

'

'

'

'' ' '

'

''

'

''

''

'

'

''

*

Substituting from ( B.3 ), ( B.4 ), and ( B.5 ) gives:

ABAAAAB

mn

luAA

r

qABAA

mn

l

u

qr

gddddgTPKg

luS

1111111

2

1212

sinsin)(cos,,,, *

The function ABAA g ,,, 11 is not continuous but rather consists of discrete peaks

over the distribution space. The method and presentation of Bunge for generating coefficients

from discrete measurements will be followed [64]. For a single discrete peak the coefficients

would be given by:

ABAAAABAAAB

mn

luAA

r

q

mn

l

u

qr

gddddggTPK

luS

11111

000

1

0

1

2

1212

sinsin,,,)(cos,*

Where 000

1

0

1 ABAA g,,, pertain to the single triple junction orientation of the distribution.

Substituting from ( B.1 ) gives:

)(cos,* 000

1

0

12

1212AB

mn

luAA

r

q

mn

l

u

qr gTPKlu

S

For many different triple junction orientations i, the coefficients would be given by the

average of all measured triple junctions:

Page 198: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

181

N

i

i

AB

mn

l

i

u

i

A

i

A

r

qmn

l

u

qrN

gTPKluS

1

11

2

1212 )(cos,*

Where N is the total number of measured triple junctions. In the case of the discrete

distribution, N is the number of discrete cells and i is determined at each cell. As demonstrated

by Bunge, the effect of truncation errors from finite expansion values can be mitigated by

utilizing Gauss functions in place of Dirac Delta functions [64]. The coefficients are then given

by:

N

i

i

AB

mn

l

i

u

i

A

i

A

r

q

mn

l

u

qr gTPKN

VS

111 )(cos,* ( B.6 )

Where V is given by:

2

lWuWV

4exp1

41exp

4exp

2

22

22

xx

xW

Where is the half-width of the Guassian peaks. The coefficients in ( B.6 ) are

complex and may be broken into real and imaginary components:

N

i

i

u

i

AB

mn

l

i

AB

mn

l

i

A

i

A

r

q

i

A

i

A

r

q

mn

l

u

qr PgTigTKiKN

VS

11111 cos)(Im)(Re,Im,Re

N

i

i

ui

AB

mn

l

i

A

i

A

r

q

i

AB

mn

l

i

A

i

A

r

q

i

AB

mn

l

i

A

i

A

r

q

i

AB

mn

l

i

A

i

A

r

qmn

l

u

qr PgTKigTKi

gTKgTK

N

VS

11111

1111

cos

)(Im,Re)(Re,Im

)(Im,Im)(Re,Re

N

i

i

u

i

AB

mn

l

i

A

i

A

r

q

i

AB

mn

l

i

A

i

A

r

q

mn

l

u

qr PgTKgTKN

VS

11111 cos)(Im,Im)(Re,ReRe

N

i

i

u

i

AB

mn

l

i

A

i

A

r

q

i

AB

mn

l

i

A

i

A

r

q

mn

l

u

qr PgTKgTKN

VS

11111 cos)(Im,Re)(Re,ImIm

Page 199: GENERATING TRIPLE JUNCTION DISTRIBUTIONS By GRADEN …

182

B.4 Definitions

The spherical surface harmonics are given by:

A

r

qAAA

r

q PirK 11112

1

cosexp,

A

r

qAAAA

r

q PrirK 111112

1

cossincos,

A

r

qAAA

r

q PrK 11112

1

coscos,Re

A

r

qAAA

r

q PrK 11112

1

cossin,Im


Recommended