output info about used slip/twin systems
This commit is contained in:
parent
d2b5a4b339
commit
61a3b33e71
|
@ -1930,7 +1930,8 @@ subroutine buildTransformationSystem(Q,S,Ntrans,cOverA,a_fcc,a_bcc)
|
||||||
-1,-2,-1, -1, 1,-1, &
|
-1,-2,-1, -1, 1,-1, &
|
||||||
-1, 1, 2, -1, 1,-1 &
|
-1, 1, 2, -1, 1,-1 &
|
||||||
],pReal),shape(FCCTOHEX_SYSTEMTRANS))
|
],pReal),shape(FCCTOHEX_SYSTEMTRANS))
|
||||||
real(pReal), dimension(4,fcc_Ntrans), parameter :: &
|
|
||||||
|
real(pReal), dimension(4,fcc_Ntrans), parameter :: &
|
||||||
FCCTOBCC_SYSTEMTRANS = reshape([&
|
FCCTOBCC_SYSTEMTRANS = reshape([&
|
||||||
0.0, 1.0, 0.0, 10.26, & ! Pitsch OR (Ma & Hartmaier 2014, Table 3)
|
0.0, 1.0, 0.0, 10.26, & ! Pitsch OR (Ma & Hartmaier 2014, Table 3)
|
||||||
0.0,-1.0, 0.0, 10.26, &
|
0.0,-1.0, 0.0, 10.26, &
|
||||||
|
@ -1978,7 +1979,7 @@ subroutine buildTransformationSystem(Q,S,Ntrans,cOverA,a_fcc,a_bcc)
|
||||||
0.0, 0.0, 1.0, 45.0 &
|
0.0, 0.0, 1.0, 45.0 &
|
||||||
],shape(FCCTOBCC_BAINROT))
|
],shape(FCCTOBCC_BAINROT))
|
||||||
|
|
||||||
if (a_bcc > 0.0_pReal .and. a_fcc > 0.0_pReal .and. dEq0(cOverA)) then ! fcc -> bcc transformation
|
if (a_bcc > 0.0_pReal .and. a_fcc > 0.0_pReal .and. dEq0(cOverA)) then ! fcc -> bcc
|
||||||
do i = 1,sum(Ntrans)
|
do i = 1,sum(Ntrans)
|
||||||
call R%fromAxisAngle(FCCTOBCC_SYSTEMTRANS(:,i),degrees=.true.,P=1)
|
call R%fromAxisAngle(FCCTOBCC_SYSTEMTRANS(:,i),degrees=.true.,P=1)
|
||||||
call B%fromAxisAngle(FCCTOBCC_BAINROT(:,i), degrees=.true.,P=1)
|
call B%fromAxisAngle(FCCTOBCC_BAINROT(:,i), degrees=.true.,P=1)
|
||||||
|
@ -1992,7 +1993,7 @@ subroutine buildTransformationSystem(Q,S,Ntrans,cOverA,a_fcc,a_bcc)
|
||||||
Q(1:3,1:3,i) = matmul(R%asMatrix(),B%asMatrix())
|
Q(1:3,1:3,i) = matmul(R%asMatrix(),B%asMatrix())
|
||||||
S(1:3,1:3,i) = matmul(R%asMatrix(),U) - MATH_I3
|
S(1:3,1:3,i) = matmul(R%asMatrix(),U) - MATH_I3
|
||||||
enddo
|
enddo
|
||||||
elseif (cOverA > 0.0_pReal .and. dEq0(a_bcc)) then ! fcc -> hex transformation
|
elseif (cOverA > 0.0_pReal .and. dEq0(a_bcc)) then ! fcc -> hex
|
||||||
ss = MATH_I3
|
ss = MATH_I3
|
||||||
sd = MATH_I3
|
sd = MATH_I3
|
||||||
ss(1,3) = sqrt(2.0_pReal)/4.0_pReal
|
ss(1,3) = sqrt(2.0_pReal)/4.0_pReal
|
||||||
|
|
|
@ -83,6 +83,9 @@ submodule(phase:plastic) dislotwin
|
||||||
ExtendedDislocations, & !< consider split into partials for climb calculation
|
ExtendedDislocations, & !< consider split into partials for climb calculation
|
||||||
fccTwinTransNucleation, & !< twinning and transformation models are for fcc
|
fccTwinTransNucleation, & !< twinning and transformation models are for fcc
|
||||||
omitDipoles !< flag controlling consideration of dipole formation
|
omitDipoles !< flag controlling consideration of dipole formation
|
||||||
|
character(len=:), allocatable, dimension(:) :: &
|
||||||
|
systems_sl, &
|
||||||
|
systems_tw
|
||||||
end type !< container type for internal constitutive parameters
|
end type !< container type for internal constitutive parameters
|
||||||
|
|
||||||
type :: tDislotwinState
|
type :: tDislotwinState
|
||||||
|
@ -193,6 +196,7 @@ module function plastic_dislotwin_init() result(myPlasticity)
|
||||||
N_sl = pl%get_as1dInt('N_sl',defaultVal=emptyIntArray)
|
N_sl = pl%get_as1dInt('N_sl',defaultVal=emptyIntArray)
|
||||||
prm%sum_N_sl = sum(abs(N_sl))
|
prm%sum_N_sl = sum(abs(N_sl))
|
||||||
slipActive: if (prm%sum_N_sl > 0) then
|
slipActive: if (prm%sum_N_sl > 0) then
|
||||||
|
prm%systems_sl = lattice_labels_slip(N_sl,phase_lattice(ph))
|
||||||
prm%P_sl = lattice_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph))
|
prm%P_sl = lattice_SchmidMatrix_slip(N_sl,phase_lattice(ph),phase_cOverA(ph))
|
||||||
prm%h_sl_sl = lattice_interaction_SlipBySlip(N_sl,pl%get_as1dFloat('h_sl-sl'),phase_lattice(ph))
|
prm%h_sl_sl = lattice_interaction_SlipBySlip(N_sl,pl%get_as1dFloat('h_sl-sl'),phase_lattice(ph))
|
||||||
prm%forestProjection = lattice_forestProjection_edge(N_sl,phase_lattice(ph),phase_cOverA(ph))
|
prm%forestProjection = lattice_forestProjection_edge(N_sl,phase_lattice(ph),phase_cOverA(ph))
|
||||||
|
@ -261,6 +265,7 @@ module function plastic_dislotwin_init() result(myPlasticity)
|
||||||
N_tw = pl%get_as1dInt('N_tw', defaultVal=emptyIntArray)
|
N_tw = pl%get_as1dInt('N_tw', defaultVal=emptyIntArray)
|
||||||
prm%sum_N_tw = sum(abs(N_tw))
|
prm%sum_N_tw = sum(abs(N_tw))
|
||||||
twinActive: if (prm%sum_N_tw > 0) then
|
twinActive: if (prm%sum_N_tw > 0) then
|
||||||
|
prm%systems_tw = lattice_labels_twin(N_tw,phase_lattice(ph))
|
||||||
prm%P_tw = lattice_SchmidMatrix_twin(N_tw,phase_lattice(ph),phase_cOverA(ph))
|
prm%P_tw = lattice_SchmidMatrix_twin(N_tw,phase_lattice(ph),phase_cOverA(ph))
|
||||||
prm%h_tw_tw = lattice_interaction_TwinByTwin(N_tw,pl%get_as1dFloat('h_tw-tw'), &
|
prm%h_tw_tw = lattice_interaction_TwinByTwin(N_tw,pl%get_as1dFloat('h_tw-tw'), &
|
||||||
phase_lattice(ph))
|
phase_lattice(ph))
|
||||||
|
@ -794,44 +799,49 @@ module subroutine plastic_dislotwin_results(ph,group)
|
||||||
integer, intent(in) :: ph
|
integer, intent(in) :: ph
|
||||||
character(len=*), intent(in) :: group
|
character(len=*), intent(in) :: group
|
||||||
|
|
||||||
integer :: o
|
integer :: ou
|
||||||
|
|
||||||
associate(prm => param(ph), stt => state(ph), dst => dependentState(ph))
|
|
||||||
outputsLoop: do o = 1,size(prm%output)
|
|
||||||
select case(trim(prm%output(o)))
|
|
||||||
|
|
||||||
case('rho_mob')
|
associate(prm => param(ph), stt => state(ph), dst => dependentState(ph))
|
||||||
if(prm%sum_N_sl>0) call results_writeDataset(stt%rho_mob,group,trim(prm%output(o)), &
|
|
||||||
'mobile dislocation density','1/m²')
|
|
||||||
case('rho_dip')
|
|
||||||
if(prm%sum_N_sl>0) call results_writeDataset(stt%rho_dip,group,trim(prm%output(o)), &
|
|
||||||
'dislocation dipole density','1/m²')
|
|
||||||
case('gamma_sl')
|
|
||||||
if(prm%sum_N_sl>0) call results_writeDataset(stt%gamma_sl,group,trim(prm%output(o)), &
|
|
||||||
'plastic shear','1')
|
|
||||||
case('Lambda_sl')
|
|
||||||
if(prm%sum_N_sl>0) call results_writeDataset(dst%Lambda_sl,group,trim(prm%output(o)), &
|
|
||||||
'mean free path for slip','m')
|
|
||||||
case('tau_pass')
|
|
||||||
if(prm%sum_N_sl>0) call results_writeDataset(dst%tau_pass,group,trim(prm%output(o)), &
|
|
||||||
'passing stress for slip','Pa')
|
|
||||||
|
|
||||||
case('f_tw')
|
do ou = 1,size(prm%output)
|
||||||
if(prm%sum_N_tw>0) call results_writeDataset(stt%f_tw,group,trim(prm%output(o)), &
|
|
||||||
'twinned volume fraction','m³/m³')
|
|
||||||
case('Lambda_tw')
|
|
||||||
if(prm%sum_N_tw>0) call results_writeDataset(dst%Lambda_tw,group,trim(prm%output(o)), &
|
|
||||||
'mean free path for twinning','m')
|
|
||||||
case('tau_hat_tw')
|
|
||||||
if(prm%sum_N_tw>0) call results_writeDataset(dst%tau_hat_tw,group,trim(prm%output(o)), &
|
|
||||||
'threshold stress for twinning','Pa')
|
|
||||||
|
|
||||||
case('f_tr')
|
select case(trim(prm%output(ou)))
|
||||||
if(prm%sum_N_tr>0) call results_writeDataset(stt%f_tr,group,trim(prm%output(o)), &
|
|
||||||
'martensite volume fraction','m³/m³')
|
case('rho_mob')
|
||||||
|
call results_writePhaseState(stt%rho_mob,group,trim(prm%output(ou)),prm%systems_sl, &
|
||||||
|
'mobile dislocation density','1/m²')
|
||||||
|
case('rho_dip')
|
||||||
|
call results_writePhaseState(stt%rho_dip,group,trim(prm%output(ou)),prm%systems_sl, &
|
||||||
|
'dislocation dipole density','1/m²')
|
||||||
|
case('gamma_sl')
|
||||||
|
call results_writePhaseState(stt%gamma_sl,group,trim(prm%output(ou)),prm%systems_sl, &
|
||||||
|
'plastic shear','1')
|
||||||
|
case('Lambda_sl')
|
||||||
|
call results_writePhaseState(dst%Lambda_sl,group,trim(prm%output(ou)),prm%systems_sl, &
|
||||||
|
'mean free path for slip','m')
|
||||||
|
case('tau_pass')
|
||||||
|
call results_writePhaseState(dst%tau_pass,group,trim(prm%output(ou)),prm%systems_sl, &
|
||||||
|
'passing stress for slip','Pa')
|
||||||
|
|
||||||
|
case('f_tw')
|
||||||
|
call results_writePhaseState(stt%f_tw,group,trim(prm%output(ou)),prm%systems_tw, &
|
||||||
|
'twinned volume fraction','m³/m³')
|
||||||
|
case('Lambda_tw')
|
||||||
|
call results_writePhaseState(dst%Lambda_tw,group,trim(prm%output(ou)),prm%systems_tw, &
|
||||||
|
'mean free path for twinning','m')
|
||||||
|
case('tau_hat_tw')
|
||||||
|
call results_writePhaseState(dst%tau_hat_tw,group,trim(prm%output(ou)),prm%systems_tw, &
|
||||||
|
'threshold stress for twinning','Pa')
|
||||||
|
|
||||||
|
case('f_tr')
|
||||||
|
if(prm%sum_N_tr>0) call results_writeDataset(stt%f_tr,group,trim(prm%output(ou)), &
|
||||||
|
'martensite volume fraction','m³/m³')
|
||||||
|
|
||||||
|
end select
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
end select
|
|
||||||
enddo outputsLoop
|
|
||||||
end associate
|
end associate
|
||||||
|
|
||||||
end subroutine plastic_dislotwin_results
|
end subroutine plastic_dislotwin_results
|
||||||
|
|
Loading…
Reference in New Issue