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 **boldface point values** below.

The report should be formatted as a single pdf document comprising your report and all requested files. Submit your **PDF file** via Assignment Upload by **11:59pm on 1 March 2018. Late submissions will not be accepted.**

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`

.

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

Construct your pixel groups for your grains.

**[10 pt]**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.

**[5 pt]**Provide a screenshot of the skeleton over the micrograph, and report the homogeneity index.**[5 pt]**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.

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

Synthesize a mesh from your skeleton.

**[2 pt]**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.

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

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

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

**[10 pt]**Provide a screenshot (with scale bar) of the \(xx\) strain over the terminal mesh visualizing 50 levels and 5 bins using the "Thermal" colormap.**[10 pt]**Provide a screenshot (with scale bar) of the \(xx\) stress over the terminal mesh visualizing 50 levels and 5 bins using the "Thermal" colormap.**[5 pt]**Provide a screenshot of your distorted grains.**[5 pt]**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.

**[10 pt]**Determine the average displacement at the right edge of your micrograph. From the strain, estimate the Young's modulus of this polycrystalline microstructure.**[5 pt]**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.**[10 pt 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?

**[5 pt]**Using a microstructure with a larger number of grains.**[5 pt]**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.

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