also using nonSchmid matrix from lattice
This commit is contained in:
parent
35956ce0c8
commit
79b0efc678
|
@ -1229,6 +1229,7 @@ real(pReal), dimension(4,36), parameter, private :: &
|
||||||
LATTICE_hex_ID, &
|
LATTICE_hex_ID, &
|
||||||
lattice_SchmidMatrix_slip, &
|
lattice_SchmidMatrix_slip, &
|
||||||
lattice_SchmidMatrix_twin, &
|
lattice_SchmidMatrix_twin, &
|
||||||
|
lattice_nonSchmidMatrix, &
|
||||||
lattice_interactionSlipSlip2, &
|
lattice_interactionSlipSlip2, &
|
||||||
lattice_interactionTwinTwin2, &
|
lattice_interactionTwinTwin2, &
|
||||||
lattice_interactionSlipTwin2, &
|
lattice_interactionSlipTwin2, &
|
||||||
|
@ -2226,13 +2227,14 @@ function lattice_C66_trans(Ntrans,C66_parent,structure_parent,cOverA_parent, &
|
||||||
|
|
||||||
! ! Schmid matrices with non-Schmid contributions according to Koester_etal2012, Acta Materialia 60 (2012) 3894–3901, eq. (17) ("n1" is replaced by either "np" or "nn" according to either positive or negative slip direction)
|
! ! Schmid matrices with non-Schmid contributions according to Koester_etal2012, Acta Materialia 60 (2012) 3894–3901, eq. (17) ("n1" is replaced by either "np" or "nn" according to either positive or negative slip direction)
|
||||||
! ! "np" and "nn" according to Gröger_etal2008, Acta Materialia 56 (2008) 5412–5425, table 1 (corresponds to their "n1" for positive and negative slip direction respectively)
|
! ! "np" and "nn" according to Gröger_etal2008, Acta Materialia 56 (2008) 5412–5425, table 1 (corresponds to their "n1" for positive and negative slip direction respectively)
|
||||||
|
|
||||||
function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSchmidMatrix)
|
function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSchmidMatrix)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
INRAD, &
|
INRAD, &
|
||||||
math_tensorproduct33, &
|
math_tensorproduct33, &
|
||||||
math_crossproduct, &
|
math_crossproduct, &
|
||||||
math_mul33x3, &
|
math_mul33x3, &
|
||||||
math_axisAngleToR
|
math_axisAngleToR
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
integer(pInt), dimension(:), intent(in) :: Nslip !< number of active slip systems per family
|
||||||
real(pReal), dimension(6), intent(in) :: nonSchmidCoefficients
|
real(pReal), dimension(6), intent(in) :: nonSchmidCoefficients
|
||||||
|
@ -2253,7 +2255,7 @@ function lattice_nonSchmidMatrix(Nslip,nonSchmidCoefficients,sense) result(nonSc
|
||||||
do i = 1_pInt,sum(Nslip)
|
do i = 1_pInt,sum(Nslip)
|
||||||
direction = coordinateSystem(1:3,1,i)
|
direction = coordinateSystem(1:3,1,i)
|
||||||
normal = coordinateSystem(1:3,2,i)
|
normal = coordinateSystem(1:3,2,i)
|
||||||
np = math_mul33x3(math_axisAngleToR(+direction,60.0_pReal*INRAD), normal)
|
np = math_mul33x3(math_axisAngleToR(direction,60.0_pReal*INRAD), normal)
|
||||||
nonSchmidMatrix(1:3,1:3,i) &
|
nonSchmidMatrix(1:3,1:3,i) &
|
||||||
= nonSchmidMatrix(1:3,1:3,i) &
|
= nonSchmidMatrix(1:3,1:3,i) &
|
||||||
+ nonSchmidCoefficients(1) * math_tensorproduct33(direction, np) &
|
+ nonSchmidCoefficients(1) * math_tensorproduct33(direction, np) &
|
||||||
|
|
|
@ -213,7 +213,8 @@ subroutine plastic_phenopowerlaw_init
|
||||||
defaultVal=[(0.0_pReal,i=1_pInt,size(prm%Nslip))])
|
defaultVal=[(0.0_pReal,i=1_pInt,size(prm%Nslip))])
|
||||||
prm%nonSchmidCoeff = config_phase(p)%getFloats('nonschmid_coefficients',&
|
prm%nonSchmidCoeff = config_phase(p)%getFloats('nonschmid_coefficients',&
|
||||||
defaultVal = emptyRealArray )
|
defaultVal = emptyRealArray )
|
||||||
|
prm%nonSchmid_pos = lattice_nonSchmidMatrix(prm%Nslip,prm%nonSchmidCoeff,+1_pInt)
|
||||||
|
prm%nonSchmid_neg = lattice_nonSchmidMatrix(prm%Nslip,prm%nonSchmidCoeff,-1_pInt)
|
||||||
prm%gdot0_slip = config_phase(p)%getFloat('gdot0_slip')
|
prm%gdot0_slip = config_phase(p)%getFloat('gdot0_slip')
|
||||||
prm%n_slip = config_phase(p)%getFloat('n_slip')
|
prm%n_slip = config_phase(p)%getFloat('n_slip')
|
||||||
prm%a_slip = config_phase(p)%getFloat('a_slip')
|
prm%a_slip = config_phase(p)%getFloat('a_slip')
|
||||||
|
@ -381,32 +382,9 @@ subroutine plastic_phenopowerlaw_init
|
||||||
allocate(plasticState(p)%RKCK45dotState (6,sizeDotState,NipcMyPhase), source=0.0_pReal)
|
allocate(plasticState(p)%RKCK45dotState (6,sizeDotState,NipcMyPhase), source=0.0_pReal)
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! calculate hardening matrices
|
|
||||||
allocate(prm%nonSchmid_pos(3,3,prm%totalNslip),source = 0.0_pReal)
|
|
||||||
allocate(prm%nonSchmid_neg(3,3,prm%totalNslip),source = 0.0_pReal)
|
|
||||||
i = 0_pInt
|
|
||||||
mySlipFamilies: do f = 1_pInt,size(prm%Nslip,1) ! >>> interaction slip -- X
|
|
||||||
index_myFamily = sum(prm%Nslip(1:f-1_pInt))
|
|
||||||
|
|
||||||
mySlipSystems: do j = 1_pInt,prm%Nslip(f)
|
|
||||||
i = i + 1_pInt
|
|
||||||
prm%nonSchmid_pos(1:3,1:3,i) = lattice_Sslip(1:3,1:3,1, index_myFamily+j,p)
|
|
||||||
prm%nonSchmid_neg(1:3,1:3,i) = lattice_Sslip(1:3,1:3,1, index_myFamily+j,p)
|
|
||||||
do k = 1,size(prm%nonSchmidCoeff)
|
|
||||||
prm%nonSchmid_pos(1:3,1:3,i) = prm%nonSchmid_pos(1:3,1:3,i) &
|
|
||||||
+ lattice_Sslip(1:3,1:3,2*k, index_myFamily+j,p) &
|
|
||||||
* prm%nonSchmidCoeff(k)
|
|
||||||
prm%nonSchmid_neg(1:3,1:3,i) = prm%nonSchmid_neg(1:3,1:3,i) &
|
|
||||||
+ lattice_Sslip(1:3,1:3,2*k+1,index_myFamily+j,p) &
|
|
||||||
* prm%nonSchmidCoeff(k)
|
|
||||||
enddo
|
|
||||||
enddo mySlipSystems
|
|
||||||
enddo mySlipFamilies
|
|
||||||
|
|
||||||
allocate(prm%gamma_twin_char(prm%totalNtwin),source = 0.0_pReal)
|
allocate(prm%gamma_twin_char(prm%totalNtwin),source = 0.0_pReal)
|
||||||
i = 0_pInt
|
i = 0_pInt
|
||||||
myTwinFamilies: do f = 1_pInt,size(prm%Ntwin,1) ! >>> interaction twin -- X
|
myTwinFamilies: do f = 1_pInt,size(prm%Ntwin,1)
|
||||||
index_myFamily = sum(prm%Ntwin(1:f-1_pInt))
|
index_myFamily = sum(prm%Ntwin(1:f-1_pInt))
|
||||||
myTwinSystems: do j = 1_pInt,prm%Ntwin(f)
|
myTwinSystems: do j = 1_pInt,prm%Ntwin(f)
|
||||||
i = i + 1_pInt
|
i = i + 1_pInt
|
||||||
|
|
Loading…
Reference in New Issue