# Module 3: Finite Element Method calculation of averaged elastic constants

### Project Brief

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.

### Deliverables

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.

### Voronoi tessellation microstructure

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.

### Anisotropic elastic response and orientation

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?

### A2. Pixel groups.

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

### A3. Materials properties.

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”.

### A4. Skeleton.

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.

### A6. Generate mesh.

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?

### A7. Equations and boundary conditions.

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:

1. fix the left edge of the micrograph to have zero x-displacement,
2. fix the bottom edge of the micrograph to have zero y-displacement,
3. 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.

### A8. Solve.

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.

### A9. Analysis.

• [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.

### A10. Suggested improvements.

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.

### A11. Sampling (bonus)

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.
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 1, "mathjax_asciimath": 1, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.6714590191841125, "perplexity": 1596.367586267261}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2022-33/segments/1659882572043.2/warc/CC-MAIN-20220814143522-20220814173522-00325.warc.gz"}