2011-04-07 12:50:28 +05:30
! Copyright 2011 Max-Planck-Institut für Eisenforschung GmbH
2011-04-04 19:39:54 +05:30
!
! This file is part of DAMASK,
2011-04-07 12:50:28 +05:30
! the Düsseldorf Advanced MAterial Simulation Kit.
2011-04-04 19:39:54 +05:30
!
! DAMASK is free software: you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation, either version 3 of the License, or
! (at your option) any later version.
!
! DAMASK is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
!
2013-02-27 00:31:31 +05:30
!--------------------------------------------------------------------------------------------------
! $Id$
!--------------------------------------------------------------------------------------------------
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
!> @author Pratheek Shanthraj, Max-Planck-Institut für Eisenforschung GmbH
!> @brief defines lattice structure definitions, slip and twin system definitions, Schimd matrix
!> calculation and non-Schmid behavior
!--------------------------------------------------------------------------------------------------
2012-03-09 01:55:28 +05:30
module lattice
2013-02-27 00:31:31 +05:30
use prec , only : &
pReal , &
pInt
2009-01-20 00:40:58 +05:30
2012-03-09 01:55:28 +05:30
implicit none
2012-03-20 23:31:31 +05:30
private
integer ( pInt ) , parameter , public :: &
2012-08-15 19:08:38 +05:30
lattice_maxNslipFamily = 5_pInt , & !< max # of slip system families over lattice structures
lattice_maxNtwinFamily = 4_pInt , & !< max # of twin system families over lattice structures
lattice_maxNslip = 54_pInt , & !< max # of slip systems over lattice structures
lattice_maxNtwin = 24_pInt , & !< max # of twin systems over lattice structures
2013-01-22 04:41:16 +05:30
lattice_maxNinteraction = 30_pInt , & !< max # of interaction types (in hardening matrix part)
lattice_maxNonSchmid = 6_pInt !< max # of non schmid contributions over lattice structures
2012-03-20 23:31:31 +05:30
2012-10-02 18:23:25 +05:30
integer ( pInt ) , allocatable , dimension ( : , : ) , protected , public :: &
2013-03-05 20:05:26 +05:30
lattice_NslipSystem , & !< total # of slip systems in each family
lattice_NtwinSystem !< total # of twin systems in each family
2012-03-09 01:55:28 +05:30
2012-10-02 18:23:25 +05:30
integer ( pInt ) , allocatable , dimension ( : , : , : ) , protected , public :: &
2013-02-27 00:31:31 +05:30
lattice_interactionSlipSlip , & !< Slip--slip interaction type
lattice_interactionSlipTwin , & !< Slip--twin interaction type
lattice_interactionTwinSlip , & !< Twin--slip interaction type
lattice_interactionTwinTwin !< Twin--twin interaction type
2012-03-09 01:55:28 +05:30
2012-03-20 23:31:31 +05:30
2012-10-02 18:23:25 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : , : ) , protected , public :: &
2013-01-22 04:41:16 +05:30
lattice_Sslip_v , &
2012-08-15 19:08:38 +05:30
lattice_Sslip !< Schmid matrices, normal, shear direction and d x n of slip systems
2012-03-09 01:55:28 +05:30
2012-10-02 18:23:25 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : ) , protected , public :: &
2012-03-09 01:55:28 +05:30
lattice_sn , &
lattice_sd , &
lattice_st
2009-03-20 20:04:24 +05:30
2009-07-22 21:37:19 +05:30
! rotation and Schmid matrices, normal, shear direction and d x n of twin systems
2012-10-02 18:23:25 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : , : ) , protected , public :: &
2012-03-20 23:31:31 +05:30
lattice_Stwin , &
lattice_Qtwin
2009-07-22 21:37:19 +05:30
2012-10-02 18:23:25 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : ) , protected , public :: &
2012-03-09 01:55:28 +05:30
lattice_Stwin_v , &
lattice_tn , &
lattice_td , &
lattice_tt
2009-03-20 20:04:24 +05:30
2012-10-02 18:23:25 +05:30
real ( pReal ) , allocatable , dimension ( : , : ) , protected , public :: &
2012-08-15 19:08:38 +05:30
lattice_shearTwin !< characteristic twin shear
2009-03-20 20:04:24 +05:30
2012-03-20 23:31:31 +05:30
integer ( pInt ) , private :: &
2013-03-05 20:05:26 +05:30
lattice_Nhexagonal , & !< total # of hexagonal lattice structure (from tag CoverA_ratio)
lattice_Nstructure !< total # of lattice structures (1: fcc,2: bcc,3+: hexagonal)
2009-03-20 20:04:24 +05:30
2012-03-20 23:31:31 +05:30
integer ( pInt ) , dimension ( : , : ) , pointer , private :: &
interactionSlipSlip , &
interactionSlipTwin , &
interactionTwinSlip , &
interactionTwinTwin
2013-01-22 04:41:16 +05:30
integer ( pInt ) , allocatable , dimension ( : ) , protected , public :: &
2013-03-05 20:05:26 +05:30
NnonSchmid !< total # of non-Schmid contributions for each structure
2009-03-20 20:04:24 +05:30
2012-08-15 19:08:38 +05:30
!--------------------------------------------------------------------------------------------------
! fcc (1)
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNslipFamily ) , parameter , public :: &
2013-03-05 20:05:26 +05:30
lattice_fcc_NslipSystem = int ( [ 12 , 0 , 0 , 0 , 0 ] , pInt ) !< total # of slip systems per family for fcc
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNtwinFamily ) , parameter , public :: &
2013-03-05 20:05:26 +05:30
lattice_fcc_NtwinSystem = int ( [ 12 , 0 , 0 , 0 ] , pInt ) !< total # of twin systems per family for fcc
2012-03-20 23:31:31 +05:30
integer ( pInt ) , parameter , private :: &
2013-02-27 13:05:53 +05:30
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
2012-03-20 23:31:31 +05:30
integer ( pInt ) , private :: &
lattice_fcc_Nstructure = 0_pInt
real ( pReal ) , dimension ( 3 + 3 , lattice_fcc_Nslip ) , parameter , private :: &
lattice_fcc_systemSlip = reshape ( real ( [ &
0 , 1 , - 1 , 1 , 1 , 1 , &
- 1 , 0 , 1 , 1 , 1 , 1 , &
1 , - 1 , 0 , 1 , 1 , 1 , &
0 , - 1 , - 1 , - 1 , - 1 , 1 , &
1 , 0 , 1 , - 1 , - 1 , 1 , &
- 1 , 1 , 0 , - 1 , - 1 , 1 , &
0 , - 1 , 1 , 1 , - 1 , - 1 , &
- 1 , 0 , - 1 , 1 , - 1 , - 1 , &
1 , 1 , 0 , 1 , - 1 , - 1 , &
0 , 1 , 1 , - 1 , 1 , - 1 , &
1 , 0 , - 1 , - 1 , 1 , - 1 , &
- 1 , - 1 , 0 , - 1 , 1 , - 1 &
2013-02-27 00:31:31 +05:30
] , pReal ) , [ 3_pInt + 3_pInt , lattice_fcc_Nslip ] ) !< Slip system <110>{111} directions. Sorted according to Eisenlohr & Hantcherli
2012-03-20 23:31:31 +05:30
real ( pReal ) , dimension ( 3 + 3 , lattice_fcc_Ntwin ) , parameter , private :: &
lattice_fcc_systemTwin = reshape ( real ( [ &
- 2 , 1 , 1 , 1 , 1 , 1 , &
1 , - 2 , 1 , 1 , 1 , 1 , &
1 , 1 , - 2 , 1 , 1 , 1 , &
2 , - 1 , 1 , - 1 , - 1 , 1 , &
- 1 , 2 , 1 , - 1 , - 1 , 1 , &
- 1 , - 1 , - 2 , - 1 , - 1 , 1 , &
- 2 , - 1 , - 1 , 1 , - 1 , - 1 , &
1 , 2 , - 1 , 1 , - 1 , - 1 , &
1 , - 1 , 2 , 1 , - 1 , - 1 , &
2 , 1 , - 1 , - 1 , 1 , - 1 , &
- 1 , - 2 , - 1 , - 1 , 1 , - 1 , &
- 1 , 1 , 2 , - 1 , 1 , - 1 &
2013-02-27 00:31:31 +05:30
] , pReal ) , [ 3_pInt + 3_pInt , lattice_fcc_Ntwin ] ) !< Twin system <112>{111} directions. Sorted according to Eisenlohr & Hantcherli
2012-03-20 23:31:31 +05:30
real ( pReal ) , dimension ( lattice_fcc_Ntwin ) , parameter , private :: &
lattice_fcc_shearTwin = reshape ( [ &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal &
2013-02-27 00:31:31 +05:30
] , [ lattice_fcc_Ntwin ] ) !< Twin system <112>{111} ??? Sorted according to Eisenlohr & Hantcherli
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_fcc_Nslip , lattice_fcc_Nslip ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_fcc_interactionSlipSlip = reshape ( int ( [ &
2012-11-14 15:57:23 +05:30
1 , 2 , 2 , 4 , 6 , 5 , 3 , 5 , 5 , 4 , 5 , 6 , & ! ---> slip
2 , 1 , 2 , 6 , 4 , 5 , 5 , 4 , 6 , 5 , 3 , 5 , & ! |
2 , 2 , 1 , 5 , 5 , 3 , 5 , 6 , 4 , 6 , 5 , 4 , & ! |
4 , 6 , 5 , 1 , 2 , 2 , 4 , 5 , 6 , 3 , 5 , 5 , & ! v slip
2012-03-20 23:31:31 +05:30
6 , 4 , 5 , 2 , 1 , 2 , 5 , 3 , 5 , 5 , 4 , 6 , &
5 , 5 , 3 , 2 , 2 , 1 , 6 , 5 , 4 , 5 , 6 , 4 , &
3 , 5 , 5 , 4 , 5 , 6 , 1 , 2 , 2 , 4 , 6 , 5 , &
5 , 4 , 6 , 5 , 3 , 5 , 2 , 1 , 2 , 6 , 4 , 5 , &
5 , 6 , 4 , 6 , 5 , 4 , 2 , 2 , 1 , 5 , 5 , 3 , &
4 , 5 , 6 , 3 , 5 , 5 , 4 , 6 , 5 , 1 , 2 , 2 , &
5 , 3 , 5 , 5 , 4 , 6 , 6 , 4 , 5 , 2 , 1 , 2 , &
6 , 5 , 4 , 5 , 6 , 4 , 5 , 5 , 3 , 2 , 2 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_fcc_Nslip , lattice_fcc_Nslip ] , order = [ 2 , 1 ] ) !< Slip--slip interaction types for fcc
!< 1: self interaction
!< 2: coplanar interaction
!< 3: collinear interaction
!< 4: Hirth locks
!< 5: glissile junctions
!< 6: Lomer locks
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_fcc_Nslip , lattice_fcc_Ntwin ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_fcc_interactionSlipTwin = reshape ( int ( [ &
2012-11-14 16:43:16 +05:30
1 , 1 , 1 , 3 , 3 , 3 , 2 , 2 , 2 , 3 , 3 , 3 , & ! ---> twin
1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , & ! |
1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , & ! |
3 , 3 , 3 , 1 , 1 , 1 , 3 , 3 , 3 , 2 , 2 , 2 , & ! v slip
3 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 3 , 3 , &
2 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , 3 , 3 , 3 , &
2 , 2 , 2 , 3 , 3 , 3 , 1 , 1 , 1 , 3 , 3 , 3 , &
3 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 , 3 , 3 , 3 , &
3 , 3 , 3 , 3 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , &
3 , 3 , 3 , 2 , 2 , 2 , 3 , 3 , 3 , 1 , 1 , 1 , &
2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 1 , 1 , 1 , &
3 , 3 , 3 , 3 , 3 , 3 , 2 , 2 , 2 , 1 , 1 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_fcc_Nslip , lattice_fcc_Ntwin ] , order = [ 2 , 1 ] ) !< Slip--twin interaction types for fcc
!< 1: coplanar interaction
!< 2: screw trace between slip system and twin habit plane (easy cross slip)
!< 3: other interaction
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_fcc_Ntwin , lattice_fcc_Nslip ) , target , public :: &
2013-02-27 00:31:31 +05:30
lattice_fcc_interactionTwinSlip = 0_pInt !< Twin--Slip interaction types for fcc
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_fcc_Ntwin , lattice_fcc_Ntwin ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_fcc_interactionTwinTwin = reshape ( int ( [ &
2012-11-14 15:57:23 +05:30
1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , & ! ---> twin
1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , & ! |
1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , & ! |
2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , & ! v twin
2012-03-20 23:31:31 +05:30
2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 1 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_fcc_Ntwin , lattice_fcc_Ntwin ] , order = [ 2 , 1 ] ) !< Twin--twin interaction types for fcc
2013-01-22 04:41:16 +05:30
2013-03-05 20:05:26 +05:30
integer ( pInt ) , parameter , private :: NnonSchmid_fcc = 0_pInt !< total # of non-Schmid contributions for fcc
2013-01-22 04:41:16 +05:30
real ( pReal ) , dimension ( 3 , 3 , 2 , NnonSchmid_fcc , lattice_fcc_Nslip ) , parameter , private :: &
2013-02-27 00:31:31 +05:30
lattice_nonSchmid_fcc = 0.0_pReal ! reshape([],[3,3,2,NnonSchmid_fcc,lattice_fcc_Nslip]) !< Tensor for each non-Schmid contribution for fcc
2012-08-15 19:08:38 +05:30
!--------------------------------------------------------------------------------------------------
! bcc (2)
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNslipFamily ) , parameter , public :: &
2013-03-05 20:05:26 +05:30
lattice_bcc_NslipSystem = int ( [ 12 , 12 , 0 , 0 , 0 ] , pInt ) !< total # of slip systems per family for bcc
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNtwinFamily ) , parameter , public :: &
2013-03-05 20:05:26 +05:30
lattice_bcc_NtwinSystem = int ( [ 12 , 0 , 0 , 0 ] , pInt ) !< total # of twin systems per family for bcc
2012-03-20 23:31:31 +05:30
2013-02-27 00:31:31 +05:30
integer ( pInt ) , parameter , private :: &
2013-02-27 13:05:53 +05:30
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
2012-03-20 23:31:31 +05:30
integer ( pInt ) , private :: &
lattice_bcc_Nstructure = 0_pInt
real ( pReal ) , dimension ( 3 + 3 , lattice_bcc_Nslip ) , parameter , private :: &
lattice_bcc_systemSlip = reshape ( real ( [ &
2012-11-14 19:13:59 +05:30
! Slip system <111>{110}
2012-03-20 23:31:31 +05:30
1 , - 1 , 1 , 0 , 1 , 1 , &
- 1 , - 1 , 1 , 0 , 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 , 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 , &
1 , 1 , 1 , - 1 , 1 , 0 , &
1 , 1 , - 1 , - 1 , 1 , 0 , &
2012-11-14 19:13:59 +05:30
! Slip system <111>{112}
2012-03-20 23:31:31 +05:30
- 1 , 1 , 1 , 2 , 1 , 1 , &
1 , 1 , 1 , - 2 , 1 , 1 , &
1 , 1 , - 1 , 2 , - 1 , 1 , &
1 , - 1 , 1 , 2 , 1 , - 1 , &
1 , - 1 , 1 , 1 , 2 , 1 , &
1 , 1 , - 1 , - 1 , 2 , 1 , &
1 , 1 , 1 , 1 , - 2 , 1 , &
- 1 , 1 , 1 , 1 , 2 , - 1 , &
1 , 1 , - 1 , 1 , 1 , 2 , &
1 , - 1 , 1 , - 1 , 1 , 2 , &
- 1 , 1 , 1 , 1 , - 1 , 2 , &
2012-11-16 19:09:08 +05:30
1 , 1 , 1 , 1 , 1 , - 2 &
! Slip system <111>{123}
! 1, 1,-1, 1, 2, 3, &
! 1,-1, 1, -1, 2, 3, &
! -1, 1, 1, 1,-2, 3, &
! 1, 1, 1, 1, 2,-3, &
! 1,-1, 1, 1, 3, 2, &
! 1, 1,-1, -1, 3, 2, &
! 1, 1, 1, 1,-3, 2, &
! -1, 1, 1, 1, 3,-2, &
! 1, 1,-1, 2, 1, 3, &
! 1,-1, 1, -2, 1, 3, &
! -1, 1, 1, 2,-1, 3, &
! 1, 1, 1, 2, 1,-3, &
! 1,-1, 1, 2, 3, 1, &
! 1, 1,-1, -2, 3, 1, &
! 1, 1, 1, 2,-3, 1, &
! -1, 1, 1, 2, 3,-1, &
! -1, 1, 1, 3, 1, 2, &
! 1, 1, 1, -3, 1, 2, &
! 1, 1,-1, 3,-1, 2, &
! 1,-1, 1, 3, 1,-2, &
! -1, 1, 1, 3, 2, 1, &
! 1, 1, 1, -3, 2, 1, &
! 1, 1,-1, 3,-2, 1, &
! 1,-1, 1, 3, 2,-1 &
2012-03-20 23:31:31 +05:30
] , pReal ) , [ 3_pInt + 3_pInt , lattice_bcc_Nslip ] )
2009-03-20 20:04:24 +05:30
2012-03-20 23:31:31 +05:30
real ( pReal ) , dimension ( 3 + 3 , lattice_bcc_Ntwin ) , parameter , private :: &
lattice_bcc_systemTwin = reshape ( real ( [ &
2012-11-14 19:13:59 +05:30
! Twin system <111>{112}
- 1 , 1 , 1 , 2 , 1 , 1 , &
1 , 1 , 1 , - 2 , 1 , 1 , &
1 , 1 , - 1 , 2 , - 1 , 1 , &
1 , - 1 , 1 , 2 , 1 , - 1 , &
1 , - 1 , 1 , 1 , 2 , 1 , &
1 , 1 , - 1 , - 1 , 2 , 1 , &
1 , 1 , 1 , 1 , - 2 , 1 , &
- 1 , 1 , 1 , 1 , 2 , - 1 , &
1 , 1 , - 1 , 1 , 1 , 2 , &
1 , - 1 , 1 , - 1 , 1 , 2 , &
- 1 , 1 , 1 , 1 , - 1 , 2 , &
1 , 1 , 1 , 1 , 1 , - 2 &
2012-03-20 23:31:31 +05:30
] , pReal ) , [ 3_pInt + 3_pInt , lattice_bcc_Ntwin ] )
real ( pReal ) , dimension ( lattice_bcc_Ntwin ) , parameter , private :: &
lattice_bcc_shearTwin = reshape ( [ &
2012-11-14 16:43:16 +05:30
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal , &
0.7071067812_pReal &
2012-11-14 19:13:59 +05:30
] , [ lattice_bcc_Ntwin ] )
2009-01-20 00:40:58 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_bcc_Nslip , lattice_bcc_Nslip ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_bcc_interactionSlipSlip = reshape ( int ( [ &
2012-11-23 22:32:50 +05:30
1 , 3 , 6 , 6 , 5 , 4 , 4 , 2 , 4 , 2 , 5 , 4 , 6 , 6 , 4 , 2 , 2 , 4 , 6 , 6 , 4 , 2 , 6 , 6 , & ! ---> slip
3 , 1 , 6 , 6 , 4 , 2 , 5 , 4 , 5 , 4 , 4 , 2 , 6 , 6 , 2 , 4 , 4 , 2 , 6 , 6 , 2 , 4 , 6 , 6 , & ! |
6 , 6 , 1 , 3 , 4 , 5 , 2 , 4 , 4 , 5 , 2 , 4 , 4 , 2 , 6 , 6 , 6 , 6 , 2 , 4 , 6 , 6 , 4 , 2 , & ! |
6 , 6 , 3 , 1 , 2 , 4 , 4 , 5 , 2 , 4 , 4 , 5 , 2 , 4 , 6 , 6 , 6 , 6 , 4 , 2 , 6 , 6 , 2 , 4 , & ! v slip
5 , 4 , 4 , 2 , 1 , 3 , 6 , 6 , 2 , 4 , 5 , 4 , 2 , 6 , 4 , 6 , 6 , 4 , 6 , 2 , 4 , 6 , 2 , 6 , &
4 , 2 , 5 , 4 , 3 , 1 , 6 , 6 , 4 , 5 , 4 , 2 , 4 , 6 , 2 , 6 , 6 , 2 , 6 , 4 , 2 , 6 , 4 , 6 , &
4 , 5 , 2 , 4 , 6 , 6 , 1 , 3 , 5 , 4 , 2 , 4 , 6 , 2 , 6 , 4 , 4 , 6 , 2 , 6 , 6 , 4 , 6 , 2 , &
2 , 4 , 4 , 5 , 6 , 6 , 3 , 1 , 4 , 2 , 4 , 5 , 6 , 4 , 6 , 2 , 2 , 6 , 4 , 6 , 6 , 2 , 6 , 4 , &
4 , 5 , 4 , 2 , 2 , 4 , 5 , 4 , 1 , 3 , 6 , 6 , 2 , 6 , 6 , 4 , 4 , 6 , 6 , 2 , 6 , 4 , 2 , 6 , &
2 , 4 , 5 , 4 , 4 , 5 , 4 , 2 , 3 , 1 , 6 , 6 , 4 , 6 , 6 , 2 , 2 , 6 , 6 , 4 , 6 , 2 , 4 , 6 , &
5 , 4 , 2 , 4 , 5 , 4 , 2 , 4 , 6 , 6 , 1 , 3 , 6 , 2 , 4 , 6 , 6 , 4 , 2 , 6 , 4 , 6 , 6 , 2 , &
4 , 2 , 4 , 5 , 4 , 2 , 4 , 5 , 6 , 6 , 3 , 1 , 6 , 4 , 2 , 6 , 6 , 2 , 4 , 6 , 2 , 6 , 6 , 4 , &
!
6 , 6 , 4 , 2 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 1 , 5 , 6 , 6 , 5 , 6 , 6 , 2 , 5 , 6 , 2 , 6 , &
6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 5 , 1 , 6 , 6 , 6 , 5 , 2 , 6 , 6 , 5 , 6 , 2 , &
4 , 2 , 6 , 6 , 4 , 2 , 6 , 6 , 6 , 6 , 4 , 2 , 6 , 6 , 1 , 5 , 6 , 2 , 5 , 6 , 2 , 6 , 5 , 6 , &
2 , 4 , 6 , 6 , 6 , 6 , 4 , 2 , 4 , 2 , 6 , 6 , 6 , 6 , 5 , 1 , 2 , 6 , 6 , 5 , 6 , 2 , 6 , 5 , &
2 , 4 , 6 , 6 , 6 , 6 , 4 , 2 , 4 , 2 , 6 , 6 , 5 , 6 , 6 , 2 , 1 , 6 , 5 , 6 , 5 , 2 , 6 , 6 , &
4 , 2 , 6 , 6 , 4 , 2 , 6 , 6 , 6 , 6 , 4 , 2 , 6 , 5 , 2 , 6 , 6 , 1 , 6 , 5 , 2 , 5 , 6 , 6 , &
6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 2 , 5 , 6 , 5 , 6 , 1 , 6 , 6 , 6 , 5 , 2 , &
6 , 6 , 4 , 2 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 2 , 6 , 6 , 5 , 6 , 5 , 6 , 1 , 6 , 6 , 2 , 5 , &
4 , 2 , 6 , 6 , 4 , 2 , 6 , 6 , 6 , 6 , 4 , 2 , 5 , 6 , 2 , 6 , 5 , 2 , 6 , 6 , 1 , 6 , 6 , 5 , &
2 , 4 , 6 , 6 , 6 , 6 , 4 , 2 , 4 , 2 , 6 , 6 , 6 , 5 , 6 , 2 , 2 , 5 , 6 , 6 , 6 , 1 , 5 , 6 , &
6 , 6 , 4 , 2 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 2 , 6 , 5 , 6 , 6 , 6 , 5 , 2 , 6 , 5 , 1 , 6 , &
6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 6 , 2 , 4 , 6 , 2 , 6 , 5 , 6 , 6 , 2 , 5 , 5 , 6 , 6 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_bcc_Nslip , lattice_bcc_Nslip ] , order = [ 2 , 1 ] ) !< Slip--slip interaction types for bcc from Lee et al. Int J Plast 15 (1999) 625-645
!< 1: self interaction
!< 2: no interaction
!< 3: coplanar interaction
!< 4: glissile interaction
!< 5: weak sessile interaction
!< 6: strong sessile interaction
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_bcc_Nslip , lattice_bcc_Ntwin ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_bcc_interactionSlipTwin = reshape ( int ( [ &
2012-11-14 16:43:16 +05:30
3 , 3 , 3 , 2 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , & ! ---> twin
3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 3 , & ! |
3 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 2 , & ! |
2 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , & ! v slip
2 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , &
3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 3 , &
3 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 2 , &
3 , 3 , 3 , 2 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , &
2 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , &
3 , 3 , 3 , 2 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , &
3 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 2 , &
3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 3 , &
2012-11-23 22:32:50 +05:30
!
2012-11-14 16:43:16 +05:30
1 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , &
3 , 1 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 2 , &
3 , 3 , 1 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 3 , &
3 , 3 , 3 , 1 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , &
3 , 3 , 3 , 2 , 1 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , &
3 , 3 , 2 , 3 , 3 , 1 , 3 , 3 , 2 , 3 , 3 , 3 , &
3 , 2 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , 3 , 3 , 2 , &
2 , 3 , 3 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , 2 , 3 , &
3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 1 , 3 , 3 , 3 , &
3 , 3 , 3 , 2 , 2 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , &
2 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 1 , 3 , &
2012-11-16 19:09:08 +05:30
3 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_bcc_Nslip , lattice_bcc_Ntwin ] , order = [ 2 , 1 ] ) !< Slip--twin interaction types for bcc
!< 1: coplanar interaction
!< 2: screw trace between slip system and twin habit plane (easy cross slip)
!< 3: other interaction
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_bcc_Ntwin , lattice_bcc_Nslip ) , target , public :: &
2013-02-27 00:31:31 +05:30
lattice_bcc_interactionTwinSlip = 0_pInt !< Twin--slip interaction types for bcc @todo not implemented yet
2009-10-21 18:40:12 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_bcc_Ntwin , lattice_bcc_Ntwin ) , target , public :: &
2012-11-16 19:09:08 +05:30
lattice_bcc_interactionTwinTwin = reshape ( int ( [ &
1 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , & ! ---> twin
3 , 1 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 2 , & ! |
3 , 3 , 1 , 3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 3 , & ! |
3 , 3 , 3 , 1 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , & ! v twin
3 , 3 , 3 , 2 , 1 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , &
3 , 3 , 2 , 3 , 3 , 1 , 3 , 3 , 2 , 3 , 3 , 3 , &
3 , 2 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , 3 , 3 , 2 , &
2 , 3 , 3 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , 2 , 3 , &
3 , 3 , 2 , 3 , 3 , 2 , 3 , 3 , 1 , 3 , 3 , 3 , &
3 , 3 , 3 , 2 , 2 , 3 , 3 , 3 , 3 , 1 , 3 , 3 , &
2 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 1 , 3 , &
3 , 2 , 3 , 3 , 3 , 3 , 2 , 3 , 3 , 3 , 3 , 1 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_bcc_Ntwin , lattice_bcc_Ntwin ] , order = [ 2 , 1 ] ) !< Twin--twin interaction types for bcc
!< 1: self interaction
!< 2: collinear interaction
!< 3: other interaction
integer ( pInt ) , parameter , private :: NnonSchmid_bcc = 0_pInt !< # of non-Schmid contributions for bcc
2013-01-22 04:41:16 +05:30
real ( pReal ) , dimension ( 3 , 3 , 2 , NnonSchmid_bcc , lattice_bcc_Nslip ) , parameter , private :: &
2013-02-27 00:31:31 +05:30
lattice_nonSchmid_bcc = 0.0_pReal ! reshape([],[3,3,2,NnonSchmid_bcc,lattice_bcc_Nslip]) !< Tensor for each non-Schmid contribution for bcc
2012-11-23 22:32:50 +05:30
2012-08-15 19:08:38 +05:30
!--------------------------------------------------------------------------------------------------
! hex (3+)
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNslipFamily ) , parameter , public :: &
2013-02-27 00:31:31 +05:30
lattice_hex_NslipSystem = int ( [ 3 , 3 , 6 , 12 , 6 ] , pInt ) !< # of slip systems per family for hex
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_maxNtwinFamily ) , parameter , public :: &
2013-02-27 00:31:31 +05:30
lattice_hex_NtwinSystem = int ( [ 6 , 6 , 6 , 6 ] , pInt ) !< # of slip systems per family for hex
2012-03-20 23:31:31 +05:30
integer ( pInt ) , parameter , private :: &
2013-02-27 16:19:23 +05:30
lattice_hex_Nslip = 30_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
2012-03-20 23:31:31 +05:30
integer ( pInt ) , private :: &
lattice_hex_Nstructure = 0_pInt
2009-03-20 20:04:24 +05:30
2012-03-20 23:31:31 +05:30
real ( pReal ) , dimension ( 4 + 4 , lattice_hex_Nslip ) , parameter , private :: &
lattice_hex_systemSlip = reshape ( real ( [ &
! Basal systems <1120>{0001} (independent of c/a-ratio, Bravais notation (4 coordinate base))
2 , - 1 , - 1 , 0 , 0 , 0 , 0 , 1 , &
- 1 , 2 , - 1 , 0 , 0 , 0 , 0 , 1 , &
- 1 , - 1 , 2 , 0 , 0 , 0 , 0 , 1 , &
2012-10-12 23:29:50 +05:30
! 1st type prismatic systems <11.0>{10.0} (independent of c/a-ratio)
2012-03-20 23:31:31 +05:30
2 , - 1 , - 1 , 0 , 0 , 1 , - 1 , 0 , &
- 1 , 2 , - 1 , 0 , - 1 , 0 , 1 , 0 , &
- 1 , - 1 , 2 , 0 , 1 , - 1 , 0 , 0 , &
2012-10-12 23:29:50 +05:30
! 1st type 1st order pyramidal systems <11.0>{10.1} -- plane normals depend on the c/a-ratio
2012-03-20 23:31:31 +05:30
2 , - 1 , - 1 , 0 , 0 , 1 , - 1 , 1 , &
1 , 1 , - 2 , 0 , - 1 , 1 , 0 , 1 , &
- 1 , 2 , - 1 , 0 , - 1 , 0 , 1 , 1 , &
- 2 , 1 , 1 , 0 , 0 , - 1 , 1 , 1 , &
- 1 , - 1 , 2 , 0 , 1 , - 1 , 0 , 1 , &
1 , - 2 , 1 , 0 , 1 , 0 , - 1 , 1 , &
2012-10-12 23:29:50 +05:30
! pyramidal system: c+a slip <-21.-3>{-10.1} -- plane normals depend on the c/a-ratio
- 1 , 2 , - 1 , - 3 , 0 , 1 , - 1 , 1 , &
1 , 1 , - 2 , - 3 , 0 , 1 , - 1 , 1 , &
- 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 , &
1 , - 2 , 1 , - 3 , 0 , - 1 , 1 , 1 , &
- 1 , - 1 , 2 , - 3 , 0 , - 1 , 1 , 1 , &
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 , &
! pyramidal system: c+a slip <11.-3>{11.2} -- as for hexagonal Ice (Castelnau et al 1996, similar to twin system found below)
2012-03-20 23:31:31 +05:30
2 , - 1 , - 1 , - 3 , 2 , - 1 , - 1 , 2 , & ! <11.-3>{11.2} shear = 2((c/a)^2-2)/(3 c/a)
2013-02-27 00:31:31 +05:30
1 , 1 , - 2 , - 3 , 1 , 1 , - 2 , 2 , & ! sorted according to similar twin system
2012-03-20 23:31:31 +05:30
- 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 &
2013-02-27 00:31:31 +05:30
] , pReal ) , [ 4_pInt + 4_pInt , lattice_hex_Nslip ] ) !< slip systems for hex sorted by A. Alankar & P. Eisenlohr
2012-03-20 23:31:31 +05:30
real ( pReal ) , dimension ( 4 + 4 , lattice_hex_Ntwin ) , parameter , private :: &
lattice_hex_systemTwin = reshape ( real ( [ &
0 , 1 , - 1 , 1 , 0 , - 1 , 1 , 2 , & ! <-10.1>{10.2} shear = (3-(c/a)^2)/(sqrt(3) c/a)
- 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 , &
1 , 0 , - 1 , 1 , - 1 , 0 , 1 , 2 , &
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 , & !!
- 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 , 6 , 2 , - 1 , - 1 , 1 , & ! <-1-1.6>{11.1} shear = 1/(c/a)
- 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 , &
1 , 0 , - 1 , - 2 , 1 , 0 , - 1 , 1 , & !! <10.-2>{10.1} shear = (4(c/a)^2-9)/(4 sqrt(3) c/a)
- 1 , 0 , 1 , - 2 , - 1 , 0 , 1 , 1 , &
0 , 1 , - 1 , - 2 , 0 , 1 , - 1 , 1 , &
0 , - 1 , 1 , - 2 , 0 , - 1 , 1 , 1 , &
1 , - 1 , 0 , - 2 , 1 , - 1 , 0 , 1 , &
- 1 , 1 , 0 , - 2 , - 1 , 1 , 0 , 1 &
2013-02-27 00:31:31 +05:30
] , pReal ) , [ 4_pInt + 4_pInt , lattice_hex_Ntwin ] ) !< twin systems for hex, order follows Prof. Tom Bieler's scheme; but numbering in data was restarted from 1
2012-03-20 23:31:31 +05:30
integer ( pInt ) , dimension ( lattice_hex_Ntwin ) , parameter , private :: &
lattice_hex_shearTwin = reshape ( int ( [ & ! indicator to formula further below
1 , & ! {10.2}<-10.1>
1 , &
1 , &
1 , &
1 , &
1 , &
2 , & ! {11.2}<11.-3>
2 , &
2 , &
2 , &
2 , &
2 , &
3 , & ! {11.1}<-1-1.6>
3 , &
3 , &
3 , &
3 , &
3 , &
4 , & ! {10.1}<10.-2>
4 , &
4 , &
4 , &
4 , &
4 &
] , pInt ) , [ lattice_hex_Ntwin ] )
2009-05-19 10:53:29 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_hex_Nslip , lattice_hex_Nslip ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_hex_interactionSlipSlip = reshape ( int ( [ &
2012-11-14 15:57:23 +05:30
1 , 6 , 6 , 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 , & ! ---> slip
6 , 1 , 6 , 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 , & ! |
6 , 6 , 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 , & ! |
! v slip
2012-03-20 23:31:31 +05:30
21 , 21 , 21 , 2 , 7 , 7 , 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 , 7 , 2 , 7 , 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 , 7 , 7 , 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 , &
!
25 , 25 , 25 , 22 , 22 , 22 , 3 , 8 , 8 , 8 , 8 , 8 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
25 , 25 , 25 , 22 , 22 , 22 , 8 , 3 , 8 , 8 , 8 , 8 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
25 , 25 , 25 , 22 , 22 , 22 , 8 , 8 , 3 , 8 , 8 , 8 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
25 , 25 , 25 , 22 , 22 , 22 , 8 , 8 , 8 , 3 , 8 , 8 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
25 , 25 , 25 , 22 , 22 , 22 , 8 , 8 , 8 , 8 , 3 , 8 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
25 , 25 , 25 , 22 , 22 , 22 , 8 , 8 , 8 , 8 , 8 , 3 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 13 , 17 , 17 , 17 , 17 , 17 , 17 , &
!
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 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_hex_Nslip , lattice_hex_Nslip ] , order = [ 2 , 1 ] ) !< Slip--slip interaction types for hex (30 in total)
2009-05-19 10:53:29 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_hex_Nslip , lattice_hex_Ntwin ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_hex_interactionSlipTwin = reshape ( int ( [ &
2012-03-20 23:31:31 +05:30
1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4 , & ! --> twin
1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4 , & ! |
1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4 , 4 , 4 , 4 , 4 , & ! |
! v
5 , 5 , 5 , 5 , 5 , 5 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 8 , 8 , & ! slip
5 , 5 , 5 , 5 , 5 , 5 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 8 , 8 , &
5 , 5 , 5 , 5 , 5 , 5 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 8 , 8 , &
!
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12 , 12 , 12 , &
!
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 , &
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 , &
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 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_hex_Nslip , lattice_hex_Ntwin ] , order = [ 2 , 1 ] ) !< Slip--twin interaction types for hex (isotropic, 20 in total)
2009-10-21 18:40:12 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_hex_Ntwin , lattice_hex_Nslip ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_hex_interactionTwinSlip = reshape ( int ( [ &
2012-03-20 23:31:31 +05:30
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 , 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 , 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 , 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 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_hex_Ntwin , lattice_hex_Nslip ] , order = [ 2 , 1 ] ) !< Twin--twin interaction types for hex (isotropic, 20 in total)
2012-03-20 23:31:31 +05:30
2013-02-08 21:25:53 +05:30
integer ( pInt ) , dimension ( lattice_hex_Ntwin , lattice_hex_Ntwin ) , target , public :: &
2012-11-14 20:03:41 +05:30
lattice_hex_interactionTwinTwin = reshape ( int ( [ &
2012-11-14 15:57:23 +05:30
1 , 5 , 5 , 5 , 5 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , & ! ---> twin
5 , 1 , 5 , 5 , 5 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , & ! |
5 , 5 , 1 , 5 , 5 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , & ! |
5 , 5 , 5 , 1 , 5 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , & ! v twin
2012-03-20 23:31:31 +05:30
5 , 5 , 5 , 5 , 1 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , &
5 , 5 , 5 , 5 , 5 , 1 , 9 , 9 , 9 , 9 , 9 , 9 , 12 , 12 , 12 , 12 , 12 , 12 , 14 , 14 , 14 , 14 , 14 , 14 , &
!
15 , 15 , 15 , 15 , 15 , 15 , 2 , 6 , 6 , 6 , 6 , 6 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
15 , 15 , 15 , 15 , 15 , 15 , 6 , 2 , 6 , 6 , 6 , 6 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
15 , 15 , 15 , 15 , 15 , 15 , 6 , 6 , 2 , 6 , 6 , 6 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
15 , 15 , 15 , 15 , 15 , 15 , 6 , 6 , 6 , 2 , 6 , 6 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
15 , 15 , 15 , 15 , 15 , 15 , 6 , 6 , 6 , 6 , 2 , 6 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
15 , 15 , 15 , 15 , 15 , 15 , 6 , 6 , 6 , 6 , 6 , 2 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 , 13 , 13 , 13 , 13 , &
!
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 3 , 7 , 7 , 7 , 7 , 7 , 11 , 11 , 11 , 11 , 11 , 11 , &
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 7 , 3 , 7 , 7 , 7 , 7 , 11 , 11 , 11 , 11 , 11 , 11 , &
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 7 , 7 , 3 , 7 , 7 , 7 , 11 , 11 , 11 , 11 , 11 , 11 , &
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 7 , 7 , 7 , 3 , 7 , 7 , 11 , 11 , 11 , 11 , 11 , 11 , &
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 7 , 7 , 7 , 7 , 3 , 7 , 11 , 11 , 11 , 11 , 11 , 11 , &
18 , 18 , 18 , 18 , 18 , 18 , 16 , 16 , 16 , 16 , 16 , 16 , 7 , 7 , 7 , 7 , 7 , 3 , 11 , 11 , 11 , 11 , 11 , 11 , &
!
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 4 , 8 , 8 , 8 , 8 , 8 , &
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 8 , 4 , 8 , 8 , 8 , 8 , &
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 8 , 8 , 4 , 8 , 8 , 8 , &
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 8 , 8 , 8 , 4 , 8 , 8 , &
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 8 , 8 , 8 , 8 , 4 , 8 , &
20 , 20 , 20 , 20 , 20 , 20 , 19 , 19 , 19 , 19 , 19 , 19 , 17 , 17 , 17 , 17 , 17 , 17 , 8 , 8 , 8 , 8 , 8 , 4 &
2013-02-27 00:31:31 +05:30
] , pInt ) , [ lattice_hex_Ntwin , lattice_hex_Ntwin ] , order = [ 2 , 1 ] ) !< Twin--slip interaction types for hex (isotropic, 16 in total)
2013-01-22 04:41:16 +05:30
2013-02-27 00:31:31 +05:30
integer ( pInt ) , parameter , private :: NnonSchmid_hex = 0_pInt !< # of non-Schmid contributions for hex
2013-01-22 04:41:16 +05:30
real ( pReal ) , dimension ( 3 , 3 , 2 , NnonSchmid_hex , lattice_hex_Nslip ) , parameter , private :: &
2013-02-27 00:31:31 +05:30
lattice_nonSchmid_hex = 0.0_pReal ! reshape([],[3,3,2,NnonSchmid_hex,lattice_hex_Nslip]) !< Tensor for each non-Schmid contribution for hex
2012-03-20 23:31:31 +05:30
public :: &
lattice_init , &
lattice_initializeStructure , &
2013-01-22 03:27:26 +05:30
lattice_symmetryType , &
2013-02-15 03:54:55 +05:30
lattice_symmetrizeC66 , &
lattice_configNchunks
2012-03-20 23:31:31 +05:30
contains
2009-01-20 00:40:58 +05:30
2012-08-15 19:08:38 +05:30
!--------------------------------------------------------------------------------------------------
!> @brief Module initialization
!--------------------------------------------------------------------------------------------------
2012-03-09 01:55:28 +05:30
subroutine lattice_init
2012-08-15 19:08:38 +05:30
use , intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
2013-02-27 00:31:31 +05:30
use IO , only : &
IO_open_file , &
IO_open_jobFile_stat , &
IO_countSections , &
IO_countTagInPart , &
2013-03-08 04:15:00 +05:30
IO_error , &
IO_timeStamp
2013-02-27 00:31:31 +05:30
use material , only : &
material_configfile , &
material_localFileExt , &
material_partPhase
use debug , only : &
debug_level , &
debug_lattice , &
debug_levelBasic
2012-03-09 01:55:28 +05:30
2009-07-22 21:37:19 +05:30
implicit none
2012-02-21 21:12:47 +05:30
integer ( pInt ) , parameter :: fileunit = 200_pInt
2012-03-09 01:55:28 +05:30
integer ( pInt ) :: Nsections
2009-06-15 18:41:21 +05:30
2013-03-08 04:15:00 +05:30
write ( 6 , '(/,a)' ) ' <<<+- lattice init -+>>>'
write ( 6 , '(a)' ) ' $Id$'
write ( 6 , '(a15,a)' ) ' Current time: ' , IO_timeStamp ( )
2012-02-01 00:48:55 +05:30
#include "compilation_info.f90"
2009-07-22 21:37:19 +05:30
2012-08-15 19:08:38 +05:30
if ( . not . IO_open_jobFile_stat ( fileunit , material_localFileExt ) ) then ! no local material configuration present...
call IO_open_file ( fileunit , material_configFile ) ! ... open material.config file
2011-08-02 15:44:16 +05:30
endif
2009-07-22 21:37:19 +05:30
Nsections = IO_countSections ( fileunit , material_partPhase )
2009-10-16 01:32:52 +05:30
lattice_Nstructure = 2_pInt + sum ( IO_countTagInPart ( fileunit , material_partPhase , 'covera_ratio' , Nsections ) ) ! fcc + bcc + all hex
2009-07-22 21:37:19 +05:30
close ( fileunit )
2012-07-05 15:24:50 +05:30
if ( iand ( debug_level ( debug_lattice ) , debug_levelBasic ) / = 0_pInt ) then
2013-02-27 00:31:31 +05:30
write ( 6 , '(a16,1x,i5)' ) ' # phases:' , Nsections
write ( 6 , '(a16,1x,i5,/)' ) ' # structures:' , lattice_Nstructure
2011-03-21 16:01:17 +05:30
endif
2009-10-16 01:32:52 +05:30
2013-01-22 04:41:16 +05:30
allocate ( NnonSchmid ( lattice_Nstructure ) ) ; NnonSchmid = 0_pInt
2009-08-26 12:58:43 +05:30
allocate ( lattice_Sslip ( 3 , 3 , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_Sslip = 0.0_pReal
2013-01-22 04:41:16 +05:30
allocate ( lattice_Sslip_v ( 6 , 1 + 2 * lattice_maxNonSchmid , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_Sslip_v = 0.0_pReal
2009-08-26 12:58:43 +05:30
allocate ( lattice_sd ( 3 , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_sd = 0.0_pReal
allocate ( lattice_st ( 3 , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_st = 0.0_pReal
allocate ( lattice_sn ( 3 , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_sn = 0.0_pReal
2009-07-22 21:37:19 +05:30
2009-08-26 12:58:43 +05:30
allocate ( lattice_Qtwin ( 3 , 3 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_Qtwin = 0.0_pReal
allocate ( lattice_Stwin ( 3 , 3 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_Stwin = 0.0_pReal
2009-07-22 21:37:19 +05:30
allocate ( lattice_Stwin_v ( 6 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_Stwin_v = 0.0_pReal
2009-08-26 12:58:43 +05:30
allocate ( lattice_td ( 3 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_td = 0.0_pReal
allocate ( lattice_tt ( 3 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_tt = 0.0_pReal
allocate ( lattice_tn ( 3 , lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_tn = 0.0_pReal
2009-07-22 21:37:19 +05:30
allocate ( lattice_shearTwin ( lattice_maxNtwin , lattice_Nstructure ) ) ; lattice_shearTwin = 0.0_pReal
2012-02-10 17:26:05 +05:30
allocate ( lattice_NslipSystem ( lattice_maxNslipFamily , lattice_Nstructure ) ) ; lattice_NslipSystem = 0_pInt
allocate ( lattice_NtwinSystem ( lattice_maxNtwinFamily , lattice_Nstructure ) ) ; lattice_NtwinSystem = 0_pInt
2009-07-22 21:37:19 +05:30
2012-03-20 23:31:31 +05:30
allocate ( lattice_interactionSlipSlip ( lattice_maxNslip , lattice_maxNslip , lattice_Nstructure ) )
lattice_interactionSlipSlip = 0_pInt ! other:me
2012-11-14 15:57:23 +05:30
allocate ( lattice_interactionSlipTwin ( lattice_maxNslip , lattice_maxNtwin , lattice_Nstructure ) )
2012-03-20 23:31:31 +05:30
lattice_interactionSlipTwin = 0_pInt ! other:me
2012-11-14 15:57:23 +05:30
allocate ( lattice_interactionTwinSlip ( lattice_maxNtwin , lattice_maxNslip , lattice_Nstructure ) )
2012-03-20 23:31:31 +05:30
lattice_interactionTwinSlip = 0_pInt ! other:me
allocate ( lattice_interactionTwinTwin ( lattice_maxNtwin , lattice_maxNtwin , lattice_Nstructure ) )
lattice_interactionTwinTwin = 0_pInt ! other:me
2009-07-22 21:37:19 +05:30
2012-03-09 01:55:28 +05:30
end subroutine lattice_init
2009-01-20 00:40:58 +05:30
2012-08-15 19:08:38 +05:30
!--------------------------------------------------------------------------------------------------
!> @brief Calculation of Schmid matrices, etc.
!--------------------------------------------------------------------------------------------------
2012-03-09 01:55:28 +05:30
integer ( pInt ) function lattice_initializeStructure ( struct , CoverA )
2013-02-27 00:31:31 +05:30
use math , only : &
math_vectorproduct , &
math_tensorproduct , &
math_norm3 , &
math_trace33 , &
math_symmetric33 , &
math_Mandel33to6 , &
math_axisAngleToR , &
INRAD
use IO , only : &
IO_error
2012-03-09 01:55:28 +05:30
2009-03-20 20:04:24 +05:30
implicit none
character ( len = * ) struct
real ( pReal ) CoverA
real ( pReal ) , dimension ( 3 , lattice_maxNslip ) :: sd = 0.0_pReal , &
2012-10-18 12:55:49 +05:30
sn = 0.0_pReal
2013-01-22 04:41:16 +05:30
real ( pReal ) , dimension ( 12 , lattice_maxNonSchmid , lattice_maxNslip ) :: sns = 0.0_pReal
2009-03-20 20:04:24 +05:30
real ( pReal ) , dimension ( 3 , lattice_maxNtwin ) :: td = 0.0_pReal , &
2012-10-18 12:55:49 +05:30
tn = 0.0_pReal
2009-03-20 20:04:24 +05:30
real ( pReal ) , dimension ( lattice_maxNtwin ) :: ts = 0.0_pReal
2009-07-22 21:37:19 +05:30
integer ( pInt ) , dimension ( lattice_maxNslipFamily ) :: myNslipSystem = 0_pInt
integer ( pInt ) , dimension ( lattice_maxNtwinFamily ) :: myNtwinSystem = 0_pInt
2013-01-22 04:41:16 +05:30
integer ( pInt ) :: i , j , myNslip , myNtwin , myStructure = 0_pInt
2009-07-22 21:37:19 +05:30
logical :: processMe
2009-03-20 20:04:24 +05:30
2009-07-22 21:37:19 +05:30
processMe = . false .
2009-03-20 20:04:24 +05:30
select case ( struct ( 1 : 3 ) ) ! check first three chars of structure name
case ( 'fcc' )
myStructure = 1_pInt
2009-08-26 12:58:43 +05:30
myNslipSystem = lattice_fcc_NslipSystem ! size of slip system families
myNtwinSystem = lattice_fcc_NtwinSystem ! size of twin system families
myNslip = lattice_fcc_Nslip ! overall number of slip systems
myNtwin = lattice_fcc_Ntwin ! overall number of twin systems
lattice_fcc_Nstructure = lattice_fcc_Nstructure + 1_pInt ! count fcc instances
if ( lattice_fcc_Nstructure == 1_pInt ) then ! me is first fcc structure
2009-03-20 20:04:24 +05:30
processMe = . true .
2013-01-22 04:41:16 +05:30
NnonSchmid ( myStructure ) = NnonSchmid_fcc ! Currently no known non schmid contributions for FCC (to be changed later)
2012-10-12 23:29:50 +05:30
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 )
2013-01-22 04:41:16 +05:30
do j = 1_pInt , NnonSchmid_fcc
sns ( 1 : 6 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_fcc ( 1 : 3 , 1 : 3 , 1 , j , i ) )
sns ( 7 : 12 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_fcc ( 1 : 3 , 1 : 3 , 2 , j , i ) )
enddo
2009-03-20 20:04:24 +05:30
enddo
2012-10-12 23:29:50 +05:30
do i = 1_pInt , myNtwin ! assign twin system vectors and shears
td ( 1 : 3 , i ) = lattice_fcc_systemTwin ( 1 : 3 , i )
tn ( 1 : 3 , i ) = lattice_fcc_systemTwin ( 4 : 6 , i )
ts ( i ) = lattice_fcc_shearTwin ( i )
2009-03-20 20:04:24 +05:30
enddo
interactionSlipSlip = > lattice_fcc_interactionSlipSlip
interactionSlipTwin = > lattice_fcc_interactionSlipTwin
2009-05-27 12:27:24 +05:30
interactionTwinSlip = > lattice_fcc_interactionTwinSlip
2009-08-26 12:58:43 +05:30
interactionTwinTwin = > lattice_fcc_interactionTwinTwin
2009-03-20 20:04:24 +05:30
endif
case ( 'bcc' )
myStructure = 2_pInt
2009-08-26 12:58:43 +05:30
myNslipSystem = lattice_bcc_NslipSystem ! size of slip system families
myNtwinSystem = lattice_bcc_NtwinSystem ! size of twin system families
myNslip = lattice_bcc_Nslip ! overall number of slip systems
myNtwin = lattice_bcc_Ntwin ! overall number of twin systems
lattice_bcc_Nstructure = lattice_bcc_Nstructure + 1_pInt ! count bcc instances
if ( lattice_bcc_Nstructure == 1_pInt ) then ! me is first bcc structure
2009-03-20 20:04:24 +05:30
processMe = . true .
2013-01-22 04:41:16 +05:30
NnonSchmid ( myStructure ) = NnonSchmid_BCC ! 5 known non schmid contributions for BCC (A. Koester, A. Ma, A. Hartmaier 2012)
2012-10-12 23:29:50 +05:30
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 )
2013-01-22 04:41:16 +05:30
do j = 1_pInt , NnonSchmid_bcc
sns ( 1 : 6 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_bcc ( 1 : 3 , 1 : 3 , 1 , j , i ) )
sns ( 7 : 12 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_bcc ( 1 : 3 , 1 : 3 , 2 , j , i ) )
enddo
2009-03-20 20:04:24 +05:30
enddo
2012-10-12 23:29:50 +05:30
do i = 1_pInt , myNtwin ! assign twin system vectors and shears
td ( 1 : 3 , i ) = lattice_bcc_systemTwin ( 1 : 3 , i )
tn ( 1 : 3 , i ) = lattice_bcc_systemTwin ( 4 : 6 , i )
ts ( i ) = lattice_bcc_shearTwin ( i )
2009-03-20 20:04:24 +05:30
enddo
interactionSlipSlip = > lattice_bcc_interactionSlipSlip
interactionSlipTwin = > lattice_bcc_interactionSlipTwin
2009-05-27 12:27:24 +05:30
interactionTwinSlip = > lattice_bcc_interactionTwinSlip
2009-08-26 12:58:43 +05:30
interactionTwinTwin = > lattice_bcc_interactionTwinTwin
2009-03-20 20:04:24 +05:30
endif
case ( 'hex' )
2009-08-26 12:58:43 +05:30
if ( CoverA > = 1.0_pReal ) then ! checking physical significance of c/a
lattice_hex_Nstructure = lattice_hex_Nstructure + 1_pInt ! count instances of hex structures
myStructure = 2_pInt + lattice_hex_Nstructure ! 3,4,5,.. for hex
myNslipSystem = lattice_hex_NslipSystem ! size of slip system families
myNtwinSystem = lattice_hex_NtwinSystem ! size of twin system families
myNslip = lattice_hex_Nslip ! overall number of slip systems
myNtwin = lattice_hex_Ntwin ! overall number of twin systems
2009-03-20 20:04:24 +05:30
processMe = . true .
2013-01-22 04:41:16 +05:30
NnonSchmid ( myStructure ) = NnonSchmid_hex ! Currently no known non schmid contributions for hex (to be changed later)
2009-03-20 20:04:24 +05:30
! converting from 4 axes coordinate system (a1=a2=a3=c) to ortho-hexgonal system (a, b, c)
2012-02-16 00:28:38 +05:30
do i = 1_pInt , myNslip
2012-10-12 23:29:50 +05:30
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 ) ) * ( 0.5_pReal * sqrt ( 3.0_pReal ) )
sd ( 3 , i ) = lattice_hex_systemSlip ( 4 , i ) * CoverA
sn ( 1 , i ) = lattice_hex_systemSlip ( 5 , i ) ! plane (hkil)->(h (h+2k)/sqrt(3) l/(c/a))
sn ( 2 , i ) = ( lattice_hex_systemSlip ( 5 , i ) + 2.0_pReal * lattice_hex_systemSlip ( 6 , i ) ) / sqrt ( 3.0_pReal )
sn ( 3 , i ) = lattice_hex_systemSlip ( 8 , i ) / CoverA
2013-01-22 04:41:16 +05:30
do j = 1_pInt , NnonSchmid_hex
sns ( 1 : 6 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_hex ( 1 : 3 , 1 : 3 , 1 , j , i ) )
sns ( 7 : 12 , j , i ) = math_Mandel33to6 ( lattice_nonSchmid_hex ( 1 : 3 , 1 : 3 , 2 , j , i ) )
enddo
2009-03-20 20:04:24 +05:30
enddo
2012-02-16 00:28:38 +05:30
do i = 1_pInt , myNtwin
2012-10-12 23:29:50 +05:30
td ( 1 , i ) = lattice_hex_systemTwin ( 1 , i ) * 1.5_pReal
td ( 2 , i ) = ( lattice_hex_systemTwin ( 1 , i ) + 2.0_pReal * lattice_hex_systemTwin ( 2 , i ) ) * ( 0.5_pReal * sqrt ( 3.0_pReal ) )
td ( 3 , i ) = lattice_hex_systemTwin ( 4 , i ) * CoverA
tn ( 1 , i ) = lattice_hex_systemTwin ( 5 , i )
tn ( 2 , i ) = ( lattice_hex_systemTwin ( 5 , i ) + 2.0_pReal * lattice_hex_systemTwin ( 6 , i ) ) / sqrt ( 3.0_pReal )
tn ( 3 , i ) = lattice_hex_systemTwin ( 8 , i ) / CoverA
select case ( lattice_hex_shearTwin ( i ) ) ! from Christian & Mahajan 1995 p.29
2012-02-10 17:26:05 +05:30
case ( 1_pInt ) ! {10.2}<-10.1>
2011-02-25 14:55:53 +05:30
ts ( i ) = ( 3.0_pReal - CoverA * CoverA ) / sqrt ( 3.0_pReal ) / CoverA
2012-02-10 17:26:05 +05:30
case ( 2_pInt ) ! {11.2}<11.-3>
2009-10-20 21:43:25 +05:30
ts ( i ) = 2.0_pReal * ( CoverA * CoverA - 2.0_pReal ) / 3.0_pReal / CoverA
2012-02-10 17:26:05 +05:30
case ( 3_pInt ) ! {11.1}<-1-1.6>
2009-10-20 21:43:25 +05:30
ts ( i ) = 1.0_pReal / CoverA
2012-02-10 17:26:05 +05:30
case ( 4_pInt ) ! {10.1}<10.-2>
2011-02-25 14:55:53 +05:30
ts ( i ) = ( 4.0_pReal * CoverA * CoverA - 9.0_pReal ) / 4.0_pReal / sqrt ( 3.0_pReal ) / CoverA
2009-10-20 21:43:25 +05:30
end select
2009-03-20 20:04:24 +05:30
enddo
interactionSlipSlip = > lattice_hex_interactionSlipSlip
interactionSlipTwin = > lattice_hex_interactionSlipTwin
2009-05-26 22:38:14 +05:30
interactionTwinSlip = > lattice_hex_interactionTwinSlip
2009-08-26 12:58:43 +05:30
interactionTwinTwin = > lattice_hex_interactionTwinTwin
2009-03-20 20:04:24 +05:30
endif
2009-10-16 01:32:52 +05:30
end select
2009-03-20 20:04:24 +05:30
if ( processMe ) then
2009-10-16 01:32:52 +05:30
if ( myStructure > lattice_Nstructure ) &
2013-02-27 00:31:31 +05:30
call IO_error ( 666_pInt , myStructure , ext_msg = 'structure index out of bounds' ) ! check for memory leakage
do i = 1_pInt , myNslip ! store slip system vectors and Schmid matrix for my structure
lattice_sd ( 1 : 3 , i , myStructure ) = sd ( 1 : 3 , i ) / math_norm3 ( sd ( 1 : 3 , i ) ) ! make unit vector
lattice_sn ( 1 : 3 , i , myStructure ) = sn ( 1 : 3 , i ) / math_norm3 ( sn ( 1 : 3 , i ) ) ! make unit vector
2012-10-12 23:29:50 +05:30
lattice_st ( 1 : 3 , i , myStructure ) = math_vectorproduct ( lattice_sd ( 1 : 3 , i , myStructure ) , &
lattice_sn ( 1 : 3 , i , myStructure ) )
lattice_Sslip ( 1 : 3 , 1 : 3 , i , myStructure ) = math_tensorproduct ( lattice_sd ( 1 : 3 , i , myStructure ) , &
lattice_sn ( 1 : 3 , i , myStructure ) )
2013-01-22 04:41:16 +05:30
lattice_Sslip_v ( 1 : 6 , 1 , i , myStructure ) = math_Mandel33to6 ( math_symmetric33 ( lattice_Sslip ( 1 : 3 , 1 : 3 , i , myStructure ) ) )
do j = 1_pInt , NnonSchmid ( myStructure )
lattice_Sslip_v ( 1 : 6 , 2 * j , i , myStructure ) = sns ( 1 : 6 , j , i )
lattice_Sslip_v ( 1 : 6 , 2 * j + 1 , i , myStructure ) = sns ( 7 : 12 , j , i )
enddo
2012-11-23 22:32:50 +05:30
if ( abs ( math_trace33 ( lattice_Sslip ( 1 : 3 , 1 : 3 , i , myStructure ) ) ) > 1.0e-8_pReal ) &
2012-10-12 23:29:50 +05:30
call IO_error ( 0_pInt , myStructure , i , 0_pInt , ext_msg = 'dilatational slip Schmid matrix' )
2009-01-20 00:40:58 +05:30
enddo
2013-02-27 00:31:31 +05:30
do i = 1_pInt , myNtwin ! store twin system vectors and Schmid plus rotation matrix for my structure
lattice_td ( 1 : 3 , i , myStructure ) = td ( 1 : 3 , i ) / math_norm3 ( td ( 1 : 3 , i ) ) ! make unit vector
lattice_tn ( 1 : 3 , i , myStructure ) = tn ( 1 : 3 , i ) / math_norm3 ( tn ( 1 : 3 , i ) ) ! make unit vector
2012-10-12 23:29:50 +05:30
lattice_tt ( 1 : 3 , i , myStructure ) = math_vectorproduct ( lattice_td ( 1 : 3 , i , myStructure ) , &
lattice_tn ( 1 : 3 , i , myStructure ) )
lattice_Stwin ( 1 : 3 , 1 : 3 , i , myStructure ) = math_tensorproduct ( lattice_td ( 1 : 3 , i , myStructure ) , &
lattice_tn ( 1 : 3 , i , myStructure ) )
2012-11-23 22:32:50 +05:30
lattice_Stwin_v ( 1 : 6 , i , myStructure ) = math_Mandel33to6 ( math_symmetric33 ( lattice_Stwin ( 1 : 3 , 1 : 3 , i , myStructure ) ) )
2012-10-12 23:29:50 +05:30
lattice_Qtwin ( 1 : 3 , 1 : 3 , i , myStructure ) = math_AxisAngleToR ( tn ( 1 : 3 , i ) , 18 0.0_pReal * INRAD )
2012-11-23 22:32:50 +05:30
lattice_shearTwin ( i , myStructure ) = ts ( i )
if ( abs ( math_trace33 ( lattice_Stwin ( 1 : 3 , 1 : 3 , i , myStructure ) ) ) > 1.0e-8_pReal ) &
2012-10-12 23:29:50 +05:30
call IO_error ( 0_pInt , myStructure , i , 0_pInt , ext_msg = 'dilatational twin Schmid matrix' )
2009-01-20 00:40:58 +05:30
enddo
2013-02-27 00:31:31 +05:30
lattice_NslipSystem ( 1 : lattice_maxNslipFamily , myStructure ) = myNslipSystem ! number of slip systems in each family
lattice_NtwinSystem ( 1 : lattice_maxNtwinFamily , myStructure ) = myNtwinSystem ! number of twin systems in each family
2009-03-20 20:04:24 +05:30
lattice_interactionSlipSlip ( 1 : myNslip , 1 : myNslip , myStructure ) = interactionSlipSlip ( 1 : myNslip , 1 : myNslip )
2012-11-14 15:57:23 +05:30
lattice_interactionSlipTwin ( 1 : myNslip , 1 : myNtwin , myStructure ) = interactionSlipTwin ( 1 : myNslip , 1 : myNtwin )
lattice_interactionTwinSlip ( 1 : myNtwin , 1 : myNslip , myStructure ) = interactionTwinSlip ( 1 : myNtwin , 1 : myNslip )
2009-07-22 21:37:19 +05:30
lattice_interactionTwinTwin ( 1 : myNtwin , 1 : myNtwin , myStructure ) = interactionTwinTwin ( 1 : myNtwin , 1 : myNtwin )
2009-03-20 20:04:24 +05:30
endif
2009-01-20 00:40:58 +05:30
2013-02-27 00:31:31 +05:30
lattice_initializeStructure = myStructure ! report my structure index back
2009-01-20 00:40:58 +05:30
2012-03-09 01:55:28 +05:30
end function lattice_initializeStructure
2009-01-20 00:40:58 +05:30
2013-02-27 00:31:31 +05:30
!--------------------------------------------------------------------------------------------------
!> @brief Maps structure to symmetry type
!> @details fcc(1) and bcc(2) are cubic(1) hex(3+) is hexagonal(2)
!--------------------------------------------------------------------------------------------------
integer ( pInt ) pure function lattice_symmetryType ( structName )
implicit none
character ( len = 32 ) , intent ( in ) :: structName
select case ( structName ( 1 : 3 ) )
case ( 'fcc' , 'bcc' )
lattice_symmetryType = 1_pInt
case ( 'hex' )
lattice_symmetryType = 2_pInt
case default
lattice_symmetryType = 0_pInt
end select
return
end function lattice_symmetryType
!--------------------------------------------------------------------------------------------------
!> @brief Symmetrizes stiffness matrix according to lattice type
!--------------------------------------------------------------------------------------------------
pure function lattice_symmetrizeC66 ( structName , C66 )
implicit none
character ( len = 32 ) , intent ( in ) :: structName
real ( pReal ) , dimension ( 6 , 6 ) , intent ( in ) :: C66
real ( pReal ) , dimension ( 6 , 6 ) :: lattice_symmetrizeC66
integer ( pInt ) :: j , k
lattice_symmetrizeC66 = 0.0_pReal
select case ( structName ( 1 : 3 ) )
case ( 'iso' )
forall ( k = 1_pInt : 3_pInt )
forall ( j = 1_pInt : 3_pInt ) lattice_symmetrizeC66 ( k , j ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( k , k ) = C66 ( 1 , 1 )
lattice_symmetrizeC66 ( k + 3 , k + 3 ) = 0.5_pReal * ( C66 ( 1 , 1 ) - C66 ( 1 , 2 ) )
end forall
case ( 'fcc' , 'bcc' )
forall ( k = 1_pInt : 3_pInt )
forall ( j = 1_pInt : 3_pInt ) lattice_symmetrizeC66 ( k , j ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( k , k ) = C66 ( 1 , 1 )
lattice_symmetrizeC66 ( k + 3_pInt , k + 3_pInt ) = C66 ( 4 , 4 )
end forall
case ( 'hex' )
lattice_symmetrizeC66 ( 1 , 1 ) = C66 ( 1 , 1 )
lattice_symmetrizeC66 ( 2 , 2 ) = C66 ( 1 , 1 )
lattice_symmetrizeC66 ( 3 , 3 ) = C66 ( 3 , 3 )
lattice_symmetrizeC66 ( 1 , 2 ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( 2 , 1 ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( 1 , 3 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 3 , 1 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 2 , 3 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 3 , 2 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 4 , 4 ) = C66 ( 4 , 4 )
lattice_symmetrizeC66 ( 5 , 5 ) = C66 ( 4 , 4 )
lattice_symmetrizeC66 ( 6 , 6 ) = 0.5_pReal * ( C66 ( 1 , 1 ) - C66 ( 1 , 2 ) )
case ( 'ort' )
lattice_symmetrizeC66 ( 1 , 1 ) = C66 ( 1 , 1 )
lattice_symmetrizeC66 ( 2 , 2 ) = C66 ( 2 , 2 )
lattice_symmetrizeC66 ( 3 , 3 ) = C66 ( 3 , 3 )
lattice_symmetrizeC66 ( 1 , 2 ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( 2 , 1 ) = C66 ( 1 , 2 )
lattice_symmetrizeC66 ( 1 , 3 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 3 , 1 ) = C66 ( 1 , 3 )
lattice_symmetrizeC66 ( 2 , 3 ) = C66 ( 2 , 3 )
lattice_symmetrizeC66 ( 3 , 2 ) = C66 ( 2 , 3 )
lattice_symmetrizeC66 ( 4 , 4 ) = C66 ( 4 , 4 )
lattice_symmetrizeC66 ( 5 , 5 ) = C66 ( 5 , 5 )
lattice_symmetrizeC66 ( 6 , 6 ) = C66 ( 6 , 6 )
end select
end function lattice_symmetrizeC66
2013-02-15 03:54:55 +05:30
!--------------------------------------------------------------------------------------------------
!> @brief Number of parameters to expect in material.config section
! NslipFamilies
! NtwinFamilies
! SlipSlipInteraction
! SlipTwinInteraction
! TwinSlipInteraction
! TwinTwinInteraction
!--------------------------------------------------------------------------------------------------
function lattice_configNchunks ( struct )
use prec , only : pReal , pInt
implicit none
integer ( pInt ) , dimension ( 6 ) :: lattice_configNchunks
character ( len = * ) , intent ( in ) :: struct
2013-02-27 00:31:31 +05:30
select case ( struct ( 1 : 3 ) ) ! check first three chars of structure name
2013-02-15 03:54:55 +05:30
case ( 'fcc' )
lattice_configNchunks ( 1 ) = count ( lattice_fcc_NslipSystem > 0_pInt )
lattice_configNchunks ( 2 ) = count ( lattice_fcc_NtwinSystem > 0_pInt )
lattice_configNchunks ( 3 ) = maxval ( lattice_fcc_interactionSlipSlip )
lattice_configNchunks ( 4 ) = maxval ( lattice_fcc_interactionSlipTwin )
lattice_configNchunks ( 5 ) = maxval ( lattice_fcc_interactionTwinSlip )
lattice_configNchunks ( 6 ) = maxval ( lattice_fcc_interactionTwinTwin )
case ( 'bcc' )
lattice_configNchunks ( 1 ) = count ( lattice_bcc_NslipSystem > 0_pInt )
lattice_configNchunks ( 2 ) = count ( lattice_bcc_NtwinSystem > 0_pInt )
lattice_configNchunks ( 3 ) = maxval ( lattice_bcc_interactionSlipSlip )
lattice_configNchunks ( 4 ) = maxval ( lattice_bcc_interactionSlipTwin )
lattice_configNchunks ( 5 ) = maxval ( lattice_bcc_interactionTwinSlip )
lattice_configNchunks ( 6 ) = maxval ( lattice_bcc_interactionTwinTwin )
case ( 'hex' )
lattice_configNchunks ( 1 ) = count ( lattice_hex_NslipSystem > 0_pInt )
lattice_configNchunks ( 2 ) = count ( lattice_hex_NtwinSystem > 0_pInt )
lattice_configNchunks ( 3 ) = maxval ( lattice_hex_interactionSlipSlip )
lattice_configNchunks ( 4 ) = maxval ( lattice_hex_interactionSlipTwin )
lattice_configNchunks ( 5 ) = maxval ( lattice_hex_interactionTwinSlip )
lattice_configNchunks ( 6 ) = maxval ( lattice_hex_interactionTwinTwin )
end select
end function lattice_configNchunks
2012-03-09 01:55:28 +05:30
end module lattice