This commit is contained in:
Achal H P P 2024-06-10 10:47:46 +05:30
parent ad9142f1e6
commit 38d59239fc
5 changed files with 846 additions and 0 deletions

View File

@ -0,0 +1,171 @@
\subsubsection{Continuum Description.}
Continuum description assumes a hypothetical continuous medium to describe behavior of a fluid/solid body. This allows description of material using continuous mathematical functions.
\subsubsection{Mechanics.}
Mechanics is classified into statics and dynamics. In crystal plasticity we study dynamics of plastic deformation. Dynamics can be further classified into Kinematics and Kinetics.
\begin{itemize}
\item Kinematics: Study of deformation in the continuum element under consideration. Quantities measured are displacements, strains, velocities and strain rates.
\item Kinetics: Study of forces and moments acting on the continuum object and how it affects displacements/strains or velocities/strain-rates. It involves description of material behaviour by quantification of traction/stresses and body forces using constitutive laws, material properties and conservation laws.
\end{itemize}
\section{Continuum Mechanics description of a body undergoing deformation.}
The figure \ref{Continuum_body_deformation} shows the undeformed continuum body $\mathcal{B}_0$ in reference configuration and deformed body $\mathcal{B}_t$ in current configuration. Reference configuration is time independent and current configuration is time dependent. If the deformation is described in reference/material configuration it is called Lagrangian description and if it is described in current/spatial configuration it is called Eulerian description.
Displacement at a given deformation state (at time = t) is given by,
\begin{equation}
\label{eq:A1}
u(X) = x(X) - X
\end{equation}
A line segment $dX$ in reference configuration is transformed transformed to current configuration as,
\begin{equation}
\label{eq:A2}
x(X) + dx = x(X) + \frac{\partial x}{\partial X}.\textrm{d}X + \textrm{O} (\textrm{d}X^2)
\end{equation}
\begin{figure}[H]
\centering
\includegraphics[width=0.9\textwidth]{images/Continuum_Mechanics_configurations.pdf}
\caption{Deformation of a continuum body.}
\label{Continuum_body_deformation}
\end{figure}
Neglecting higher order terms $\textrm{O} (\textrm{d}X^2)$,
\begin{equation}
\label{eq:A3}
dx = \frac{\partial x}{\partial X}.\textrm{d}X = F.\textrm{d}X
\end{equation}
where $F:=\frac{\partial x}{\partial X}$ is called deformation gradient, a second order tensor. The deformation gradient maps the vector $\textrm{d}X$ at $X$ in the reference configuration to the vector $\textrm{d}x$ at $x$ in the current configuration. It is a 2-leg tensor because has one base at reference and one at current configuration.
From equations \ref{eq:A1} and \ref{eq:A3},
\begin{equation}
\label{eq:A4}
F = \frac{\partial u + X}{\partial X}
\end{equation}
\begin{equation}
\label{eq:A5}
F = I + \frac{\partial u}{\partial X}
\end{equation}
where $U:=\frac{\partial u}{\partial X}$ is called displacement gradient. Displacement gradient and deformation gradient are used to describe deformation of a body. Both are 2-leg tensors.
\section{Strain Measures}
It is possible to describe deformation only in the reference configuration as follows:
\begin{align*}
\textrm{d}x.\textrm{d}x - \textrm{d}X.\textrm{d}X &= F.\textrm{d}X.F.\textrm{d}X -\textrm{d}X.\textrm{d}X \\
&= \textrm{d}X.(F^T . F).\textrm{d}X - \textrm{d}X.\textrm{d}X \\
&= \textrm{d}X.(F^T . F - I).\textrm{d}X \\
&= \textrm{d}X.(2E_0).\textrm{d}X
\end{align*}
where $E_0 = \frac{1}{2}(F^T . F - I)$ is called Green-Lagrange strain tensor which is defined only in reference configuration.
Similarly, it is also possible to describe deformation in current configuration
\begin{align*}
\textrm{d}x.\textrm{d}x - \textrm{d}X.\textrm{d}X &= \textrm{d}x.\textrm{d}x - F^{-1}.\textrm{d}x.F^{-1}.\textrm{d}x\\
&= \textrm{d}x.\textrm{d}x - \textrm{d}x.(F^{-T} . F^{-1}).\textrm{d}x\\
&= \textrm{d}x.(I - F^{-T} . F^{-1}).\textrm{d}x \\
&= \textrm{d}X.(2E_t).\textrm{d}X
\end{align*}
this leads to definition of Euler-Almansi strain tensor $E_t = \frac{1}{2}(I - F^{-T} . F^{-1})$ which is defined only in current configuration.
Cauchy strain can be defined in terms of displacement gradient as,
\begin{equation}
\epsilon = \frac{1}{2} \left( \nabla u + ( \nabla u)^T \right)
\end{equation}
For ONE-DIMENSION cases without lateral contraction the deformation can be described in terms of two variables: length in reference configuration $l_0$ and length in current configuration $l_t$ . By defining the ratio of these 2 variables as 'stretch ratio' we can compare the strain measures as given in the table \ref{Strain_measures_def}
\begin{table}[H]
\centering
\caption{Definition of strain measures for 1D cases}
\begin{tabular}{c|cc}
configuration & strain measure & definition in 1D \\
\hline
reference & Green-Lagrange strain & $E_{0,1dim = \frac{1}{2}(\lambda^2-1)}$ \\
current & Euler-Almansi strain & $E_{t,1dim = \frac{1}{2}(1 - \frac{1}{\lambda^2})}$ \\
2-leg & Cauchy strain & $\epsilon_{1dim} = \lambda - 1$
\end{tabular}
\label{Strain_measures_def}
\end{table}
\section{Stress Measures}
Stress is a second order tensor defined using force and area vectors which can be defined in reference or current configuration. As a result different stress measures exist.
The stress measures along with strain measures are summarized in the table \ref{Stress_Measures_Configurations}.
\begin{table}[H]
\centering
\caption{Stress and Strain measures in different configurations.}
\renewcommand\arraystretch{1.4}
\renewcommand\baselinestretch{1.4}
\begin{tabular}{c|ccc}
configuration & stress & strain & symmetry \\
\hline
current/spatial & Cauchy Stress & Euler-Almansi strain & symmetric \\
2-leg & 1st Piola-Kirchhoff stress & Displacement Gradient & non-symmetric\\
reference/material & 2nd Piola-Kirchhoff stress & Green-Lagrange strain & symmetric\\
\end{tabular}
\label{Stress_Measures_Configurations}
\end{table}
The conversion between different stress measures used in DAMASK is given in table \ref{Stress_measures}
\begin{table}[H]
\centering
\caption{Conversion between different stress measures used in DAMASK.}
\renewcommand\arraystretch{1.4}
\renewcommand\baselinestretch{1.4}
\begin{tabular}{c|c|c|c}
& $P$ (PK1)) & $S$ (PK2) & $\sigma$ (Cauchy) \\
\hline
$P$ & $P$ & det$F_pF_eF_iSF_p^{-T}$ & det$F\sigma F^{-T}$ \\
$S$ & $\frac{1}{\mbox{det} F_p}F_i^{-1}F_e^{-1}PF_p^T$ & $S$ & det$(F_eF_i)F_i^{-1}F_e^{-1}\sigma F_e^{-T}F_i^{-T}$\\
$\sigma$ & $\frac{1}{\mbox{det}F}PF^T$ & $\frac{1}{\mbox{det} (F_eF_i)}F_eF_iSF_i^{T}F_e^{T}$ & $\sigma$\\
\end{tabular}
\label{Stress_measures}
\end{table}
\section{Constitutive relation for Linear Elasticity}
Each stress components can be expressed as a linear combination of strain components in linear elasticity theory or Hooke's law, which is written as:
\begin{equation*}
\sigma_{ij} = c_{ijkl} \epsilon_{kl}
\end{equation*}
where $c_{ijkl}$ are components of the elastic stiffness tensor. The symmetries in the strain and the stress reduce 81 different entries in the elastic tensor to 36 independent elements.
In the linear elasticity, the potential energy must be quadratic function of elastic strain. This further reduces the number of independent elements to 21.
Various crystallographic symmetries in the lattice structure reduces the number of independent elastic constants further as given in the table \ref{Independent_Cijkl}. To simplify representation of elastic constants Vogit notation is used in the below table where indices are mapped as: $11\to 1, \ 22 \to 2, \ 33 \to 3, \ 23\&32 \to 4, \ 13\&31 \to 4, \ 12\&21 \to 6$
\begin{table}[H]
\centering
\caption{Independent elastic constants for various crystal symmetries.}
\begin{tabular}{c m{4em} c}
\hline
Crystal Class & Independent $C_{ij}$ & List of independent $C_{ij}$ \\
\hline
Triclinic & 21 & All possible combinations \\
Monoclinic & 13 & $C_{11}, C_{12}, C_{13}, C_{16}, C_{22}, C_{23}, C_{26}, C_{33}, C_{36}, C_{44}, C_{45}, C_{55}, C_{66}$ \\
Orthorhombic & 9 & $C_{11}, C_{12}, C_{13}, C_{22}, C_{23}, C_{33}, C_{44}, C_{55}, C_{66}$ \\
Trigonal & 6 or 7 & $C_{11}, C_{12}, C_{13}, C_{14}, C_{25}, C_{33}, C_{44}$ \\
Tetragonal & 6 & $C_{11}, C_{12}, C_{13}, C_{33}, C_{44}, C_{66}$ \\
Hexagonal & 5 & $C_{11}, C_{33}, C_{44}, C_{12}, C_{14}$ \\
Cubic & 3 & $C_{11}, C_{12}, C_{44}$ \\
Isotropic & 2 & $C_{11}, C_{44}$ \\
\hline
\end{tabular}
\label{Independent_Cijkl}
\end{table}

View File

@ -0,0 +1,246 @@
The correspondence matrix method allows predicting how crystallographic directions and planes transform during twinning. This approach is crucial for analyzing defects inherited from twinning, interactions between slip dislocations and twin boundaries, incorporating parent dislocations into the twinned lattice, and dealing with twin-twin intersections and double twinning. According to Niewczas \cite{Niewczas121}, most current continuum models for plastic deformation of crystals treat twinning incorrectly by only considering rotations, missing important aspects of the lattice transformation. Correspondence matrix approach (an example given in Table \ref{tab:Shear and correspondence matrices for Mg}) is implemented in DAMASK and utilized in the discrete twinning model.
\begin{table}[H]
\centering
\caption{Characteristic Shear and Correspondence matrices for different twinning modes of Mg with c/a=1.624.}
\begin{tabular}{ccc}
\hline
$K_1 / \eta_1$ & Magnitude of shear $s$ & Correspondence matrix $C$ \\
\hline
$( \bar{1} 0 1 2 ) [1 0 \bar{1} 1] $ & 0.128917 & $\begin{bmatrix} -0.25 & 0.433 & -0.924 \\ 0.433 & -0.75 & -0.533 \\ -0.812 & -0.47 & 0 \end{bmatrix}$ \\
$( 1 0 \bar{1} 1 ) [1 0 \bar{1} \bar{2}] $ & 0.137717 & $\begin{bmatrix} 0.125 & 0.65 & 0.693 \\ 0.65 & -0.625 & 0.4 \\ 0.812 & 0.47 & -0.5 \end{bmatrix}$ \\
$( 1 0 \bar{2} \bar{2} ) [1 1 \bar{2} \bar{3}] $ & 0.261649 & $\begin{bmatrix} -0.67 & 0.577 & 0.411 \\ 0.577 & 0 & 0.711 \\ 0.54 & 0.937 & -0.333 \end{bmatrix}$ \\
$( 1 1 \bar{2} 1) [\bar{1}\bar{1} 2 6] $ & 0.615764 & $\begin{bmatrix} -0.5 & 0.866 & 0.308 \\ 0.866 & 0.5 & 0.533 \\ 0.0 & 0.0 & -1.0 \end{bmatrix}$ \\
\hline
\end{tabular}
\label{tab:Shear and correspondence matrices for Mg}
\end{table}
\begin{minted}[fontsize=\scriptsize, frame=single]{fortran}
module math
implicit none
contains
function math_axisAngleToR(axis,omega) result(math_axisAngleToR1)
!------------------------------------------------
!> Function to generate rotation matrix around
!> arbitrary direction and arbitrary angle
!------------------------------------------------
implicit none
real, dimension(3), intent(in) :: axis
real, intent(in) :: omega
real, dimension(3) :: n
real :: norm,s,c,c1
real, dimension(3,3), parameter :: &
I3 = real(reshape([&
1, 0, 0, &
0, 1, 0, &
0, 0, 1 &
],shape(I3))) !< 3x3 Identity
real, dimension(3,3) :: math_axisAngleToR1
norm = norm2(axis)
wellDefined: if (norm > 1.0e-8) then
n = axis/norm ! normalize axis to be sure
s = sin(omega)
c = cos(omega)
c1 = 1.0 - c
math_axisAngleToR1(1,1) = c + c1*n(1)**2.0
math_axisAngleToR1(1,2) = c1*n(1)*n(2) - s*n(3)
math_axisAngleToR1(1,3) = c1*n(1)*n(3) + s*n(2)
math_axisAngleToR1(2,1) = c1*n(1)*n(2) + s*n(3)
math_axisAngleToR1(2,2) = c + c1*n(2)**2.0
math_axisAngleToR1(2,3) = c1*n(2)*n(3) - s*n(1)
math_axisAngleToR1(3,1) = c1*n(1)*n(3) - s*n(2)
math_axisAngleToR1(3,2) = c1*n(2)*n(3) + s*n(1)
math_axisAngleToR1(3,3) = c + c1*n(3)**2.0
else wellDefined
math_axisAngleToR1 = I3
endif wellDefined
end function
end module math
program corresponcence_matrix
use math
implicit none
integer, dimension(4) :: &
active = [6,6,6,6], & !< number of active twin systems
potential = [6,6,6,6] !< all the potential twin systems
real, dimension(3) :: &
direction, normal
real, dimension(3,24) :: normal_vector, direction_vector
real, dimension(3,3,24) :: SchmidMatrix, corresponcenceMatrix
real, dimension(24) :: characteristicShear
real :: cOverA = 1.6235
real :: pi = 3.14159274
real, dimension(8,24) :: &
system = reshape(real([&
! <-10.1>{10.2} systems, shear = (3-(c/a)^2)/(sqrt(3) c/a)
! tension in Co, Mg, Zr, Ti, and Be; compression in Cd and Zn
-1, 0, 1, 1, 1, 0, -1, 2, & !
0, -1, 1, 1, 0, 1, -1, 2, &
1, -1, 0, 1, -1, 1, 0, 2, &
1, 0, -1, 1, -1, 0, 1, 2, &
0, 1, -1, 1, 0, -1, 1, 2, &
-1, 1, 0, 1, 1, -1, 0, 2, &
! <11.6>{-1-1.1} systems, shear = 1/(c/a)
! tension in Co, Re, and Zr
-1, -1, 2, 6, 1, 1, -2, 1, &
1, -2, 1, 6, -1, 2, -1, 1, &
2, -1, -1, 6, -2, 1, 1, 1, &
1, 1, -2, 6, -1, -1, 2, 1, &
-1, 2, -1, 6, 1, -2, 1, 1, &
-2, 1, 1, 6, 2, -1, -1, 1, &
! <10.-2>{10.1} systems, shear = (4(c/a)^2-9)/(4 sqrt(3) c/a)
! compression in Mg
1, 0, -1, -2, 1, 0, -1, 1, &
0, 1, -1, -2, 0, 1, -1, 1, &
-1, 1, 0, -2, -1, 1, 0, 1, &
-1, 0, 1, -2, -1, 0, 1, 1, &
0, -1, 1, -2, 0, -1, 1, 1, &
1, -1, 0, -2, 1, -1, 0, 1, &
! <11.-3>{11.2} systems, shear = 2((c/a)^2-2)/(3 c/a)
! compression in Ti and Zr
1, 1, -2, -3, 1, 1, -2, 2, &
-1, 2, -1, -3, -1, 2, -1, 2, &
-2, 1, 1, -3, -2, 1, 1, 2, &
-1, -1, 2, -3, -1, -1, 2, 2, &
1, -2, 1, -3, 1, -2, 1, 2, &
2, -1, -1, -3, 2, -1, -1, 2 &
]),shape(system))
real, dimension(3,3), parameter :: &
I3 = real(reshape([&
1, 0, 0, &
0, 1, 0, &
0, 0, 1 &
],shape(I3))) !< 3x3 Identity
integer :: &
a, & !< index of active system
p, & !< index in potential system matrix
f, & !< index of my family
s, & !< index of my system in current family
f1, s1, e1, i, j, k !< indices for similar loops
!-----------------------------------------------------------
!> Normal vector to twin plane and direction vector
!> of the twin
!-----------------------------------------------------------
a = 0
do f = 1, size(active,1) !< Active Twin Modes
do s = 1, active(f) !< Active twin systems
a = a + 1
p = sum(potential(1:f-1))+s
! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(p/a)])
direction = [ system(1,p)*1.5, &
(system(1,p)+2.0*system(2,p))*sqrt(0.75), &
system(4,p)*cOverA ]
! plane (hkil)->(h (h+2k)/sqrt(3) l/(p/a))
normal = [ system(5,p), &
(system(5,p)+2.0*system(6,p))/sqrt(3.0), &
system(8,p)/cOverA ]
normal_vector(1:3,a) = normal /norm2(normal)
direction_vector(1:3,a) = direction / norm2(direction)
end do
end do
!-----------------------------------------------------------
!> Magnitude of Characteristic shear for twinning modes
!-----------------------------------------------------------
do f1 = 1,size(active,1) !< Active twin modes
s1 = sum(active(:f1-1)) + 1
e1 = sum(active(:f1))
select case(f1)
case (1)
characteristicShear(s1:e1) = (3.0-cOverA**2)/sqrt(3.0)/cOverA
case (2)
characteristicShear(s1:e1) = 1.0/cOverA
case (3)
characteristicShear(s1:e1) = (4.0*cOverA**2-9.0)/sqrt(48.0)/cOverA
case (4)
characteristicShear(s1:e1) = 2.0*(cOverA**2-2.0)/3.0/cOverA
end select
enddo
!> Write results for characteristic shear
write(6,*)'characteristic shear, for [1, 0, -1, 1],(-1, 0, 1, 2)'
write(6,*)characteristicShear(4)
write(6,*)'characteristic shear, for [-1, -1, 2, 6],(1, 1, -2, 1)'
write(6,*)characteristicShear(7)
write(6,*)'characteristic shear, for [1, 0, -1, -2],(1, 0, -1, 1)'
write(6,*)characteristicShear(13)
write(6,*)'characteristic shear, for [1, 1, -2, -3],(1, 1, -2, 2)'
write(6,*)characteristicShear(19)
!---------------------------------------------------------------
!> SchmidMatrix = Outer product of direction and normal vectors.
!---------------------------------------------------------------
do i = 1, sum(active)
forall(j=1:3, k=1:3) &
SchmidMatrix(j,k,i) = direction_vector(j,i) * &
normal_vector(k,i)
enddo
!--------------------------------------------------------------
!> Correspondence Matrix = Reorientation * Shear
!--------------------------------------------------------------
do i = 1, sum(active)
corresponcenceMatrix(1:3,1:3,i) = matmul(math_axisAngleToR &
(normal_vector(1:3,i),pi),&
I3+characteristicShear(i) &
*SchmidMatrix(1:3,1:3,i))
enddo
!> Write results for Correspondence Matrix
write(6,*)'correspondence matrix for [1, 0, -1, 1],(-1, 0, 1, 2)'
write(6,*)corresponcenceMatrix(1:3,1:3,4)
write(6,*)'oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox'
write(6,*)'correspondence matrix for [-1, -1, 2, 6],(1, 1, -2, 1)'
write(6,*)corresponcenceMatrix(1:3,1:3,7)
write(6,*)'oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox'
write(6,*)'correspondence matrix for [1, 0, -1, -2],(1, 0, -1, 1)'
write(6,*)corresponcenceMatrix(1:3,1:3,13)
write(6,*)'oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox'
write(6,*)'correspondence matrix for [1, 1, -2, -3],(1, 1, -2, 2)'
write(6,*)corresponcenceMatrix(1:3,1:3,19)
end program corresponcence_matrix
\end{minted}

View File

@ -0,0 +1,132 @@
Source code compilation of DAMASK was required for our work because it involved modifying the source code.
\section{Install Dependencies}
DAMASK uses many open source libraries which has to be installed before installing it. DAMASK developers have provided bash script which gives an overview of the prerequisites available in the computer.
\begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single]
wget https://damask.mpie.de/files/installation/3.0.0-
beta/DAMASK_prerequisites.sh
sh ./DAMASK_prerequisites.sh
cat system_report.txt
\end{lstlisting}
Running the below bash script as superuser will install all the DAMASK dependencies.
\begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single]
#!/bin/bash
# Script to install DAMASK dependencies and PETSc in home
# directory
# References: Researchgate & https://damask.mpie.de/
#Go to home directory
cd "$HOME" || exit
#install dependencies
sudo apt install git build-essential cmake make autoconf
mpich libopenmpi-dev bison cmake-format liblapack-dev
libblas-dev python3 python3-pip python3-setuptools python3-vtk9
python3-numpy python3-scipy python3-pandas python3-matplotlib
python3-h5py
# Download PETSc source and pick the version
git clone https://gitlab.com/petsc/petsc.git
cd petsc/
git checkout v3.15.5
# Configure PETSc
./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90
--download-fblaslapack --download-hdf5 --download-fftw
--download-superlu --download-hypre --download-mumps
--download-ml --download-scalapack --with-hdf5-fortran-bindings
--download-chaco --download-netcdf --download-exodusii
--download-metis --download-parmetis --download-suitesparse
--download-superlu --download-superlu_dist --download-triangle
--with-c2html=0 --with-debugging=0 --with-ssl=0 --with-x=0
--download-zlib --download-cmake --download-pnetcdf
--with-cxx-dialect=C++11 COPTFLAGS="-O3 -march=native"
CXXOPTFLAGS="-O3 -march=native" FOPTFLAGS="-O3 -march=native"
PETSC_ARCH=gfortran -PETSC_DIR=`pwd` --with-debugging=0
#Build
make PETSC_DIR=$HOME/petsc PETSC_ARCH=gfortran all
#Check
make PETSC_DIR=$HOME/petsc PETSC_ARCH=gfortran check
#Go to home directory
cd "$HOME" || exit
# Lines to be added to .bashrc
lines=($'export PETSC_DIR=/home/achal/petsc\nexport
PETSC_ARCH=gfortran\nexport XAUTHORITY=~/.Xauthority\nexport
HWLOC_COMPONENTS=-gl')
# Check if .bashrc exists
if [ -f ~/.bashrc ]; then
# Append the lines to the end of .bashrc
printf "%s\n" "${lines[@]}" >> ~/.bashrc
echo "Lines appended to ~/.bashrc"
else
echo "Error: ~/.bashrc does not exist"
exit 1
fi
echo "Dependencies installed."
echo "================================"
echo -e "Run command: 'source .bashrc'"
\end{lstlisting}
\subsection{Git}
Git is a distributed version control system for tracking changes in source code during software development. It was created in 2005 by Linus Torvalds, the principal developer of the Linux kernel.
\subsection{GNU compiler Collection.}
The GNU Compiler Collection is a open source project which provides set of compilers for various programming languages including C, C++, Fortran, and others. It was developed by the GNU Project, a free software project of the Free Software Foundation (FSF).
\subsection{CMake}
CMake is a cross-platform tool that helps build, test, and package software by generating native makefiles and project files. It allows developers to write portable configuration files that can build their software across different platforms and compilers.
\subsection{MPI}
Message Passing Interface (MPI) is a standardized and portable message-passing system designed for distributed and parallel computing. It allows multiple computers (or even multiple processor cores within the same computer) to exchange messages across distributed memory.
\subsection{PETSc}
Portable, Extensible Toolkit for Scientific Computation (PETSc) is a large library of simulation software developed by Argonne National Laboratory \cite{balay2020petsc}. It contains parallel linear and nonlinear equation solvers, ODE integrators, and optimization algorithms.
\section{Run Checks and Install DAMASK}
PETSc setup can be checked using an example that can be downloaded from DAMASK website:
\begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single]
wget https://damask.mpie.de/files/installation/3.0.0-beta/
PETSc_test.tar.xz
tar -xf PETSc_test.tar.xz
cd PETSc_test
make PETSc_test
mpirun -np 2 ./PETSc_test
\end{lstlisting}
Downloading, compilation and installation of DAMASK can be done using the bash script below:
\begin{lstlisting}[language=bash, basicstyle=\small\ttfamily, frame=single]
#!/bin/bash
# Source: https://damask.mpie.de/release/installation/
source_code.html
# Create the DAMASK directory
mkdir DAMASK
cd DAMASK
# Download and extract DAMASK
wget https://damask.mpie.de/download/damask-3.0.0-beta.tar.xz
wget https://damask.mpie.de/download/
damask-3.0.0-beta.tar.xz.sha256
sha256sum -c damask-3.0.0-beta.tar.xz.sha256 && tar -xf
damask-3.0.0-beta.tar.xz
# Run cmake commands for grid solver
cmake -S damask-3.0.0-beta -B build-grid -DDAMASK_SOLVER=grid
cmake --build build-grid --target install
# Run cmake commands for mesh solver
cmake -S damask-3.0.0-beta -B build-mesh -DDAMASK_SOLVER=mesh
cmake --build build-mesh --target install
echo "Installed DAMASK_grid and DAMASK_mesh"
\end{lstlisting}

297
Chapter_Future_scope.tex Normal file
View File

@ -0,0 +1,297 @@
\section{Conclusions.}
In the literature, we found statistical studies proving that twinning is an inherently stochastic phenomenon distributed probabilistically across geometrical parameters. Previous deterministic models failed to capture this stochastic nature adequately. We addressed this limitation by modeling the stochasticity in our constitutive law using a random sampling technique inspired by Monte Carlo methods. For simplicity, we consider the random sampling to be uniformly distributed, and we control the frequency of sampling and the range of random numbers.
\vspace{0.2cm}
Based on experimental observations and results from energy-based modeling approaches, we assume that the nucleation of twins occurs at grain boundaries. We employ selective random sampling at grain boundaries to model the nucleation events, using local stress criteria. For twin growth, which includes propagation and band thickening, we use selective random sampling of neighboring twinned voxels/elements, as a newly nucleated site induces large shear in the neighborhood. The distribution of random numbers and frequency control can be applied separately for nucleation and growth events.
\vspace{0.2cm}
Next, we model twinning as a discrete entity, enabling a spatially resolved representation of twinning events that aligns with experimental observations. This approach allows for more accurate prediction of texture evolution, which volume fraction-based models lack the capability to resolve spatially.
\vspace{0.2cm}
We consider twinning as a ``Jump" rather than a ``pseudo-slip" approach, applying the twinning shear and reorientation directly to the plastic deformation gradient $F_p$. This captures the localized deformation effects of twinning at appropriate time scales. For this, we use the correspondence matrix approach, providing a rigorous crystallographic basis by combining the twinning shear (S) and lattice rotation (U) of mechanical twinning to model the lattice reorientation and deformation associated with twinning.
\vspace{0.2cm}
For implementing our model, we chose DAMASK, an open-source crystal plasticity software that provides the facility to modify constitutive laws and integrate custom formulations due to its modular construction. DAMASK's ability to access internal subroutines facilitated the implementation of our model on a stable platform for testing. We treat twinning as an intermediate configuration with a sudden jump in the plastic deformation gradient $F_p$, departing from the gradual $F_p$ rate evolution associated with dislocation slip in crystal plasticity. This is implemented by modifying the time integration algorithm for kinematic variables in DAMASK and circumventing loops for convergence while updating the plastic deformation gradient.
\vspace{0.2cm}
Our work advances the understanding and modeling of deformation twinning in HCP metals by addressing gaps or limitations identified in the literature, such as the stochastic nature of twinning, accurate spatial resolution of twins, and capturing the localized deformation effects through a crystallographically rigorous approach. This can potentially lead to more accurate predictions of texture evolution and deformation behavior in HCP metals, enabling better material design and performance optimization.
\section{Future scope: Full Scale Model Testing.}
For publication of the discrete twinning constitutive model it is necessary to test it against other models and with experiments. We need to run simulations for 3D polycrystal Representative Volume Elements (RVEs) for running these tests. Here we discuss the process of model testing.
\subsection{Benchmark the simulations.}
Before running polycrystal simulations to test our code, it is essential to benchmark the simulation results against known solutions or experimental data. This process involves running a set of pre-processing codes with well-understood material parameters and boundary conditions and comparing the simulation results with established benchmarks. For this purpose, we have chosen to benchmark our simulations against the results of Wang et al. (2014) \cite{WANG201477}, where simulations were performed on pure magnesium using the DAMASK software, and the results were compared with experimental observations.
Benchmarking against a reliable source serves several purposes:
\begin{enumerate}
\item Verification: It verifies the correct implementation of the constitutive model, numerical algorithms, and boundary conditions within our code.
\item Validation: It validates the model's ability to reproduce known phenomena and results accurately.
\item Calibration: It aids in calibrating material parameters and identifying potential discrepancies or sources of error.
\item Establishing Confidence: Successful benchmarking builds confidence in the reliability and accuracy of our simulation framework before proceeding with further investigations or parametric studies.
\end{enumerate}
\subsection{Benchmark simulation setup.}
Lattice parameters and elastic properties of Mg for the simulation is based on \cite{HULL1922189} \\ $\{\bar{1} 0 1 2\} \langle 1 0 \bar{1} 1 \rangle$ Extension twin system in Magnesium:
\begin{table}[H]
\begin{subtable}{0.45\textwidth}
\centering
\caption{Crystallography of twinning.}
\label{tab:Twin_geometry}
\begin{tabular}{cccc}
\hline
$\nu_1$ & $K_1$ & $\nu_2$ & $K_2$ \\
\hline
$\langle \bar{1} 0 1 1 \rangle$ & $\{ 1 0 \bar{1} 2 \}$ & $\langle 1 0 \bar{1} 1 \rangle$ & $\{ 1 0 \bar{1} \bar{2} \}$ \\
\hline
\end{tabular}
\end{subtable}
\begin{subtable}{0.45\textwidth}
\centering
\caption{Lattice parameters.}
\label{tab:cOverA}
\begin{tabular}{cccc}
\hline
parameter & c & a & c/a \\
\hline
value & 1.6235 & 1 & 1.6235 \\
\hline
\end{tabular}
\end{subtable}
\caption{Crystallography of twinning and lattice parameters.}
\label{tab:Twin_crystallography}
\end{table}
%next subtables should start immediately after previous one else it will not be side by side.
\begin{table}[H]
\begin{minipage}[h]{0.45\textwidth}
\begin{subtable}{\textwidth}
\centering
\caption{$\langle \Bar{1} 0 1 1 \rangle \{ 1 0 \Bar{1} 2 \}$ extension twin system.}
\label{tab:Twins1}
\begin{tabular}{ccc}
\hline
index & plane normal & slip direction \\
\hline
$V1$ & $(\bar{1} 1 0 2)$ & $[ 1 \bar{1} 0 1]$ \\
$V2$ & $(1 0 \bar{1} 2)$ & $[ \bar{1} 0 1 1]$ \\
$V3$ & $(0 \bar{1} 1 2)$ & $[ 0 1 \bar{1} 1]$ \\
$V4$ & $(1 \bar{1} 0 2)$ & $[ \bar{1} 1 0 1]$ \\
$V5$ & $(\bar{1} 0 1 2)$ & $[ 1 0 \bar{1} 1]$ \\
$V6$ & $(0 1 \bar{1} 2)$ & $[ 0 \bar{1} 1 1]$ \\
\hline
\end{tabular}
\end{subtable}
\begin{subtable}{\textwidth}
\centering
\caption{$\langle 2 \bar{1} \bar{1} 0 \rangle \{ 0 0 0 1 \}$ basal slip system.}
\label{tab:Slips0}
\begin{tabular}{ccc}
\hline
index & plane normal & slip direction \\
\hline
$1$ & $(0 0 0 1)$ & $[ 2 \bar{1} \bar{1} 0]$ \\
$2$ & $(0 0 0 1)$ & $[ \bar{1} 2 \bar{1} 0]$ \\
$3$ & $(0 0 0 1)$ & $[ \bar{1} \bar{1} 2 0]$ \\
\hline
\end{tabular}
\end{subtable}
\begin{subtable}{\textwidth}
\centering
\caption{$\langle 2 \bar{1} \bar{1} 0 \rangle \{ 0 1 \bar{1} 0 \}$ prismatic slip system.}
\label{tab:Slips1}
\begin{tabular}{ccc}
\hline
index & plane normal & slip direction \\
\hline
$1$ & $(0 \bar{1} \bar{1} 0)$ & $[ 2 \bar{1} \bar{1} 0]$ \\
$2$ & $(\bar{1} 0 0 1)$ & $[ \bar{1} 2 \bar{1} 0]$ \\
$3$ & $(1 \bar{1} 0 0)$ & $[ \bar{1} \bar{1} 2 0]$ \\
\hline
\end{tabular}
\end{subtable}
\end{minipage}%
\hfill
\begin{minipage}[t]{0.45\textwidth}
\begin{subtable}{\textwidth}
\centering
\caption{$\langle 2 \bar{1} \bar{1} 0 \rangle \{ 0 1 \Bar{1} 1 \}$ 1st order pyramidal slip system.}
\label{tab:Slips2}
\begin{tabular}{ccc}
\hline
index & plane normal & slip direction \\
\hline
$V1$ & $(0 1 \bar{1} 1)$ & $[ 2 \bar{1} \bar{1} 0]$ \\
$V2$ & $(\bar{1} 0 1 1)$ & $[ \bar{1} 2 \bar{1} 0]$ \\
$V3$ & $(1 \bar{1} 0 1)$ & $[ \bar{1} \bar{1} 2 0]$ \\
$V4$ & $(\bar{1} 1 0 1)$ & $[ 1 1 \bar{2} 0]$ \\
$V5$ & $(0 \bar{1} 1 1)$ & $[ \bar{2} 1 1 0]$ \\
$V6$ & $(1 0 \bar{1} 1)$ & $[ 1 \bar{2} 1 0]$ \\
\hline
\end{tabular}
\end{subtable}
\begin{subtable}{\textwidth}
\centering
\caption{$\langle 2 \bar{1} \bar{1} 3 \rangle \{ \bar{2} 1 1 2\}$ 2nd order pyramidal slip system.}
\label{tab:Slips3}
\begin{tabular}{ccc}
\hline
index & plane normal & slip direction \\
\hline
$V1$ & $(\bar{2} 1 1 2)$ & $[ 2 \bar{1} \bar{1} 3]$ \\
$V2$ & $(1 \bar{2} 1 2)$ & $[ \bar{1} 2 \bar{1} 3]$ \\
$V3$ & $(1 1 \bar{2} 2)$ & $[ \bar{1} \bar{1} 2 3]$ \\
$V4$ & $(2 \bar{1} \bar{1} 2)$ & $[ \bar{2} 1 1 3]$ \\
$V5$ & $(\bar{1} 2 \bar{1} 2)$ & $[ 1 \bar{2} 1 3]$ \\
$V6$ & $(\bar{1} \bar{1} 2 2)$ & $[ 1 1 \bar{2} 3]$ \\
\hline
\end{tabular}
\end{subtable}
\end{minipage}
\caption{Slip and twin systems.}
\label{tab:Crystallography}
\end{table}
Table \ref{tab:Mat_properties} from \cite{Tromans2011ELASTICAO} \cite{AGNEW20064841} are the material parameters of Mg where $\xi_0$ $\xi_\infty$ values are initial and bounding Critical Resolved Shear Stress for various slip and twin systems. $h_0$ values are system dependent fitting parameters.
\begin{table}[H]
\begin{subtable}[h]{0.45\textwidth}
\centering
\caption{Deformation twinning parameters.}
\label{tab:Twin_parameters}
\begin{tabular}{lS[table-format=4.1]l}
\hline
property & {value} & unit \\
\hline
$\xi_{0,T1}$ & 40.0 & MPa \\
$h^{tw-tw}_{0}$ & 50.0 & MPa \\
$h^{tw-s}_{0}$ & 150.0 & MPa \\
\hline
\end{tabular}
\end{subtable}
\vspace{-2em}
\begin{subtable}[h]{0.45\textwidth}
\centering
\caption{Elastic Properties}
\label{tab:Elastic_properties}
\begin{tabular}{l S[table-format=4.1] l}
\hline
property & {value} & unit \\
\hline
$C_{11}$ & 59.3 & GPa \\
$C_{33}$ & 61.5 & GPa \\
$C_{44}$ & 16.4 & GPa \\
$C_{12}$ & 25.7 & GPa \\
$C_{13}$ & 21.4 & GPa \\
\hline
\end{tabular}
\end{subtable}
\begin{subtable}[h]{0.45\textwidth}
\centering
\caption{Dislocation slip parameters.}
\label{tab:Slip_parameters}
\begin{tabular}{l S[table-format=4.1] l}
\hline
property & {value} & unit \\
\hline
$\xi_{0,basal}$ & 10.0 & MPa \\
$\xi_{\infty,basal}$ & 40.0 & MPa \\
$\xi_{0,prism}$ & 55.0 & MPa \\
$\xi_{\infty,prism}$ & 135.0 & MPa \\
$\xi_{0,pyr\langle a\rangle}$ & 60.0 & MPa \\
$\xi_{\infty,pyr\langle a\rangle}$ & 150.0 & MPa \\
$\xi_{0,pyr\langle c+a\rangle}$ & 60.0 & MPa \\
$\xi_{\infty,pyr\langle c+a\rangle}$ & 150.0 & MPa \\
$h^{s-s}_{0}$ & 500.0 & MPa \\
$h^{s-tw}_{0}$ & 0.0 & MPa \\
\hline
\end{tabular}
\end{subtable}
\caption{Material parameters of magnesium used for simulations.}
\label{tab:Mat_properties}
\end{table}
The figure \ref{Benchmark_simulation} shows a benchmark simulation result for Pure Mg poly-crystal with 20 randomly oriented grains under subjected to shear in XY direction with below boundary condition:
\begin{equation}
\dot{F} = \begin{bmatrix} 0 & 10^{-3} & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{bmatrix}
\end{equation}
\begin{figure}[H]
\centering
\includegraphics[width=0.5\textwidth]{images/plot.png}
\caption{von Mises Equivalent stress-strain curve for pure Mg under shear.}
\label{Benchmark_simulation}
\end{figure}
%\subsection{Comparison study with previous models.}
%Once the benchmark is chosen we apply it to test our model and we also use it to test our model with previous models.
%\subsubsection{Parametric studies on the model}
%In the final stage we carry out parametric studies of our model with experimental results.
\subsection{Comparison of Different Constitutive Models.}
It is essential to compare the computational efficiency and prediction capability of different constitutive models to assess their relative strengths and limitations. Since the MTech project spanning one year was dedicated to developing the constitutive model, comparative studies and analysis can be conducted as an extension of this work.
\subsection{Computational Efficiency.}
The computational effort required to generate the results can be compared across different models. For a fair comparison, the same inputs should be used to run the simulations, including the representative volume element, material parameters, and boundary conditions. Since the development of our model focused on computational efficiency, assessing its performance in this aspect will be a crucial future scope of this research work.
\subsection{Prediction capability.}
Our current model predicts the spatial evolution of twinning as a discrete quantity, which is physically accurate. In other words, our model predicts the texture evolution resulting from deformation twinning. It is also possible to compare other parameters, such as the load-deformation response, from different models and with experimental results to evaluate their predictive capabilities.
\subsection{Parametric Study of the model results.}
The influence of various parameters, including texture, grain size, grain morphology, strain rate, and loading conditions, on deformation twinning can be studied using the results of the model. These results can be compared with experimental data to validate the model's ability to capture the effects of different parameters accurately.
\subsection{Validation and Verification.}
It is crucial to validate and verify the constitutive model by comparing its predictions with experimental observations and established theoretical frameworks. This process involves assessing the model's ability to reproduce known phenomena accurately and ensuring that its underlying assumptions and formulations are consistent with fundamental principles.
\section{Future Scope: Implementation in ABAQUS as UMat.}
While DAMASK provides a basic finite element solver, a future implementation of the discrete twinning model can be made as a user-defined material (UMAT) in the ABAQUS finite element software. ABAQUS is a widely used and well-established commercial software package for finite element analysis, offering several advantages for the implementation and deployment of advanced constitutive models.
\subsection{ABAQUS Software:}
Robust and Stable Solvers: ABAQUS offers implicit finite element solvers renowned for their numerical stability and convergence properties, enabling the accurate simulation of complex material behavior and large deformations.
\begin{itemize}
\item \textbf{User-Defined Material Capabilities:} ABAQUS allows users to implement custom constitutive models through UMATs, providing a flexible framework for incorporating advanced material models into simulations.
\item \textbf{Pre- and Post-Processing Tools:} ABAQUS includes comprehensive pre-processing tools for model generation, mesh generation, and boundary condition assignment, as well as post-processing tools for visualizing and analyzing simulation results.
\end{itemize}
\subsection{Advantages of the Finite Element Method (FEM):}
\begin{itemize}
\item \textbf{Complex Alloy System Modeling:} FEM can handle complex alloy systems where microstructural features such as precipitates, phases, and grains with complex morphologies can be accurately modeled into the Representative Volume Element (RVE) and discretized using tetrahedral or hexahedral elements.
\item \textbf{Accurate Representation of Geometry and Boundary Conditions:} FEM allows for the precise representation of complex geometries and the application of a wide range of boundary conditions, enabling realistic simulations of actual engineering components and structures.
\item \textbf{Adaptive Mesh Refinement:} Advanced FEM solvers like ABAQUS offer adaptive mesh refinement capabilities, which can automatically refine the mesh in regions of high deformation gradients or stress concentrations, improving the accuracy of the solution while optimizing computational resources.
\end{itemize}
\subsection{Additional Advantages: Wide Industry Adoption: }
ABAQUS is widely adopted across various industries, including automotive, aerospace, and manufacturing, ensuring compatibility with industry-standard practices and facilitating knowledge transfer and collaboration.
%${https://petsc.org/release/overview/integrator_table/}$
%$https://mooseframework.inl.gov/syntax/Executioner/TimeIntegrator/$
% https://mooseframework.inl.gov/source/materials/crystal_plasticity/FiniteStrainUObasedCP.html
% https://mooseframework.inl.gov/source/materials/crystal_plasticity/ComputeMultipleCrystalPlasticityStress.html
% https://www.dropbox.com/s/23wj304q5rnjrtd/WARP3D_Intro_Lecture.pdf?e=1&dl=0

Binary file not shown.