diff --git a/code/lattice.f90 b/code/lattice.f90 index 06b7bb7a3..36280b8d0 100644 --- a/code/lattice.f90 +++ b/code/lattice.f90 @@ -39,11 +39,11 @@ implicit none integer(pInt) lattice_Nhexagonal, & ! # of hexagonal lattice structure (from tag CoverA_ratio) lattice_Nstructure ! # of lattice structures (1: fcc,2: bcc,3+: hexagonal) -integer(pInt), parameter :: lattice_maxNslipFamily = 4 ! max # of slip system families over lattice structures +integer(pInt), parameter :: lattice_maxNslipFamily = 5 ! max # of slip system families over lattice structures integer(pInt), parameter :: lattice_maxNtwinFamily = 4 ! max # of twin system families over lattice structures -integer(pInt), parameter :: lattice_maxNslip = 48 ! max # of slip systems over lattice structures +integer(pInt), parameter :: lattice_maxNslip = 54 ! max # of slip systems over lattice structures integer(pInt), parameter :: lattice_maxNtwin = 24 ! max # of twin systems over lattice structures -integer(pInt), parameter :: lattice_maxNinteraction = 20 ! max # of interaction types (in hardening matrix part) +integer(pInt), parameter :: lattice_maxNinteraction = 20 ! max # of interaction types (in hardening matrix part) ToDo integer(pInt), pointer, dimension(:,:) :: interactionSlipSlip, & interactionSlipTwin, & @@ -81,7 +81,7 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & !============================== fcc (1) ================================= - integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_fcc_NslipSystem = (/12, 0, 0, 0/) + integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_fcc_NslipSystem = (/12, 0, 0, 0, 0/) integer(pInt), parameter, dimension(lattice_maxNtwinFamily) :: lattice_fcc_NtwinSystem = (/12, 0, 0, 0/) integer(pInt), parameter :: lattice_fcc_Nslip = 12 ! sum(lattice_fcc_NslipSystem) integer(pInt), parameter :: lattice_fcc_Ntwin = 12 ! sum(lattice_fcc_NtwinSystem) @@ -198,7 +198,7 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & !============================== bcc (2) ================================= - integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_bcc_NslipSystem = (/12,12,24, 0/) + integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_bcc_NslipSystem = (/12,12,24, 0, 0/) integer(pInt), parameter, dimension(lattice_maxNtwinFamily) :: lattice_bcc_NtwinSystem = (/12, 0, 0, 0/) integer(pInt), parameter :: lattice_bcc_Nslip = 48 ! sum(lattice_bcc_NslipSystem) integer(pInt), parameter :: lattice_bcc_Ntwin = 12 ! sum(lattice_bcc_NtwinSystem) @@ -442,9 +442,9 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & !============================== hex (3+) ================================= - integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_hex_NslipSystem = (/ 3, 3, 6,12/) + integer(pInt), parameter, dimension(lattice_maxNslipFamily) :: lattice_hex_NslipSystem = (/ 3, 3, 6,12, 6/) integer(pInt), parameter, dimension(lattice_maxNtwinFamily) :: lattice_hex_NtwinSystem = (/ 6, 6, 6, 6/) - integer(pInt), parameter :: lattice_hex_Nslip = 24 ! sum(lattice_hex_NslipSystem) + integer(pInt), parameter :: lattice_hex_Nslip = 30 ! sum(lattice_hex_NslipSystem) integer(pInt), parameter :: lattice_hex_Ntwin = 24 ! sum(lattice_hex_NtwinSystem) integer(pInt) :: lattice_hex_Nstructure = 0_pInt @@ -478,7 +478,14 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & 2, -1, -1, 3, 1, -1, 0, 1, & 1, -2, 1, 3, 1, -1, 0, 1, & 1, 1, -2, 3, 1, 0, -1, 1, & - 2, -1, -1, 3, 1, 0, -1, 1 & + 2, -1, -1, 3, 1, 0, -1, 1, & +! pyramidal system: c+a slip <11-2-3>{11-22} -- as for hexagonal Ice (Castelnau et al 1996, similar to twin system found below) + 2, -1, -1, -3, 2, -1, -1, 2, & ! <11.-3>{11.2} shear = 2((c/a)^2-2)/(3 c/a) + 1, 1, -2, -3, 1, 1, -2, 2, & ! not sorted, just copied from twin system + -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 & /),(/4+4,lattice_hex_Nslip/)) real(pReal), dimension(4+4,lattice_hex_Ntwin), parameter :: lattice_hex_systemTwin = & @@ -538,40 +545,47 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & /),(/lattice_hex_Ntwin/)) !* four different interaction type matrix - !* 1. slip-slip interaction - 20 types - !* 2. slip-twin interaction - 16 types + !* 1. slip-slip interaction - 30 types + !* 2. slip-twin interaction - 20 types !* 3. twin-twin interaction - 20 types !* 4. twin-slip interaction - 16 types integer(pInt), target, dimension(lattice_hex_Nslip,lattice_hex_Nslip) :: lattice_hex_interactionSlipSlip = & reshape((/& - 1, 5, 5, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14,14,14,14,14,14,14, & - 5, 1, 5, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14,14,14,14,14,14,14, & - 5, 5, 1, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14,14,14,14,14,14,14, & + 1, 5, 5, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & + 5, 1, 5, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & + 5, 5, 1, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & ! - 15,15,15, 2, 6, 6, 10,10,10,10,10,10, 13,13,13,13,13,13,13,13,13,13,13,13, & - 15,15,15, 6, 2, 6, 10,10,10,10,10,10, 13,13,13,13,13,13,13,13,13,13,13,13, & - 15,15,15, 6, 6, 2, 10,10,10,10,10,10, 13,13,13,13,13,13,13,13,13,13,13,13, & + 21,21,21, 2, 6, 6, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 19,19,19,19,19,19, & + 21,21,21, 6, 2, 6, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 19,19,19,19,19,19, & + 21,21,21, 6, 6, 2, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 19,19,19,19,19,19, & ! - 18,18,18, 16,16,16, 3, 7, 7, 7, 7, 7, 11,11,11,11,11,11,11,11,11,11,11,11, & - 18,18,18, 16,16,16, 7, 3, 7, 7, 7, 7, 11,11,11,11,11,11,11,11,11,11,11,11, & - 18,18,18, 16,16,16, 7, 7, 3, 7, 7, 7, 11,11,11,11,11,11,11,11,11,11,11,11, & - 18,18,18, 16,16,16, 7, 7, 7, 3, 7, 7, 11,11,11,11,11,11,11,11,11,11,11,11, & - 18,18,18, 16,16,16, 7, 7, 7, 7, 3, 7, 11,11,11,11,11,11,11,11,11,11,11,11, & - 18,18,18, 16,16,16, 7, 7, 7, 7, 7, 3, 11,11,11,11,11,11,11,11,11,11,11,11, & + 25,25,25, 22,22,22, 3, 7, 7, 7, 7, 7, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & + 25,25,25, 22,22,22, 7, 3, 7, 7, 7, 7, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & + 25,25,25, 22,22,22, 7, 7, 3, 7, 7, 7, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & + 25,25,25, 22,22,22, 7, 7, 7, 3, 7, 7, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & + 25,25,25, 22,22,22, 7, 7, 7, 7, 3, 7, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & + 25,25,25, 22,22,22, 7, 7, 7, 7, 7, 3, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! - 20,20,20, 19,19,19, 17,17,17,17,17,17, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, & - 20,20,20, 19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4 & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 9, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 9, 14,14,14,14,14,14, & + 28,28,28, 26,26,26, 23,23,23,23,23,23, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 14,14,14,14,14,14, & +! + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 5,10,10,10,10,10, & + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10, 5,10,10,10,10, & + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10, 5,10,10,10, & + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10, 5,10,10, & + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10,10, 5,10, & + 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10,10,10, 5 & /),(/lattice_hex_Nslip,lattice_hex_Nslip/)) !* isotropic interaction at the moment @@ -603,39 +617,46 @@ integer(pInt), allocatable, dimension(:,:,:) :: lattice_interactionSlipSlip, & 13,13,13,13,13,13, 14,14,14,14,14,14, 15,15,15,15,15,15, 16,16,16,16,16,16, & 13,13,13,13,13,13, 14,14,14,14,14,14, 15,15,15,15,15,15, 16,16,16,16,16,16, & 13,13,13,13,13,13, 14,14,14,14,14,14, 15,15,15,15,15,15, 16,16,16,16,16,16, & - 13,13,13,13,13,13, 14,14,14,14,14,14, 15,15,15,15,15,15, 16,16,16,16,16,16 & + 13,13,13,13,13,13, 14,14,14,14,14,14, 15,15,15,15,15,15, 16,16,16,16,16,16, & +! + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & + 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20 & /),(/lattice_hex_Ntwin,lattice_hex_Nslip/)) !* isotropic interaction at the moment integer(pInt), target, dimension(lattice_hex_Nslip,lattice_hex_Ntwin) :: lattice_hex_interactionTwinSlip = & reshape((/& - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & ! --> slip - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & ! | - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & ! | - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & ! v - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & ! twin - 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, & + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! --> slip + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! | + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! | + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! v + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! twin + 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & - 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & + 2, 2, 2, 6, 6, 6, 10,10,10,10,10,10, 14,14,14,14,14,14,14,14,14,14,14,14, 18,18,18,18,18,18, & ! - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & - 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & + 3, 3, 3, 7, 7, 7, 11,11,11,11,11,11, 15,15,15,15,15,15,15,15,15,15,15,15, 19,19,19,19,19,19, & ! - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, & - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, & - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, & - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, & - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, & - 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16 & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & + 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20 & /),(/lattice_hex_Nslip,lattice_hex_Ntwin/))