using trans-trans interactions from lattice
This commit is contained in:
parent
8424ba76ac
commit
1b571d33a7
|
@ -1268,6 +1268,7 @@ real(pReal), dimension(4,36), parameter, private :: &
|
||||||
lattice_interaction_TwinTwin, &
|
lattice_interaction_TwinTwin, &
|
||||||
lattice_interaction_SlipTwin, &
|
lattice_interaction_SlipTwin, &
|
||||||
lattice_interaction_TwinSlip, &
|
lattice_interaction_TwinSlip, &
|
||||||
|
lattice_interaction_TransTrans, &
|
||||||
lattice_characteristicShear_Twin
|
lattice_characteristicShear_Twin
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
@ -2570,6 +2571,9 @@ function lattice_interaction_TransTrans(Ntrans,interactionValues,structure,targe
|
||||||
if (trim(structure) == 'fcc' .and. trim(targetStructure) == 'hex') then
|
if (trim(structure) == 'fcc' .and. trim(targetStructure) == 'hex') then
|
||||||
interactionTypes = lattice_fccToHex_interactionTransTrans
|
interactionTypes = lattice_fccToHex_interactionTransTrans
|
||||||
NtransMax = lattice_fcc_Ntrans
|
NtransMax = lattice_fcc_Ntrans
|
||||||
|
elseif (trim(structure) == 'fcc' .and. trim(targetStructure) == 'bcc') then
|
||||||
|
interactionTypes = lattice_fccToHex_interactionTransTrans !< ToDo: The definition for bcc does not exist yet
|
||||||
|
NtransMax = lattice_fcc_Ntrans
|
||||||
else
|
else
|
||||||
call IO_error(132_pInt,ext_msg=trim(structure)//' => '//trim(targetStructure))
|
call IO_error(132_pInt,ext_msg=trim(structure)//' => '//trim(targetStructure))
|
||||||
end if
|
end if
|
||||||
|
@ -2827,7 +2831,7 @@ function buildCoordinateSystem(active,maximum,system,structure,cOverA)
|
||||||
normal = system(4:6,j)
|
normal = system(4:6,j)
|
||||||
|
|
||||||
case ('hex')
|
case ('hex')
|
||||||
!ToDo: check c/a ratio
|
!ToDo: check if c/a ratio is sensible
|
||||||
! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(c/a)])
|
! direction [uvtw]->[3u/2 (u+2v)*sqrt(3)/2 w*(c/a)])
|
||||||
direction = [ system(1,j)*1.5_pReal, &
|
direction = [ system(1,j)*1.5_pReal, &
|
||||||
(system(1,j)+2.0_pReal*system(2,j))*sqrt(0.75_pReal), &
|
(system(1,j)+2.0_pReal*system(2,j))*sqrt(0.75_pReal), &
|
||||||
|
@ -2839,7 +2843,7 @@ function buildCoordinateSystem(active,maximum,system,structure,cOverA)
|
||||||
system(8,j)/CoverA ]
|
system(8,j)/CoverA ]
|
||||||
|
|
||||||
case ('bct')
|
case ('bct')
|
||||||
!ToDo: check c/a ratio
|
!ToDo: check if c/a ratio is sensible
|
||||||
direction = [system(1:2,j),system(3,i)*CoverA]
|
direction = [system(1:2,j),system(3,i)*CoverA]
|
||||||
normal = [system(4:5,j),system(6,i)/CoverA]
|
normal = [system(4:5,j),system(6,i)/CoverA]
|
||||||
|
|
||||||
|
|
|
@ -245,14 +245,6 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
||||||
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
||||||
|
|
||||||
type(tParameters) :: &
|
|
||||||
prm
|
|
||||||
type(tDislotwinState) :: &
|
|
||||||
stt, &
|
|
||||||
dot
|
|
||||||
type(tDislotwinMicrostructure) :: &
|
|
||||||
mse
|
|
||||||
|
|
||||||
integer(kind(undefined_ID)) :: &
|
integer(kind(undefined_ID)) :: &
|
||||||
outputID !< ID of each post result output
|
outputID !< ID of each post result output
|
||||||
|
|
||||||
|
@ -411,7 +403,10 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
prm%xc_trans = config_phase(p)%getFloat('xc_trans', defaultVal=0.0_pReal) ! ToDo: How to handle that???
|
prm%xc_trans = config_phase(p)%getFloat('xc_trans', defaultVal=0.0_pReal) ! ToDo: How to handle that???
|
||||||
prm%L0_trans = config_phase(p)%getFloat('l0_trans')
|
prm%L0_trans = config_phase(p)%getFloat('l0_trans')
|
||||||
|
|
||||||
prm%interaction_TransTrans = spread(config_phase(p)%getFloats('interaction_transtrans'),2,1)
|
prm%interaction_TransTrans = lattice_interaction_TransTrans(prm%Ntrans,&
|
||||||
|
config_phase(p)%getFloats('interaction_transtrans'), &
|
||||||
|
structure(1:3),&
|
||||||
|
trim(config_phase(p)%getString('trans_lattice_structure')))
|
||||||
if (lattice_structure(p) /= LATTICE_fcc_ID) then
|
if (lattice_structure(p) /= LATTICE_fcc_ID) then
|
||||||
prm%Ndot0_trans = config_phase(p)%getFloats('ndot0_trans')
|
prm%Ndot0_trans = config_phase(p)%getFloats('ndot0_trans')
|
||||||
prm%Ndot0_trans = math_expand(prm%Ndot0_trans,prm%Ntrans)
|
prm%Ndot0_trans = math_expand(prm%Ndot0_trans,prm%Ntrans)
|
||||||
|
@ -651,7 +646,6 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
|
|
||||||
|
|
||||||
allocate(temp1(prm%totalNtrans,prm%totalNslip), source =0.0_pReal)
|
allocate(temp1(prm%totalNtrans,prm%totalNslip), source =0.0_pReal)
|
||||||
allocate(temp2(prm%totalNtrans,prm%totalNtrans), source =0.0_pReal)
|
|
||||||
allocate(prm%C66_trans(6,6,prm%totalNtrans) ,source=0.0_pReal)
|
allocate(prm%C66_trans(6,6,prm%totalNtrans) ,source=0.0_pReal)
|
||||||
allocate(prm%Schmid_trans(3,3,prm%totalNtrans),source = 0.0_pReal)
|
allocate(prm%Schmid_trans(3,3,prm%totalNtrans),source = 0.0_pReal)
|
||||||
i = 0_pInt
|
i = 0_pInt
|
||||||
|
@ -675,21 +669,9 @@ subroutine plastic_dislotwin_init(fileUnit)
|
||||||
sum(lattice_NslipSystem(1:o-1_pInt,p))+k, &
|
sum(lattice_NslipSystem(1:o-1_pInt,p))+k, &
|
||||||
p) ,1 )
|
p) ,1 )
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
|
|
||||||
do o = 1_pInt,size(prm%Ntrans,1)
|
|
||||||
index_otherFamily = sum(prm%Ntrans(1:o-1_pInt))
|
|
||||||
do k = 1_pInt,prm%Ntrans(o) ! loop over (active) systems in other family (trans)
|
|
||||||
temp2(index_myFamily+j,index_otherFamily+k) = &
|
|
||||||
prm%interaction_TransTrans(lattice_interactionTransTrans( &
|
|
||||||
sum(lattice_NtransSystem(1:f-1_pInt,p))+j, &
|
|
||||||
sum(lattice_NtransSystem(1:o-1_pInt,p))+k, &
|
|
||||||
p),1 )
|
|
||||||
enddo; enddo
|
|
||||||
|
|
||||||
enddo transSystemsLoop
|
enddo transSystemsLoop
|
||||||
enddo transFamiliesLoop
|
enddo transFamiliesLoop
|
||||||
prm%interaction_TransSlip = temp1; deallocate(temp1)
|
prm%interaction_TransSlip = temp1; deallocate(temp1)
|
||||||
prm%interaction_TransTrans = temp2; deallocate(temp2)
|
|
||||||
|
|
||||||
startIndex=1_pInt
|
startIndex=1_pInt
|
||||||
endIndex=prm%totalNslip
|
endIndex=prm%totalNslip
|
||||||
|
|
Loading…
Reference in New Issue