corrected buggy calculation of Schmid matrix for twins introduced in rev1809.
(stress acting on twin systems was overestimated by factor of sqrt(3) due to that!!) additional polishing.
This commit is contained in:
parent
11ed7fab86
commit
1e32eb560e
|
@ -171,7 +171,7 @@ module lattice
|
||||||
!< Interaction types
|
!< Interaction types
|
||||||
!< 1 --- self interaction
|
!< 1 --- self interaction
|
||||||
!< 2 --- coplanar interaction
|
!< 2 --- coplanar interaction
|
||||||
!< 3 --- colinear interaction
|
!< 3 --- collinear interaction
|
||||||
!< 4 --- Hirth locks
|
!< 4 --- Hirth locks
|
||||||
!< 5 --- glissile junctions
|
!< 5 --- glissile junctions
|
||||||
!< 6 --- Lomer locks
|
!< 6 --- Lomer locks
|
||||||
|
@ -193,8 +193,8 @@ module lattice
|
||||||
],pInt),[lattice_fcc_Nslip,lattice_fcc_Ntwin],order=[2,1])
|
],pInt),[lattice_fcc_Nslip,lattice_fcc_Ntwin],order=[2,1])
|
||||||
!< Interaction types
|
!< Interaction types
|
||||||
!< 1 --- coplanar interaction
|
!< 1 --- coplanar interaction
|
||||||
!< 2 --- colinear interaction
|
!< 2 --- screw trace between slip system and twin habit plane (easy cross slip)
|
||||||
!< 3 --- hardened interaction
|
!< 3 --- other interaction
|
||||||
|
|
||||||
integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Nslip), target, private :: &
|
integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Nslip), target, private :: &
|
||||||
lattice_fcc_interactionTwinSlip = 0_pInt
|
lattice_fcc_interactionTwinSlip = 0_pInt
|
||||||
|
@ -226,10 +226,10 @@ module lattice
|
||||||
lattice_bcc_NtwinSystem = int([ 12, 0, 0, 0], pInt)
|
lattice_bcc_NtwinSystem = int([ 12, 0, 0, 0], pInt)
|
||||||
|
|
||||||
integer(pInt), parameter, private :: &
|
integer(pInt), parameter, private :: &
|
||||||
lattice_bcc_Nslip = 24_pInt ! sum(lattice_bcc_NslipSystem)
|
lattice_bcc_Nslip = 24_pInt ! sum(lattice_bcc_NslipSystem)
|
||||||
|
|
||||||
integer(pInt), parameter, private :: &
|
integer(pInt), parameter, private :: &
|
||||||
lattice_bcc_Ntwin = 12_pInt ! sum(lattice_bcc_NtwinSystem)
|
lattice_bcc_Ntwin = 12_pInt ! sum(lattice_bcc_NtwinSystem)
|
||||||
|
|
||||||
integer(pInt), private :: &
|
integer(pInt), private :: &
|
||||||
lattice_bcc_Nstructure = 0_pInt
|
lattice_bcc_Nstructure = 0_pInt
|
||||||
|
@ -322,33 +322,34 @@ module lattice
|
||||||
0.7071067812_pReal &
|
0.7071067812_pReal &
|
||||||
],[lattice_bcc_Ntwin])
|
],[lattice_bcc_Ntwin])
|
||||||
|
|
||||||
!> slip--slip interactions for BCC structures (2) from Lee et-al. Int J of Plast. (v15) 1999 pp. 625-645
|
! slip--slip interactions for BCC structures (2) from Lee et al. Int J Plast 15 (1999) 625-645
|
||||||
integer(pInt), dimension(lattice_bcc_Nslip,lattice_bcc_Nslip), target, private :: &
|
integer(pInt), dimension(lattice_bcc_Nslip,lattice_bcc_Nslip), target, private :: &
|
||||||
lattice_bcc_interactionSlipSlip = reshape(int( [&
|
lattice_bcc_interactionSlipSlip = reshape(int( [&
|
||||||
1,3,6,6,5,4,4,2,4,2,5,4,6,6,4,2,2,4,6,6,4,2,6,6, & ! ---> slip
|
1,3,6,6,5,4,4,2,4,2,5,4, 6,6,4,2,2,4,6,6,4,2,6,6, & ! ---> slip
|
||||||
3,1,6,6,4,2,5,4,5,4,4,2,6,6,2,4,4,2,6,6,2,4,6,6, & ! |
|
3,1,6,6,4,2,5,4,5,4,4,2, 6,6,2,4,4,2,6,6,2,4,6,6, & ! |
|
||||||
6,6,1,3,4,5,2,4,4,5,2,4,4,2,6,6,6,6,2,4,6,6,4,2, & ! |
|
6,6,1,3,4,5,2,4,4,5,2,4, 4,2,6,6,6,6,2,4,6,6,4,2, & ! |
|
||||||
6,6,3,1,2,4,4,5,2,4,4,5,2,4,6,6,6,6,4,2,6,6,2,4, & ! v slip
|
6,6,3,1,2,4,4,5,2,4,4,5, 2,4,6,6,6,6,4,2,6,6,2,4, & ! v slip
|
||||||
5,4,4,2,1,3,6,6,2,4,5,4,2,6,4,6,6,4,6,2,4,6,2,6, &
|
5,4,4,2,1,3,6,6,2,4,5,4, 2,6,4,6,6,4,6,2,4,6,2,6, &
|
||||||
4,2,5,4,3,1,6,6,4,5,4,2,4,6,2,6,6,2,6,4,2,6,4,6, &
|
4,2,5,4,3,1,6,6,4,5,4,2, 4,6,2,6,6,2,6,4,2,6,4,6, &
|
||||||
4,5,2,4,6,6,1,3,5,4,2,4,6,2,6,4,4,6,2,6,6,4,6,2, &
|
4,5,2,4,6,6,1,3,5,4,2,4, 6,2,6,4,4,6,2,6,6,4,6,2, &
|
||||||
2,4,4,5,6,6,3,1,4,2,4,5,6,4,6,2,2,6,4,6,6,2,6,4, &
|
2,4,4,5,6,6,3,1,4,2,4,5, 6,4,6,2,2,6,4,6,6,2,6,4, &
|
||||||
4,5,4,2,2,4,5,4,1,3,6,6,2,6,6,4,4,6,6,2,6,4,2,6, &
|
4,5,4,2,2,4,5,4,1,3,6,6, 2,6,6,4,4,6,6,2,6,4,2,6, &
|
||||||
2,4,5,4,4,5,4,2,3,1,6,6,4,6,6,2,2,6,6,4,6,2,4,6, &
|
2,4,5,4,4,5,4,2,3,1,6,6, 4,6,6,2,2,6,6,4,6,2,4,6, &
|
||||||
5,4,2,4,5,4,2,4,6,6,1,3,6,2,4,6,6,4,2,6,4,6,6,2, &
|
5,4,2,4,5,4,2,4,6,6,1,3, 6,2,4,6,6,4,2,6,4,6,6,2, &
|
||||||
4,2,4,5,4,2,4,5,6,6,3,1,6,4,2,6,6,2,4,6,2,6,6,4, &
|
4,2,4,5,4,2,4,5,6,6,3,1, 6,4,2,6,6,2,4,6,2,6,6,4, &
|
||||||
6,6,4,2,2,4,6,6,2,4,6,6,1,5,6,6,5,6,6,2,5,6,2,6, &
|
!
|
||||||
6,6,2,4,6,6,2,4,6,6,2,4,5,1,6,6,6,5,2,6,6,5,6,2, &
|
6,6,4,2,2,4,6,6,2,4,6,6, 1,5,6,6,5,6,6,2,5,6,2,6, &
|
||||||
4,2,6,6,4,2,6,6,6,6,4,2,6,6,1,5,6,2,5,6,2,6,5,6, &
|
6,6,2,4,6,6,2,4,6,6,2,4, 5,1,6,6,6,5,2,6,6,5,6,2, &
|
||||||
2,4,6,6,6,6,4,2,4,2,6,6,6,6,5,1,2,6,6,5,6,2,6,5, &
|
4,2,6,6,4,2,6,6,6,6,4,2, 6,6,1,5,6,2,5,6,2,6,5,6, &
|
||||||
2,4,6,6,6,6,4,2,4,2,6,6,5,6,6,2,1,6,5,6,5,2,6,6, &
|
2,4,6,6,6,6,4,2,4,2,6,6, 6,6,5,1,2,6,6,5,6,2,6,5, &
|
||||||
4,2,6,6,4,2,6,6,6,6,4,2,6,5,2,6,6,1,6,5,2,5,6,6, &
|
2,4,6,6,6,6,4,2,4,2,6,6, 5,6,6,2,1,6,5,6,5,2,6,6, &
|
||||||
6,6,2,4,6,6,2,4,6,6,2,4,6,2,5,6,5,6,1,6,6,6,5,2, &
|
4,2,6,6,4,2,6,6,6,6,4,2, 6,5,2,6,6,1,6,5,2,5,6,6, &
|
||||||
6,6,4,2,2,4,6,6,2,4,6,6,2,6,6,5,6,5,6,1,6,6,2,5, &
|
6,6,2,4,6,6,2,4,6,6,2,4, 6,2,5,6,5,6,1,6,6,6,5,2, &
|
||||||
4,2,6,6,4,2,6,6,6,6,4,2,5,6,2,6,5,2,6,6,1,6,6,5, &
|
6,6,4,2,2,4,6,6,2,4,6,6, 2,6,6,5,6,5,6,1,6,6,2,5, &
|
||||||
2,4,6,6,6,6,4,2,4,2,6,6,6,5,6,2,2,5,6,6,6,1,5,6, &
|
4,2,6,6,4,2,6,6,6,6,4,2, 5,6,2,6,5,2,6,6,1,6,6,5, &
|
||||||
6,6,4,2,2,4,6,6,2,4,6,6,2,6,5,6,6,6,5,2,6,5,1,6, &
|
2,4,6,6,6,6,4,2,4,2,6,6, 6,5,6,2,2,5,6,6,6,1,5,6, &
|
||||||
6,6,2,4,6,6,2,4,6,6,2,4,6,2,6,5,6,6,2,5,5,6,6,1 &
|
6,6,4,2,2,4,6,6,2,4,6,6, 2,6,5,6,6,6,5,2,6,5,1,6, &
|
||||||
|
6,6,2,4,6,6,2,4,6,6,2,4, 6,2,6,5,6,6,2,5,5,6,6,1 &
|
||||||
],pInt),[lattice_bcc_Nslip,lattice_bcc_Nslip],order=[2,1])
|
],pInt),[lattice_bcc_Nslip,lattice_bcc_Nslip],order=[2,1])
|
||||||
!< Interaction types
|
!< Interaction types
|
||||||
!< 1 --- self interaction
|
!< 1 --- self interaction
|
||||||
|
@ -372,6 +373,7 @@ module lattice
|
||||||
3,3,3,2,2,3,3,3,3,2,3,3, &
|
3,3,3,2,2,3,3,3,3,2,3,3, &
|
||||||
3,2,3,3,3,3,2,3,3,3,3,2, &
|
3,2,3,3,3,3,2,3,3,3,3,2, &
|
||||||
3,3,2,3,3,2,3,3,2,3,3,3, &
|
3,3,2,3,3,2,3,3,2,3,3,3, &
|
||||||
|
!
|
||||||
1,3,3,3,3,3,3,2,3,3,2,3, &
|
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,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, &
|
||||||
|
@ -387,14 +389,14 @@ module lattice
|
||||||
],pInt),[lattice_bcc_Nslip,lattice_bcc_Ntwin],order=[2,1])
|
],pInt),[lattice_bcc_Nslip,lattice_bcc_Ntwin],order=[2,1])
|
||||||
!< Interaction types
|
!< Interaction types
|
||||||
!< 1 --- coplanar interaction
|
!< 1 --- coplanar interaction
|
||||||
!< 2 --- colinear interaction
|
!< 2 --- screw trace between slip system and twin habit plane (easy cross slip)
|
||||||
!< 3 --- hardened interaction
|
!< 3 --- other interaction
|
||||||
|
|
||||||
!>twin--slip interactions for BCC structures (2) MISSING: not implemented yet
|
! twin--slip interactions for BCC structures (2) MISSING: not implemented yet
|
||||||
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Nslip), target, private :: &
|
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Nslip), target, private :: &
|
||||||
lattice_bcc_interactionTwinSlip = 0_pInt
|
lattice_bcc_interactionTwinSlip = 0_pInt
|
||||||
|
|
||||||
!> twin-twin interactions for BCC structures (2) MISSING: not implemented yet
|
! twin--twin interactions for BCC structures (2)
|
||||||
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Ntwin), target, private :: &
|
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Ntwin), target, private :: &
|
||||||
lattice_bcc_interactionTwinTwin = reshape(int( [&
|
lattice_bcc_interactionTwinTwin = reshape(int( [&
|
||||||
1,3,3,3,3,3,3,2,3,3,2,3, & ! ---> twin
|
1,3,3,3,3,3,3,2,3,3,2,3, & ! ---> twin
|
||||||
|
@ -412,13 +414,14 @@ module lattice
|
||||||
],pInt),[lattice_bcc_Ntwin,lattice_bcc_Ntwin],order=[2,1])
|
],pInt),[lattice_bcc_Ntwin,lattice_bcc_Ntwin],order=[2,1])
|
||||||
!< Interaction types
|
!< Interaction types
|
||||||
!< 1 --- self interaction
|
!< 1 --- self interaction
|
||||||
!< 2 --- coplinear interaction
|
!< 2 --- collinear interaction
|
||||||
!< 3 --- hardened interaction
|
!< 3 --- other interaction
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hex (3+)
|
! hex (3+)
|
||||||
|
|
||||||
integer(pInt), dimension(lattice_maxNslipFamily), parameter, private :: &
|
integer(pInt), dimension(lattice_maxNslipFamily), parameter, private :: &
|
||||||
lattice_hex_NslipSystem = int([ 3, 3, 6,12, 6],pInt)
|
lattice_hex_NslipSystem = int([ 3, 3, 6, 12, 6],pInt)
|
||||||
|
|
||||||
integer(pInt), dimension(lattice_maxNtwinFamily), parameter, private :: &
|
integer(pInt), dimension(lattice_maxNtwinFamily), parameter, private :: &
|
||||||
lattice_hex_NtwinSystem = int([ 6, 6, 6, 6],pInt)
|
lattice_hex_NtwinSystem = int([ 6, 6, 6, 6],pInt)
|
||||||
|
@ -916,20 +919,20 @@ integer(pInt) function lattice_initializeStructure(struct,CoverA)
|
||||||
lattice_Sslip(1:3,1:3,i,myStructure) = math_tensorproduct(lattice_sd(1:3,i,myStructure), &
|
lattice_Sslip(1:3,1:3,i,myStructure) = math_tensorproduct(lattice_sd(1:3,i,myStructure), &
|
||||||
lattice_sn(1:3,i,myStructure))
|
lattice_sn(1:3,i,myStructure))
|
||||||
lattice_Sslip_v(1:6,i,myStructure) = math_Mandel33to6(math_symmetric33(lattice_Sslip(1:3,1:3,i,myStructure)))
|
lattice_Sslip_v(1:6,i,myStructure) = math_Mandel33to6(math_symmetric33(lattice_Sslip(1:3,1:3,i,myStructure)))
|
||||||
if (abs(math_trace33(lattice_Sslip(1:3,1:3,i,myStructure))) > 1.0e-8) &
|
if (abs(math_trace33(lattice_Sslip(1:3,1:3,i,myStructure))) > 1.0e-8_pReal) &
|
||||||
call IO_error(0_pInt,myStructure,i,0_pInt,ext_msg = 'dilatational slip Schmid matrix')
|
call IO_error(0_pInt,myStructure,i,0_pInt,ext_msg = 'dilatational slip Schmid matrix')
|
||||||
enddo
|
enddo
|
||||||
do i = 1_pInt,myNtwin ! store twin system vectors and Schmid plus rotation matrix for my structure
|
do i = 1_pInt,myNtwin ! store twin system vectors and Schmid plus rotation matrix for my structure
|
||||||
lattice_td(1:3,i,myStructure) = td(1:3,i)/math_norm3(sd(1:3,i)) ! make unit vector
|
lattice_td(1:3,i,myStructure) = td(1:3,i)/math_norm3(td(1:3,i)) ! make unit vector
|
||||||
lattice_tn(1:3,i,myStructure) = tn(1:3,i)/math_norm3(sn(1:3,i)) ! make unit vector
|
lattice_tn(1:3,i,myStructure) = tn(1:3,i)/math_norm3(tn(1:3,i)) ! make unit vector
|
||||||
lattice_tt(1:3,i,myStructure) = math_vectorproduct(lattice_td(1:3,i,myStructure), &
|
lattice_tt(1:3,i,myStructure) = math_vectorproduct(lattice_td(1:3,i,myStructure), &
|
||||||
lattice_tn(1:3,i,myStructure))
|
lattice_tn(1:3,i,myStructure))
|
||||||
lattice_Stwin(1:3,1:3,i,myStructure) = math_tensorproduct(lattice_td(1:3,i,myStructure), &
|
lattice_Stwin(1:3,1:3,i,myStructure) = math_tensorproduct(lattice_td(1:3,i,myStructure), &
|
||||||
lattice_tn(1:3,i,myStructure))
|
lattice_tn(1:3,i,myStructure))
|
||||||
lattice_Stwin_v(1:6,i,myStructure) = math_Mandel33to6(math_symmetric33(lattice_Stwin(1:3,1:3,i,myStructure)))
|
lattice_Stwin_v(1:6,i,myStructure) = math_Mandel33to6(math_symmetric33(lattice_Stwin(1:3,1:3,i,myStructure)))
|
||||||
lattice_Qtwin(1:3,1:3,i,myStructure) = math_AxisAngleToR(tn(1:3,i),180.0_pReal*INRAD)
|
lattice_Qtwin(1:3,1:3,i,myStructure) = math_AxisAngleToR(tn(1:3,i),180.0_pReal*INRAD)
|
||||||
lattice_shearTwin(i,myStructure) = ts(i)
|
lattice_shearTwin(i,myStructure) = ts(i)
|
||||||
if (abs(math_trace33(lattice_Stwin(1:3,1:3,i,myStructure))) > 1.0e-8) &
|
if (abs(math_trace33(lattice_Stwin(1:3,1:3,i,myStructure))) > 1.0e-8_pReal) &
|
||||||
call IO_error(0_pInt,myStructure,i,0_pInt,ext_msg = 'dilatational twin Schmid matrix')
|
call IO_error(0_pInt,myStructure,i,0_pInt,ext_msg = 'dilatational twin Schmid matrix')
|
||||||
enddo
|
enddo
|
||||||
lattice_NslipSystem(1:lattice_maxNslipFamily,myStructure) = myNslipSystem ! number of slip systems in each family
|
lattice_NslipSystem(1:lattice_maxNslipFamily,myStructure) = myNslipSystem ! number of slip systems in each family
|
||||||
|
|
|
@ -1580,7 +1580,7 @@ pure function math_AxisAngleToR(axis,omega)
|
||||||
|
|
||||||
norm = sqrt(math_mul3x3(axis,axis))
|
norm = sqrt(math_mul3x3(axis,axis))
|
||||||
if (norm > 1.0e-8_pReal) then ! non-zero rotation
|
if (norm > 1.0e-8_pReal) then ! non-zero rotation
|
||||||
forall (i=1_pInt:3_pInt) axisNrm(i) = axis(i)/norm ! normalize axis to be sure
|
axisNrm = axis/norm ! normalize axis to be sure
|
||||||
|
|
||||||
s = sin(omega)
|
s = sin(omega)
|
||||||
c = cos(omega)
|
c = cos(omega)
|
||||||
|
@ -1624,10 +1624,10 @@ pure function math_AxisAngleToQuaternion(axis,omega)
|
||||||
|
|
||||||
norm = sqrt(math_mul3x3(axis,axis))
|
norm = sqrt(math_mul3x3(axis,axis))
|
||||||
if (norm > 1.0e-8_pReal) then ! non-zero rotation
|
if (norm > 1.0e-8_pReal) then ! non-zero rotation
|
||||||
forall (i=1_pInt:3_pInt) axisNrm(i) = axis(i)/norm ! normalize axis to be sure
|
axisNrm = axis/norm ! normalize axis to be sure
|
||||||
! formula taken from http://en.wikipedia.org/wiki/Rotation_representation_%28mathematics%29#Rodrigues_parameters
|
! formula taken from http://en.wikipedia.org/wiki/Rotation_representation_%28mathematics%29#Rodrigues_parameters
|
||||||
s = sin(omega/2.0_pReal)
|
s = sin(0.5_pReal*omega)
|
||||||
c = cos(omega/2.0_pReal)
|
c = cos(0.5_pReal*omega)
|
||||||
math_AxisAngleToQuaternion(1) = c
|
math_AxisAngleToQuaternion(1) = c
|
||||||
math_AxisAngleToQuaternion(2:4) = s * axisNrm(1:3)
|
math_AxisAngleToQuaternion(2:4) = s * axisNrm(1:3)
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue