In this project, we will use OOF2 to investigate how the anisotropic elastic response of individual grains translates into the elastic response of a polycrystal. Successful completion of this work will demonstrate competence in using FEM software to analyze material elastic response.
You will produce a short report documenting your findings. Your report should contain a separate section for each of the tasks listed below, and provide the explicit deliverables requested for each task indicated by the [Report] below.
Your report should be formatted as a single pdf document comprising
your report. You may wish to write your report in latex and convert
using pdflatex
, or in markdown and convert using
pandoc report.text --to latex --out report.pdf
;
alternatively, you can put together a clearly formatted jupyter
notebook. (module load pandoc
and
module load texlive
to have the most up-to-date versions of
each).
You should creating a subdirectory called
/class/mse404ela/sp22/<your_net_id>/Project3
and copying your work into that directory by 11:59pm on 28
February 2022. Late submissions will not be accepted; let me know in
advance if you will have difficulty with completion.
For the project, we will use an artificial microstructure generated
as a “Voronoi tessellation” (see wikipedia for
more information); you can generate your own interactively here. Alternatively,
if you have a microstructure that you would like to try out on your own,
you are welcome to consider it. The image containing a Voronoi diagram
is in /class/mse404ela/OOF2/Project/Voronoi200.png
.
We will work with anisotropic (cubic) crystalline grains. In OOF2,
you can specify anisotropic material properties, but you will also need
to specify the orientation of the crystal. Normally, when
material properties are anisotropic, we report them relative to clear
material axes, such as the cube axes in a cubic material (e.g., \(C_{11}\), \(C_{12}\), \(C_{44}\) are the cubic elastic constants,
relative to \(\langle 100\rangle\)
directions). In general, the [100] axis of a cubic material will not be
pointing along the axis of load in a material, so we need to specify how
the crystal axes align with our laboratory frame. This is the Orientation
property in OOF2. This can be understood as a rotation
matrix; if the three orthogonal material directions \(\mathbf{e}_1\), \(\mathbf{e}_2\), \(\mathbf{e}_3\) each point along the \(x\), \(y\), and \(z\) axes of our laboratory frame, then the
rotation matrix \(\theta_{ij} =
\mathbf{e}_{i,j}\) is the \(j^\text{th}\) component of the \(i^\text{th}\) material vector. There are
many ways to represent the rotation necessary to bring these axes into
alignment; one of the more straightforward for our purposes is a
unit quaternion representation (see Quaternions
and spatial rotation for more info). The primary advantage is that
unit quaternions make forming a distribution of random orientations very
easy; the python script Random-quaternions.py
will do just
that. You will need to have numpy
installed in a virtual
environment to run the script; alternatively, for this problem, you can
use the entries in the file random-orientations.txt
to
define your sample.
Copy the file Voronoi200.png
into your working directory
for this project. You may also want to copy
random-orientations.txt
to select random quaternions. Take
the vertical size of the image to be 1 mm. Import the microstructure
into OOF2
.
Construct your pixel groups for your grains.
Define the cubic anisotropic elastic constants for aluminum. In the spirit of ICME, use your DFT values for \(C_{ij}\). Attach these materials to the pixel groups.
Next, you will need to give each of your grains their own
orientation. As they are random, you can select quaternions from the
random-orientations.txt
file; as long as each grain has a
unique orientation, you will have produced a random “sample”.
Construct a 25-by-25 TriSkeleton over the micrograph. Use a “moderate” arrangement.
Use the annealing, smoothing, and edge swapping tools to improve the initial skeleton to your satisfaction.
Do not use the refinement tool at this stage, since we wish to keep the number of elements fixed to keep the solution times reasonably short.
Synthesize a mesh from your skeleton.
Specify solution of the in-plane displacement fields by solving the force balance equation. Set up the following boundary conditions corresponding to a fixed displacement at the left end, and an imposed stress on the right end:
p0
to 1e10
, p1
to 0
,
and keep normal
unchecked. This provides an \(xx\) stress of 10GPa and no \(xy\) stress across the right boundary.Solve the FEM problem to a tolerance of 1E-11.
Considering your analysis protocol, reflect on possible improvements to your estimate. How might you go about the following, and what would you expect to be the improvement?
You have now estimated one value of the Young’s modulus for one orientation choice. You can automate the calculation for several samples by saving your log, and editing it into a script were one could successively input different random orientations to compute the Young’s modulus.