From a6f88c0e371ffd62629d874ab74a17ead588a6ff Mon Sep 17 00:00:00 2001
From: Pratheek Shanthraj
Date: Tue, 28 Oct 2014 18:05:51 +0000
Subject: [PATCH] introduced crystallographic cleavage systems for each lattice
type
FCC: (100) and (111) planes
BCC: (100) and (110) planes
HCP: (0001) planes
iso/orthotropic: (100) planes
---
code/lattice.f90 | 243 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 200 insertions(+), 43 deletions(-)
diff --git a/code/lattice.f90 b/code/lattice.f90
index 00e639ea0..321588740 100644
--- a/code/lattice.f90
+++ b/code/lattice.f90
@@ -16,19 +16,22 @@ module lattice
implicit none
private
integer(pInt), parameter, public :: &
- LATTICE_maxNslipFamily = 6_pInt, & !< max # of slip system families over lattice structures
- LATTICE_maxNtwinFamily = 4_pInt, & !< max # of twin system families over lattice structures
- LATTICE_maxNtransFamily = 2_pInt, & !< max # of transformation system families over lattice structures
- LATTICE_maxNslip = 33_pInt, & !< max # of slip systems over lattice structures
- LATTICE_maxNtwin = 24_pInt, & !< max # of twin systems over lattice structures
- LATTICE_maxNinteraction = 42_pInt, & !< max # of interaction types (in hardening matrix part)
- LATTICE_maxNnonSchmid = 6_pInt, & !< max # of non schmid contributions over lattice structures
- LATTICE_maxNtrans = 12_pInt !< max # of transformations over lattice structures
+ LATTICE_maxNslipFamily = 6_pInt, & !< max # of slip system families over lattice structures
+ LATTICE_maxNtwinFamily = 4_pInt, & !< max # of twin system families over lattice structures
+ LATTICE_maxNtransFamily = 2_pInt, & !< max # of transformation system families over lattice structures
+ LATTICE_maxNcleavageFamily = 3_pInt, & !< max # of transformation system families over lattice structures
+ LATTICE_maxNslip = 33_pInt, & !< max # of slip systems over lattice structures
+ LATTICE_maxNtwin = 24_pInt, & !< max # of twin systems over lattice structures
+ LATTICE_maxNinteraction = 42_pInt, & !< max # of interaction types (in hardening matrix part)
+ LATTICE_maxNnonSchmid = 6_pInt, & !< max # of non schmid contributions over lattice structures
+ LATTICE_maxNtrans = 12_pInt, & !< max # of transformations over lattice structures
+ LATTICE_maxNcleavage = 9_pInt !< max # of cleavage over lattice structures
integer(pInt), allocatable, dimension(:,:), protected, public :: &
lattice_NslipSystem, & !< total # of slip systems in each family
lattice_NtwinSystem, & !< total # of twin systems in each family
- lattice_NtransSystem !< total # of transformation systems in each family
+ lattice_NtransSystem, & !< total # of transformation systems in each family
+ lattice_NcleavageSystem !< total # of transformation systems in each family
integer(pInt), allocatable, dimension(:,:,:), protected, public :: &
lattice_interactionSlipSlip, & !< Slip--slip interaction type
@@ -37,10 +40,12 @@ module lattice
lattice_interactionTwinTwin !< Twin--twin interaction type
real(pReal), allocatable, dimension(:,:,:,:,:), protected, public :: &
- lattice_Sslip !< Schmid and non-Schmid matrices
+ lattice_Sslip, & !< Schmid and non-Schmid matrices
+ lattice_Scleavage !< Schmid matrices for cleavage systems
real(pReal), allocatable, dimension(:,:,:,:), protected, public :: &
- lattice_Sslip_v !< Mandel notation of lattice_Sslip
+ lattice_Sslip_v, & !< Mandel notation of lattice_Sslip
+ lattice_Scleavage_v !< Mandel notation of lattice_Scleavege
real(pReal), allocatable, dimension(:,:,:), protected, public :: &
lattice_sn, & !< normal direction of slip system
@@ -84,13 +89,17 @@ module lattice
LATTICE_fcc_NtwinSystem = int([12, 0, 0, 0],pInt) !< total # of twin systems per family for fcc
integer(pInt), dimension(LATTICE_maxNtransFamily), parameter, public :: &
- LATTICE_fcc_NtransSystem = int([12, 0],pInt) !< total # of transformation systems per family for fcc
+ LATTICE_fcc_NtransSystem = int([12, 0],pInt) !< total # of transformation systems per family for fcc
+
+ integer(pInt), dimension(LATTICE_maxNcleavageFamily), parameter, public :: &
+ LATTICE_fcc_NcleavageSystem = int([3, 4, 0],pInt) !< total # of cleavage systems per family for fcc
integer(pInt), parameter, private :: &
LATTICE_fcc_Nslip = 12_pInt, & ! sum(lattice_fcc_NslipSystem), & !< total # of slip systems for fcc
LATTICE_fcc_Ntwin = 12_pInt, & ! sum(lattice_fcc_NtwinSystem) !< total # of twin systems for fcc
LATTICE_fcc_NnonSchmid = 0_pInt, & !< total # of non-Schmid contributions for fcc
- LATTICE_fcc_Ntrans = 12_pInt !< total # of transformations for fcc
+ LATTICE_fcc_Ntrans = 12_pInt, & !< total # of transformations for fcc
+ LATTICE_fcc_Ncleavage = 7_pInt !< total # of cleavage systems for fcc
real(pReal), dimension(3+3,LATTICE_fcc_Nslip), parameter, private :: &
LATTICE_fcc_systemSlip = reshape(real([&
@@ -288,6 +297,18 @@ module lattice
6, 9 &
],pInt),[2_pInt,LATTICE_fcc_Ntrans])
+ real(pReal), dimension(3+3,LATTICE_fcc_Ncleavage), parameter, private :: &
+ LATTICE_fcc_systemCleavage = reshape(real([&
+ ! Cleavage direction Plane normal
+ 1, 0, 0, 0, 1, 0, &
+ 0, 1, 0, 0, 0, 1, &
+ 0, 0, 1, 1, 0, 0, &
+ 0, 1,-1, 1, 1, 1, &
+ 0,-1,-1, -1,-1, 1, &
+ -1, 0,-1, 1,-1,-1, &
+ 0, 1, 1, -1, 1,-1 &
+ ],pReal),[ 3_pInt + 3_pInt,LATTICE_fcc_Ncleavage])
+
!--------------------------------------------------------------------------------------------------
! bcc
integer(pInt), dimension(LATTICE_maxNslipFamily), parameter, public :: &
@@ -298,12 +319,17 @@ module lattice
integer(pInt), dimension(LATTICE_maxNtransFamily), parameter, public :: &
LATTICE_bcc_NtransSystem = int([0,0],pInt) !< total # of transformation systems per family for bcc
+
+ integer(pInt), dimension(LATTICE_maxNcleavageFamily), parameter, public :: &
+ LATTICE_bcc_NcleavageSystem = int([3,6,0],pInt) !< total # of cleavage systems per family for bcc
integer(pInt), parameter, private :: &
LATTICE_bcc_Nslip = 24_pInt, & ! sum(lattice_bcc_NslipSystem), & !< total # of slip systems for bcc
LATTICE_bcc_Ntwin = 12_pInt, & ! sum(lattice_bcc_NtwinSystem) !< total # of twin systems for bcc
LATTICE_bcc_NnonSchmid = 6_pInt, & !< # of non-Schmid contributions for bcc. 6 known non schmid contributions for BCC (A. Koester, A. Ma, A. Hartmaier 2012)
- LATTICE_bcc_Ntrans = 0_pInt !< total # of transformations for bcc
+ LATTICE_bcc_Ntrans = 0_pInt, & !< total # of transformations for bcc
+ LATTICE_bcc_Ncleavage = 9_pInt !< total # of cleavage systems for bcc
+
real(pReal), dimension(3+3,LATTICE_bcc_Nslip), parameter, private :: &
LATTICE_bcc_systemSlip = reshape(real([&
@@ -469,6 +495,20 @@ module lattice
!< 3: other interaction
+ real(pReal), dimension(3+3,LATTICE_bcc_Ncleavage), parameter, private :: &
+ LATTICE_bcc_systemCleavage = reshape(real([&
+ ! Cleavage direction Plane normal
+ 1, 0, 0, 0, 1, 0, &
+ 0, 1, 0, 0, 0, 1, &
+ 0, 0, 1, 1, 0, 0, &
+ 1,-1, 1, 0, 1, 1, &
+ 1, 1, 1, 0,-1, 1, &
+ -1, 1, 1, 1, 0, 1, &
+ 1, 1, 1, -1, 0, 1, &
+ -1, 1, 1, 1, 1, 0, &
+ 1, 1, 1, -1, 1, 0 &
+ ],pReal),[ 3_pInt + 3_pInt,LATTICE_bcc_Ncleavage])
+
!--------------------------------------------------------------------------------------------------
! hex
integer(pInt), dimension(LATTICE_maxNslipFamily), parameter, public :: &
@@ -480,11 +520,15 @@ module lattice
integer(pInt), dimension(LATTICE_maxNtransFamily), parameter, public :: &
LATTICE_hex_NtransSystem = int([0,0],pInt) !< total # of transformation systems per family for hex
+ integer(pInt), dimension(LATTICE_maxNcleavageFamily), parameter, public :: &
+ LATTICE_hex_NcleavageSystem = int([3,0,0],pInt) !< total # of cleavage systems per family for hex
+
integer(pInt), parameter , private :: &
LATTICE_hex_Nslip = 33_pInt, & ! sum(lattice_hex_NslipSystem), !< total # of slip systems for hex
LATTICE_hex_Ntwin = 24_pInt, & ! sum(lattice_hex_NtwinSystem) !< total # of twin systems for hex
LATTICE_hex_NnonSchmid = 0_pInt, & !< # of non-Schmid contributions for hex
- LATTICE_hex_Ntrans = 0_pInt !< total # of transformations for hex
+ LATTICE_hex_Ntrans = 0_pInt, & !< total # of transformations for hex
+ LATTICE_hex_Ncleavage = 3_pInt !< total # of transformations for hex
real(pReal), dimension(4+4,LATTICE_hex_Nslip), parameter, private :: &
LATTICE_hex_systemSlip = reshape(real([&
@@ -737,6 +781,47 @@ module lattice
20,20,20,20,20,20, 19,19,19,19,19,19, 18,18,18,18,18,18, 17,17,17,17,16,17, &
20,20,20,20,20,20, 19,19,19,19,19,19, 18,18,18,18,18,18, 17,17,17,17,17,16 &
],pInt),[lattice_hex_Ntwin,lattice_hex_Ntwin],order=[2,1]) !< Twin--slip interaction types for hex (isotropic, 16 in total)
+
+ real(pReal), dimension(4+4,LATTICE_hex_Ncleavage), parameter, private :: &
+ LATTICE_hex_systemCleavage = reshape(real([&
+ ! Cleavage direction Plane normal
+ 2,-1,-1, 0, 0, 0, 0, 1, &
+ 0, 0, 0, 1, 2,-1,-1, 0, &
+ 0, 0, 0, 1, 0, 1,-1, 0 &
+ ],pReal),[ 4_pInt + 4_pInt,LATTICE_hex_Ncleavage])
+
+!--------------------------------------------------------------------------------------------------
+! isotropic
+ integer(pInt), dimension(LATTICE_maxNcleavageFamily), parameter, public :: &
+ LATTICE_iso_NcleavageSystem = int([3,0,0],pInt) !< total # of cleavage systems per family for isotropic
+
+ integer(pInt), parameter, private :: &
+ LATTICE_iso_Ncleavage = 3_pInt !< total # of cleavage systems for bcc
+
+ real(pReal), dimension(3+3,LATTICE_iso_Ncleavage), parameter, private :: &
+ LATTICE_iso_systemCleavage = reshape(real([&
+ ! Cleavage direction Plane normal
+ 1, 0, 0, 0, 1, 0, &
+ 0, 1, 0, 0, 0, 1, &
+ 0, 0, 1, 1, 0, 0 &
+ ],pReal),[ 3_pInt + 3_pInt,LATTICE_iso_Ncleavage])
+
+!--------------------------------------------------------------------------------------------------
+! orthorhombic
+ integer(pInt), dimension(LATTICE_maxNcleavageFamily), parameter, public :: &
+ LATTICE_ortho_NcleavageSystem = int([1,1,1],pInt) !< total # of cleavage systems per family for orthotropic
+
+ integer(pInt), parameter, private :: &
+ LATTICE_ortho_Ncleavage = 3_pInt !< total # of cleavage systems for bcc
+
+ real(pReal), dimension(3+3,LATTICE_ortho_Ncleavage), parameter, private :: &
+ LATTICE_ortho_systemCleavage = reshape(real([&
+ ! Cleavage direction Plane normal
+ 1, 0, 0, 0, 1, 0, &
+ 0, 1, 0, 0, 0, 1, &
+ 0, 0, 1, 1, 0, 0 &
+ ],pReal),[ 3_pInt + 3_pInt,LATTICE_ortho_Ncleavage])
+
real(pReal), dimension(:,:,:), allocatable, public, protected :: &
lattice_C66
real(pReal), dimension(:,:,:,:,:), allocatable, public, protected :: &
@@ -975,6 +1060,15 @@ subroutine lattice_init
if (LATTICE_hex_Ntrans /= sum(lattice_hex_NtransSystem)) &
call IO_error(0_pInt,ext_msg = 'LATTICE_hex_Ntrans')
+ if (LATTICE_fcc_Ncleavage /= sum(lattice_fcc_NcleavageSystem)) &
+ call IO_error(0_pInt,ext_msg = 'LATTICE_fcc_Ncleavage')
+ if (LATTICE_bcc_Ncleavage /= sum(lattice_bcc_NcleavageSystem)) &
+ call IO_error(0_pInt,ext_msg = 'LATTICE_bcc_Ncleavage')
+ if (LATTICE_hex_Ncleavage /= sum(lattice_hex_NcleavageSystem)) &
+ call IO_error(0_pInt,ext_msg = 'LATTICE_hex_Ncleavage')
+ if (LATTICE_iso_Ncleavage /= sum(lattice_iso_NcleavageSystem)) &
+ call IO_error(0_pInt,ext_msg = 'LATTICE_iso_Ncleavage')
+
if (LATTICE_maxNinteraction /= max(&
maxval(lattice_fcc_interactionSlipSlip), &
maxval(lattice_bcc_interactionSlipSlip), &
@@ -1026,6 +1120,8 @@ subroutine lattice_init
allocate(lattice_NnonSchmid(Nphases), source=0_pInt)
allocate(lattice_Sslip(3,3,1+2*lattice_maxNnonSchmid,lattice_maxNslip,Nphases),source=0.0_pReal)
allocate(lattice_Sslip_v(6,1+2*lattice_maxNnonSchmid,lattice_maxNslip,Nphases),source=0.0_pReal)
+ allocate(lattice_Scleavage(3,3,3,lattice_maxNslip,Nphases),source=0.0_pReal)
+ allocate(lattice_Scleavage_v(6,3,lattice_maxNslip,Nphases),source=0.0_pReal)
allocate(lattice_sd(3,lattice_maxNslip,Nphases),source=0.0_pReal)
allocate(lattice_st(3,lattice_maxNslip,Nphases),source=0.0_pReal)
allocate(lattice_sn(3,lattice_maxNslip,Nphases),source=0.0_pReal)
@@ -1050,6 +1146,7 @@ subroutine lattice_init
allocate(lattice_NslipSystem(lattice_maxNslipFamily,Nphases),source=0_pInt)
allocate(lattice_NtwinSystem(lattice_maxNtwinFamily,Nphases),source=0_pInt)
allocate(lattice_NtransSystem(lattice_maxNtransFamily,Nphases),source=0_pInt)
+ allocate(lattice_NcleavageSystem(lattice_maxNcleavageFamily,Nphases),source=0_pInt)
allocate(lattice_interactionSlipSlip(lattice_maxNslip,lattice_maxNslip,Nphases),source=0_pInt) ! other:me
allocate(lattice_interactionSlipTwin(lattice_maxNslip,lattice_maxNtwin,Nphases),source=0_pInt) ! other:me
@@ -1222,9 +1319,11 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
atr, ab
real(pReal), dimension(3,3,lattice_maxNtrans) :: &
ub
+ real(pReal), dimension(3,lattice_maxNcleavage) :: &
+ cd, cn, ct
integer(pInt) :: &
i,j, &
- myNslip, myNtwin, myNtrans
+ myNslip, myNtwin, myNtrans, myNcleavage
lattice_C66(1:6,1:6,myPhase) = lattice_symmetrizeC66(lattice_structure(myPhase),&
lattice_C66(1:6,1:6,myPhase))
@@ -1258,6 +1357,7 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
myNslip = lattice_fcc_Nslip
myNtwin = lattice_fcc_Ntwin
myNtrans = lattice_fcc_Ntrans
+ myNcleavage = lattice_fcc_Ncleavage
do i = 1_pInt,myNslip ! assign slip system vectors
sd(1:3,i) = lattice_fcc_systemSlip(1:3,i)
sn(1:3,i) = lattice_fcc_systemSlip(4:6,i)
@@ -1284,16 +1384,22 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
sqrt(2.0_pReal)*(aM/aA)*math_tensorproduct(zb(1:3,i), zb(1:3,i))
endif
enddo
+ do i = 1_pInt, myNcleavage ! assign cleavage system vectors
+ cd(1:3,i) = lattice_fcc_systemCleavage(1:3,i)/math_norm3(lattice_fcc_systemCleavage(1:3,i))
+ cn(1:3,i) = lattice_fcc_systemCleavage(4:6,i)/math_norm3(lattice_fcc_systemCleavage(4:6,i))
+ ct(1:3,i) = math_vectorproduct(cd(1:3,i),cn(1:3,i))
+ enddo
- lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_fcc_NslipSystem
- lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_fcc_NtwinSystem
- lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_fcc_NtransSystem
- lattice_NnonSchmid(myPhase) = lattice_fcc_NnonSchmid
- lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_fcc_interactionSlipSlip
- lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_fcc_interactionSlipTwin
- lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_fcc_interactionTwinSlip
- lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_fcc_interactionTwinTwin
- lattice_projectionTrans(1:myNtrans,1:myNtrans,myPhase) = LATTICE_fcc_projectionTrans*LATTICE_fcc_projectionTransFactor
+ lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_fcc_NslipSystem
+ lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_fcc_NtwinSystem
+ lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_fcc_NtransSystem
+ lattice_NcleavageSystem(1:lattice_maxNcleavageFamily,myPhase) = lattice_fcc_NcleavageSystem
+ lattice_NnonSchmid(myPhase) = lattice_fcc_NnonSchmid
+ lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_fcc_interactionSlipSlip
+ lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_fcc_interactionSlipTwin
+ lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_fcc_interactionTwinSlip
+ lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_fcc_interactionTwinTwin
+ lattice_projectionTrans(1:myNtrans,1:myNtrans,myPhase) = LATTICE_fcc_projectionTrans*LATTICE_fcc_projectionTransFactor
!--------------------------------------------------------------------------------------------------
! bcc
@@ -1301,6 +1407,7 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
myNslip = lattice_bcc_Nslip
myNtwin = lattice_bcc_Ntwin
myNtrans = lattice_bcc_Ntrans
+ myNcleavage = lattice_bcc_Ncleavage
do i = 1_pInt,myNslip ! assign slip system vectors
sd(1:3,i) = lattice_bcc_systemSlip(1:3,i)
sn(1:3,i) = lattice_bcc_systemSlip(4:6,i)
@@ -1328,14 +1435,20 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
tn(1:3,i) = lattice_bcc_systemTwin(4:6,i)
ts(i) = lattice_bcc_shearTwin(i)
enddo
- lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_bcc_NslipSystem
- lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_bcc_NtwinSystem
- lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_bcc_NtransSystem
- lattice_NnonSchmid(myPhase) = lattice_bcc_NnonSchmid
- lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_bcc_interactionSlipSlip
- lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_bcc_interactionSlipTwin
- lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_bcc_interactionTwinSlip
- lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_bcc_interactionTwinTwin
+ do i = 1_pInt, myNcleavage ! assign cleavage system vectors
+ cd(1:3,i) = lattice_bcc_systemCleavage(1:3,i)/math_norm3(lattice_bcc_systemCleavage(1:3,i))
+ cn(1:3,i) = lattice_bcc_systemCleavage(4:6,i)/math_norm3(lattice_bcc_systemCleavage(4:6,i))
+ ct(1:3,i) = math_vectorproduct(cd(1:3,i),cn(1:3,i))
+ enddo
+ lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_bcc_NslipSystem
+ lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_bcc_NtwinSystem
+ lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_bcc_NtransSystem
+ lattice_NcleavageSystem(1:lattice_maxNcleavageFamily,myPhase) = lattice_bcc_NcleavageSystem
+ lattice_NnonSchmid(myPhase) = lattice_bcc_NnonSchmid
+ lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_bcc_interactionSlipSlip
+ lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_bcc_interactionSlipTwin
+ lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_bcc_interactionTwinSlip
+ lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_bcc_interactionTwinTwin
!--------------------------------------------------------------------------------------------------
! hex (including conversion from miller-bravais (a1=a2=a3=c) to miller (a, b, c) indices)
@@ -1343,6 +1456,7 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
myNslip = lattice_hex_Nslip
myNtwin = lattice_hex_Ntwin
myNtrans = lattice_hex_Ntrans
+ myNcleavage = lattice_hex_Ncleavage
do i = 1_pInt,myNslip ! assign slip system vectors
sd(1,i) = lattice_hex_systemSlip(1,i)*1.5_pReal ! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(c/a)]
sd(2,i) = (lattice_hex_systemSlip(1,i)+2.0_pReal*lattice_hex_systemSlip(2,i))*&
@@ -1371,21 +1485,55 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
ts(i) = 2.0_pReal*(CoverA*CoverA-2.0_pReal)/3.0_pReal/CoverA
end select
enddo
- lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_hex_NslipSystem
- lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_hex_NtwinSystem
- lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_hex_NtransSystem
- lattice_NnonSchmid(myPhase) = lattice_hex_NnonSchmid
- lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_hex_interactionSlipSlip
- lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_hex_interactionSlipTwin
- lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_hex_interactionTwinSlip
- lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_hex_interactionTwinTwin
+ do i = 1_pInt, myNcleavage ! cleavage system vectors
+ cd(1,i) = lattice_hex_systemCleavage(1,i)*1.5_pReal ! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(c/a)]
+ cd(2,i) = (lattice_hex_systemCleavage(1,i)+2.0_pReal*lattice_hex_systemCleavage(2,i))*&
+ 0.5_pReal*sqrt(3.0_pReal)
+ cd(3,i) = lattice_hex_systemCleavage(4,i)*CoverA
+ cd(1:3,1) = cd(1:3,i)/math_norm3(cd(1:3,i))
+ cn(1,i) = lattice_hex_systemCleavage(5,i) ! plane (hkil)->(h (h+2k)/sqrt(3) l/(c/a))
+ cn(2,i) = (lattice_hex_systemCleavage(5,i)+2.0_pReal*lattice_hex_systemCleavage(6,i))/sqrt(3.0_pReal)
+ cn(3,i) = lattice_hex_systemCleavage(8,i)/CoverA
+ cn(1:3,1) = cn(1:3,i)/math_norm3(cn(1:3,i))
+ ct(1:3,i) = math_vectorproduct(cd(1:3,i),cn(1:3,i))
+ enddo
+ lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_hex_NslipSystem
+ lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_hex_NtwinSystem
+ lattice_NtransSystem(1:lattice_maxNtransFamily,myPhase) = lattice_hex_NtransSystem
+ lattice_NcleavageSystem(1:lattice_maxNcleavageFamily,myPhase) = lattice_hex_NcleavageSystem
+ lattice_NnonSchmid(myPhase) = lattice_hex_NnonSchmid
+ lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = lattice_hex_interactionSlipSlip
+ lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = lattice_hex_interactionSlipTwin
+ lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = lattice_hex_interactionTwinSlip
+ lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = lattice_hex_interactionTwinTwin
!--------------------------------------------------------------------------------------------------
-! orthorombic and isotropic (no crystal plasticity)
- case (LATTICE_ort_ID, LATTICE_iso_ID)
+! orthorombic (no crystal plasticity)
+ case (LATTICE_ort_ID)
myNslip = 0_pInt
myNtwin = 0_pInt
myNtrans = 0_pInt
+ myNcleavage = lattice_ortho_Ncleavage
+ do i = 1_pInt, myNcleavage ! assign cleavage system vectors
+ cd(1:3,i) = lattice_iso_systemCleavage(1:3,i)/math_norm3(lattice_iso_systemCleavage(1:3,i))
+ cn(1:3,i) = lattice_iso_systemCleavage(4:6,i)/math_norm3(lattice_iso_systemCleavage(4:6,i))
+ ct(1:3,i) = math_vectorproduct(cd(1:3,i),cn(1:3,i))
+ enddo
+ lattice_NcleavageSystem(1:lattice_maxNcleavageFamily,myPhase) = lattice_iso_NcleavageSystem
+
+!--------------------------------------------------------------------------------------------------
+! isotropic (no crystal plasticity)
+ case (LATTICE_iso_ID)
+ myNslip = 0_pInt
+ myNtwin = 0_pInt
+ myNtrans = 0_pInt
+ myNcleavage = lattice_iso_Ncleavage
+ do i = 1_pInt, myNcleavage ! assign cleavage system vectors
+ cd(1:3,i) = lattice_iso_systemCleavage(1:3,i)/math_norm3(lattice_iso_systemCleavage(1:3,i))
+ cn(1:3,i) = lattice_iso_systemCleavage(4:6,i)/math_norm3(lattice_iso_systemCleavage(4:6,i))
+ ct(1:3,i) = math_vectorproduct(cd(1:3,i),cn(1:3,i))
+ enddo
+ lattice_NcleavageSystem(1:lattice_maxNcleavageFamily,myPhase) = lattice_iso_NcleavageSystem
!--------------------------------------------------------------------------------------------------
! something went wrong
@@ -1435,6 +1583,15 @@ subroutine lattice_initializeStructure(myPhase,CoverA,aA,aM,cM)
lattice_Utrans(1:3,1:3,i,myPhase)) - math_identity2nd(3)
lattice_NItrans_v(1:6,i,myPhase) = math_Mandel33to6(math_symmetric33(lattice_NItrans(1:3,1:3,i,myPhase)))
enddo
+ do i = 1_pInt,myNcleavage ! store slip system vectors and Schmid matrix for my structure
+ lattice_Scleavage(1:3,1:3,1,i,myPhase) = math_tensorproduct(cd(1:3,i),cn(1:3,i))
+ lattice_Scleavage(1:3,1:3,2,i,myPhase) = math_tensorproduct(ct(1:3,i),cn(1:3,i))
+ lattice_Scleavage(1:3,1:3,3,i,myPhase) = math_tensorproduct(cn(1:3,i),cn(1:3,i))
+ do j = 1_pInt,3_pInt
+ lattice_Scleavage_v(1:6,j,i,myPhase) = &
+ math_Mandel33to6(math_symmetric33(lattice_Scleavage(1:3,1:3,j,i,myPhase)))
+ enddo
+ enddo
end subroutine lattice_initializeStructure