Add some notes on lattice inputs.

This commit is contained in:
jgrogan 2024-06-04 17:23:06 +01:00
parent 684f81980d
commit e200282636
2 changed files with 105 additions and 7 deletions

View file

@ -2,3 +2,74 @@ Journal Article: https://doi.org/10.1016/j.jmbbm.2014.01.007
Supporting Data - including original software versions: https://zenodo.org/records/11184080 Supporting Data - including original software versions: https://zenodo.org/records/11184080
The UMAT `UCrys_HCP_Only.for` is used for the simulations in the paper.
The channel die experiments use `CDIE_1E.inp` as in input file. In that file the following material is specified:
```
*MATERIAL, NAME=MATERIAL-1
**
*USER MATERIAL, CONSTANTS=22, UNSYMM
45000.,0.3,1.,0.,0.,0.,0.,1.
4.,1.,0.,10.,20.,150.,7500.,40.,
260.,7500.,5.,200.,0.11,10.
*Depvar
163
*
```
which sets the 22 input properties used in the UMAT. The propeties are as follows:
``` fortran
c PROPS
c 1) Elastic Modulus
c 2) Poisson's ratio
c 3) x-axis orientaion in GLOBAL, x-coord
c 4) x-axis orientation in GLOBAL, y-coord
c 5) x-axis orientation in GLOBAL, z-coord
c 6) y-axis orientation in GLOBAL, x-coord
c 7) y-axis orientation in GLOBAL, y-coord
c 8) y-axis orientation in GLOBAL, z-coord
c 9) Crystal type: 1-4. FCC=1, HCP=2,3,4 (+Pyr, +Twin)
c 10) Initial slip system strength FCC or HCP Basal
c 11) FCC Hardening param
c 12) FCC/HCp Basal hardening param
c 13) Initial slip system strength HCP Prismatic
c 14) Prismatic hardening param
c 15) Prismatic hardening param
c 16) Initial slip system strength HCP Pyramidal
c 17) Pyramidal hardening param
c 18) Pyramidal hardening param
c 19) Initial slip system strength HCP Twin
c 20) Twin system hardening param
c 21) Twin system hardening param
c 22) Twin system hardening param
c
```
We assume a cartesian GLOBAL axis for the overall multi-component problem and a cartesian LOCAL axis to define the orientation of the crystal. Via input properties (PROPS) 3-5 and 6-8 we specify the directions of the LOCAL x and y axes in the GLOBAL coordinate system, assuming an orthonal LOCAL z axis given by the cross-product with 'right hand rule'.
In the paper, channel die simulation loading and constraint directions are described via Miller-Bravais indices, which are (informally) a way to describe directions in the crystal lattice, and can be regarded as the inverted intersection coordinates of planes described in crystal specific coordinate systems.
For the HCP material here four axes are used, three (a_1, a_2, a_3) are on one of the crystal basal planes with equal angles between them (120 degrees) and the fourth (c) is normal to the basal plane. Thus we have three coordinate systems in total, the HCP lattice system via MB indices, the cartesian crystal local LOCAL system and the GLOBAL system.
In the simulated experiment the die is closed in the GLOBAL (negative) z direction via boundary condition.
```
** Name: BC-4 Type: Displacement/Rotation
*Boundary, amplitude=Amp-1
Set-2, 1, 1, -1.
```
Another direction allows the the material to freely deform (GLOBAL x or y, not sure which).
To determine the suitable crystal input orientation parameters for each test it is necessary to find suitable coordinates for the LOCAL crystal axes in the GLOBAL system via the defined Miller indices.
Taking the first case as an example, load direction `[0 0 0 1]` means the loading will happen along the `c` axis of the crystal (or perpendicular to the basal plane). This contrains the crystal local `x` and `y` axes to be normal to the global `z` direction `(0, 0, 1)`.
The constraint direction `[1 0 1_bar 0]` is on a plane that intercepts the hcp crystal 'a_1' axis at '1' and its 'a_3' axis at '-1'. Assuming the a_1 axis is equivalent to the crystal local x-axis, then the a_3 axis is a 240 degree rotation around the crystal local z-axis. Moving in the negative direction on the a_3 axis corresponds to a (240-180=) 60 degree rotation around the z axis, and talking the midway point (since we are moving 1 and -1 along each axis) means a 30 degree rotation about 'z'. Thus, if we want to constrain the crystal in the `[1 0 1_bar 0]` direction relative to a global constraint in the x direction we would need to rotate it by -30 degrees about the global z.

View file

@ -30,6 +30,30 @@ c *******************************************************************
3 dspdro(3,18),dhdgdg(18,18),rwkdir(3,24),rwknor(3,24), 3 dspdro(3,18),dhdgdg(18,18),rwkdir(3,24),rwknor(3,24),
3 indxL(3),termd(3),termn(3),gamma(18),tauslpL(18) 3 indxL(3),termd(3),termn(3),gamma(18),tauslpL(18)
c c
c PROPS
c 1) Elastic Modulus
c 2) Poisson's ratio
c 3) x-axis orientaion in GLOBAL, x-coord
c 4) x-axis orientation in GLOBAL, y-coord
c 5) x-axis orientation in GLOBAL, z-coord
c 6) y-axis orientation in GLOBAL, x-coord
c 7) y-axis orientation in GLOBAL, y-coord
c 8) y-axis orientation in GLOBAL, z-coord
c 9) Crystal type: 1-4. FCC=1, HCP=2,3,4 (+Pyr, +Twin)
c 10) Initial slip system strength FCC or HCP Basal
c 11) FCC Hardening param
c 12) FCC/HCp Basal hardening param
c 13) Initial slip system strength HCP Prismatic
c 14) Prismatic hardening param
c 15) Prismatic hardening param
c 16) Initial slip system strength HCP Pyramidal
c 17) Pyramidal hardening param
c 18) Pyramidal hardening param
c 19) Initial slip system strength HCP Twin
c 20) Twin system hardening param
c 21) Twin system hardening param
c 22) Twin system hardening param
c ********** INITIALIZATION **********
c----- Elastic matrix in GLOBAL system c----- Elastic matrix in GLOBAL system
gshear = props(1)/(2.*(1.+props(2))) gshear = props(1)/(2.*(1.+props(2)))
e11 = 2.*gshear*(one-props(2))/(1.-2.*props(2)) e11 = 2.*gshear*(one-props(2))/(1.-2.*props(2))
@ -92,13 +116,15 @@ C-----Increment of dilatational strain: DEV
do i = 1,ndi do i = 1,ndi
dev = dev+dstran(i) dev = dev+dstran(i)
end do end do
C----- Iteration starts c-----***********************
C----- START ITERATION
1000 continue 1000 continue
nitrtn = nitrtn+1 nitrtn = nitrtn+1
C----- Check whether the current stress state is the initial state C----- If this is the first iteration then initialize slip calcs
if (statev(1) == 0.) then if (statev(1) == 0.) then
if (ictype == 1)then if (ictype == 1)then
c----- generating all possible slip directions for fcc c----- FCC Crystal Type
c----- generating slip directions
rwkdir = 1./sqrt(2.) rwkdir = 1./sqrt(2.)
do j = 1,6 do j = 1,6
do i = 1,3 do i = 1,3
@ -108,14 +134,14 @@ c----- generating all possible slip directions for fcc
rwkdir(1,6) = -rwkdir(1,6) rwkdir(1,6) = -rwkdir(1,6)
rwkdir(2,4) = -rwkdir(2,4) rwkdir(2,4) = -rwkdir(2,4)
rwkdir(3,5) = -rwkdir(3,5) rwkdir(3,5) = -rwkdir(3,5)
c-----generating all possible slip planes for fcc c-----generating slip planes
rwknor = 1./sqrt(3.) rwknor = 1./sqrt(3.)
do i = 1,3 do i = 1,3
do j = 1,4 do j = 1,4
if (j.eq.i+1)rwknor(i,j) = -rwknor(i,j) if (j.eq.i+1)rwknor(i,j) = -rwknor(i,j)
end do end do
end do end do
c------Generating all slip systems for FCC c------Generating slip systems
nslip = 0 nslip = 0
do j = 1,4 do j = 1,4
do i = 1,6 do i = 1,6
@ -133,7 +159,8 @@ c------Generating all slip systems for FCC
end do end do
end do end do
else else
c-----generating slip directions and normals for hcp-basal c----- HCP Crystal Type
c----- generating slip directions and normals for hcp-basal
rwkdir = 0. rwkdir = 0.
rwknor = 0. rwknor = 0.
angle = acos(-1.)/3. angle = acos(-1.)/3.
@ -154,7 +181,7 @@ c-----generating slip directions and normals for hcp-basal
slpnor(k,i) = rwknor(k,i) slpnor(k,i) = rwknor(k,i)
enddo enddo
enddo enddo
c-----generating slip directions and normals for hcp-prismatic c----- generating slip directions and normals for hcp-prismatic
rwknor = 0. rwknor = 0.
rwknor(1,1) = 0. rwknor(1,1) = 0.
rwknor(2,1) = -1. rwknor(2,1) = -1.