0% found this document useful (0 votes)
56 views

MicroStructPy A Statistical Microstructure Mesh Ge

Uploaded by

Mike Johanssen
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views

MicroStructPy A Statistical Microstructure Mesh Ge

Uploaded by

Mike Johanssen
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

SoftwareX 12 (2020) 100595

Contents lists available at ScienceDirect

SoftwareX
journal homepage: www.elsevier.com/locate/softx

Original software publication

MicroStructPy: A statistical microstructure mesh generator in Python


∗,2
Kenneth A. Hart 1 , Julian J. Rimoli
Georgia Institute of Technology, Atlanta, GA 30332, USA

article info a b s t r a c t

Article history: MicroStructPy is a statistical microstructure mesh generator written in Python. This software package
Received 8 July 2020 includes classes and methods to generate a mesh by (i) creating a list of grain seed geometries,
Received in revised form 25 August 2020 (ii) packing them into a domain, (iii) performing a Laguerre tessellation of the seed geometries,
Accepted 10 September 2020
and (iv) performing quality unstructured meshing. Results can be visualized and compared with the
Keywords: specified microstructural properties. MicroStructPy accurately reproduces 2D and 3D polycrystalline
Microstructure microstructures with arbitrary number of phases, volume fractions and distributions, each including
Mesh generation the possibility of elongated grains. It can also generate meshes for amorphous phases and porous
Polycrystal materials. Meshes are suitable for direct numerical simulation, a prevalent technique in computational
Laguerre tessellation mechanics of materials and geomechanics. The package contains extensive documentation, including
guides and demonstrations to facilitate adoption for new users.
© 2020 The Author(s). Published by Elsevier B.V. This is an open access article under the CC BY license
(http://creativecommons.org/licenses/by/4.0/).

Code metadata

Current code version v1.3.2


Permanent link to code/repository used for this code version https://github.com/ElsevierSoftwareX/SOFTX-D-20-00001
Code ocean compute capsule
Legal code license MIT License
Code versioning system used Git
Software code languages, tools, and services used Python
Compilation requirements, operating environments & dependencies Python 3.6+; Windows, MacOS, or Linux; aabbtree, lsq-ellipse, matplotlib,
meshpy, numpy, pybind11, pyquaternion, pyvoro-mmalahe, scipy, xmltodict
If available Link to developer documentation/manual https://docs.microstructpy.org
Support email for questions [email protected]

1. Motivation and significance thermal conductivity of materials [3,4]. Finally, additive man-
ufacturing can create anisotropic bulk material properties from
The response of a material is significantly influenced by the an isotropic build material [5]. Precise and reliable prediction of
properties and composition of its constituents, hereafter referred macroscale material properties from the microscale constituents
to as the microstructure of the material. Observations of steel is currently an active area of research. Modern prediction tech-
indicate that specimen with smaller grains have higher ultimate niques often rely on direct numerical simulation (DNS), whereby
relevant properties and boundary conditions are applied to a
strength [1,2]. Grain size and aspect ratio also influence the
representative volume element (RVE) mesh.
There are several techniques to characterize the microstruc-
∗ Corresponding author. ture of a material. Each of these characterizations is associ-
E-mail address: [email protected] (J.J. Rimoli). ated with several more techniques to virtually reconstruct the
1 Ph.D. Candidate, Daniel Guggenheim School of Aerospace Engineering. microstructure. Modern scanning techniques include 3-D X-ray
2 Associate Professor, Daniel Guggenheim School of Aerospace Engineering. diffraction (3D-XRD) and X-ray tomography, which generate a

https://doi.org/10.1016/j.softx.2020.100595
2352-7110/© 2020 The Author(s). Published by Elsevier B.V. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/).
K.A. Hart and J.J. Rimoli SoftwareX 12 (2020) 100595

Fig. 1. The microstructure mesh generation process. A textual description of the microstructure is converted, through steps described below, into an unstructured
triangular or tetrahedral mesh. Statistics of the mesh can be compared against those prescribed, to ensure microstructure fidelity.

voxel raster of the microstructure [6,7]. These rasters can be 2. Software description
directly converted into a microstructural mesh for high-fidelity
DNS [8]. The raster can also be converted into n-point correlation 2.1. Software architecture
functions, which compress the microstructure data into several
functions [9]. Correlation functions can be inverted to generate MicroStructPy follows four principal steps to generate the
multiple realizations of the same microstructure using global mesh of a microstructure, as shown in Fig. 1: (i) packing seed
optimization and phase recovery [10]. The raster can also be geometries into the domain, (ii) converting seeds into multi-
converted into statistical distributions, such as volume fractions circle/multi-sphere approximations, (iii) tessellating the domain
and grain volume distributions [11]. These distributions can be to create a polygonal/polyhedral mesh, and (iv) quality unstruc-
used to reconstruct the microstructure by packing seed geome- tured meshing to create a triangular/tetrahedral mesh. For veri-
tries together, then creating a dual such as the Laguerre–Voronoi fication, the statistics of the output mesh are compared against
diagram [12,13] or the barycentric dual [14]. The work presented the desired statistics for the microstructure, which are specified
in the input file. The methods associated with each of these steps
follows this paradigm due to the prevalence and availability
are described in the following subsections.
of volume fractions and grain size distributions for multiple
materials.
2.1.1. Seed geometries
In this paper we introduce MicroStructPy, a statistical mi-
Generating seed geometries and packing them into a domain
crostructure mesh generator written in Python [15]. MicroStructPy
are the first steps in creating a microstructure. In MicroStructPy,
is part of a growing ecosystem of open source microstructure
the information about the microstructure is included in an input
mesh generators which cover different needs through varying file, which contains specifications for each constituent phase, as
functionalities. Neper, for instance, produces statistically repre- well as a definition of the geometry of the domain. This informa-
sentative microstructures by optimizing the location and weight tion is used to create an initial list of un-positioned seeds. The
of tessellation points [13,16]. The Dream.3D software produces volume fraction, Vf , and average grain volume, E [V ], are used to
microstructural meshes using a general system of pipelines [17]. determine the population density, n, of each phase according to
Finally, PuMA is a microstructure software that is specialized Eq. (1), where the subscript i indicates the population density of
for porous materials, such as fiber-reinforced composites and the ith phase. Since ni is the number of grains of phase i per unit
foams [18]. MicroStructPy is unique in that it reproduces sta- volume, the probability that a given grain belongs to this phase
tistical microstructure distributions without the need for opti- is given by Eq. (2).
mization and it can create elongated grains, using a multi-sphere Vf , i
approach [19]. ni = (1)
E [Vi ]
The reminder of this paper is organized as follows. Section 2 ni
describes the software architecture and functionality, including pi = ∑ (2)
j nj
a snippet of the most important methods. Section 3 contains
an illustrative example. Finally, Section 4 discusses the impact The list of un-positioned grains is therefore created by sam-
that MicroStructPy has on the research community and Section 5 pling a categorical distribution with weights pi to determine the
concludes the work. phase of a seed, sampling the distributions associated with that
2
K.A. Hart and J.J. Rimoli SoftwareX 12 (2020) 100595

phase, and repeating the process until the volume of seeds in


the list matches the volume of the domain. For example, the
second material in Fig. 1 contains elliptical seeds with uniformly
distributed area, on the distribution U [0.5, 2.5], a constant aspect
ratio of 2, and uniformly random rotation angle. When material 2
is chosen, an ellipse is created by sampling the area distribution
and the rotation angle distribution, solving for the length and
height of the ellipse based on its area and aspect ratio, then
rotating it through the sampled rotation angle.
Once the list has been generated, the seeds are positioned
within the domain in decreasing order of grain volume. The
first seed is positioned by sampling the position distribution
associated with its phase, which defaults to uniform random
throughout the domain. Subsequent seeds are positioned by sam- Fig. 2. Multi-sphere centers for an ellipsoid. (a) Multi-circle approximation
pling a position, checking for overlap with previously positioned of the xz plane, (b) Multi-circle approximation of the yz plane, (c) Grid of
seeds, then resampling if the overlap exceeds a relative tolerance. non-terminal circle centers, (d) Centers of spheres tangent at the xy plane.
Allowing the seeds to overlap results in a better correlation
between the seed and grain volumes, compared to not allowing
overlap. Voids between seeds will add their volume to the grains 2.1.3. Polygonal mesh
in the tessellation, increasing the overall grain size distribution. The collection of circles/spheres generated in the previous step
The overlapping volume of nearby seeds is subtracted from the is used to create a Voronoi diagram in Laguerre geometry, also
grain volume, balancing the added volume from nearby voids. known as a power diagram [21]. The Laguerre–Voronoi diagram is
Overlap is determined using the multi-circle/multi-sphere ap- a tessellation of d-dimensional Euclidean space, E d , based on the
proximations for the seeds, since circle–circle overlap detection is
distance to the nearest seed point. Let the sphere s have center c
straightforward. Let the subscript i denote a circle in the approxi-
and radius r, the power distance from any point p to s is given by
mation for the grain being positioned and the subscript j denote a
Eq. (4), where ∥p − c ∥ is the Euclidean distance between p and c.
circle in the approximation for a previously positioned grain, the
two grains are overlapping if If S is the collection of spheres s, the region of E d associated with
sphere s is defined by Eq. (5).
∥xi − xj ∥ + α min (ri , rj ) < ri + rj (3)
pow(p, s) = ∥p − c ∥2 − r 2 (4)
where x is the center of a circle, r is the radius, and α is the
relative overlap tolerance. A calibration curve is included in Mi- R(s) = p ∈ E d | pow(p, s) < pow(p, t), ∀ t ∈ S − {s}
{ }
(5)
croStructPy to set an appropriate value of α so that the errors
between prescribed and obtained microstructural parameters are Since the seeds geometries are densely packed, the Laguerre–
minimized [19]. This overlap check is performed with a subset of Voronoi cells are very close polygonal approximation of the seed
all of the previously positioned seeds, to reduce computational geometries. The seed geometries are each samples of statistical
cost. The subset is determined using an axis-aligned bounding distributions and therefore the polygonal cells will have empirical
box (AABB) tree, a spatial hierarchy designed to group seeds with distributions that are very close to the input distributions, so long
those in their vicinity. Each seed is bounded by an AABB, so if as there is a statistically significant number of grains.
two seeds overlap then their AABBs also overlap. These AABBs are MicroStructPy creates polygonal/polyhedral meshes using the
organized into a binary tree, where two AABBs are surrounded
Voro++ package with a Python wrapper [22]. This mesh may be
by a larger AABB, then that AABB is grouped with another, and
sufficient for some users, however DNS typically does not support
this continues until there is one AABB that surrounds all of the
elements of arbitrary geometry. The following step creates un-
seed AABBs. In this binary tree, overlap testing requires fewer
structured triangular/tetrahedral meshes of the microstructure,
computations because descending the tree effectively reduces the
number of potential overlaps by half [19]. This hierarchy accel- which can readily be used in DNS.
erates the seeding process, resulting in a microstructure domain
densely packed with seed geometries. 2.1.4. Triangular mesh
The unstructured triangular/tetrahedral mesh fills the mi-
2.1.2. Multi-circle approximation crostructure grains with multiple triangular/tetrahedral elements.
Decomposing seed geometries into sets of circles/spheres The quality of these meshes is controlled by three parameters: (i)
streamlines the overlap checking process in the previous step the maximum element volume, (ii) the minimum interior angle
and provides a suitable list of weighted points for the next step. of an element, and (iii) the maximum edge length at grain bound-
This is an extension of the work by Ilin and Bernacki [20], who aries. The last quality control parameter is included to determine
generated elliptical grains using multiple Laguerre–Voronoi cells. the resolution of stress fields or cohesive zones between grains,
As shown in Fig. 2, from [19], the Ilin and Bernacki method is necessary for common techniques in computational mechan-
first applied to two cross sections of the ellipsoid, labeled (a) ics. Before calling the unstructured mesh generators, Laguerre–
and (b). The circle centers from (a) and (b) are then mapped Voronoi cells of the same grain are merged together. If a material
into the third cross-section, which is labeled (c). Next, centers
is flagged as amorphous, cells of the same material phase are
are added at locations that are offset from the outer curve of
also merged together. Finally, materials flagged as voids are
the third cross section, labeled (d). Radii are assigned to these
removed from the domain prior to unstructured meshing. Un-
centers based on the minimum distance between the points and
the surface of the ellipsoid. Lastly, the results from this section structured meshing in 2D is performed by Triangle [23] and in
of the ellipsoid are mirrored into the other quadrants to create 3D by TetGen [24], both of which are accessed through a Python
a multi-sphere approximation of the ellipsoid. Rectangular grains wrapper.
are also approximated by a series of circles, with additional circles
resolving the corners. Through multi-circle approximation, the 2.1.5. Mesh verification
dense pack of seed geometries is transformed into a collection Once the microstructure mesh has been generated, statistics
of circles/spheres. can be gathered on the grains and compared against the input
3
K.A. Hart and J.J. Rimoli SoftwareX 12 (2020) 100595

statistics. The volume fraction of each phase is computed by Table 1


summing the volumes of each element of a given phase and Input mesh parameters and output maximum likelihood estimates for an
example microstructure.
dividing by the volume of the domain. For void phases, the
Property Input Output
volumes in the polygonal mesh are used instead. Next, the shape
and orientation parameters of the grains are computed by fitting Volume fraction
Large grains 0.1250 0.1216
a geometry to the mesh vertices at the grain boundaries. For Fine grains 0.6875 0.6847
circular and spherical grains, the center and radius of best fit can Intrusions 0.1875 0.1937
be determined through linear least squares regression, using a Grain volume
method known as Bullock’s algorithm. The center of the circle Large grains Triang(0.5, 3.0, 0.5) Triang(0.214, 2.853, 0.740)
of best fit is the solution to Eq. (6) and the radius is given by Fine grains Lognormal(1.105, 0.64) Lognormal(1.097, 0.679)
Intrusions Triang(0, 1.5, 0) Triang(0, 1.653, 0.030)
Eq. (7). For elliptical grains, a numerically stable algorithm is
applied which guarantees the output is elliptical, rather than the
other quadratics [25,26]. Ellipsoidal grains are fit by minimizing
the sum squared error in geometric distance between the vertices
and the ellipsoid [27].
[ ∑N 2 ∑N ] [ ] [ ∑N ]
x xi y i xc 1 xi (x2i + y2i )
∑Ni=1 i i = 1
∑N 2 · = ∑Ni=1 (6)
xi yi yc 2 2 2
i=1 i=1 yi i=1 yi (xi + yi )


N

 1 ∑ 2
r = √x2c + y2c + (xi + y2i ) (7)
N
i=1

The coefficient of determination, R2 , value of the fit geome-


tries, relative to the seed geometries, quantifies how well each
seed is represented in the output microstructure. Additionally,
non-parametric distributions are developed for the output mi-
crostructure to evaluate statistical significance metrics such as
Kolmogorov–Smirnov and energy distance [28–30]. If an input
distribution is parametric, maximum likelihood estimates (MLEs)
for its parameters are reported based on the output microstruc-
ture. Verification of grain orientations is limited to 2D microstruc-
tures only. Fig. 3. An example microstructure generated by MicroStructPy. The large grains
are highlighted in yellow, the intrusion veins in green, and the fine grains shown
2.2. Software functionalities on a scale from red to blue. (For interpretation of the references to color in this
figure legend, the reader is referred to the web version of this article.)

MicroStructPy generates statistically representative 2D and 3D


microstructures. The software supports arbitrarily many material
phases, which can be either crystalline, amorphous, or voids. The 3. Illustrative example
size, shape, orientation, and position of these grains can be a
combination of deterministic and randomly distributed quanti- A polycrystalline material with a venous intrusion is included
ties, with any of the random variable distributions included in to demonstrate the capabilities of MicroStructPy. The two crys-
SciPy including empirical distributions. MicroStructPy includes talline phases contain large and small grains, which are approxi-
mesh visualization and verification methods, as well as output to mately spherical. The veins are modeled as amorphous ellipsoids,
common mesh file types. Finally, the mesh generation process in meaning that neighboring ellipsoids are merged together. The
MicroStructPy is segmented into multiple classes and methods for parameters defining this microstructure are presented in the first
users to create custom workflows such as an alternative seeding column of Table 1, while the output microstructure is shown in
scheme or including a new primitive geometry. Fig. 3.
The volume fractions of the microstructure mesh were com-
2.3. Sample code snippet puted by summing the volumes of each element of a material
phase and dividing by the total. The volume fractions in the
Microstructures can be generated either via XML input files output mesh, reported in the second column of Table 1, match
or Python scripting. The script in Listing 1 creates an equivalent the input values to within 0.006. The grain volumes are simi-
microstructure to the one shown in Fig. 1. The inputs on Lines 4– larly calculated, however in amorphous phases the volumes are
23 correspond to the XML in the first panel of Fig. 1. Line 26 calculated from the tessellation because mesh elements could
creates an un-positioned list of seeds that has the same area as span multiple grains. The maximum likelihood estimators (MLEs)
the domain. Line 27 positions those seeds within the domain, are computed used the SciPy statistics module and reported in
similar to the second panel of Fig. 1. The multi-circle approxi- Table 1. These output distributions agree with the input distri-
mations of the seeds, shown in the third panel, are stored in the butions, with the p-values for the Kolmogorov–Smirnov test all
breakdown property of each seed. Line 29 creates the polygonal above 0.05.
mesh (Laguerre tessellation) as shown in the fourth panel of
Fig. 1, where the tessellation edges between cells of the same 4. Impact
grain are not plotted. Line 30 creates the triangular mesh, shown
in the fifth panel, with a minimum interior angle quality control DNS is perhaps the most prevalent approach when model-
on the triangular elements. Finally, Lines 32–36 create the output ing the response of complex materials in order to understand
plots and perform one of the verification tests. Microstructures in their performance and underlying physics. A microstructure mesh
3D use the same classes and methods as in 2D. generator such as MicroStructPy, converts a description of the
4
K.A. Hart and J.J. Rimoli SoftwareX 12 (2020) 100595

microstructure into a mesh suitable for DNS. The code presented 8 ’area ’: scipy.stats. lognorm (s=0.5 , scale =0.5) ,
can produce microstructure meshes with any number of material 9 ’fraction ’: 0.7,
phases. These phases can be crystalline, amorphous, or voids in 10 }
11 phase_1 = {
the material. The size, shape, orientation, and position of these 12 ’color ’: ’#43 CEA2 ’,
constituents can be directly controlled using any distribution in 13 ’shape ’: ’ellipse ’,
the SciPy statistical module. . Other microstructure codes in- 14 ’area ’: scipy.stats. uniform (loc =0.5 , scale =2) ,
dividually possess a subset of these capabilities. This positions 15 ’aspect_ratio ’: 2,
16 ’angle ’: ’random ’,
MicroStructPy very well in the scientific community. We believe
17 ’fraction ’: 0.3,
its capabilities will enable the research of phenomena not studied 18 }
before, e.g., the influence of combined microstructural statistics 19 p = [phase_0 , phase_1 ]
such as grain size, elongation, and orientation simultaneously, on 20 # Inputs - Domain
the effective response of advanced materials. 21 d = msp. geometry . Rectangle ( limits =[(0 , 20) , (0,
35) ])
MicroStructPy is unique not only because it provides all of 22 # Inputs - Settings
these capabilities but also because it is written in the Python 23 min_ang = 15 # degrees
language. The Python implementation of the code enables rapid 24

installation and customization. Extensive documentation, exam- 25 # Create Seed Geometries


ples, demonstrations, and guides are available online and contin- 26 s = msp. seeding . SeedList . from_info (p, d.area)
27 s. position (d)
uously updated to facilitate adoption of the code. MicroStructPy 28 # Create Polygonal & Triangular Meshes
has been used in unpublished research on the thermal spallation 29 pmesh = msp. meshing . PolyMesh . from_seeds (s, d)
of rocks and diffusion in batteries at the Georgia Institute of 30 tmesh = msp. meshing . TriMesh . from_polymesh (pmesh , p
Technology, and hydraulic fracture modeling at Louisiana State , min_ang )
31 # Plot & Verify Results
University, to cite a few examples. The software is included in the
32 msp.cli. plot_seeds (s, p, d, [’seeds.pdf ’])
NASA Software Catalog and there are dozens of users worldwide. 33 msp.cli. plot_poly (pmesh , p, [’poly.pdf ’])
We expect the user base to expand significantly in time and with 34 msp.cli. plot_tri (tmesh , p, s, pmesh , [’tri.pdf ’],
this publication. MicroStructPy is a capable microstructure mesh lw =0.2)
generator that is easy to adopt, use, and customize by materials 35 fit_s = msp. verification . seeds_of_best_fit (s, p,
pmesh , tmesh)
researchers. 36 msp. verification . plot_distributions (fit_s , p, ext=
’pdf ’)
5. Conclusions
Listing 1: Workflow snippet to reproduce the plots in Figure 1.
We presented an original microstructure mesh generator writ-
ten in Python. MicroStructPy can create meshes for a wide va-
riety of material microstructures, supporting (i) multiple ma- References
terial phases, (ii) polycrystalline, amorphous, and void phases,
(iii) direct control of grain size, shape, orientation, and position [1] Hall EO. The deformation and ageing of mild steel: III Discussion of results.
using any of the SciPy statistical distributions, (iv) mesh veri- Proc Phys Soc Sec B 1951;64(9):747–53. http://dx.doi.org/10.1088/0370-
fication and visualization, and (v) customizable workflows. The 1301/64/9/303.
software is open source and extensively documented to facili- [2] Petch NJ. The cleavage strength of polycrystals. J Iron Steel Inst
1953;174:25–8. http://dx.doi.org/10.1007/BF01972547.
tate code adoption and future improvements. MicroStructPy pro-
[3] Maldovan M. Micro to nano scale thermal energy conduction in semicon-
duces meshes that enable direct numerical simulation of material ductor thin films. J Appl Phys 2011;110(3):034308–1–6. http://dx.doi.org/
microstructures. 10.1063/1.3607295.
[4] Bouquet J-BP, Rimoli JJ. A length-dependent model for the thermome-
Declaration of competing interest chanical response of ceramics. J Mech Phys Solids 2015;82:82–96. http:
//dx.doi.org/10.1016/j.jmps.2015.05.018.
[5] Wang Z, Palmer TA, Beese AM. Effect of processing parameters on
The authors declare that they have no known competing finan-
microstructure and tensile properties of austenitic stainless steel 304L
cial interests or personal relationships that could have appeared made by directed energy deposition additive manufacturing. Acta Mater
to influence the work reported in this paper. 2016;110:226–35. http://dx.doi.org/10.1016/j.actamat.2016.03.019.
[6] Groeber M, Ghosh S, Uchic MD, Dimiduk DM. A framework for automated
Acknowledgments analysis and simulation of 3D polycrystalline microstructures. Part 1:
Statistical characterization. Acta Mater 2008;56(6):1257–73. http://dx.doi.
org/10.1016/j.actamat.2007.11.041.
The authors acknowledge the National Aeronautics and Space [7] Ludwig W, Reischig P, King A, Herbig M, Lauridsen EM, Johnson G,
Administration, USA, for providing financial support under coop- Marrow TJ, Buffìre JY. Three-dimensional grain mapping by X-ray diffrac-
erative agreement 80NSSC17M0058, and the Partnership for an tion contrast tomography and the use of friedel pairs in diffraction data
Advanced Computing Environment (PACE) at the Georgia Insti- analysis. Rev Sci Instrum 2009;80(033905):1–9. http://dx.doi.org/10.1063/
1.3100200.
tute of Technology, for providing research cyber infrastructure
[8] Langer SA, Fuller ER, Carter W. Oof: An image-based finite-element analysis
resources and services. of material microstructures. Comput Sci Eng 2001;3(3):15–23. http://dx.
doi.org/10.1109/5992.919261.
Appendix. Sample Code Snippet [9] Torquato S. Random heterogeneous materials: Microstructure and macro-
scopic properties. Interdisciplinary applied mathematics. New York:
Springer Science and Business Media; 2013, http://dx.doi.org/10.1115/1.
1483342, arXiv:9809069v1.
1 import microstructpy as msp [10] Fullwood DT, Niezgoda SR, Kalidindi SR. Microstructure reconstructions
2 import scipy . stats from 2-point statistics using phase-recovery algorithms. Acta Mater
3 2008;56(5):942–8. http://dx.doi.org/10.1016/j.actamat.2007.10.044.
4 # Inputs - Material Phases [11] Groeber M, Ghosh S, Uchic MD, Dimiduk DM. A framework for automated
5 phase_0 = { analysis and simulation of 3D polycrystalline microstructures. Part 2:
6 ’color ’: ’#185 A9D ’, Synthetic structure generation. Acta Mater 2008;56(6):1274–87. http://dx.
7 ’shape ’: ’circle ’, doi.org/10.1016/j.actamat.2007.11.040.

5
K.A. Hart and J.J. Rimoli SoftwareX 12 (2020) 100595

[12] Fan Z, Wu Y, Zhao X, Lu Y. Simulation of polycrystalline structure with [20] Ilin DN, Bernacki M. Advancing layer algorithm of dense ellipse packing
Voronoi diagram in Laguerre geometry based on random closed packing for generating statistically equivalent polygonal structures. Granul Matter
of spheres. Comput Mater Sci 2004;29(3):301–8. http://dx.doi.org/10.1016/ 2016;18(3):43. http://dx.doi.org/10.1007/s10035-016-0646-9.
j.commatsci.2003.10.006. [21] Aurenhammer F. Power diagrams: Properties, algorithms and applications.
[13] Quey R, Renversade L. Optimal polyhedral description of 3D polycrystals: SIAM J Comput 1987;16(1):78–96. http://dx.doi.org/10.1137/0216006.
Method and application to statistical and synchrotron X-ray diffraction [22] Rycroft CH. VORO++: A three-dimensional Voronoi cell library in c++. Chaos
data. Comput Methods Appl Mech Engrg 2018;330:308–33. http://dx.doi. 2009;19(4):041111. http://dx.doi.org/10.1063/1.3215722, arXiv:0402209.
org/10.1016/j.cma.2017.10.029. [23] Shewchuk JR. Triangle: Engineering a 2D quality mesh generator and
[14] Rimoli JJ, Ortiz M. A duality-based method for generating geomet- delaunay triangulator. In: Lin MC, Manocha D, editors. Applied compu-
ric representations of polycrystals. Internat J Numer Methods Engrg tational geometry towards geometric engineering. Berlin: Springer; 1996,
2011;86(9):1069–81. http://dx.doi.org/10.1002/nme.3090. p. 203–22. http://dx.doi.org/10.1007/BFb0014497.
[15] Hart KA, Rimoli JJ. Microstructpy (version 1.3.2). 2020, http://dx.doi.org/ [24] Si H. Tetgen, a delaunay-based quality tetrahedral mesh generator. ACM
10.5281/zenodo.3940607. Trans Math Software 2015;41(2):11. http://dx.doi.org/10.1145/2629697.
[16] Quey R, Dawson PR, Barbe F. Large-scale 3D random polycrystals for [25] Halır R, Flusser J. Numerically stable direct least squares fitting of ellipses.
the finite element method: Generation, meshing and remeshing. Comput In: Proc. 6th international conference in central europe on computer
Methods Appl Mech Engrg 2011;200(17–20):1729–45. http://dx.doi.org/10. graphics and visualization. Plzen, Czech Republic. 1998. p. 125–32.
1016/j.cma.2011.01.002. [26] Hammel B, Sullivan-Molina N. Bdhammel/least-squares-ellipse-fitting:
[17] Groeber MA, Jackson MA. DREAM.3D: A digital representation environment v2.0.0. 2020, http://dx.doi.org/10.5281/zenodo.3723294.
for the analysis of microstructure in 3D. Integrating Mater Manuf Innov [27] Turner D, Anderson I, Mason J, Cox M. An algorithm for fitting an
2014;3(1):5. http://dx.doi.org/10.1186/2193-9772-3-5. ellipsoid to data. Tech. rep., Teddington, United Kingdom: National Physical
[18] Ferguson JC, Panerai F, Borner A, Mansour NN. Puma: the porous mi- Laboratory; 1999.
crostructure analysis software. SoftwareX 2018;7:81–7. http://dx.doi.org/ [28] Kolmogorov A. Sulla determinazione empirica di una legge di distribuzione.
10.1016/j.softx.2018.03.001. Istituto Italiano degli Attuari, Giornale 1933;4:83–91.
[19] Hart KA, Rimoli JJ. Generation of statistically representative microstruc- [29] Smirnov NV. Estimate of deviation between empirical distribution
tures with direct grain geomety control. Comput Methods Appl Mech Engrg functions in two independent samples. Bull Moscow Univ 1939;2(2):3–16.
2020;370:113242. http://dx.doi.org/10.1016/j.cma.2020.113242. [30] Székely GJ. E-statistics: The energy of statistical samples. Tech. rep.,
Bowling Green, Ohio: Bowling Green State University, Department of
Mathematics and Statistics; 2003.

You might also like