to transpose already when constructing the interaction matrix
This commit is contained in:
parent
ffdd3955a3
commit
1036c76ae0
195
src/lattice.f90
195
src/lattice.f90
|
@ -456,7 +456,7 @@ module lattice
|
||||||
LATTICE_maxNcleavage = max(LATTICE_fcc_Ncleavage,LATTICE_bcc_Ncleavage, &
|
LATTICE_maxNcleavage = max(LATTICE_fcc_Ncleavage,LATTICE_bcc_Ncleavage, &
|
||||||
LATTICE_hex_Ncleavage, &
|
LATTICE_hex_Ncleavage, &
|
||||||
LATTICE_iso_Ncleavage,LATTICE_ort_Ncleavage)
|
LATTICE_iso_Ncleavage,LATTICE_ort_Ncleavage)
|
||||||
!END DEPRECATED
|
! END DEPRECATED
|
||||||
|
|
||||||
real(pReal), dimension(:,:,:), allocatable, public, protected :: &
|
real(pReal), dimension(:,:,:), allocatable, public, protected :: &
|
||||||
lattice_C66
|
lattice_C66
|
||||||
|
@ -535,7 +535,7 @@ module lattice
|
||||||
lattice_slip_transverse
|
lattice_slip_transverse
|
||||||
|
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Module initialization
|
!> @brief Module initialization
|
||||||
|
@ -546,7 +546,6 @@ subroutine lattice_init
|
||||||
use config, only: &
|
use config, only: &
|
||||||
config_phase
|
config_phase
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: Nphases
|
integer :: Nphases
|
||||||
character(len=65536) :: &
|
character(len=65536) :: &
|
||||||
tag = ''
|
tag = ''
|
||||||
|
@ -664,7 +663,6 @@ subroutine lattice_initializeStructure(myPhase,CoverA)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: myPhase
|
integer, intent(in) :: myPhase
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
CoverA
|
CoverA
|
||||||
|
@ -756,7 +754,6 @@ end subroutine lattice_initializeStructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function lattice_symmetrizeC66(struct,C66)
|
pure function lattice_symmetrizeC66(struct,C66)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
||||||
real(pReal), dimension(6,6), intent(in) :: C66
|
real(pReal), dimension(6,6), intent(in) :: C66
|
||||||
real(pReal), dimension(6,6) :: lattice_symmetrizeC66
|
real(pReal), dimension(6,6) :: lattice_symmetrizeC66
|
||||||
|
@ -820,7 +817,7 @@ pure function lattice_symmetrizeC66(struct,C66)
|
||||||
lattice_symmetrizeC66 = C66
|
lattice_symmetrizeC66 = C66
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function lattice_symmetrizeC66
|
end function lattice_symmetrizeC66
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -828,7 +825,6 @@ pure function lattice_symmetrizeC66(struct,C66)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function lattice_symmetrize33(struct,T33)
|
pure function lattice_symmetrize33(struct,T33)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct
|
||||||
real(pReal), dimension(3,3), intent(in) :: T33
|
real(pReal), dimension(3,3), intent(in) :: T33
|
||||||
real(pReal), dimension(3,3) :: lattice_symmetrize33
|
real(pReal), dimension(3,3) :: lattice_symmetrize33
|
||||||
|
@ -851,7 +847,7 @@ pure function lattice_symmetrize33(struct,T33)
|
||||||
lattice_symmetrize33 = T33
|
lattice_symmetrize33 = T33
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function lattice_symmetrize33
|
end function lattice_symmetrize33
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -863,7 +859,6 @@ logical pure function lattice_qInSST(Q, struct)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_qToRodrig
|
math_qToRodrig
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(4), intent(in) :: Q ! orientation
|
real(pReal), dimension(4), intent(in) :: Q ! orientation
|
||||||
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct ! lattice structure
|
integer(kind(LATTICE_undefined_ID)), intent(in) :: struct ! lattice structure
|
||||||
real(pReal), dimension(3) :: Rodrig ! Rodrigues vector of Q
|
real(pReal), dimension(3) :: Rodrig ! Rodrigues vector of Q
|
||||||
|
@ -899,12 +894,11 @@ pure function lattice_qDisorientation(Q1, Q2, struct)
|
||||||
math_qMul, &
|
math_qMul, &
|
||||||
math_qConj
|
math_qConj
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(4) :: lattice_qDisorientation
|
real(pReal), dimension(4) :: lattice_qDisorientation
|
||||||
real(pReal), dimension(4), intent(in) :: &
|
real(pReal), dimension(4), intent(in) :: &
|
||||||
Q1, & ! 1st orientation
|
Q1, & !< 1st orientation
|
||||||
Q2 ! 2nd orientation
|
Q2 !< 2nd orientation
|
||||||
integer(kind(LATTICE_undefined_ID)), optional, intent(in) :: & ! if given, symmetries between the two orientation will be considered
|
integer(kind(LATTICE_undefined_ID)), optional, intent(in) :: & !< if given, symmetries between the two orientation will be considered
|
||||||
struct
|
struct
|
||||||
|
|
||||||
real(pReal), dimension(4) :: dQ,dQsymA,mis
|
real(pReal), dimension(4) :: dQ,dQsymA,mis
|
||||||
|
@ -914,7 +908,7 @@ pure function lattice_qDisorientation(Q1, Q2, struct)
|
||||||
integer, dimension(2), parameter :: &
|
integer, dimension(2), parameter :: &
|
||||||
NsymOperations = [24,12]
|
NsymOperations = [24,12]
|
||||||
|
|
||||||
real(pReal), dimension(4,36), parameter :: &
|
real(pReal), dimension(4,36), parameter :: &
|
||||||
symOperations = reshape([&
|
symOperations = reshape([&
|
||||||
1.0_pReal, 0.0_pReal, 0.0_pReal, 0.0_pReal, & ! cubic symmetry operations
|
1.0_pReal, 0.0_pReal, 0.0_pReal, 0.0_pReal, & ! cubic symmetry operations
|
||||||
0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), 1.0_pReal/sqrt(2.0_pReal), & ! 2-fold symmetry
|
0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), 1.0_pReal/sqrt(2.0_pReal), & ! 2-fold symmetry
|
||||||
|
@ -940,7 +934,7 @@ real(pReal), dimension(4,36), parameter :: &
|
||||||
1.0_pReal/sqrt(2.0_pReal), 0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), &
|
1.0_pReal/sqrt(2.0_pReal), 0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), &
|
||||||
0.0_pReal, 0.0_pReal, 0.0_pReal, 1.0_pReal, &
|
0.0_pReal, 0.0_pReal, 0.0_pReal, 1.0_pReal, &
|
||||||
-1.0_pReal/sqrt(2.0_pReal), 0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), &
|
-1.0_pReal/sqrt(2.0_pReal), 0.0_pReal, 0.0_pReal, 1.0_pReal/sqrt(2.0_pReal), &
|
||||||
!
|
!
|
||||||
1.0_pReal, 0.0_pReal, 0.0_pReal, 0.0_pReal, & ! hexagonal symmetry operations
|
1.0_pReal, 0.0_pReal, 0.0_pReal, 0.0_pReal, & ! hexagonal symmetry operations
|
||||||
0.0_pReal, 1.0_pReal, 0.0_pReal, 0.0_pReal, & ! 2-fold symmetry
|
0.0_pReal, 1.0_pReal, 0.0_pReal, 0.0_pReal, & ! 2-fold symmetry
|
||||||
0.0_pReal, 0.0_pReal, 1.0_pReal, 0.0_pReal, &
|
0.0_pReal, 0.0_pReal, 1.0_pReal, 0.0_pReal, &
|
||||||
|
@ -1007,7 +1001,6 @@ function lattice_characteristicShear_Twin(Ntwin,structure,CoverA) result(charact
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -1093,7 +1086,6 @@ function lattice_C66_twin(Ntwin,C66,structure,CoverA)
|
||||||
math_66toSym3333, &
|
math_66toSym3333, &
|
||||||
math_rotate_forward3333
|
math_rotate_forward3333
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), dimension(6,6), intent(in) :: C66 !< unrotated parent stiffness matrix
|
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_66toSym3333, &
|
||||||
math_rotate_forward3333
|
math_rotate_forward3333
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
||||||
character(len=*), intent(in) :: structure_target !< lattice structure
|
character(len=*), intent(in) :: structure_target !< lattice structure
|
||||||
real(pReal), dimension(6,6), intent(in) :: C_parent66
|
real(pReal), dimension(6,6), intent(in) :: C_parent66
|
||||||
|
@ -1162,8 +1153,8 @@ function lattice_C66_trans(Ntrans,C_parent66,structure_target, &
|
||||||
|
|
||||||
!ToDo: add checks for CoverA_trans,a_fcc,a_bcc
|
!ToDo: add checks for CoverA_trans,a_fcc,a_bcc
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! elasticity matrix of the target phase in cube orientation
|
! elasticity matrix of the target phase in cube orientation
|
||||||
if (structure_target(1:3) == 'hex') then
|
if (structure_target(1:3) == 'hex') then
|
||||||
C_bar66(1,1) = (C_parent66(1,1) + C_parent66(1,2) + 2.0_pReal*C_parent66(4,4))/2.0_pReal
|
C_bar66(1,1) = (C_parent66(1,1) + C_parent66(1,2) + 2.0_pReal*C_parent66(4,4))/2.0_pReal
|
||||||
C_bar66(1,2) = (C_parent66(1,1) + 5.0_pReal*C_parent66(1,2) - 2.0_pReal*C_parent66(4,4))/6.0_pReal
|
C_bar66(1,2) = (C_parent66(1,1) + 5.0_pReal*C_parent66(1,2) - 2.0_pReal*C_parent66(4,4))/6.0_pReal
|
||||||
|
@ -1196,7 +1187,7 @@ function lattice_C66_trans(Ntrans,C_parent66,structure_target, &
|
||||||
do i = 1, sum(Ntrans)
|
do i = 1, sum(Ntrans)
|
||||||
lattice_C66_trans(1:6,1:6,i) = math_sym3333to66(math_rotate_forward3333(C_target_unrotated,Q(1:3,1:3,i)))
|
lattice_C66_trans(1:6,1:6,i) = math_sym3333to66(math_rotate_forward3333(C_target_unrotated,Q(1:3,1:3,i)))
|
||||||
enddo
|
enddo
|
||||||
end function lattice_C66_trans
|
end function lattice_C66_trans
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -1212,7 +1203,7 @@ function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSc
|
||||||
math_outer, &
|
math_outer, &
|
||||||
math_cross, &
|
math_cross, &
|
||||||
math_axisAngleToR
|
math_axisAngleToR
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: nonSchmidCoefficients !< non-Schmid coefficients for projections
|
real(pReal), dimension(:), intent(in) :: nonSchmidCoefficients !< non-Schmid coefficients for projections
|
||||||
integer, intent(in) :: sense !< sense (-1,+1)
|
integer, intent(in) :: sense !< sense (-1,+1)
|
||||||
|
@ -1258,7 +1249,6 @@ function lattice_interaction_SlipBySlip(Nslip,interactionValues,structure) resul
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-slip interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-slip interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
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 :: &
|
integer, dimension(LATTICE_FCC_NSLIP,LATTICE_FCC_NSLIP), parameter :: &
|
||||||
FCC_INTERACTIONSLIPSLIP = reshape( [&
|
FCC_INTERACTIONSLIPSLIP = reshape( [&
|
||||||
1, 2, 2, 4, 6, 5, 3, 5, 5, 4, 5, 6, 9,10, 9,10,11,12, &
|
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, 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, &
|
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, &
|
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, &
|
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, &
|
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, &
|
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, &
|
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 :: &
|
integer, dimension(LATTICE_BCC_NSLIP,LATTICE_BCC_NSLIP), parameter :: &
|
||||||
BCC_INTERACTIONSLIPSLIP = reshape( [&
|
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, &
|
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, &
|
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,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, &
|
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, &
|
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,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, &
|
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, &
|
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 :: &
|
integer, dimension(LATTICE_HEX_NSLIP,LATTICE_HEX_NSLIP), parameter :: &
|
||||||
HEX_INTERACTIONSLIPSLIP = reshape( [&
|
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, &
|
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, 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, &
|
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, &
|
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, 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, &
|
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 :: &
|
integer, dimension(LATTICE_BCT_NSLIP,LATTICE_BCT_NSLIP), parameter :: &
|
||||||
BCT_INTERACTIONSLIPSLIP = reshape( [&
|
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, &
|
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, &
|
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, 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, &
|
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, 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, &
|
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: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
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 :: &
|
integer, dimension(LATTICE_FCC_NTWIN,LATTICE_FCC_NTWIN), parameter :: &
|
||||||
FCC_INTERACTIONTWINTWIN = reshape( [&
|
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, & ! -----> 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, & ! |
|
||||||
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, & ! v
|
||||||
2,2,2,1,1,1,2,2,2,2,2,2, &
|
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,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,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 :: &
|
integer, dimension(LATTICE_BCC_NTWIN,LATTICE_BCC_NTWIN), parameter :: &
|
||||||
BCC_INTERACTIONTWINTWIN = reshape( [&
|
BCC_INTERACTIONTWINTWIN = reshape( [&
|
||||||
1,3,3,3,3,3,3,2,3,3,2,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,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,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,1,2,3,3,3,3,2,3,3, & ! v
|
||||||
3,3,3,2,1,3,3,3,3,2,3,3, &
|
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,3,2,3,3,1,3,3,2,3,3,3, &
|
||||||
3,2,3,3,3,3,1,3,3,3,3,2, &
|
3,2,3,3,3,3,1,3,3,3,3,2, &
|
||||||
2,3,3,3,3,3,3,1,3,3,2,3, &
|
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
|
!< 3: other interaction
|
||||||
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NTWIN), parameter :: &
|
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NTWIN), parameter :: &
|
||||||
HEX_INTERACTIONTWINTWIN = reshape( [&
|
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, &
|
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, 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, 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, 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, &
|
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, &
|
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, &
|
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: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntrans !< number of active trans systems per family
|
integer, dimension(:), intent(in) :: Ntrans !< number of active trans systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for trans-trans interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for trans-trans interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure (parent crystal)
|
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 :: &
|
integer, dimension(LATTICE_FCC_NTRANS,LATTICE_FCC_NTRANS), parameter :: &
|
||||||
FCC_INTERACTIONTRANSTRANS = reshape( [&
|
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, & ! -----> 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, & ! |
|
||||||
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, & ! v
|
||||||
2,2,2,1,1,1,2,2,2,2,2,2, &
|
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,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,1,1,1,2,2,2, &
|
||||||
|
@ -1633,12 +1621,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
||||||
Ntwin !< number of active twin systems per family
|
Ntwin !< number of active twin systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-twin interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-twin interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
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, &
|
integer, dimension(:), allocatable :: NslipMax, &
|
||||||
NtwinMax
|
NtwinMax
|
||||||
|
@ -1646,11 +1633,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
||||||
|
|
||||||
integer, dimension(LATTICE_FCC_NTWIN,LATTICE_FCC_NSLIP), parameter :: &
|
integer, dimension(LATTICE_FCC_NTWIN,LATTICE_FCC_NSLIP), parameter :: &
|
||||||
FCC_INTERACTIONSLIPTWIN = reshape( [&
|
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,3,3,3,3,3,3,2,2,2, & ! |
|
||||||
1,1,1,2,2,2,3,3,3,3,3,3, & ! |
|
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,3,3,3,2,2,2, & ! v
|
||||||
3,3,3,1,1,1,2,2,2,3,3,3, &
|
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,1,1,1,3,3,3,3,3,3, &
|
||||||
2,2,2,3,3,3,1,1,1,3,3,3, &
|
2,2,2,3,3,3,1,1,1,3,3,3, &
|
||||||
3,3,3,2,2,2,1,1,1,3,3,3, &
|
3,3,3,2,2,2,1,1,1,3,3,3, &
|
||||||
|
@ -1671,11 +1658,11 @@ function lattice_interaction_SlipByTwin(Nslip,Ntwin,interactionValues,structure)
|
||||||
!< 3: other interaction
|
!< 3: other interaction
|
||||||
integer, dimension(LATTICE_BCC_NTWIN,LATTICE_BCC_NSLIP), parameter :: &
|
integer, dimension(LATTICE_BCC_NTWIN,LATTICE_BCC_NSLIP), parameter :: &
|
||||||
BCC_INTERACTIONSLIPTWIN = reshape( [&
|
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,3,2,3,3,2,3,3,2,3,3,3, & ! |
|
||||||
3,2,3,3,3,3,2,3,3,3,3,2, & ! |
|
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, & ! v
|
||||||
2,3,3,3,3,3,3,2,3,3,2,3, &
|
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,3,2,3,3,2,3,3,2,3,3,3, &
|
||||||
3,2,3,3,3,3,2,3,3,3,3,2, &
|
3,2,3,3,3,3,2,3,3,3,3,2, &
|
||||||
3,3,3,2,2,3,3,3,3,2,3,3, &
|
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
|
!< 3: other interaction
|
||||||
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NSLIP), parameter :: &
|
integer, dimension(LATTICE_HEX_NTWIN,LATTICE_HEX_NSLIP), parameter :: &
|
||||||
HEX_INTERACTIONSLIPTWIN = reshape( [&
|
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, & ! |
|
||||||
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
|
! 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, &
|
||||||
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))
|
call IO_error(137,ext_msg='lattice_interaction_SlipByTwin: '//trim(structure))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
interactionMatrix = buildInteraction(Ntwin,Nslip,NtwinMax,NslipMax,interactionValues,interactionTypes)
|
interactionMatrix = buildInteraction(Nslip,Ntwin,NslipMax,NtwinMax,interactionValues,interactionTypes)
|
||||||
|
|
||||||
end function lattice_interaction_SlipByTwin
|
end function lattice_interaction_SlipByTwin
|
||||||
|
|
||||||
|
@ -1776,12 +1763,11 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip, & !< number of active slip systems per family
|
||||||
Ntrans !< number of active trans systems per family
|
Ntrans !< number of active trans systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-trans interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for slip-trans interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure (parent crystal)
|
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, &
|
integer, dimension(:), allocatable :: NslipMax, &
|
||||||
NtransMax
|
NtransMax
|
||||||
|
@ -1789,11 +1775,11 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
||||||
|
|
||||||
integer, dimension(LATTICE_FCC_NTRANS,LATTICE_FCC_NSLIP), parameter :: &
|
integer, dimension(LATTICE_FCC_NTRANS,LATTICE_FCC_NSLIP), parameter :: &
|
||||||
FCC_INTERACTIONSLIPTRANS = reshape( [&
|
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,3,3,3,3,3,3,2,2,2, & ! |
|
||||||
1,1,1,2,2,2,3,3,3,3,3,3, & ! |
|
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,3,3,3,2,2,2, & ! v
|
||||||
3,3,3,1,1,1,2,2,2,3,3,3, &
|
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,1,1,1,3,3,3,3,3,3, &
|
||||||
2,2,2,3,3,3,1,1,1,3,3,3, &
|
2,2,2,3,3,3,1,1,1,3,3,3, &
|
||||||
3,3,3,2,2,2,1,1,1,3,3,3, &
|
3,3,3,2,2,2,1,1,1,3,3,3, &
|
||||||
|
@ -1822,9 +1808,9 @@ function lattice_interaction_SlipByTrans(Nslip,Ntrans,interactionValues,structur
|
||||||
call IO_error(137,ext_msg='lattice_interaction_SlipByTrans: '//trim(structure))
|
call IO_error(137,ext_msg='lattice_interaction_SlipByTrans: '//trim(structure))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
interactionMatrix = buildInteraction(Ntrans,Nslip,NtransMax,NslipMax,interactionValues,interactionTypes)
|
interactionMatrix = buildInteraction(Nslip,Ntrans,NslipMax,NtransMax,interactionValues,interactionTypes)
|
||||||
|
|
||||||
end function lattice_interaction_SlipByTrans
|
end function lattice_interaction_SlipByTrans
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -1835,30 +1821,29 @@ function lattice_interaction_TwinBySlip(Ntwin,Nslip,interactionValues,structure)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntwin, & !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntwin, & !< number of active twin systems per family
|
||||||
Nslip !< number of active slip systems per family
|
Nslip !< number of active slip systems per family
|
||||||
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
real(pReal), dimension(:), intent(in) :: interactionValues !< values for twin-twin interaction
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
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, &
|
integer, dimension(:), allocatable :: NtwinMax, &
|
||||||
NslipMax
|
NslipMax
|
||||||
integer, dimension(:,:), allocatable :: interactionTypes
|
integer, dimension(:,:), allocatable :: interactionTypes
|
||||||
|
|
||||||
integer, dimension(LATTICE_FCC_NSLIP,LATTICE_FCC_NTWIN), parameter :: &
|
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 :: &
|
integer, dimension(LATTICE_BCC_NSLIP,LATTICE_BCC_NTWIN), parameter :: &
|
||||||
BCC_INTERACTIONTWINSLIP = 1 !< Twin-slip interaction types for bcc
|
BCC_INTERACTIONTWINSLIP = 1 !< Twin-slip interaction types for bcc
|
||||||
|
|
||||||
integer, dimension(LATTICE_HEX_NSLIP,LATTICE_HEX_NTWIN), parameter :: &
|
integer, dimension(LATTICE_HEX_NSLIP,LATTICE_HEX_NTWIN), parameter :: &
|
||||||
HEX_INTERACTIONTWINSLIP = reshape( [&
|
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, & ! |
|
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, & ! 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, &
|
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, &
|
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, &
|
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) &
|
if (len_trim(structure) /= 3) &
|
||||||
call IO_error(137,ext_msg='lattice_interaction_TwinBySlip: '//trim(structure))
|
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))
|
call IO_error(137,ext_msg='lattice_interaction_TwinBySlip: '//trim(structure))
|
||||||
end select
|
end select
|
||||||
|
|
||||||
interactionMatrix = buildInteraction(Nslip,Ntwin,NslipMax,NtwinMax,interactionValues,interactionTypes)
|
interactionMatrix = buildInteraction(Ntwin,Nslip,NtwinMax,NslipMax,interactionValues,interactionTypes)
|
||||||
|
|
||||||
end function lattice_interaction_TwinBySlip
|
end function lattice_interaction_TwinBySlip
|
||||||
|
|
||||||
|
@ -1921,7 +1906,6 @@ function lattice_SchmidMatrix_slip(Nslip,structure,cOverA) result(SchmidMatrix)
|
||||||
math_trace33, &
|
math_trace33, &
|
||||||
math_outer
|
math_outer
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA
|
real(pReal), intent(in) :: cOverA
|
||||||
|
@ -1981,7 +1965,6 @@ function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) result(SchmidMatrix)
|
||||||
math_trace33, &
|
math_trace33, &
|
||||||
math_outer
|
math_outer
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -2022,7 +2005,7 @@ function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) result(SchmidMatrix)
|
||||||
call IO_error(0,i,ext_msg = 'dilatational Schmid matrix for twin')
|
call IO_error(0,i,ext_msg = 'dilatational Schmid matrix for twin')
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
end function lattice_SchmidMatrix_twin
|
end function lattice_SchmidMatrix_twin
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -2033,7 +2016,6 @@ function lattice_SchmidMatrix_trans(Ntrans,structure_target,cOverA,a_bcc,a_fcc)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
integer, dimension(:), intent(in) :: Ntrans !< number of active twin systems per family
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
character(len=*), intent(in) :: structure_target !< lattice structure
|
character(len=*), intent(in) :: structure_target !< lattice structure
|
||||||
|
@ -2051,7 +2033,7 @@ function lattice_SchmidMatrix_trans(Ntrans,structure_target,cOverA,a_bcc,a_fcc)
|
||||||
|
|
||||||
call buildTransformationSystem(devNull,SchmidMatrix,Ntrans,cOverA,a_fcc,a_bcc)
|
call buildTransformationSystem(devNull,SchmidMatrix,Ntrans,cOverA,a_fcc,a_bcc)
|
||||||
|
|
||||||
end function lattice_SchmidMatrix_trans
|
end function lattice_SchmidMatrix_trans
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -2064,7 +2046,6 @@ function lattice_SchmidMatrix_cleavage(Ncleavage,structure,cOverA) result(Schmid
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Ncleavage !< number of active cleavage systems per family
|
integer, dimension(:), intent(in) :: Ncleavage !< number of active cleavage systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
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)
|
function lattice_slip_direction(Nslip,structure,cOverA) result(d)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
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)
|
function lattice_slip_normal(Nslip,structure,cOverA) result(n)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
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
|
end function lattice_slip_normal
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Transverse direction of slip systems ( || t = b x n)
|
!> @brief Transverse direction of slip systems ( || t = b x n)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function lattice_slip_transverse(Nslip,structure,cOverA) result(t)
|
function lattice_slip_transverse(Nslip,structure,cOverA) result(t)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -2178,7 +2157,6 @@ function slipProjection_transverse(Nslip,structure,cOverA) result(projection)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_inner
|
math_inner
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -2204,7 +2182,6 @@ function slipProjection_direction(Nslip,structure,cOverA) result(projection)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_inner
|
math_inner
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -2230,7 +2207,6 @@ function coordinateSystem_slip(Nslip,structure,cOverA) result(coordinateSystem)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer, dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
character(len=*), intent(in) :: structure !< lattice structure
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
real(pReal), intent(in) :: cOverA !< c/a ratio
|
real(pReal), intent(in) :: cOverA !< c/a ratio
|
||||||
|
@ -2272,19 +2248,18 @@ end function coordinateSystem_slip
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Populates reduced interaction matrix
|
!> @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: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: &
|
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
|
reacting_used, & !< # of reacting systems per family as specified in material.config
|
||||||
acting_max, & !< max # of acting 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
|
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
|
real(pReal), dimension(:), intent(in) :: values !< interaction values
|
||||||
integer, dimension(:,:), intent(in) :: matrix !< interaction types
|
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 :: &
|
integer :: &
|
||||||
acting_family_index, acting_family, acting_system, &
|
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')
|
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
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
|
@ -2325,7 +2300,6 @@ function buildCoordinateSystem(active,complete,system,structure,cOverA)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_cross
|
math_cross
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: &
|
integer, dimension(:), intent(in) :: &
|
||||||
active, &
|
active, &
|
||||||
complete
|
complete
|
||||||
|
@ -2407,7 +2381,6 @@ subroutine buildTransformationSystem(Q,S,Ntrans,cOverA,a_fcc,a_bcc)
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error
|
IO_error
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, dimension(:), intent(in) :: &
|
integer, dimension(:), intent(in) :: &
|
||||||
Ntrans
|
Ntrans
|
||||||
real(pReal), dimension(3,3,sum(Ntrans)), intent(out) :: &
|
real(pReal), dimension(3,3,sum(Ntrans)), intent(out) :: &
|
||||||
|
|
|
@ -134,7 +134,6 @@ subroutine plastic_disloUCLA_init()
|
||||||
config_phase
|
config_phase
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
p, i, &
|
p, i, &
|
||||||
|
@ -208,9 +207,9 @@ subroutine plastic_disloUCLA_init()
|
||||||
prm%nonSchmid_neg = prm%Schmid
|
prm%nonSchmid_neg = prm%Schmid
|
||||||
endif
|
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%getFloats('interaction_slipslip'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
prm%forestProjectionEdge = lattice_forestProjection(prm%N_sl,config%getString('lattice_structure'),&
|
prm%forestProjectionEdge = lattice_forestProjection(prm%N_sl,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
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, &
|
pure subroutine plastic_disloUCLA_LpAndItsTangent(Lp,dLp_dMp, &
|
||||||
Mp,T,instance,of)
|
Mp,T,instance,of)
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||||
|
@ -411,7 +409,6 @@ subroutine plastic_disloUCLA_dotState(Mp,T,instance,of)
|
||||||
PI, &
|
PI, &
|
||||||
math_clip
|
math_clip
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -472,7 +469,6 @@ end subroutine plastic_disloUCLA_dotState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_disloUCLA_dependentState(instance,of)
|
subroutine plastic_disloUCLA_dependentState(instance,of)
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
instance, &
|
instance, &
|
||||||
of
|
of
|
||||||
|
@ -507,7 +503,6 @@ function plastic_disloUCLA_postResults(Mp,T,instance,of) result(postResults)
|
||||||
PI, &
|
PI, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -616,7 +611,6 @@ pure subroutine kinetics(Mp,T,instance,of, &
|
||||||
PI, &
|
PI, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
|
|
@ -198,7 +198,6 @@ subroutine plastic_dislotwin_init
|
||||||
config_phase
|
config_phase
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
p, i, &
|
p, i, &
|
||||||
|
@ -268,9 +267,9 @@ subroutine plastic_dislotwin_init
|
||||||
slipActive: if (prm%sum_N_sl > 0) then
|
slipActive: if (prm%sum_N_sl > 0) then
|
||||||
prm%P_sl = lattice_SchmidMatrix_slip(prm%N_sl,config%getString('lattice_structure'),&
|
prm%P_sl = lattice_SchmidMatrix_slip(prm%N_sl,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
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%getFloats('interaction_slipslip'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
prm%forestProjection = lattice_forestProjection (prm%N_sl,config%getString('lattice_structure'),&
|
prm%forestProjection = lattice_forestProjection (prm%N_sl,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
config%getFloat('c/a',defaultVal=0.0_pReal))
|
||||||
|
|
||||||
|
@ -332,9 +331,9 @@ subroutine plastic_dislotwin_init
|
||||||
if (prm%sum_N_tw > 0) then
|
if (prm%sum_N_tw > 0) then
|
||||||
prm%P_tw = lattice_SchmidMatrix_twin(prm%N_tw,config%getString('lattice_structure'),&
|
prm%P_tw = lattice_SchmidMatrix_twin(prm%N_tw,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
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%getFloats('interaction_twintwin'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
|
|
||||||
prm%b_tw = config%getFloats('twinburgers', requiredSize=size(prm%N_tw))
|
prm%b_tw = config%getFloats('twinburgers', requiredSize=size(prm%N_tw))
|
||||||
prm%t_tw = config%getFloats('twinsize', 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%xc_trans = config%getFloat('xc_trans', defaultVal=0.0_pReal) ! ToDo: How to handle that???
|
||||||
prm%L_tr = config%getFloat('l0_trans')
|
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%getFloats('interaction_transtrans'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
|
|
||||||
prm%C66_tr = lattice_C66_trans(prm%N_tr,prm%C66, &
|
prm%C66_tr = lattice_C66_trans(prm%N_tr,prm%C66, &
|
||||||
config%getString('trans_lattice_structure'), &
|
config%getString('trans_lattice_structure'), &
|
||||||
|
@ -416,16 +415,16 @@ subroutine plastic_dislotwin_init
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (prm%sum_N_sl > 0 .and. prm%sum_N_tw > 0) then
|
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%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]
|
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
|
endif
|
||||||
|
|
||||||
if (prm%sum_N_sl > 0 .and. prm%sum_N_tr > 0) then
|
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%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]
|
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
|
endif
|
||||||
|
|
||||||
|
@ -605,7 +604,6 @@ function plastic_dislotwin_homogenizedC(ipc,ip,el) result(homogenizedC)
|
||||||
phase_plasticityInstance, &
|
phase_plasticityInstance, &
|
||||||
phasememberAt
|
phasememberAt
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(6,6) :: &
|
real(pReal), dimension(6,6) :: &
|
||||||
homogenizedC
|
homogenizedC
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -653,7 +651,6 @@ subroutine plastic_dislotwin_LpAndItsTangent(Lp,dLp_dMp,Mp,T,instance,of)
|
||||||
math_symmetric33, &
|
math_symmetric33, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: Lp
|
real(pReal), dimension(3,3), intent(out) :: Lp
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: dLp_dMp
|
real(pReal), dimension(3,3,3,3), intent(out) :: dLp_dMp
|
||||||
real(pReal), dimension(3,3), intent(in) :: Mp
|
real(pReal), dimension(3,3), intent(in) :: Mp
|
||||||
|
@ -776,7 +773,6 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of)
|
||||||
math_mul33xx33, &
|
math_mul33xx33, &
|
||||||
PI
|
PI
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in):: &
|
real(pReal), dimension(3,3), intent(in):: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -869,7 +865,6 @@ subroutine plastic_dislotwin_dependentState(T,instance,of)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
PI
|
PI
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
instance, &
|
instance, &
|
||||||
of
|
of
|
||||||
|
@ -987,7 +982,6 @@ function plastic_dislotwin_postResults(Mp,T,instance,of) result(postResults)
|
||||||
PI, &
|
PI, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3),intent(in) :: &
|
real(pReal), dimension(3,3),intent(in) :: &
|
||||||
Mp !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
Mp !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -1133,7 +1127,6 @@ pure subroutine kinetics_slip(Mp,T,instance,of, &
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -1212,7 +1205,6 @@ pure subroutine kinetics_twin(Mp,T,dot_gamma_sl,instance,of,&
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
@ -1284,7 +1276,6 @@ pure subroutine kinetics_trans(Mp,T,dot_gamma_sl,instance,of,&
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
real(pReal), intent(in) :: &
|
real(pReal), intent(in) :: &
|
||||||
|
|
|
@ -108,7 +108,6 @@ subroutine plastic_isotropic_init
|
||||||
config_phase
|
config_phase
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
p, i, &
|
p, i, &
|
||||||
|
@ -259,7 +258,6 @@ subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
math_deviatoric33, &
|
math_deviatoric33, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
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_spherical33, &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Li !< inleastic velocity gradient
|
Li !< inleastic velocity gradient
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
||||||
|
@ -383,7 +380,6 @@ subroutine plastic_isotropic_dotState(Mp,instance,of)
|
||||||
math_mul33xx33, &
|
math_mul33xx33, &
|
||||||
math_deviatoric33
|
math_deviatoric33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -436,7 +432,6 @@ function plastic_isotropic_postResults(Mp,instance,of) result(postResults)
|
||||||
math_mul33xx33, &
|
math_mul33xx33, &
|
||||||
math_deviatoric33
|
math_deviatoric33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
|
|
@ -129,7 +129,6 @@ subroutine plastic_kinehardening_init
|
||||||
config_phase
|
config_phase
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
p, i, o, &
|
p, i, o, &
|
||||||
|
@ -204,9 +203,9 @@ subroutine plastic_kinehardening_init
|
||||||
prm%nonSchmid_pos = prm%Schmid
|
prm%nonSchmid_pos = prm%Schmid
|
||||||
prm%nonSchmid_neg = prm%Schmid
|
prm%nonSchmid_neg = prm%Schmid
|
||||||
endif
|
endif
|
||||||
prm%interaction_SlipSlip = transpose(lattice_interaction_SlipBySlip(prm%Nslip, &
|
prm%interaction_SlipSlip = lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||||
config%getFloats('interaction_slipslip'), &
|
config%getFloats('interaction_slipslip'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
|
|
||||||
prm%crss0 = config%getFloats('crss0', requiredSize=size(prm%Nslip))
|
prm%crss0 = config%getFloats('crss0', requiredSize=size(prm%Nslip))
|
||||||
prm%tau1 = config%getFloats('tau1', 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)
|
pure subroutine plastic_kinehardening_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
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)
|
subroutine plastic_kinehardening_dotState(Mp,instance,of)
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -443,7 +440,6 @@ subroutine plastic_kinehardening_deltaState(Mp,instance,of)
|
||||||
debug_levelSelective
|
debug_levelSelective
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -494,7 +490,6 @@ function plastic_kinehardening_postResults(Mp,instance,of) result(postResults)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -608,7 +603,6 @@ pure subroutine kinetics(Mp,instance,of, &
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
|
|
@ -260,7 +260,6 @@ subroutine plastic_nonlocal_init
|
||||||
use config
|
use config
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
||||||
integer, dimension(0), parameter :: emptyIntArray = [integer::]
|
integer, dimension(0), parameter :: emptyIntArray = [integer::]
|
||||||
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
||||||
|
@ -751,7 +750,6 @@ subroutine plastic_nonlocal_init
|
||||||
material_phase, &
|
material_phase, &
|
||||||
phase_plasticityInstance, &
|
phase_plasticityInstance, &
|
||||||
phasememberAt
|
phasememberAt
|
||||||
implicit none
|
|
||||||
|
|
||||||
integer,intent(in) ::&
|
integer,intent(in) ::&
|
||||||
phase, &
|
phase, &
|
||||||
|
@ -867,7 +865,6 @@ subroutine plastic_nonlocal_dependentState(Fe, Fp, ip, el)
|
||||||
LATTICE_fcc_ID, &
|
LATTICE_fcc_ID, &
|
||||||
lattice_structure
|
lattice_structure
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ip, &
|
ip, &
|
||||||
el
|
el
|
||||||
|
@ -1090,7 +1087,6 @@ end subroutine plastic_nonlocal_dependentState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_nonlocal_kinetics(v, dv_dtau, dv_dtauNS, tau, tauNS, &
|
subroutine plastic_nonlocal_kinetics(v, dv_dtau, dv_dtauNS, tau, tauNS, &
|
||||||
tauThreshold, c, Temperature, instance, of)
|
tauThreshold, c, Temperature, instance, of)
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
c, & !< dislocation character (1:edge, 2:screw)
|
c, & !< dislocation character (1:edge, 2:screw)
|
||||||
instance, of
|
instance, of
|
||||||
|
@ -1239,7 +1235,6 @@ subroutine plastic_nonlocal_LpAndItsTangent(Lp, dLp_dMp, &
|
||||||
phaseAt, phasememberAt, &
|
phaseAt, phasememberAt, &
|
||||||
phase_plasticityInstance
|
phase_plasticityInstance
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ip, & !< current integration point
|
ip, & !< current integration point
|
||||||
el !< current element number
|
el !< current element number
|
||||||
|
@ -1392,7 +1387,6 @@ subroutine plastic_nonlocal_deltaState(Mp,ip,el)
|
||||||
phaseAt, phasememberAt, &
|
phaseAt, phasememberAt, &
|
||||||
phase_plasticityInstance
|
phase_plasticityInstance
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ip, &
|
ip, &
|
||||||
el
|
el
|
||||||
|
@ -1553,7 +1547,6 @@ subroutine plastic_nonlocal_dotState(Mp, Fe, Fp, Temperature, &
|
||||||
LATTICE_bcc_ID, &
|
LATTICE_bcc_ID, &
|
||||||
LATTICE_fcc_ID
|
LATTICE_fcc_ID
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ip, & !< current integration point
|
ip, & !< current integration point
|
||||||
el !< current element number
|
el !< current element number
|
||||||
|
@ -2027,7 +2020,6 @@ subroutine plastic_nonlocal_updateCompatibility(orientation,i,e)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_qDisorientation
|
lattice_qDisorientation
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
i, &
|
i, &
|
||||||
e
|
e
|
||||||
|
@ -2175,7 +2167,6 @@ function plastic_nonlocal_postResults(ph,instance,of) result(postResults)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
plasticState
|
plasticState
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ph, &
|
ph, &
|
||||||
instance, &
|
instance, &
|
||||||
|
@ -2378,7 +2369,6 @@ end function plastic_nonlocal_postResults
|
||||||
function getRho(instance,of,ip,el)
|
function getRho(instance,of,ip,el)
|
||||||
use mesh
|
use mesh
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer, intent(in) :: instance, of,ip,el
|
integer, intent(in) :: instance, of,ip,el
|
||||||
real(pReal), dimension(param(instance)%totalNslip,10) :: getRho
|
real(pReal), dimension(param(instance)%totalNslip,10) :: getRho
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,6 @@ subroutine plastic_phenopowerlaw_init
|
||||||
config_phase
|
config_phase
|
||||||
use lattice
|
use lattice
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer :: &
|
integer :: &
|
||||||
Ninstance, &
|
Ninstance, &
|
||||||
p, i, &
|
p, i, &
|
||||||
|
@ -203,9 +202,9 @@ subroutine plastic_phenopowerlaw_init
|
||||||
prm%nonSchmid_pos = prm%Schmid_slip
|
prm%nonSchmid_pos = prm%Schmid_slip
|
||||||
prm%nonSchmid_neg = prm%Schmid_slip
|
prm%nonSchmid_neg = prm%Schmid_slip
|
||||||
endif
|
endif
|
||||||
prm%interaction_SlipSlip = transpose(lattice_interaction_SlipBySlip(prm%Nslip, &
|
prm%interaction_SlipSlip = lattice_interaction_SlipBySlip(prm%Nslip, &
|
||||||
config%getFloats('interaction_slipslip'), &
|
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_0 = config%getFloats('tau0_slip', requiredSize=size(prm%Nslip))
|
||||||
prm%xi_slip_sat = config%getFloats('tausat_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
|
twinActive: if (prm%totalNtwin > 0) then
|
||||||
prm%Schmid_twin = lattice_SchmidMatrix_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
prm%Schmid_twin = lattice_SchmidMatrix_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a',defaultVal=0.0_pReal))
|
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%getFloats('interaction_twintwin'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
prm%gamma_twin_char = lattice_characteristicShear_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
prm%gamma_twin_char = lattice_characteristicShear_twin(prm%Ntwin,config%getString('lattice_structure'),&
|
||||||
config%getFloat('c/a'))
|
config%getFloat('c/a'))
|
||||||
|
|
||||||
|
@ -268,12 +267,12 @@ subroutine plastic_phenopowerlaw_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! slip-twin related parameters
|
! slip-twin related parameters
|
||||||
slipAndTwinActive: if (prm%totalNslip > 0 .and. prm%totalNtwin > 0) then
|
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%getFloats('interaction_sliptwin'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
prm%interaction_TwinSlip = transpose(lattice_interaction_TwinBySlip(prm%Ntwin,prm%Nslip,&
|
prm%interaction_TwinSlip = lattice_interaction_TwinBySlip(prm%Ntwin,prm%Nslip,&
|
||||||
config%getFloats('interaction_twinslip'), &
|
config%getFloats('interaction_twinslip'), &
|
||||||
config%getString('lattice_structure')))
|
config%getString('lattice_structure'))
|
||||||
else slipAndTwinActive
|
else slipAndTwinActive
|
||||||
allocate(prm%interaction_SlipTwin(prm%TotalNslip,prm%TotalNtwin)) ! at least one dimension is 0
|
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
|
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)
|
pure subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(out) :: &
|
real(pReal), dimension(3,3), intent(out) :: &
|
||||||
Lp !< plastic velocity gradient
|
Lp !< plastic velocity gradient
|
||||||
real(pReal), dimension(3,3,3,3), intent(out) :: &
|
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)
|
subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -498,7 +495,6 @@ function plastic_phenopowerlaw_postResults(Mp,instance,of) result(postResults)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -616,7 +612,6 @@ pure subroutine kinetics_slip(Mp,instance,of, &
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
@ -693,7 +688,6 @@ pure subroutine kinetics_twin(Mp,instance,of,&
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33xx33
|
math_mul33xx33
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
Mp !< Mandel stress
|
Mp !< Mandel stress
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
|
|
Loading…
Reference in New Issue