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`

.

**[Report]**What are the x- and y-dimensions of the micrograph in pixels?**[Report]**What are the x- and y-dimensions of the micrograph in mm?

Construct your pixel groups for your grains.

**[Report]**How many pixels belong to each grain?

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.

**[Report]**Provide a screenshot of the skeleton over the micrograph, and report the homogeneity index.**[Report]**Critique your initial skeleton.

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.

**[Report]**Provide (i) a screenshot, (ii) the homogeneity index, and (iii) a critique of the adjusted skeleton.

Synthesize a mesh from your skeleton.

**[Report]**How many (i) nodes, (ii) elements, (iii) 2-cornered elements, and (iv) 3-cornered elements does your mesh possess?

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:

- fix the left edge of the micrograph to have zero x-displacement,
- fix the bottom edge of the micrograph to have zero y-displacement,
- apply Neumann boundary conditions on the right edge; set
`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.

**[Report]**Provide a screenshot of the Boundary Conditions pane showing your boundary specifications.

Solve the FEM problem to a tolerance of 1E-11.

**[Report]**Provide a screenshot of the OOF2 Messages window showing the number of iterations required and the final residual.

**[Report]**Provide a screenshot (with scale bar) of the \(xx\) strain over the terminal mesh visualizing 50 levels and 5 bins using the “Thermal” colormap.**[Report]**Provide a screenshot (with scale bar) of the \(xx\) stress over the terminal mesh visualizing 50 levels and 5 bins using the “Thermal” colormap.**[Report]**Provide a screenshot of your distorted grains.**[Report]**What is the magnitude and location of the maximum stress?*Hint 1*: If it is clear from the heat map which mesh element contains the highest stress, use the Mesh Info function of the Toolbox dropdown in the Graphics window to identify the coordinates of this mesh element, then plug the coordinates into the Analysis pane to perform a Domain: Single Point analysis to get the numerical value of the stress.*Hint 2*: If it is not clear where the maximum stress is, then you may wish to perform a dump of the stress field over an entire cross section of the mesh to a file for offline analysis for the location and value of the maximum stress.

**[Report]**Determine the average displacement at the right edge of your micrograph. From the strain, estimate the Young’s modulus of this polycrystalline microstructure.**[Report]**Compare your estimate to the Voigt and Reuss averages of the Young’s modulus (recall that in an isotropic material, \(E = 1/S_{11}\)). Comment on why there is a difference.**[Report bonus]**Estimate the Poisson ratio for your polycrystal.

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?

**[Report]**Using a microstructure with a larger number of grains.**[Report]**Increasing the mesh density.

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.

**[Report bonus]**Sample 10 different grain orientations; provide a table of the corresponding Young’s moduli, the average, and standard deviation.