to transpose already when constructing the interaction matrix
This commit is contained in:
parent
ffdd3955a3
commit
1036c76ae0
171
src/lattice.f90
171
src/lattice.f90
|
@ -546,7 +546,6 @@ subroutine lattice_init
|
|||
use config, only: &
|
||||
config_phase
|
||||
|
||||
implicit none
|
||||
integer :: Nphases
|
||||
character(len=65536) :: &
|
||||
tag = ''
|
||||
|
@ -664,7 +663,6 @@ subroutine lattice_initializeStructure(myPhase,CoverA)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: myPhase
|
||||
real(pReal), intent(in) :: &
|
||||
CoverA
|
||||
|
@ -756,7 +754,6 @@ end subroutine lattice_initializeStructure
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function lattice_symmetrizeC66(struct,C66)
|
||||
|
||||
implicit none
|
||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
||||
real(pReal), dimension(6,6), intent(in) :: C66
|
||||
real(pReal), dimension(6,6) :: lattice_symmetrizeC66
|
||||
|
@ -828,7 +825,6 @@ pure function lattice_symmetrizeC66(struct,C66)
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function lattice_symmetrize33(struct,T33)
|
||||
|
||||
implicit none
|
||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
||||
real(pReal), dimension(3,3), intent(in) :: T33
|
||||
real(pReal), dimension(3,3) :: lattice_symmetrize33
|
||||
|
@ -863,7 +859,6 @@ logical pure function lattice_qInSST(Q, struct)
|
|||
use math, only: &
|
||||
math_qToRodrig
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(4), intent(in) :: Q ! orientation
|
||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct ! lattice structure
|
||||
real(pReal), dimension(3) :: Rodrig ! Rodrigues vector of Q
|
||||
|
@ -899,12 +894,11 @@ pure function lattice_qDisorientation(Q1, Q2, struct)
|
|||
math_qMul, &
|
||||
math_qConj
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(4) :: lattice_qDisorientation
|
||||
real(pReal), dimension(4), intent(in) :: &
|
||||
Q1, & ! 1st orientation
|
||||
Q2 ! 2nd orientation
|
||||
integer(kind(LATTICE_undefined_ID)), optional, intent(in) :: & ! if given, symmetries between the two orientation will be considered
|
||||
Q1, & !< 1st orientation
|
||||
Q2 !< 2nd orientation
|
||||
integer(kind(LATTICE_undefined_ID)), optional, intent(in) :: & !< if given, symmetries between the two orientation will be considered
|
||||
struct
|
||||
|
||||
real(pReal), dimension(4) :: dQ,dQsymA,mis
|
||||
|
@ -1007,7 +1001,6 @@ function lattice_characteristicShear_Twin(Ntwin,structure,CoverA) result(charact
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -1093,7 +1086,6 @@ function lattice_C66_twin(Ntwin,C66,structure,CoverA)
|
|||
math_66toSym3333, &
|
||||
math_rotate_forward3333
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), dimension(6,6), intent(in) :: C66 !< unrotated parent stiffness matrix
|
||||
|
@ -1145,7 +1137,6 @@ function lattice_C66_trans(Ntrans,C_parent66,structure_target, &
|
|||
math_66toSym3333, &
|
||||
math_rotate_forward3333
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
||||
character(len=*), intent(in) :: structure_target !< lattice structure
|
||||
real(pReal), dimension(6,6), intent(in) :: C_parent66
|
||||
|
@ -1212,7 +1203,7 @@ function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSc
|
|||
math_outer, &
|
||||
math_cross, &
|
||||
math_axisAngleToR
|
||||
implicit none
|
||||
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
real(pReal), dimension(:), intent(in) :: nonSchmidCoefficients !< non-Schmid coefficients for projections
|
||||
integer, intent(in) :: sense !< sense (-1,+1)
|
||||
|
@ -1258,7 +1249,6 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-slip interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
|
@ -1269,11 +1259,11 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_FCC_NSLIP,LATTICE_FCC_NSLIP), parameter :: &
|
||||
FCC_INTERACTIONSLIPSLIP = reshape( [&
|
||||
1, 2, 2, 4, 6, 5, 3, 5, 5, 4, 5, 6, 9,10, 9,10,11,12, &
|
||||
2, 1, 2, 6, 4, 5, 5, 4, 6, 5, 3, 5, 9,10,11,12, 9,10, &
|
||||
2, 2, 1, 5, 5, 3, 5, 6, 4, 6, 5, 4, 11,12, 9,10, 9,10, &
|
||||
4, 6, 5, 1, 2, 2, 4, 5, 6, 3, 5, 5, 9,10,10, 9,12,11, &
|
||||
6, 4, 5, 2, 1, 2, 5, 3, 5, 5, 4, 6, 9,10,12,11,10, 9, &
|
||||
1, 2, 2, 4, 6, 5, 3, 5, 5, 4, 5, 6, 9,10, 9,10,11,12, & ! -----> acting
|
||||
2, 1, 2, 6, 4, 5, 5, 4, 6, 5, 3, 5, 9,10,11,12, 9,10, & ! |
|
||||
2, 2, 1, 5, 5, 3, 5, 6, 4, 6, 5, 4, 11,12, 9,10, 9,10, & ! |
|
||||
4, 6, 5, 1, 2, 2, 4, 5, 6, 3, 5, 5, 9,10,10, 9,12,11, & ! v
|
||||
6, 4, 5, 2, 1, 2, 5, 3, 5, 5, 4, 6, 9,10,12,11,10, 9, & ! reacting
|
||||
5, 5, 3, 2, 2, 1, 6, 5, 4, 5, 6, 4, 11,12,10, 9,10, 9, &
|
||||
3, 5, 5, 4, 5, 6, 1, 2, 2, 4, 6, 5, 10, 9,10, 9,11,12, &
|
||||
5, 4, 6, 5, 3, 5, 2, 1, 2, 6, 4, 5, 10, 9,12,11, 9,10, &
|
||||
|
@ -1304,11 +1294,11 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_BCC_NSLIP,LATTICE_BCC_NSLIP), parameter :: &
|
||||
BCC_INTERACTIONSLIPSLIP = reshape( [&
|
||||
1,2,6,6,5,4,4,3,4,3,5,4, 6,6,4,3,3,4,6,6,4,3,6,6, &
|
||||
2,1,6,6,4,3,5,4,5,4,4,3, 6,6,3,4,4,3,6,6,3,4,6,6, &
|
||||
6,6,1,2,4,5,3,4,4,5,3,4, 4,3,6,6,6,6,3,4,6,6,4,3, &
|
||||
6,6,2,1,3,4,4,5,3,4,4,5, 3,4,6,6,6,6,4,3,6,6,3,4, &
|
||||
5,4,4,3,1,2,6,6,3,4,5,4, 3,6,4,6,6,4,6,3,4,6,3,6, &
|
||||
1,2,6,6,5,4,4,3,4,3,5,4, 6,6,4,3,3,4,6,6,4,3,6,6, & ! -----> acting
|
||||
2,1,6,6,4,3,5,4,5,4,4,3, 6,6,3,4,4,3,6,6,3,4,6,6, & ! |
|
||||
6,6,1,2,4,5,3,4,4,5,3,4, 4,3,6,6,6,6,3,4,6,6,4,3, & ! |
|
||||
6,6,2,1,3,4,4,5,3,4,4,5, 3,4,6,6,6,6,4,3,6,6,3,4, & ! v
|
||||
5,4,4,3,1,2,6,6,3,4,5,4, 3,6,4,6,6,4,6,3,4,6,3,6, & ! reacting
|
||||
4,3,5,4,2,1,6,6,4,5,4,3, 4,6,3,6,6,3,6,4,3,6,4,6, &
|
||||
4,5,3,4,6,6,1,2,5,4,3,4, 6,3,6,4,4,6,3,6,6,4,6,3, &
|
||||
3,4,4,5,6,6,2,1,4,3,4,5, 6,4,6,3,3,6,4,6,6,3,6,4, &
|
||||
|
@ -1339,11 +1329,11 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_HEX_NSLIP,LATTICE_HEX_NSLIP), parameter :: &
|
||||
HEX_INTERACTIONSLIPSLIP = reshape( [&
|
||||
1, 2, 2, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, &
|
||||
2, 1, 2, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, &
|
||||
2, 2, 1, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, &
|
||||
!
|
||||
6, 6, 6, 4, 5, 5, 8, 8, 8, 14,14,14,14,14,14, 22,22,22,22,22,22,22,22,22,22,22,22, 32,32,32,32,32,32, &
|
||||
1, 2, 2, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, & ! -----> acting
|
||||
2, 1, 2, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, & ! |
|
||||
2, 2, 1, 3, 3, 3, 7, 7, 7, 13,13,13,13,13,13, 21,21,21,21,21,21,21,21,21,21,21,21, 31,31,31,31,31,31, & ! |
|
||||
! ! v
|
||||
6, 6, 6, 4, 5, 5, 8, 8, 8, 14,14,14,14,14,14, 22,22,22,22,22,22,22,22,22,22,22,22, 32,32,32,32,32,32, & ! reacting
|
||||
6, 6, 6, 5, 4, 5, 8, 8, 8, 14,14,14,14,14,14, 22,22,22,22,22,22,22,22,22,22,22,22, 32,32,32,32,32,32, &
|
||||
6, 6, 6, 5, 5, 4, 8, 8, 8, 14,14,14,14,14,14, 22,22,22,22,22,22,22,22,22,22,22,22, 32,32,32,32,32,32, &
|
||||
!
|
||||
|
@ -1381,11 +1371,11 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_BCT_NSLIP,LATTICE_BCT_NSLIP), parameter :: &
|
||||
BCT_INTERACTIONSLIPSLIP = reshape( [&
|
||||
1, 2, 3, 3, 7, 7, 13, 13, 13, 13, 21, 21, 31, 31, 31, 31, 43, 43, 57, 57, 73, 73, 73, 73, 91, 91, 91, 91, 91, 91, 91, 91, 111, 111, 111, 111, 133,133,133,133,133,133,133,133, 157,157,157,157,157,157,157,157, &
|
||||
2, 1, 3, 3, 7, 7, 13, 13, 13, 13, 21, 21, 31, 31, 31, 31, 43, 43, 57, 57, 73, 73, 73, 73, 91, 91, 91, 91, 91, 91, 91, 91, 111, 111, 111, 111, 133,133,133,133,133,133,133,133, 157,157,157,157,157,157,157,157, &
|
||||
!
|
||||
6, 6, 4, 5, 8, 8, 14, 14, 14, 14, 22, 22, 32, 32, 32, 32, 44, 44, 58, 58, 74, 74, 74, 74, 92, 92, 92, 92, 92, 92, 92, 92, 112, 112, 112, 112, 134,134,134,134,134,134,134,134, 158,158,158,158,158,158,158,158, &
|
||||
6, 6, 5, 4, 8, 8, 14, 14, 14, 14, 22, 22, 32, 32, 32, 32, 44, 44, 58, 58, 74, 74, 74, 74, 92, 92, 92, 92, 92, 92, 92, 92, 112, 112, 112, 112, 134,134,134,134,134,134,134,134, 158,158,158,158,158,158,158,158, &
|
||||
1, 2, 3, 3, 7, 7, 13, 13, 13, 13, 21, 21, 31, 31, 31, 31, 43, 43, 57, 57, 73, 73, 73, 73, 91, 91, 91, 91, 91, 91, 91, 91, 111, 111, 111, 111, 133,133,133,133,133,133,133,133, 157,157,157,157,157,157,157,157, & ! -----> acting
|
||||
2, 1, 3, 3, 7, 7, 13, 13, 13, 13, 21, 21, 31, 31, 31, 31, 43, 43, 57, 57, 73, 73, 73, 73, 91, 91, 91, 91, 91, 91, 91, 91, 111, 111, 111, 111, 133,133,133,133,133,133,133,133, 157,157,157,157,157,157,157,157, & ! |
|
||||
! |
|
||||
6, 6, 4, 5, 8, 8, 14, 14, 14, 14, 22, 22, 32, 32, 32, 32, 44, 44, 58, 58, 74, 74, 74, 74, 92, 92, 92, 92, 92, 92, 92, 92, 112, 112, 112, 112, 134,134,134,134,134,134,134,134, 158,158,158,158,158,158,158,158, & ! v
|
||||
6, 6, 5, 4, 8, 8, 14, 14, 14, 14, 22, 22, 32, 32, 32, 32, 44, 44, 58, 58, 74, 74, 74, 74, 92, 92, 92, 92, 92, 92, 92, 92, 112, 112, 112, 112, 134,134,134,134,134,134,134,134, 158,158,158,158,158,158,158,158, & ! reacting
|
||||
!
|
||||
12, 12, 11, 11, 9, 10, 15, 15, 15, 15, 23, 23, 33, 33, 33, 33, 45, 45, 59, 59, 75, 75, 75, 75, 93, 93, 93, 93, 93, 93, 93, 93, 113, 113, 113, 113, 135,135,135,135,135,135,135,135, 159,159,159,159,159,159,159,159, &
|
||||
12, 12, 11, 11, 10, 9, 15, 15, 15, 15, 23, 23, 33, 33, 33, 33, 45, 45, 59, 59, 75, 75, 75, 75, 93, 93, 93, 93, 93, 93, 93, 93, 113, 113, 113, 113, 135,135,135,135,135,135,135,135, 159,159,159,159,159,159,159,159, &
|
||||
|
@ -1481,7 +1471,6 @@ function lattice_interaction_TwinByTwin(Ntwin,interactionValues,structure) resul
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
|
@ -1492,11 +1481,11 @@ function lattice_interaction_TwinByTwin(Ntwin,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_FCC_NTWIN,LATTICE_FCC_NTWIN), parameter :: &
|
||||
FCC_INTERACTIONTWINTWIN = reshape( [&
|
||||
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, &
|
||||
1,1,1,2,2,2,2,2,2,2,2,2, & ! -----> acting
|
||||
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
|
||||
2,2,2,1,1,1,2,2,2,2,2,2, & ! reacting
|
||||
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, &
|
||||
|
@ -1508,11 +1497,11 @@ function lattice_interaction_TwinByTwin(Ntwin,interactionValues,structure) resul
|
|||
|
||||
integer, dimension(LATTICE_BCC_NTWIN,LATTICE_BCC_NTWIN), parameter :: &
|
||||
BCC_INTERACTIONTWINTWIN = reshape( [&
|
||||
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, &
|
||||
1,3,3,3,3,3,3,2,3,3,2,3, & ! -----> acting
|
||||
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
|
||||
3,3,3,2,1,3,3,3,3,2,3,3, & ! reacting
|
||||
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, &
|
||||
|
@ -1526,11 +1515,11 @@ function lattice_interaction_TwinByTwin(Ntwin,interactionValues,structure) resul
|
|||
!< 3: other interaction
|
||||
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NTWIN), parameter :: &
|
||||
HEX_INTERACTIONTWINTWIN = reshape( [&
|
||||
1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
2, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
2, 2, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
2, 2, 2, 1, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
2, 2, 2, 2, 1, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, & ! -----> acting
|
||||
2, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, & ! |
|
||||
2, 2, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, & ! |
|
||||
2, 2, 2, 1, 2, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, & ! v
|
||||
2, 2, 2, 2, 1, 2, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, & ! reacting
|
||||
2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 13,13,13,13,13,13, &
|
||||
!
|
||||
6, 6, 6, 6, 6, 6, 4, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 14,14,14,14,14,14, &
|
||||
|
@ -1585,7 +1574,6 @@ function lattice_interaction_TransByTrans(Ntrans,interactionValues,structure) re
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntrans !< number of active trans systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for trans-trans interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure (parent crystal)
|
||||
|
@ -1596,11 +1584,11 @@ function lattice_interaction_TransByTrans(Ntrans,interactionValues,structure) re
|
|||
|
||||
integer, dimension(LATTICE_FCC_NTRANS,LATTICE_FCC_NTRANS), parameter :: &
|
||||
FCC_INTERACTIONTRANSTRANS = reshape( [&
|
||||
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, &
|
||||
1,1,1,2,2,2,2,2,2,2,2,2, & ! -----> acting
|
||||
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
|
||||
2,2,2,1,1,1,2,2,2,2,2,2, & ! reacting
|
||||
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, &
|
||||
|
@ -1633,12 +1621,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
||||
Ntwin !< number of active twin systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-twin interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), dimension(sum(Ntwin),sum(Nslip)) :: interactionMatrix
|
||||
real(pReal), dimension(sum(Nslip),sum(Ntwin)) :: interactionMatrix
|
||||
|
||||
integer, dimension(:), allocatable :: NslipMax, &
|
||||
NtwinMax
|
||||
|
@ -1646,11 +1633,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
|||
|
||||
integer, dimension(LATTICE_FCC_NTWIN,LATTICE_FCC_NSLIP), parameter :: &
|
||||
FCC_INTERACTIONSLIPTWIN = reshape( [&
|
||||
1,1,1,3,3,3,2,2,2,3,3,3, & ! -----> twin
|
||||
1,1,1,3,3,3,2,2,2,3,3,3, & ! -----> twin (acting)
|
||||
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, &
|
||||
3,3,3,1,1,1,3,3,3,2,2,2, & ! v
|
||||
3,3,3,1,1,1,2,2,2,3,3,3, & ! slip (reacting)
|
||||
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, &
|
||||
|
@ -1671,11 +1658,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
|||
!< 3: other interaction
|
||||
integer, dimension(LATTICE_BCC_NTWIN,LATTICE_BCC_NSLIP), parameter :: &
|
||||
BCC_INTERACTIONSLIPTWIN = reshape( [&
|
||||
3,3,3,2,2,3,3,3,3,2,3,3, & ! -----> twin
|
||||
3,3,3,2,2,3,3,3,3,2,3,3, & ! -----> twin (acting)
|
||||
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, &
|
||||
2,3,3,3,3,3,3,2,3,3,2,3, & ! v
|
||||
2,3,3,3,3,3,3,2,3,3,2,3, & ! slip (reacting)
|
||||
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, &
|
||||
|
@ -1702,11 +1689,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
|||
!< 3: other interaction
|
||||
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NSLIP), parameter :: &
|
||||
HEX_INTERACTIONSLIPTWIN = reshape( [&
|
||||
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, & ! ----> twin (acting)
|
||||
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, & ! slip (reacting)
|
||||
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, &
|
||||
!
|
||||
|
@ -1763,7 +1750,7 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
|||
call IO_error(137,ext_msg='lattice_interaction_SlipByTwin: '//trim(structure))
|
||||
end select
|
||||
|
||||
interactionMatrix = buildInteraction(Ntwin,Nslip,NtwinMax,NslipMax,interactionValues,interactionTypes)
|
||||
interactionMatrix = buildInteraction(Nslip,Ntwin,NslipMax,NtwinMax,interactionValues,interactionTypes)
|
||||
|
||||
end function lattice_interaction_SlipByTwin
|
||||
|
||||
|
@ -1776,12 +1763,11 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
||||
Ntrans !< number of active trans systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-trans interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure (parent crystal)
|
||||
real(pReal), dimension(sum(Ntrans),sum(Nslip)) :: interactionMatrix
|
||||
real(pReal), dimension(sum(Nslip),sum(Ntrans)) :: interactionMatrix
|
||||
|
||||
integer, dimension(:), allocatable :: NslipMax, &
|
||||
NtransMax
|
||||
|
@ -1789,11 +1775,11 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
|||
|
||||
integer, dimension(LATTICE_FCC_NTRANS,LATTICE_FCC_NSLIP), parameter :: &
|
||||
FCC_INTERACTIONSLIPTRANS = reshape( [&
|
||||
1,1,1,3,3,3,2,2,2,3,3,3, & ! -----> trans
|
||||
1,1,1,3,3,3,2,2,2,3,3,3, & ! -----> trans (acting)
|
||||
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, &
|
||||
3,3,3,1,1,1,3,3,3,2,2,2, & ! v
|
||||
3,3,3,1,1,1,2,2,2,3,3,3, & ! slip (reacting)
|
||||
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, &
|
||||
|
@ -1822,7 +1808,7 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
|||
call IO_error(137,ext_msg='lattice_interaction_SlipByTrans: '//trim(structure))
|
||||
end select
|
||||
|
||||
interactionMatrix = buildInteraction(Ntrans,Nslip,NtransMax,NslipMax,interactionValues,interactionTypes)
|
||||
interactionMatrix = buildInteraction(Nslip,Ntrans,NslipMax,NtransMax,interactionValues,interactionTypes)
|
||||
|
||||
end function lattice_interaction_SlipByTrans
|
||||
|
||||
|
@ -1835,30 +1821,29 @@ function lattice_interaction_TwinBySlip(Ntwin,Nslip,interactionValues,structure)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntwin, & !< number of active twin systems per family
|
||||
Nslip !< number of active slip systems per family
|
||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), dimension(sum(Nslip),sum(Ntwin)) :: interactionMatrix
|
||||
real(pReal), dimension(sum(Ntwin),sum(Nslip)) :: interactionMatrix
|
||||
|
||||
integer, dimension(:), allocatable :: NtwinMax, &
|
||||
NslipMax
|
||||
integer, dimension(:,:), allocatable :: interactionTypes
|
||||
|
||||
integer, dimension(LATTICE_FCC_NSLIP,LATTICE_FCC_NTWIN), parameter :: &
|
||||
FCC_INTERACTIONTWINSLIP = 1 !< Twin-Slip interaction types for fcc
|
||||
FCC_INTERACTIONTWINSLIP = 1 !< Twin-slip interaction types for fcc
|
||||
|
||||
integer, dimension(LATTICE_BCC_NSLIP,LATTICE_BCC_NTWIN), parameter :: &
|
||||
BCC_INTERACTIONTWINSLIP = 1 !< Twin-slip interaction types for bcc
|
||||
|
||||
integer, dimension(LATTICE_HEX_NSLIP,LATTICE_HEX_NTWIN), parameter :: &
|
||||
HEX_INTERACTIONTWINSLIP = reshape( [&
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! ----> slip
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! ----> slip (acting)
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! |
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! |
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! v
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! twin
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, & ! twin (reacting)
|
||||
1, 1, 1, 5, 5, 5, 9, 9, 9, 13,13,13,13,13,13, 17,17,17,17,17,17,17,17,17,17,17,17, 21,21,21,21,21,21, &
|
||||
!
|
||||
2, 2, 2, 6, 6, 6, 10,10,10, 14,14,14,14,14,14, 18,18,18,18,18,18,18,18,18,18,18,18, 22,22,22,22,22,22, &
|
||||
|
@ -1881,7 +1866,7 @@ function lattice_interaction_TwinBySlip(Ntwin,Nslip,interactionValues,structure)
|
|||
4, 4, 4, 8, 8, 8, 12,12,12, 16,16,16,16,16,16, 20,20,20,20,20,20,20,20,20,20,20,20, 24,24,24,24,24,24, &
|
||||
4, 4, 4, 8, 8, 8, 12,12,12, 16,16,16,16,16,16, 20,20,20,20,20,20,20,20,20,20,20,20, 24,24,24,24,24,24, &
|
||||
4, 4, 4, 8, 8, 8, 12,12,12, 16,16,16,16,16,16, 20,20,20,20,20,20,20,20,20,20,20,20, 24,24,24,24,24,24 &
|
||||
],shape(HEX_INTERACTIONTWINSLIP)) !< Twin-twin interaction types for hex
|
||||
],shape(HEX_INTERACTIONTWINSLIP)) !< Twin-slip interaction types for hex
|
||||
|
||||
if (len_trim(structure) /= 3) &
|
||||
call IO_error(137,ext_msg='lattice_interaction_TwinBySlip: '//trim(structure))
|
||||
|
@ -1903,7 +1888,7 @@ function lattice_interaction_TwinBySlip(Ntwin,Nslip,interactionValues,structure)
|
|||
call IO_error(137,ext_msg='lattice_interaction_TwinBySlip: '//trim(structure))
|
||||
end select
|
||||
|
||||
interactionMatrix = buildInteraction(Nslip,Ntwin,NslipMax,NtwinMax,interactionValues,interactionTypes)
|
||||
interactionMatrix = buildInteraction(Ntwin,Nslip,NtwinMax,NslipMax,interactionValues,interactionTypes)
|
||||
|
||||
end function lattice_interaction_TwinBySlip
|
||||
|
||||
|
@ -1921,7 +1906,6 @@ function lattice_SchmidMatrix_slip(Nslip,structure,cOverA) result(SchmidMatrix)
|
|||
math_trace33, &
|
||||
math_outer
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA
|
||||
|
@ -1981,7 +1965,6 @@ function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) result(SchmidMatrix)
|
|||
math_trace33, &
|
||||
math_outer
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2033,7 +2016,6 @@ function lattice_SchmidMatrix_trans(Ntrans,structure_target,cOverA,a_bcc,a_fcc)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
character(len=*), intent(in) :: structure_target !< lattice structure
|
||||
|
@ -2064,7 +2046,6 @@ function lattice_SchmidMatrix_cleavage(Ncleavage,structure,cOverA) result(Schmid
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Ncleavage !< number of active cleavage systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2119,7 +2100,6 @@ end function lattice_SchmidMatrix_cleavage
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function lattice_slip_direction(Nslip,structure,cOverA) result(d)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2138,7 +2118,6 @@ end function lattice_slip_direction
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function lattice_slip_normal(Nslip,structure,cOverA) result(n)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2151,12 +2130,12 @@ function lattice_slip_normal(Nslip,structure,cOverA) result(n)
|
|||
|
||||
end function lattice_slip_normal
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Transverse direction of slip systems ( || t = b x n)
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function lattice_slip_transverse(Nslip,structure,cOverA) result(t)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2178,7 +2157,6 @@ function slipProjection_transverse(Nslip,structure,cOverA) result(projection)
|
|||
use math, only: &
|
||||
math_inner
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2204,7 +2182,6 @@ function slipProjection_direction(Nslip,structure,cOverA) result(projection)
|
|||
use math, only: &
|
||||
math_inner
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2230,7 +2207,6 @@ function coordinateSystem_slip(Nslip,structure,cOverA) result(coordinateSystem)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||
character(len=*), intent(in) :: structure !< lattice structure
|
||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||
|
@ -2272,19 +2248,18 @@ end function coordinateSystem_slip
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Populates reduced interaction matrix
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function buildInteraction(acting_used,reacting_used,acting_max,reacting_max,values,matrix)
|
||||
function buildInteraction(reacting_used,acting_used,reacting_max,acting_max,values,matrix)
|
||||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: &
|
||||
acting_used, & !< # of acting systems per family as specified in material.config
|
||||
reacting_used, & !< # of reacting systems per family as specified in material.config
|
||||
acting_max, & !< max # of acting systems per family for given lattice
|
||||
reacting_max !< max # of reacting systems per family for given lattice
|
||||
acting_used, & !< # of acting systems per family as specified in material.config
|
||||
reacting_max, & !< max # of reacting systems per family for given lattice
|
||||
acting_max !< max # of acting systems per family for given lattice
|
||||
real(pReal), dimension(:), intent(in) :: values !< interaction values
|
||||
integer, dimension(:,:), intent(in) :: matrix !< interaction types
|
||||
real(pReal), dimension(sum(acting_used),sum(reacting_used)) :: buildInteraction
|
||||
real(pReal), dimension(sum(reacting_used),sum(acting_used)) :: buildInteraction
|
||||
|
||||
integer :: &
|
||||
acting_family_index, acting_family, acting_system, &
|
||||
|
@ -2307,7 +2282,7 @@ function buildInteraction(acting_used,reacting_used,acting_max,reacting_max,valu
|
|||
|
||||
if (matrix(i,j) > size(values)) call IO_error(138,ext_msg='buildInteraction')
|
||||
|
||||
buildInteraction(k,l) = values(matrix(i,j))
|
||||
buildInteraction(l,k) = values(matrix(i,j))
|
||||
|
||||
enddo; enddo
|
||||
enddo; enddo
|
||||
|
@ -2325,7 +2300,6 @@ function buildCoordinateSystem(active,complete,system,structure,cOverA)
|
|||
use math, only: &
|
||||
math_cross
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: &
|
||||
active, &
|
||||
complete
|
||||
|
@ -2407,7 +2381,6 @@ subroutine buildTransformationSystem(Q,S,Ntrans,cOverA,a_fcc,a_bcc)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: &
|
||||
Ntrans
|
||||
real(pReal), dimension(3,3,sum(Ntrans)), intent(out) :: &
|
||||
|
|
|
@ -134,7 +134,6 @@ subroutine plastic_disloUCLA_init()
|
|||
config_phase
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
p, i, &
|
||||
|
@ -208,9 +207,9 @@ subroutine plastic_disloUCLA_init()
|
|||
prm%nonSchmid_neg = prm%Schmid
|
||||
endif
|
||||
|
||||
prm%h_sl_sl = transpose(lattice_interaction_SlipBySlip(prm%N_sl, &
|
||||
prm%h_sl_sl = lattice_interaction_SlipBySlip(prm%N_sl, &
|
||||
config%getFloats('interaction_slipslip'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
prm%forestProjectionEdge = lattice_forestProjection(prm%N_sl,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||
|
||||
|
@ -361,7 +360,6 @@ end subroutine plastic_disloUCLA_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure subroutine plastic_disloUCLA_LpAndItsTangent(Lp,dLp_dMp, &
|
||||
Mp,T,instance,of)
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: &
|
||||
Lp !< plastic velocity gradient
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||
|
@ -411,7 +409,6 @@ subroutine plastic_disloUCLA_dotState(Mp,T,instance,of)
|
|||
PI, &
|
||||
math_clip
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -472,7 +469,6 @@ end subroutine plastic_disloUCLA_dotState
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine plastic_disloUCLA_dependentState(instance,of)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
instance, &
|
||||
of
|
||||
|
@ -507,7 +503,6 @@ function plastic_disloUCLA_postResults(Mp,T,instance,of) result(postResults)
|
|||
PI, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -616,7 +611,6 @@ pure subroutine kinetics(Mp,T,instance,of, &
|
|||
PI, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
|
|
@ -198,7 +198,6 @@ subroutine plastic_dislotwin_init
|
|||
config_phase
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
p, i, &
|
||||
|
@ -268,9 +267,9 @@ subroutine plastic_dislotwin_init
|
|||
slipActive: if (prm%sum_N_sl > 0) then
|
||||
prm%P_sl = lattice_SchmidMatrix_slip(prm%N_sl,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||
prm%h_sl_sl = transpose(lattice_interaction_SlipBySlip(prm%N_sl, &
|
||||
prm%h_sl_sl = lattice_interaction_SlipBySlip(prm%N_sl, &
|
||||
config%getFloats('interaction_slipslip'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
prm%forestProjection = lattice_forestProjection (prm%N_sl,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||
|
||||
|
@ -332,9 +331,9 @@ subroutine plastic_dislotwin_init
|
|||
if (prm%sum_N_tw > 0) then
|
||||
prm%P_tw = lattice_SchmidMatrix_twin(prm%N_tw,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||
prm%h_tw_tw = transpose(lattice_interaction_TwinByTwin(prm%N_tw,&
|
||||
prm%h_tw_tw = lattice_interaction_TwinByTwin(prm%N_tw,&
|
||||
config%getFloats('interaction_twintwin'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
|
||||
prm%b_tw = config%getFloats('twinburgers', requiredSize=size(prm%N_tw))
|
||||
prm%t_tw = config%getFloats('twinsize', requiredSize=size(prm%N_tw))
|
||||
|
@ -380,9 +379,9 @@ subroutine plastic_dislotwin_init
|
|||
prm%xc_trans = config%getFloat('xc_trans', defaultVal=0.0_pReal) ! ToDo: How to handle that???
|
||||
prm%L_tr = config%getFloat('l0_trans')
|
||||
|
||||
prm%h_tr_tr = transpose(lattice_interaction_TransByTrans(prm%N_tr,&
|
||||
prm%h_tr_tr = lattice_interaction_TransByTrans(prm%N_tr,&
|
||||
config%getFloats('interaction_transtrans'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
|
||||
prm%C66_tr = lattice_C66_trans(prm%N_tr,prm%C66, &
|
||||
config%getString('trans_lattice_structure'), &
|
||||
|
@ -416,16 +415,16 @@ subroutine plastic_dislotwin_init
|
|||
endif
|
||||
|
||||
if (prm%sum_N_sl > 0 .and. prm%sum_N_tw > 0) then
|
||||
prm%h_sl_tw = transpose(lattice_interaction_SlipByTwin(prm%N_sl,prm%N_tw,&
|
||||
prm%h_sl_tw = lattice_interaction_SlipByTwin(prm%N_sl,prm%N_tw,&
|
||||
config%getFloats('interaction_sliptwin'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
if (prm%fccTwinTransNucleation .and. prm%sum_N_tw > 12) write(6,*) 'mist' ! ToDo: implement better test. The model will fail also if N_tw is [6,6]
|
||||
endif
|
||||
|
||||
if (prm%sum_N_sl > 0 .and. prm%sum_N_tr > 0) then
|
||||
prm%h_sl_tr = transpose(lattice_interaction_SlipByTrans(prm%N_sl,prm%N_tr,&
|
||||
prm%h_sl_tr = lattice_interaction_SlipByTrans(prm%N_sl,prm%N_tr,&
|
||||
config%getFloats('interaction_sliptrans'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
if (prm%fccTwinTransNucleation .and. prm%sum_N_tr > 12) write(6,*) 'mist' ! ToDo: implement better test. The model will fail also if N_tr is [6,6]
|
||||
endif
|
||||
|
||||
|
@ -605,7 +604,6 @@ function plastic_dislotwin_homogenizedC(ipc,ip,el) result(homogenizedC)
|
|||
phase_plasticityInstance, &
|
||||
phasememberAt
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(6,6) :: &
|
||||
homogenizedC
|
||||
integer, intent(in) :: &
|
||||
|
@ -653,7 +651,6 @@ subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dMp,Mp,T,instance,of)
|
|||
math_symmetric33, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: Lp
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: dLp_dMp
|
||||
real(pReal), dimension(3,3), intent(in) :: Mp
|
||||
|
@ -776,7 +773,6 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of)
|
|||
math_mul33xx33, &
|
||||
PI
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in):: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -869,7 +865,6 @@ subroutine plastic_dislotwin_dependentState(T,instance,of)
|
|||
use math, only: &
|
||||
PI
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
instance, &
|
||||
of
|
||||
|
@ -987,7 +982,6 @@ function plastic_dislotwin_postResults(Mp,T,instance,of) result(postResults)
|
|||
PI, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3),intent(in) :: &
|
||||
Mp !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -1133,7 +1127,6 @@ pure subroutine kinetics_slip(Mp,T,instance,of, &
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -1212,7 +1205,6 @@ pure subroutine kinetics_twin(Mp,T,dot_gamma_sl,instance,of,&
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
@ -1284,7 +1276,6 @@ pure subroutine kinetics_trans(Mp,T,dot_gamma_sl,instance,of,&
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
real(pReal), intent(in) :: &
|
||||
|
|
|
@ -108,7 +108,6 @@ subroutine plastic_isotropic_init
|
|||
config_phase
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
p, i, &
|
||||
|
@ -259,7 +258,6 @@ subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
|||
math_deviatoric33, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: &
|
||||
Lp !< plastic velocity gradient
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||
|
@ -326,7 +324,6 @@ subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dTstar,Tstar,instance,of)
|
|||
math_spherical33, &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: &
|
||||
Li !< inleastic velocity gradient
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||
|
@ -383,7 +380,6 @@ subroutine plastic_isotropic_dotState(Mp,instance,of)
|
|||
math_mul33xx33, &
|
||||
math_deviatoric33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -436,7 +432,6 @@ function plastic_isotropic_postResults(Mp,instance,of) result(postResults)
|
|||
math_mul33xx33, &
|
||||
math_deviatoric33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
|
|
@ -129,7 +129,6 @@ subroutine plastic_kinehardening_init
|
|||
config_phase
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
p, i, o, &
|
||||
|
@ -204,9 +203,9 @@ subroutine plastic_kinehardening_init
|
|||
prm%nonSchmid_pos = prm%Schmid
|
||||
prm%nonSchmid_neg = prm%Schmid
|
||||
endif
|
||||
prm%interaction_SlipSlip = transpose(lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||
prm%interaction_SlipSlip = lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||
config%getFloats('interaction_slipslip'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
|
||||
prm%crss0 = config%getFloats('crss0', requiredSize=size(prm%Nslip))
|
||||
prm%tau1 = config%getFloats('tau1', requiredSize=size(prm%Nslip))
|
||||
|
@ -347,7 +346,6 @@ end subroutine plastic_kinehardening_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure subroutine plastic_kinehardening_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: &
|
||||
Lp !< plastic velocity gradient
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||
|
@ -390,7 +388,6 @@ end subroutine plastic_kinehardening_LpAndItsTangent
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine plastic_kinehardening_dotState(Mp,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -443,7 +440,6 @@ subroutine plastic_kinehardening_deltaState(Mp,instance,of)
|
|||
debug_levelSelective
|
||||
#endif
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -494,7 +490,6 @@ function plastic_kinehardening_postResults(Mp,instance,of) result(postResults)
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -608,7 +603,6 @@ pure subroutine kinetics(Mp,instance,of, &
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
|
|
@ -260,7 +260,6 @@ subroutine plastic_nonlocal_init
|
|||
use config
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
||||
integer, dimension(0), parameter :: emptyIntArray = [integer::]
|
||||
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
||||
|
@ -751,7 +750,6 @@ subroutine plastic_nonlocal_init
|
|||
material_phase, &
|
||||
phase_plasticityInstance, &
|
||||
phasememberAt
|
||||
implicit none
|
||||
|
||||
integer,intent(in) ::&
|
||||
phase, &
|
||||
|
@ -867,7 +865,6 @@ subroutine plastic_nonlocal_dependentState(Fe, Fp, ip, el)
|
|||
LATTICE_fcc_ID, &
|
||||
lattice_structure
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, &
|
||||
el
|
||||
|
@ -1090,7 +1087,6 @@ end subroutine plastic_nonlocal_dependentState
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine plastic_nonlocal_kinetics(v, dv_dtau, dv_dtauNS, tau, tauNS, &
|
||||
tauThreshold, c, Temperature, instance, of)
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
c, & !< dislocation character (1:edge, 2:screw)
|
||||
instance, of
|
||||
|
@ -1239,7 +1235,6 @@ subroutine plastic_nonlocal_LpAndItsTangent(Lp, dLp_dMp, &
|
|||
phaseAt, phasememberAt, &
|
||||
phase_plasticityInstance
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< current integration point
|
||||
el !< current element number
|
||||
|
@ -1392,7 +1387,6 @@ subroutine plastic_nonlocal_deltaState(Mp,ip,el)
|
|||
phaseAt, phasememberAt, &
|
||||
phase_plasticityInstance
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, &
|
||||
el
|
||||
|
@ -1553,7 +1547,6 @@ subroutine plastic_nonlocal_dotState(Mp, Fe, Fp, Temperature, &
|
|||
LATTICE_bcc_ID, &
|
||||
LATTICE_fcc_ID
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< current integration point
|
||||
el !< current element number
|
||||
|
@ -2027,7 +2020,6 @@ subroutine plastic_nonlocal_updateCompatibility(orientation,i,e)
|
|||
use lattice, only: &
|
||||
lattice_qDisorientation
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
i, &
|
||||
e
|
||||
|
@ -2175,7 +2167,6 @@ function plastic_nonlocal_postResults(ph,instance,of) result(postResults)
|
|||
use material, only: &
|
||||
plasticState
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ph, &
|
||||
instance, &
|
||||
|
@ -2378,7 +2369,6 @@ end function plastic_nonlocal_postResults
|
|||
function getRho(instance,of,ip,el)
|
||||
use mesh
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: instance, of,ip,el
|
||||
real(pReal), dimension(param(instance)%totalNslip,10) :: getRho
|
||||
|
||||
|
|
|
@ -129,7 +129,6 @@ subroutine plastic_phenopowerlaw_init
|
|||
config_phase
|
||||
use lattice
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
p, i, &
|
||||
|
@ -203,9 +202,9 @@ subroutine plastic_phenopowerlaw_init
|
|||
prm%nonSchmid_pos = prm%Schmid_slip
|
||||
prm%nonSchmid_neg = prm%Schmid_slip
|
||||
endif
|
||||
prm%interaction_SlipSlip = transpose(lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||
prm%interaction_SlipSlip = lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||
config%getFloats('interaction_slipslip'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
|
||||
prm%xi_slip_0 = config%getFloats('tau0_slip', requiredSize=size(prm%Nslip))
|
||||
prm%xi_slip_sat = config%getFloats('tausat_slip', requiredSize=size(prm%Nslip))
|
||||
|
@ -240,9 +239,9 @@ subroutine plastic_phenopowerlaw_init
|
|||
twinActive: if (prm%totalNtwin > 0) then
|
||||
prm%Schmid_twin = lattice_SchmidMatrix_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||
prm%interaction_TwinTwin = transpose(lattice_interaction_TwinByTwin(prm%Ntwin,&
|
||||
prm%interaction_TwinTwin = lattice_interaction_TwinByTwin(prm%Ntwin,&
|
||||
config%getFloats('interaction_twintwin'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
prm%gamma_twin_char = lattice_characteristicShear_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
||||
config%getFloat('c/a'))
|
||||
|
||||
|
@ -268,12 +267,12 @@ subroutine plastic_phenopowerlaw_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! slip-twin related parameters
|
||||
slipAndTwinActive: if (prm%totalNslip > 0 .and. prm%totalNtwin > 0) then
|
||||
prm%interaction_SlipTwin = transpose(lattice_interaction_SlipByTwin(prm%Nslip,prm%Ntwin,&
|
||||
prm%interaction_SlipTwin = lattice_interaction_SlipByTwin(prm%Nslip,prm%Ntwin,&
|
||||
config%getFloats('interaction_sliptwin'), &
|
||||
config%getString('lattice_structure')))
|
||||
prm%interaction_TwinSlip = transpose(lattice_interaction_TwinBySlip(prm%Ntwin,prm%Nslip,&
|
||||
config%getString('lattice_structure'))
|
||||
prm%interaction_TwinSlip = lattice_interaction_TwinBySlip(prm%Ntwin,prm%Nslip,&
|
||||
config%getFloats('interaction_twinslip'), &
|
||||
config%getString('lattice_structure')))
|
||||
config%getString('lattice_structure'))
|
||||
else slipAndTwinActive
|
||||
allocate(prm%interaction_SlipTwin(prm%TotalNslip,prm%TotalNtwin)) ! at least one dimension is 0
|
||||
allocate(prm%interaction_TwinSlip(prm%TotalNtwin,prm%TotalNslip)) ! at least one dimension is 0
|
||||
|
@ -387,7 +386,6 @@ end subroutine plastic_phenopowerlaw_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(out) :: &
|
||||
Lp !< plastic velocity gradient
|
||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||
|
@ -439,7 +437,6 @@ end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -498,7 +495,6 @@ function plastic_phenopowerlaw_postResults(Mp,instance,of) result(postResults)
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -616,7 +612,6 @@ pure subroutine kinetics_slip(Mp,instance,of, &
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
@ -693,7 +688,6 @@ pure subroutine kinetics_twin(Mp,instance,of,&
|
|||
use math, only: &
|
||||
math_mul33xx33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
Mp !< Mandel stress
|
||||
integer, intent(in) :: &
|
||||
|
|
Loading…
Reference in New Issue