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/>.
!
!##############################################################
2009-08-31 20:39:15 +05:30
!* $Id$
2009-01-20 00:40:58 +05:30
!************************************
!* Module: LATTICE *
!************************************
!* contains: *
!* - Lattice structure definition *
!* - Slip system definition *
!* - Schmid matrices calculation *
!************************************
MODULE lattice
!*** Include other modules ***
use prec , only : pReal , pInt
implicit none
!************************************
!* Lattice structures *
!************************************
2009-03-20 20:04:24 +05:30
integer ( pInt ) lattice_Nhexagonal , & ! # of hexagonal lattice structure (from tag CoverA_ratio)
lattice_Nstructure ! # of lattice structures (1: fcc,2: bcc,3+: hexagonal)
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter :: lattice_maxNslipFamily = 4 ! max # of slip system families over lattice structures
integer ( pInt ) , parameter :: lattice_maxNtwinFamily = 4 ! max # of twin system families over lattice structures
2009-03-20 20:04:24 +05:30
integer ( pInt ) , parameter :: lattice_maxNslip = 48 ! max # of slip systems over lattice structures
integer ( pInt ) , parameter :: lattice_maxNtwin = 24 ! max # of twin systems over lattice structures
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter :: lattice_maxNinteraction = 20 ! max # of interaction types (in hardening matrix part)
2009-03-20 20:04:24 +05:30
integer ( pInt ) , pointer , dimension ( : , : ) :: interactionSlipSlip , &
interactionSlipTwin , &
2009-07-22 21:37:19 +05:30
interactionTwinSlip , &
2009-10-16 01:32:52 +05:30
interactionTwinTwin
2009-03-20 20:04:24 +05:30
2009-07-22 21:37:19 +05:30
! Schmid matrices, normal, shear direction and d x n of slip systems
2009-03-20 20:04:24 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : , : ) :: lattice_Sslip
real ( pReal ) , allocatable , dimension ( : , : , : ) :: lattice_Sslip_v
2009-07-22 21:37:19 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : ) :: 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
2009-03-20 20:04:24 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : , : ) :: lattice_Qtwin
real ( pReal ) , allocatable , dimension ( : , : , : , : ) :: lattice_Stwin
real ( pReal ) , allocatable , dimension ( : , : , : ) :: lattice_Stwin_v
2009-07-22 21:37:19 +05:30
real ( pReal ) , allocatable , dimension ( : , : , : ) :: lattice_tn , &
lattice_td , &
lattice_tt
! characteristic twin shear
2009-03-20 20:04:24 +05:30
real ( pReal ) , allocatable , dimension ( : , : ) :: lattice_shearTwin
2009-07-22 21:37:19 +05:30
! number of slip and twin systems in each family
integer ( pInt ) , allocatable , dimension ( : , : ) :: lattice_NslipSystem , &
lattice_NtwinSystem
2009-03-20 20:04:24 +05:30
2009-07-22 21:37:19 +05:30
! interaction type of slip and twin systems among each other
integer ( pInt ) , allocatable , dimension ( : , : , : ) :: lattice_interactionSlipSlip , &
lattice_interactionSlipTwin , &
lattice_interactionTwinSlip , &
lattice_interactionTwinTwin
2009-03-20 20:04:24 +05:30
!============================== fcc (1) =================================
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter , dimension ( lattice_maxNslipFamily ) :: lattice_fcc_NslipSystem = ( / 12 , 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)
2009-03-20 20:04:24 +05:30
integer ( pInt ) :: lattice_fcc_Nstructure = 0_pInt
real ( pReal ) , dimension ( 3 + 3 , lattice_fcc_Nslip ) , parameter :: lattice_fcc_systemSlip = &
reshape ( ( / &
! Slip system <110>{111} Sorted according to Eisenlohr & Hantcherli
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 &
/ ) , ( / 3 + 3 , lattice_fcc_Nslip / ) )
real ( pReal ) , dimension ( 3 + 3 , lattice_fcc_Ntwin ) , parameter :: lattice_fcc_systemTwin = &
reshape ( ( / &
! Twin system <112>{111} Sorted according to Eisenlohr & Hantcherli
- 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 &
/ ) , ( / 3 + 3 , lattice_fcc_Ntwin / ) )
real ( pReal ) , dimension ( lattice_fcc_Ntwin ) , parameter :: lattice_fcc_shearTwin = &
reshape ( ( / &
! Twin system <112>{111} Sorted according to Eisenlohr & Hantcherli
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 , &
0.7071067812 &
/ ) , ( / lattice_fcc_Ntwin / ) )
integer ( pInt ) , target , dimension ( lattice_fcc_Nslip , lattice_fcc_Nslip ) :: lattice_fcc_interactionSlipSlip = &
reshape ( ( / &
2009-10-07 22:30:35 +05:30
! Interaction types
! 1 --- self interaction
! 2 --- coplanar interaction
! 3 --- collinear interaction
! 4 --- Hirth locks
! 5 --- glissile junctions
! 6 --- Lomer locks
2009-03-20 20:04:24 +05:30
1 , 2 , 2 , 4 , 6 , 5 , 3 , 5 , 5 , 4 , 5 , 6 , &
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 , &
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 &
/ ) , ( / lattice_fcc_Nslip , lattice_fcc_Nslip / ) )
2009-10-21 18:40:12 +05:30
integer ( pInt ) , target , dimension ( lattice_fcc_Ntwin , lattice_fcc_Nslip ) :: lattice_fcc_interactionSlipTwin = &
2009-03-20 20:04:24 +05:30
reshape ( ( / &
2009-07-24 17:32:20 +05:30
1 , 1 , 1 , 2 , 2 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , &
1 , 1 , 1 , 2 , 2 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , &
1 , 1 , 1 , 2 , 2 , 1 , 1 , 2 , 2 , 2 , 1 , 2 , &
2 , 2 , 1 , 1 , 1 , 1 , 2 , 1 , 2 , 1 , 2 , 2 , &
2 , 2 , 1 , 1 , 1 , 1 , 2 , 1 , 2 , 1 , 2 , 2 , &
2 , 2 , 1 , 1 , 1 , 1 , 2 , 1 , 2 , 1 , 2 , 2 , &
1 , 2 , 2 , 2 , 1 , 2 , 1 , 1 , 1 , 2 , 2 , 1 , &
1 , 2 , 2 , 2 , 1 , 2 , 1 , 1 , 1 , 2 , 2 , 1 , &
1 , 2 , 2 , 2 , 1 , 2 , 1 , 1 , 1 , 2 , 2 , 1 , &
2 , 1 , 2 , 1 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , &
2 , 1 , 2 , 1 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 , &
2 , 1 , 2 , 1 , 2 , 2 , 2 , 2 , 1 , 1 , 1 , 1 &
2009-10-21 19:11:09 +05:30
/ ) , ( / lattice_fcc_Ntwin , lattice_fcc_Nslip / ) )
2009-03-20 20:04:24 +05:30
2009-10-21 18:40:12 +05:30
integer ( pInt ) , target , dimension ( lattice_fcc_Nslip , lattice_fcc_Ntwin ) :: lattice_fcc_interactionTwinSlip = 0
2009-03-20 20:04:24 +05:30
integer ( pInt ) , target , dimension ( lattice_fcc_Ntwin , lattice_fcc_Ntwin ) :: lattice_fcc_interactionTwinTwin = &
reshape ( ( / &
2009-07-24 17:32:20 +05:30
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 , 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 &
2009-03-20 20:04:24 +05:30
/ ) , ( / lattice_fcc_Ntwin , lattice_fcc_Ntwin / ) )
2009-05-27 12:27:24 +05:30
2009-03-20 20:04:24 +05:30
!============================== bcc (2) =================================
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter , dimension ( lattice_maxNslipFamily ) :: lattice_bcc_NslipSystem = ( / 12 , 12 , 24 , 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)
2009-03-20 20:04:24 +05:30
integer ( pInt ) :: lattice_bcc_Nstructure = 0_pInt
real ( pReal ) , dimension ( 3 + 3 , lattice_bcc_Nslip ) , parameter :: lattice_bcc_systemSlip = &
reshape ( ( / &
! Slip system <111>{110} meaningful sorting?
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 , &
! Slip system <111>{112} meaningful sorting ?
- 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 , &
! Slip system <111>{123} meaningful sorting ?
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 &
/ ) , ( / 3 + 3 , lattice_bcc_Nslip / ) )
! twin system <111>{112}
! MISSING: not implemented yet -- now dummy copy from fcc !!
real ( pReal ) , dimension ( 3 + 3 , lattice_bcc_Ntwin ) , parameter :: lattice_bcc_systemTwin = &
reshape ( ( / &
! Twin system <112>{111} Sorted according to Eisenlohr & Hantcherli
- 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 &
/ ) , ( / 3 + 3 , lattice_bcc_Ntwin / ) )
real ( pReal ) , dimension ( lattice_bcc_Ntwin ) , parameter :: lattice_bcc_shearTwin = &
reshape ( ( / &
! Twin system {111}<112> just a dummy
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 , &
0.123 &
/ ) , ( / lattice_bcc_Ntwin / ) )
2009-01-20 00:40:58 +05:30
2009-10-21 18:40:12 +05:30
!*** slip--slip interactions for BCC structures (2) ***
2009-03-20 20:04:24 +05:30
integer ( pInt ) , target , dimension ( lattice_bcc_Nslip , lattice_bcc_Nslip ) :: lattice_bcc_interactionSlipSlip = &
reshape ( ( / &
1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , &
2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 1 &
/ ) , ( / lattice_bcc_Nslip , lattice_bcc_Nslip / ) )
2009-01-20 00:40:58 +05:30
2009-10-21 18:40:12 +05:30
!*** slip--twin interactions for BCC structures (2) ***
2009-01-20 00:40:58 +05:30
! MISSING: not implemented yet
2009-10-21 18:40:12 +05:30
integer ( pInt ) , target , dimension ( lattice_bcc_Ntwin , lattice_bcc_Nslip ) :: lattice_bcc_interactionSlipTwin = &
2009-03-20 20:04:24 +05:30
reshape ( ( / &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
2009-08-26 12:58:43 +05:30
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
2009-10-21 18:40:12 +05:30
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 &
/ ) , ( / lattice_bcc_Ntwin , lattice_bcc_Nslip / ) )
!*** twin--slip interactions for BCC structures (2) ***
! MISSING: not implemented yet
integer ( pInt ) , target , dimension ( lattice_bcc_Nslip , lattice_bcc_Ntwin ) :: lattice_bcc_interactionTwinSlip = &
reshape ( ( / &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 &
/ ) , ( / lattice_bcc_Nslip , lattice_bcc_Ntwin / ) )
!*** twin-twin interactions for BCC structures (2) ***
! MISSING: not implemented yet
integer ( pInt ) , target , dimension ( lattice_bcc_Ntwin , lattice_bcc_Ntwin ) :: lattice_bcc_interactionTwinTwin = &
reshape ( ( / &
2009-08-26 12:58:43 +05:30
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 &
2009-10-21 18:40:12 +05:30
/ ) , ( / lattice_bcc_Ntwin , lattice_bcc_Ntwin / ) )
2009-03-20 20:04:24 +05:30
!============================== hex (3+) =================================
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter , dimension ( lattice_maxNslipFamily ) :: lattice_hex_NslipSystem = ( / 3 , 3 , 6 , 12 / )
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_Ntwin = 24 ! sum(lattice_hex_NtwinSystem)
2009-03-20 20:04:24 +05:30
integer ( pInt ) :: lattice_hex_Nstructure = 0_pInt
2011-02-15 17:51:54 +05:30
!* sorted by A. Alankar & P. Eisenlohr
2009-03-20 20:04:24 +05:30
real ( pReal ) , dimension ( 4 + 4 , lattice_hex_Nslip ) , parameter :: lattice_hex_systemSlip = &
reshape ( ( / &
! Basal systems <1120>{0001} (independent of c/a-ratio, Bravais notation (4 coordinate base))
2010-10-01 17:48:49 +05:30
2 , - 1 , - 1 , 0 , 0 , 0 , 0 , 1 , &
- 1 , 2 , - 1 , 0 , 0 , 0 , 0 , 1 , &
2011-02-15 17:51:54 +05:30
- 1 , - 1 , 2 , 0 , 0 , 0 , 0 , 1 , &
2009-03-20 20:04:24 +05:30
! 1st type prismatic systems <1120>{1010} (independent of c/a-ratio)
2011-02-15 17:51:54 +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 , &
! 1st type 1st order pyramidal systems <1120>{1011} -- plane normals depend on the c/a-ratio
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 , &
2009-03-20 20:04:24 +05:30
! pyramidal system: c+a slip <2113>{1011} -- plane normals depend on the c/a-ratio
2011-02-15 17:51:54 +05:30
- 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 , &
2011-02-15 17:59:01 +05:30
2 , - 1 , - 1 , 3 , 1 , 0 , - 1 , 1 &
2009-03-20 20:04:24 +05:30
/ ) , ( / 4 + 4 , lattice_hex_Nslip / ) )
real ( pReal ) , dimension ( 4 + 4 , lattice_hex_Ntwin ) , parameter :: lattice_hex_systemTwin = &
reshape ( ( / &
2009-10-20 21:43:25 +05:30
0 , 1 , - 1 , 1 , 0 , - 1 , 1 , 2 , & ! <-10.1>{10.2} shear = (3-(c/a)^2)/(sqrt(3) c/a)
2009-05-19 10:53:29 +05:30
- 1 , 1 , 0 , 1 , 1 , - 1 , 0 , 2 , &
2009-10-20 21:43:25 +05:30
- 1 , 0 , 1 , 1 , 1 , 0 , - 1 , 2 , & !!
2009-03-20 20:04:24 +05:30
0 , - 1 , 1 , 1 , 0 , 1 , - 1 , 2 , &
1 , - 1 , 0 , 1 , - 1 , 1 , 0 , 2 , &
1 , 0 , - 1 , 1 , - 1 , 0 , 1 , 2 , &
2009-10-20 21:43:25 +05:30
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 , & !!
2009-03-20 20:04:24 +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 , &
2009-05-19 10:53:29 +05:30
1 , - 2 , 1 , - 3 , 1 , - 2 , 1 , 2 , &
2009-10-20 21:43:25 +05:30
- 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 , & !!
2009-03-20 20:04:24 +05:30
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 , &
2009-10-20 21:43:25 +05:30
1 , 0 , - 1 , - 2 , 1 , 0 , - 1 , 1 , & !! <10.-2>{10.1} shear = (4(c/a)^2-9)/(4 sqrt(3) c/a)
2009-06-09 14:12:02 +05:30
- 1 , 0 , 1 , - 2 , - 1 , 0 , 1 , 1 , &
2009-07-22 21:37:19 +05:30
0 , 1 , - 1 , - 2 , 0 , 1 , - 1 , 1 , &
0 , - 1 , 1 , - 2 , 0 , - 1 , 1 , 1 , &
1 , - 1 , 0 , - 2 , 1 , - 1 , 0 , 1 , &
2009-03-20 20:04:24 +05:30
- 1 , 1 , 0 , - 2 , - 1 , 1 , 0 , 1 &
/ ) , ( / 4 + 4 , lattice_hex_Ntwin / ) ) !* Sort? Numbering of twin system follows Prof. Tom Bieler's scheme (to be consistent with his work); but numbering in data was restarted from 1 &
2009-10-20 21:43:25 +05:30
integer ( pInt ) , dimension ( lattice_hex_Ntwin ) , parameter :: lattice_hex_shearTwin = & ! indicator to formula further below
2009-03-20 20:04:24 +05:30
reshape ( ( / &
2009-10-20 21:43:25 +05:30
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 &
2009-03-20 20:04:24 +05:30
/ ) , ( / lattice_hex_Ntwin / ) )
2009-05-19 10:53:29 +05:30
!* four different interaction type matrix
2009-07-22 21:37:19 +05:30
!* 1. slip-slip interaction - 20 types
!* 2. slip-twin interaction - 16 types
!* 3. twin-twin interaction - 20 types
!* 4. twin-slip interaction - 16 types
2009-05-19 10:53:29 +05:30
2009-03-20 20:04:24 +05:30
integer ( pInt ) , target , dimension ( lattice_hex_Nslip , lattice_hex_Nslip ) :: lattice_hex_interactionSlipSlip = &
reshape ( ( / &
2009-10-21 18:40:12 +05:30
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 , &
!
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 , &
!
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 , &
!
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 &
2009-03-20 20:04:24 +05:30
/ ) , ( / lattice_hex_Nslip , lattice_hex_Nslip / ) )
2009-05-19 10:53:29 +05:30
!* isotropic interaction at the moment
2009-10-21 18:40:12 +05:30
integer ( pInt ) , target , dimension ( lattice_hex_Ntwin , lattice_hex_Nslip ) :: lattice_hex_interactionSlipTwin = &
2009-03-20 20:04:24 +05:30
reshape ( ( / &
2009-10-21 18:40:12 +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 &
/ ) , ( / 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 , &
!
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 , &
!
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 , &
!
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 &
2009-03-20 20:04:24 +05:30
/ ) , ( / lattice_hex_Nslip , lattice_hex_Ntwin / ) )
integer ( pInt ) , target , dimension ( lattice_hex_Ntwin , lattice_hex_Ntwin ) :: lattice_hex_interactionTwinTwin = &
reshape ( ( / &
2009-10-21 18:40:12 +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 , &
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 , &
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 &
2009-03-20 20:04:24 +05:30
/ ) , ( / lattice_hex_Ntwin , lattice_hex_Ntwin / ) )
2009-01-20 00:40:58 +05:30
CONTAINS
!****************************************
2009-03-20 20:04:24 +05:30
!* - lattice_init
!* - lattice_initializeStructure
2009-01-20 00:40:58 +05:30
!****************************************
2010-11-03 20:28:11 +05:30
pure function lattice_symmetryType ( structID )
!**************************************
!* maps structure to symmetry type *
!* fcc(1) and bcc(2) are cubic(1) *
!* hex(3+) is hexagonal(2) *
!**************************************
implicit none
integer ( pInt ) , intent ( in ) :: structID
integer ( pInt ) lattice_symmetryType
select case ( structID )
case ( 1 , 2 )
lattice_symmetryType = 1_pInt
case ( 3 : )
lattice_symmetryType = 2_pInt
case default
lattice_symmetryType = 0_pInt
end select
return
end function
2009-01-20 00:40:58 +05:30
subroutine lattice_init ( )
!**************************************
!* Module initialization *
!**************************************
2009-07-22 21:37:19 +05:30
use IO , only : IO_open_file , IO_countSections , IO_countTagInPart , IO_error
use material , only : material_configfile , material_partPhase
2011-03-21 16:01:17 +05:30
use debug , only : debug_verbosity
2009-07-22 21:37:19 +05:30
implicit none
2009-03-20 20:04:24 +05:30
2009-07-22 21:37:19 +05:30
integer ( pInt ) , parameter :: fileunit = 200
2011-04-13 19:46:22 +05:30
integer ( pInt ) Nsections
2009-06-15 18:41:21 +05:30
openmp parallelization working again (at least for j2 and nonlocal constitutive model).
In order to keep it like that, please follow these simple rules:
DON'T use implicit array subscripts:
example: real, dimension(3,3) :: A,B
A(:,2) = B(:,1) <--- DON'T USE
A(1:3,2) = B(1:3,1) <--- BETTER USE
In many cases the use of explicit array subscripts is inevitable for parallelization. Additionally, it is an easy means to prevent memory leaks.
Enclose all write statements with the following:
!$OMP CRITICAL (write2out)
<your write statement>
!$OMP END CRITICAL (write2out)
Whenever you change something in the code and are not sure if it affects parallelization and leads to nonconforming behavior, please ask me and/or Franz to check this.
2011-03-17 16:16:17 +05:30
!$OMP CRITICAL (write2out)
2011-03-21 16:01:17 +05:30
write ( 6 , * )
write ( 6 , * ) '<<<+- lattice init -+>>>'
write ( 6 , * ) '$Id$'
write ( 6 , * )
openmp parallelization working again (at least for j2 and nonlocal constitutive model).
In order to keep it like that, please follow these simple rules:
DON'T use implicit array subscripts:
example: real, dimension(3,3) :: A,B
A(:,2) = B(:,1) <--- DON'T USE
A(1:3,2) = B(1:3,1) <--- BETTER USE
In many cases the use of explicit array subscripts is inevitable for parallelization. Additionally, it is an easy means to prevent memory leaks.
Enclose all write statements with the following:
!$OMP CRITICAL (write2out)
<your write statement>
!$OMP END CRITICAL (write2out)
Whenever you change something in the code and are not sure if it affects parallelization and leads to nonconforming behavior, please ask me and/or Franz to check this.
2011-03-17 16:16:17 +05:30
!$OMP END CRITICAL (write2out)
2009-07-22 21:37:19 +05:30
2010-02-18 13:59:57 +05:30
if ( . not . IO_open_file ( fileunit , material_configFile ) ) call IO_error ( 100 ) ! cannot open config file
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
! lattice_Nstructure = Nsections + 2_pInt ! most conservative assumption
2009-07-22 21:37:19 +05:30
close ( fileunit )
2011-03-21 16:01:17 +05:30
if ( debug_verbosity > 0 ) then
!$OMP CRITICAL (write2out)
write ( 6 , '(a16,x,i5)' ) '# phases:' , Nsections
write ( 6 , '(a16,x,i5)' ) '# structures:' , lattice_Nstructure
write ( 6 , * )
!$OMP END CRITICAL (write2out)
endif
2009-10-16 01:32:52 +05:30
2009-08-26 12:58:43 +05:30
allocate ( lattice_Sslip ( 3 , 3 , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_Sslip = 0.0_pReal
2009-07-22 21:37:19 +05:30
allocate ( lattice_Sslip_v ( 6 , 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
allocate ( lattice_NslipSystem ( lattice_maxNslipFamily , lattice_Nstructure ) ) ; lattice_NslipSystem = 0.0_pReal
allocate ( lattice_NtwinSystem ( lattice_maxNtwinFamily , lattice_Nstructure ) ) ; lattice_NtwinSystem = 0.0_pReal
2009-10-21 18:40:12 +05:30
allocate ( lattice_interactionSlipSlip ( lattice_maxNslip , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_interactionSlipSlip = 0_pInt ! other:me
allocate ( lattice_interactionSlipTwin ( lattice_maxNtwin , lattice_maxNslip , lattice_Nstructure ) ) ; lattice_interactionSlipTwin = 0_pInt ! other:me
allocate ( lattice_interactionTwinSlip ( lattice_maxNslip , lattice_maxNtwin , lattice_Nstructure ) ) ; 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
end subroutine
2009-01-20 00:40:58 +05:30
2009-03-20 20:04:24 +05:30
function lattice_initializeStructure ( struct , CoverA )
2009-01-20 00:40:58 +05:30
!**************************************
2009-03-20 20:04:24 +05:30
!* Calculation of Schmid *
!* matrices, etc. *
2009-01-20 00:40:58 +05:30
!**************************************
2009-03-20 20:04:24 +05:30
use prec , only : pReal , pInt
use math
2009-10-16 01:32:52 +05:30
use IO , only : IO_error
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 , &
sn = 0.0_pReal , &
st = 0.0_pReal
real ( pReal ) , dimension ( 3 , lattice_maxNtwin ) :: td = 0.0_pReal , &
tn = 0.0_pReal , &
tt = 0.0_pReal
real ( pReal ) , dimension ( lattice_maxNtwin ) :: ts = 0.0_pReal
real ( pReal ) , dimension ( 3 ) :: hex_d = 0.0_pReal , &
hex_n = 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
2009-03-20 20:04:24 +05:30
integer ( pInt ) :: i , myNslip , myNtwin , myStructure = 0_pInt
2009-07-22 21:37:19 +05:30
logical :: processMe
2009-03-20 20:04:24 +05:30
integer ( pInt ) lattice_initializeStructure
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 .
2009-08-26 12:58:43 +05:30
do i = 1 , myNslip ! calculate slip system vectors
2011-02-25 14:55:53 +05:30
sd ( : , i ) = lattice_fcc_systemSlip ( 1 : 3 , i ) / sqrt ( math_mul3x3 ( lattice_fcc_systemSlip ( 1 : 3 , i ) , lattice_fcc_systemSlip ( 1 : 3 , i ) ) )
sn ( : , i ) = lattice_fcc_systemSlip ( 4 : 6 , i ) / sqrt ( math_mul3x3 ( lattice_fcc_systemSlip ( 4 : 6 , i ) , lattice_fcc_systemSlip ( 4 : 6 , i ) ) )
2009-07-14 16:50:35 +05:30
st ( : , i ) = math_vectorproduct ( sd ( : , i ) , sn ( : , i ) )
2009-03-20 20:04:24 +05:30
enddo
2009-08-26 12:58:43 +05:30
do i = 1 , myNtwin ! calculate twin system vectors and (assign) shears
2011-02-25 14:55:53 +05:30
td ( : , i ) = lattice_fcc_systemTwin ( 1 : 3 , i ) / sqrt ( math_mul3x3 ( lattice_fcc_systemTwin ( 1 : 3 , i ) , lattice_fcc_systemTwin ( 1 : 3 , i ) ) )
tn ( : , i ) = lattice_fcc_systemTwin ( 4 : 6 , i ) / sqrt ( math_mul3x3 ( lattice_fcc_systemTwin ( 4 : 6 , i ) , lattice_fcc_systemTwin ( 4 : 6 , i ) ) )
2009-07-14 16:50:35 +05:30
tt ( : , i ) = math_vectorproduct ( td ( : , i ) , tn ( : , i ) )
2009-03-20 20:04:24 +05:30
ts ( i ) = lattice_fcc_shearTwin ( i )
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 .
2009-08-26 12:58:43 +05:30
do i = 1 , myNslip ! calculate slip system vectors
2011-02-25 14:55:53 +05:30
sd ( : , i ) = lattice_bcc_systemSlip ( 1 : 3 , i ) / sqrt ( math_mul3x3 ( lattice_bcc_systemSlip ( 1 : 3 , i ) , lattice_bcc_systemSlip ( 1 : 3 , i ) ) )
sn ( : , i ) = lattice_bcc_systemSlip ( 4 : 6 , i ) / sqrt ( math_mul3x3 ( lattice_bcc_systemSlip ( 4 : 6 , i ) , lattice_bcc_systemSlip ( 4 : 6 , i ) ) )
2009-07-14 16:50:35 +05:30
st ( : , i ) = math_vectorproduct ( sd ( : , i ) , sn ( : , i ) )
2009-03-20 20:04:24 +05:30
enddo
2009-08-26 12:58:43 +05:30
do i = 1 , myNtwin ! calculate twin system vectors and (assign) shears
2011-02-25 14:55:53 +05:30
td ( : , i ) = lattice_bcc_systemTwin ( 1 : 3 , i ) / sqrt ( math_mul3x3 ( lattice_bcc_systemTwin ( 1 : 3 , i ) , lattice_bcc_systemTwin ( 1 : 3 , i ) ) )
tn ( : , i ) = lattice_bcc_systemTwin ( 4 : 6 , i ) / sqrt ( math_mul3x3 ( lattice_bcc_systemTwin ( 4 : 6 , i ) , lattice_bcc_systemTwin ( 4 : 6 , i ) ) )
2009-07-14 16:50:35 +05:30
tt ( : , i ) = math_vectorproduct ( td ( : , i ) , tn ( : , i ) )
2009-03-20 20:04:24 +05:30
ts ( i ) = lattice_bcc_shearTwin ( i )
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 .
! converting from 4 axes coordinate system (a1=a2=a3=c) to ortho-hexgonal system (a, b, c)
do i = 1 , myNslip
2009-07-22 21:37:19 +05:30
hex_d ( 1 ) = lattice_hex_systemSlip ( 1 , i ) * 1.5_pReal ! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(c/a)]
2011-02-25 14:55:53 +05:30
hex_d ( 2 ) = ( lattice_hex_systemSlip ( 1 , i ) + 2.0_pReal * lattice_hex_systemSlip ( 2 , i ) ) * ( 0.5_pReal * sqrt ( 3.0_pReal ) )
2009-07-22 21:37:19 +05:30
hex_d ( 3 ) = lattice_hex_systemSlip ( 4 , i ) * CoverA
hex_n ( 1 ) = lattice_hex_systemSlip ( 5 , i ) ! plane (hkil)->(h (h+2k)/sqrt(3) l/(c/a))
2011-02-25 14:55:53 +05:30
hex_n ( 2 ) = ( lattice_hex_systemSlip ( 5 , i ) + 2.0_pReal * lattice_hex_systemSlip ( 6 , i ) ) / sqrt ( 3.0_pReal )
2009-07-22 21:37:19 +05:30
hex_n ( 3 ) = lattice_hex_systemSlip ( 8 , i ) / CoverA
2009-03-20 20:04:24 +05:30
2011-02-25 14:55:53 +05:30
sd ( : , i ) = hex_d / sqrt ( math_mul3x3 ( hex_d , hex_d ) )
sn ( : , i ) = hex_n / sqrt ( math_mul3x3 ( hex_n , hex_n ) )
2009-07-14 16:50:35 +05:30
st ( : , i ) = math_vectorproduct ( sd ( : , i ) , sn ( : , i ) )
2009-03-20 20:04:24 +05:30
enddo
do i = 1 , myNtwin
2009-07-22 21:37:19 +05:30
hex_d ( 1 ) = lattice_hex_systemTwin ( 1 , i ) * 1.5_pReal
2011-02-25 14:55:53 +05:30
hex_d ( 2 ) = ( lattice_hex_systemTwin ( 1 , i ) + 2.0_pReal * lattice_hex_systemTwin ( 2 , i ) ) * ( 0.5_pReal * sqrt ( 3.0_pReal ) )
2009-07-22 21:37:19 +05:30
hex_d ( 3 ) = lattice_hex_systemTwin ( 4 , i ) * CoverA
2009-10-20 21:43:25 +05:30
hex_n ( 1 ) = lattice_hex_systemTwin ( 5 , i )
2011-02-25 14:55:53 +05:30
hex_n ( 2 ) = ( lattice_hex_systemTwin ( 5 , i ) + 2.0_pReal * lattice_hex_systemTwin ( 6 , i ) ) / sqrt ( 3.0_pReal )
2009-07-22 21:37:19 +05:30
hex_n ( 3 ) = lattice_hex_systemTwin ( 8 , i ) / CoverA
2009-03-20 20:04:24 +05:30
2011-02-25 14:55:53 +05:30
td ( : , i ) = hex_d / sqrt ( math_mul3x3 ( hex_d , hex_d ) )
tn ( : , i ) = hex_n / sqrt ( math_mul3x3 ( hex_n , hex_n ) )
2009-07-14 16:50:35 +05:30
tt ( : , i ) = math_vectorproduct ( td ( : , i ) , tn ( : , i ) )
2009-10-20 21:43:25 +05:30
select case ( lattice_hex_shearTwin ( i ) ) ! from Christian & Mahajan 1995 p.29
case ( 1 ) ! {10.2}<-10.1>
2011-02-25 14:55:53 +05:30
ts ( i ) = ( 3.0_pReal - CoverA * CoverA ) / sqrt ( 3.0_pReal ) / CoverA
2009-10-20 21:43:25 +05:30
case ( 2 ) ! {11.2}<11.-3>
ts ( i ) = 2.0_pReal * ( CoverA * CoverA - 2.0_pReal ) / 3.0_pReal / CoverA
case ( 3 ) ! {11.1}<-1-1.6>
ts ( i ) = 1.0_pReal / CoverA
case ( 4 ) ! {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 ) &
call IO_error ( 666 , 0 , 0 , 0 , 'structure index too large' ) ! check for memory leakage
do i = 1 , myNslip ! store slip system vectors and Schmid matrix for my structure
2009-03-20 20:04:24 +05:30
lattice_sd ( : , i , myStructure ) = sd ( : , i )
lattice_st ( : , i , myStructure ) = st ( : , i )
lattice_sn ( : , i , myStructure ) = sn ( : , i )
lattice_Sslip ( : , : , i , myStructure ) = math_tensorproduct ( sd ( : , i ) , sn ( : , i ) )
lattice_Sslip_v ( : , i , myStructure ) = math_Mandel33to6 ( math_symmetric3x3 ( lattice_Sslip ( : , : , i , myStructure ) ) )
2009-01-20 00:40:58 +05:30
enddo
2009-10-16 01:32:52 +05:30
do i = 1 , myNtwin ! store twin system vectors and Schmid plus rotation matrix for my structure
2009-03-20 20:04:24 +05:30
lattice_td ( : , i , myStructure ) = td ( : , i )
lattice_tt ( : , i , myStructure ) = tt ( : , i )
lattice_tn ( : , i , myStructure ) = tn ( : , i )
lattice_Stwin ( : , : , i , myStructure ) = math_tensorproduct ( td ( : , i ) , tn ( : , i ) )
lattice_Stwin_v ( : , i , myStructure ) = math_Mandel33to6 ( math_symmetric3x3 ( lattice_Stwin ( : , : , i , myStructure ) ) )
2010-05-06 19:37:21 +05:30
lattice_Qtwin ( : , : , i , myStructure ) = math_AxisAngleToR ( tn ( : , i ) , 18 0.0_pReal * inRad )
2009-03-20 20:04:24 +05:30
lattice_shearTwin ( i , myStructure ) = ts ( i )
2009-01-20 00:40:58 +05:30
enddo
2009-07-22 21:37:19 +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 )
2009-10-21 18:40:12 +05:30
lattice_interactionSlipTwin ( 1 : myNtwin , 1 : myNslip , myStructure ) = interactionSlipTwin ( 1 : myNtwin , 1 : myNslip )
lattice_interactionTwinSlip ( 1 : myNslip , 1 : myNtwin , myStructure ) = interactionTwinSlip ( 1 : myNslip , 1 : myNtwin )
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
2009-08-26 12:58:43 +05:30
lattice_initializeStructure = myStructure ! report my structure index back
2009-01-20 00:40:58 +05:30
2009-07-22 21:37:19 +05:30
end function
2009-01-20 00:40:58 +05:30
2009-03-20 20:04:24 +05:30
END MODULE