Calibration (Prismatic slip) of the new dislocation density based CPFE model for single crystal alpha-Ti (Titanmod). Formulated edge and screw dislocations mobilities in presence of kink pairs. Updated comments. The model shows the plateau in stress evolution in prismatic orientation which is observed in experiments.

This commit is contained in:
Alankar Alankar 2010-07-15 07:16:15 +00:00
parent 49926d5d66
commit 60decea760
1 changed files with 185 additions and 141 deletions

View File

@ -52,53 +52,53 @@ real(pReal), dimension(:), allocatable :: constitutive_titanmod_
constitutive_titanmod_CAtomicVolume, & ! atomic volume in Bugers vector unit constitutive_titanmod_CAtomicVolume, & ! atomic volume in Bugers vector unit
constitutive_titanmod_D0, & ! prefactor for self-diffusion coefficient constitutive_titanmod_D0, & ! prefactor for self-diffusion coefficient
constitutive_titanmod_Qsd, & ! activation energy for dislocation climb constitutive_titanmod_Qsd, & ! activation energy for dislocation climb
constitutive_titanmod_GrainSize, & ! grain size constitutive_titanmod_GrainSize, & ! grain size - Not being used
constitutive_titanmod_MaxTwinFraction, & ! maximum allowed total twin volume fraction constitutive_titanmod_MaxTwinFraction, & ! maximum allowed total twin volume fraction
constitutive_titanmod_r, & ! r-exponent in twin nucleation rate constitutive_titanmod_r, & ! r-exponent in twin nucleation rate
constitutive_titanmod_CEdgeDipMinDistance, & ! constitutive_titanmod_CEdgeDipMinDistance, & ! Not being used
constitutive_titanmod_Cmfptwin, & ! constitutive_titanmod_Cmfptwin, & ! Not being used
constitutive_titanmod_Cthresholdtwin, & ! constitutive_titanmod_Cthresholdtwin, & ! Not being used
constitutive_titanmod_relevantRho ! dislocation density considered relevant constitutive_titanmod_relevantRho ! dislocation density considered relevant
real(pReal), dimension(:,:,:), allocatable :: constitutive_titanmod_Cslip_66 ! elasticity matrix in Mandel notation for each instance real(pReal), dimension(:,:,:), allocatable :: constitutive_titanmod_Cslip_66 ! elasticity matrix in Mandel notation for each instance
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_titanmod_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance real(pReal), dimension(:,:,:,:), allocatable :: constitutive_titanmod_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_titanmod_Cslip_3333 ! elasticity matrix for each instance real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_titanmod_Cslip_3333 ! elasticity matrix for each instance
real(pReal), dimension(:,:,:,:,:,:), allocatable :: constitutive_titanmod_Ctwin_3333 ! twin elasticity matrix for each instance real(pReal), dimension(:,:,:,:,:,:), allocatable :: constitutive_titanmod_Ctwin_3333 ! twin elasticity matrix for each instance
real(pReal), dimension(:,:), allocatable :: constitutive_titanmod_rho_edge0, & ! initial edge dislocation density per slip system for each family and instance real(pReal), dimension(:,:), allocatable :: constitutive_titanmod_rho_edge0, & ! initial edge dislocation density per slip system for each family and instance
constitutive_titanmod_rho_screw0, & ! initial edge dipole density per slip system for each family and instance constitutive_titanmod_rho_screw0, & ! initial screw dislocation density per slip system for each family and instance
constitutive_titanmod_burgersPerSlipFamily, & ! absolute length of burgers vector [m] for each slip family and instance constitutive_titanmod_burgersPerSlipFamily, & ! absolute length of burgers vector [m] for each slip family and instance
constitutive_titanmod_burgersPerSlipSystem, & ! absolute length of burgers vector [m] for each slip system and instance constitutive_titanmod_burgersPerSlipSystem, & ! absolute length of burgers vector [m] for each slip system and instance
constitutive_titanmod_burgersPerTwinFamily, & ! absolute length of burgers vector [m] for each twin family and instance constitutive_titanmod_burgersPerTwinFamily, & ! absolute length of burgers vector [m] for each twin family and instance
constitutive_titanmod_burgersPerTwinSystem, & ! absolute length of burgers vector [m] for each twin system and instance constitutive_titanmod_burgersPerTwinSystem, & ! absolute length of burgers vector [m] for each twin system and instance
constitutive_titanmod_f0_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance constitutive_titanmod_f0_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance
constitutive_titanmod_f0_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance constitutive_titanmod_f0_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance
constitutive_titanmod_tau0e_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance constitutive_titanmod_tau0e_PerSlipFamily, & ! Initial yield stress edge dislocations per slip family
constitutive_titanmod_tau0e_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance constitutive_titanmod_tau0e_PerSlipSystem, & ! Initial yield stress edge dislocations per slip system
constitutive_titanmod_tau0s_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance constitutive_titanmod_tau0s_PerSlipFamily, & ! Initial yield stress screw dislocations per slip family
constitutive_titanmod_tau0s_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance constitutive_titanmod_tau0s_PerSlipSystem, & ! Initial yield stress screw dislocations per slip system
constitutive_titanmod_capre_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance constitutive_titanmod_capre_PerSlipFamily, & ! Capture radii for edge dislocations per slip family
constitutive_titanmod_capre_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance constitutive_titanmod_capre_PerSlipSystem, & ! Capture radii for edge dislocations per slip system
constitutive_titanmod_caprs_PerSlipFamily, & ! activation energy for glide [J] for each slip family and instance constitutive_titanmod_caprs_PerSlipFamily, & ! Capture radii for screw dislocations per slip family
constitutive_titanmod_caprs_PerSlipSystem, & ! activation energy for glide [J] for each slip system and instance constitutive_titanmod_caprs_PerSlipSystem, & ! Capture radii for screw dislocations per slip system
constitutive_titanmod_pe_PerSlipFamily, & ! p-exponent in glide velocity constitutive_titanmod_pe_PerSlipFamily, & ! p-exponent in glide velocity
constitutive_titanmod_ps_PerSlipFamily, & ! p-exponent in glide velocity constitutive_titanmod_ps_PerSlipFamily, & ! p-exponent in glide velocity
constitutive_titanmod_qe_PerSlipFamily, & ! q-exponent in glide velocity constitutive_titanmod_qe_PerSlipFamily, & ! q-exponent in glide velocity
constitutive_titanmod_qs_PerSlipFamily, & ! q-exponent in glide velocity constitutive_titanmod_qs_PerSlipFamily, & ! q-exponent in glide velocity
constitutive_titanmod_pe_PerSlipSystem, & ! p-exponent in glide velocity constitutive_titanmod_pe_PerSlipSystem, & ! p-exponent in glide velocity
constitutive_titanmod_ps_PerSlipSystem, & ! p-exponent in glide velocity constitutive_titanmod_ps_PerSlipSystem, & ! p-exponent in glide velocity
constitutive_titanmod_qe_PerSlipSystem, & ! q-exponent in glide velocity constitutive_titanmod_qe_PerSlipSystem, & ! q-exponent in glide velocity
constitutive_titanmod_qs_PerSlipSystem, & ! q-exponent in glide velocity constitutive_titanmod_qs_PerSlipSystem, & ! q-exponent in glide velocity
constitutive_titanmod_v0e_PerSlipFamily, & ! dislocation velocity prefactor [m/s] for each family and instance constitutive_titanmod_v0e_PerSlipFamily, & ! dislocation velocity prefactor [m/s] for each family and instance
constitutive_titanmod_v0e_PerSlipSystem, & ! dislocation velocity prefactor [m/s] for each slip system and instance constitutive_titanmod_v0e_PerSlipSystem, & ! dislocation velocity prefactor [m/s] for each slip system and instance
constitutive_titanmod_v0s_PerSlipFamily, & ! dislocation velocity prefactor [m/s] for each family and instance constitutive_titanmod_v0s_PerSlipFamily, & ! dislocation velocity prefactor [m/s] for each family and instance
constitutive_titanmod_v0s_PerSlipSystem, & ! dislocation velocity prefactor [m/s] for each slip system and instance constitutive_titanmod_v0s_PerSlipSystem, & ! dislocation velocity prefactor [m/s] for each slip system and instance
constitutive_titanmod_Ndot0PerTwinFamily, & ! twin nucleation rate [1/m³s] for each twin family and instance constitutive_titanmod_Ndot0PerTwinFamily, & ! twin nucleation rate [1/m³s] for each twin family and instance
constitutive_titanmod_Ndot0PerTwinSystem, & ! twin nucleation rate [1/m³s] for each twin system and instance constitutive_titanmod_Ndot0PerTwinSystem, & ! twin nucleation rate [1/m³s] for each twin system and instance
constitutive_titanmod_twinsizePerTwinFamily, & ! twin thickness [m] for each twin family and instance constitutive_titanmod_twinsizePerTwinFamily, & ! twin thickness [m] for each twin family and instance
constitutive_titanmod_twinsizePerTwinSystem, & ! twin thickness [m] for each twin system and instance constitutive_titanmod_twinsizePerTwinSystem, & ! twin thickness [m] for each twin system and instance
constitutive_titanmod_CeLambdaSlipPerSlipFamily, & ! Adj. parameter for distance between 2 forest dislocations for each slip family and instance constitutive_titanmod_CeLambdaSlipPerSlipFamily, & ! Adj. parameter for distance between 2 forest dislocations for each slip family and instance
constitutive_titanmod_CeLambdaSlipPerSlipSystem, & ! Adj. parameter for distance between 2 forest dislocations for each slip system and instance constitutive_titanmod_CeLambdaSlipPerSlipSystem, & ! Adj. parameter for distance between 2 forest dislocations for each slip system and instance
constitutive_titanmod_CsLambdaSlipPerSlipFamily, & ! Adj. parameter for distance between 2 forest dislocations for each slip family and instance constitutive_titanmod_CsLambdaSlipPerSlipFamily, & ! Adj. parameter for distance between 2 forest dislocations for each slip family and instance
constitutive_titanmod_CsLambdaSlipPerSlipSystem, & ! Adj. parameter for distance between 2 forest dislocations for each slip system and instance constitutive_titanmod_CsLambdaSlipPerSlipSystem, & ! Adj. parameter for distance between 2 forest dislocations for each slip system and instance
constitutive_titanmod_interactionSlipSlip, & ! coefficients for slip-slip interaction for each interaction type and instance constitutive_titanmod_interactionSlipSlip, & ! coefficients for slip-slip interaction for each interaction type and instance
constitutive_titanmod_interactionSlipTwin, & ! coefficients for slip-twin interaction for each interaction type and instance constitutive_titanmod_interactionSlipTwin, & ! coefficients for slip-twin interaction for each interaction type and instance
constitutive_titanmod_interactionTwinSlip, & ! coefficients for twin-slip interaction for each interaction type and instance constitutive_titanmod_interactionTwinSlip, & ! coefficients for twin-slip interaction for each interaction type and instance
@ -252,6 +252,10 @@ constitutive_titanmod_Ndot0PerTwinFamily = 0.0_pReal
constitutive_titanmod_twinsizePerTwinFamily = 0.0_pReal constitutive_titanmod_twinsizePerTwinFamily = 0.0_pReal
constitutive_titanmod_CeLambdaSlipPerSlipFamily = 0.0_pReal constitutive_titanmod_CeLambdaSlipPerSlipFamily = 0.0_pReal
constitutive_titanmod_CsLambdaSlipPerSlipFamily = 0.0_pReal constitutive_titanmod_CsLambdaSlipPerSlipFamily = 0.0_pReal
constitutive_titanmod_pe_PerSlipFamily = 0.0_pReal
constitutive_titanmod_ps_PerSlipFamily = 0.0_pReal
constitutive_titanmod_qe_PerSlipFamily = 0.0_pReal
constitutive_titanmod_qs_PerSlipFamily = 0.0_pReal
allocate(constitutive_titanmod_interactionSlipSlip(lattice_maxNinteraction,maxNinstance)) allocate(constitutive_titanmod_interactionSlipSlip(lattice_maxNinteraction,maxNinstance))
allocate(constitutive_titanmod_interactionSlipTwin(lattice_maxNinteraction,maxNinstance)) allocate(constitutive_titanmod_interactionSlipTwin(lattice_maxNinteraction,maxNinstance))
allocate(constitutive_titanmod_interactionTwinSlip(lattice_maxNinteraction,maxNinstance)) allocate(constitutive_titanmod_interactionTwinSlip(lattice_maxNinteraction,maxNinstance))
@ -297,39 +301,44 @@ do ! read thru sections of
write(6,*) tag write(6,*) tag
case ('c11') case ('c11')
constitutive_titanmod_C11(i) = IO_floatValue(line,positions,2) constitutive_titanmod_C11(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag,constitutive_titanmod_C11(i)
case ('c12') case ('c12')
constitutive_titanmod_C12(i) = IO_floatValue(line,positions,2) constitutive_titanmod_C12(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag,constitutive_titanmod_C12(i)
case ('c13') case ('c13')
constitutive_titanmod_C13(i) = IO_floatValue(line,positions,2) constitutive_titanmod_C13(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag,constitutive_titanmod_C13(i)
case ('c33') case ('c33')
constitutive_titanmod_C33(i) = IO_floatValue(line,positions,2) constitutive_titanmod_C33(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag,constitutive_titanmod_C33(i)
case ('c44') case ('c44')
constitutive_titanmod_C44(i) = IO_floatValue(line,positions,2) constitutive_titanmod_C44(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag,constitutive_titanmod_C44(i)
case ('nslip') case ('nslip')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_Nslip(j,i) = IO_intValue(line,positions,1+j) constitutive_titanmod_Nslip(j,i) = IO_intValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_Nslip(1,i),constitutive_titanmod_Nslip(2,i),constitutive_titanmod_Nslip(3,i), &
constitutive_titanmod_Nslip(4,i)
case ('ntwin') case ('ntwin')
forall (j = 1:lattice_maxNtwinFamily) & forall (j = 1:lattice_maxNtwinFamily) &
constitutive_titanmod_Ntwin(j,i) = IO_intValue(line,positions,1+j) constitutive_titanmod_Ntwin(j,i) = IO_intValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_Ntwin(1,i),constitutive_titanmod_Ntwin(2,i),constitutive_titanmod_Ntwin(3,i), &
constitutive_titanmod_Ntwin(4,i)
case ('rho_edge0') case ('rho_edge0')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_rho_edge0(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_rho_edge0(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_rho_edge0(1,i),constitutive_titanmod_rho_edge0(2,i), &
constitutive_titanmod_rho_edge0(3,i), constitutive_titanmod_rho_edge0(4,i)
case ('rho_screw0') case ('rho_screw0')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_rho_screw0(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_rho_screw0(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_rho_screw0(1,i),constitutive_titanmod_rho_screw0(2,i), &
constitutive_titanmod_rho_screw0(3,i), constitutive_titanmod_rho_screw0(4,i)
case ('slipburgers') case ('slipburgers')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_burgersPerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_burgersPerSlipFamily(1,i),constitutive_titanmod_burgersPerSlipFamily(2,i), &
constitutive_titanmod_burgersPerSlipFamily(3,i), constitutive_titanmod_burgersPerSlipFamily(4,i)
case ('twinburgers') case ('twinburgers')
forall (j = 1:lattice_maxNtwinFamily) & forall (j = 1:lattice_maxNtwinFamily) &
constitutive_titanmod_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_burgersPerTwinFamily(j,i) = IO_floatValue(line,positions,1+j)
@ -337,31 +346,38 @@ do ! read thru sections of
case ('f0') case ('f0')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_f0_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_f0_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_f0_PerSlipFamily(1,i),constitutive_titanmod_f0_PerSlipFamily(2,i), &
constitutive_titanmod_f0_PerSlipFamily(3,i), constitutive_titanmod_f0_PerSlipFamily(4,i)
case ('tau0e') case ('tau0e')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_tau0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_tau0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_tau0e_PerSlipFamily(1,i),constitutive_titanmod_tau0e_PerSlipFamily(2,i), &
constitutive_titanmod_tau0e_PerSlipFamily(3,i), constitutive_titanmod_tau0e_PerSlipFamily(4,i)
case ('tau0s') case ('tau0s')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_tau0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_tau0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_tau0s_PerSlipFamily(1,i),constitutive_titanmod_tau0s_PerSlipFamily(2,i), &
constitutive_titanmod_tau0s_PerSlipFamily(3,i), constitutive_titanmod_tau0s_PerSlipFamily(4,i)
case ('capre') case ('capre')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_capre_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_capre_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_capre_PerSlipFamily(1,i),constitutive_titanmod_capre_PerSlipFamily(2,i), &
constitutive_titanmod_capre_PerSlipFamily(3,i), constitutive_titanmod_capre_PerSlipFamily(4,i)
case ('caprs') case ('caprs')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_caprs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_caprs_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_caprs_PerSlipFamily(1,i),constitutive_titanmod_caprs_PerSlipFamily(2,i), &
constitutive_titanmod_caprs_PerSlipFamily(3,i), constitutive_titanmod_caprs_PerSlipFamily(4,i)
case ('v0e') case ('v0e')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_v0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_v0e_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_v0e_PerSlipFamily(1,i),constitutive_titanmod_v0e_PerSlipFamily(2,i), &
constitutive_titanmod_v0e_PerSlipFamily(3,i), constitutive_titanmod_v0e_PerSlipFamily(4,i)
case ('v0s') case ('v0s')
forall (j = 1:lattice_maxNslipFamily) & forall (j = 1:lattice_maxNslipFamily) &
constitutive_titanmod_v0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_v0s_PerSlipFamily(j,i) = IO_floatValue(line,positions,1+j)
write(6,*) tag write(6,*) tag,constitutive_titanmod_v0s_PerSlipFamily(1,i),constitutive_titanmod_v0s_PerSlipFamily(2,i), &
constitutive_titanmod_v0s_PerSlipFamily(3,i), constitutive_titanmod_v0s_PerSlipFamily(4,i)
case ('ndot0') case ('ndot0')
forall (j = 1:lattice_maxNtwinFamily) & forall (j = 1:lattice_maxNtwinFamily) &
constitutive_titanmod_Ndot0PerTwinFamily(j,i) = IO_floatValue(line,positions,1+j) constitutive_titanmod_Ndot0PerTwinFamily(j,i) = IO_floatValue(line,positions,1+j)
@ -385,17 +401,25 @@ do ! read thru sections of
constitutive_titanmod_MaxTwinFraction(i) = IO_floatValue(line,positions,2) constitutive_titanmod_MaxTwinFraction(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag
case ('pe') case ('pe')
constitutive_titanmod_pe_PerSlipFamily(j,i) = IO_floatValue(line,positions,2) forall (j = 1:lattice_maxNslipFamily) &
write(6,*) tag constitutive_titanmod_pe_PerSlipFamily(j,i) = IO_floatValue(line,positions,2)
write(6,*) tag,constitutive_titanmod_pe_PerSlipFamily(1,i),constitutive_titanmod_pe_PerSlipFamily(2,i), &
constitutive_titanmod_pe_PerSlipFamily(3,i), constitutive_titanmod_pe_PerSlipFamily(4,i),i
case ('ps') case ('ps')
constitutive_titanmod_ps_PerSlipFamily(j,i) = IO_floatValue(line,positions,2) forall (j = 1:lattice_maxNslipFamily) &
write(6,*) tag constitutive_titanmod_ps_PerSlipFamily(j,i) = IO_floatValue(line,positions,2)
write(6,*) tag,constitutive_titanmod_ps_PerSlipFamily(1,i),constitutive_titanmod_ps_PerSlipFamily(2,i), &
constitutive_titanmod_ps_PerSlipFamily(3,i), constitutive_titanmod_ps_PerSlipFamily(4,i),i
case ('qe') case ('qe')
constitutive_titanmod_qe_PerSlipFamily(j,i) = IO_floatValue(line,positions,2) forall (j = 1:lattice_maxNslipFamily) &
write(6,*) tag constitutive_titanmod_qe_PerSlipFamily(j,i) = IO_floatValue(line,positions,2)
write(6,*) tag,constitutive_titanmod_qe_PerSlipFamily(1,i),constitutive_titanmod_qe_PerSlipFamily(2,i), &
constitutive_titanmod_qe_PerSlipFamily(3,i), constitutive_titanmod_qe_PerSlipFamily(4,i),i
case ('qs') case ('qs')
constitutive_titanmod_qs_PerSlipFamily(j,i) = IO_floatValue(line,positions,2) forall (j = 1:lattice_maxNslipFamily) &
write(6,*) tag constitutive_titanmod_qs_PerSlipFamily(j,i) = IO_floatValue(line,positions,2)
write(6,*) tag,constitutive_titanmod_qs_PerSlipFamily(1,i),constitutive_titanmod_qs_PerSlipFamily(2,i), &
constitutive_titanmod_qs_PerSlipFamily(3,i), constitutive_titanmod_qs_PerSlipFamily(4,i),i
case ('rexponent') case ('rexponent')
constitutive_titanmod_r(i) = IO_floatValue(line,positions,2) constitutive_titanmod_r(i) = IO_floatValue(line,positions,2)
write(6,*) tag write(6,*) tag
@ -1068,40 +1092,81 @@ do f = 1,lattice_maxNslipFamily ! loop over all
!************************************************* !*************************************************
!* Stress ratio for edge !* Stress ratio for edge
StressRatio_edge_p = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ & if((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))>0.0_pReal) then
StressRatio_edge_p = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ &
constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))**constitutive_titanmod_pe_PerSlipSystem(j,myInstance) constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))**constitutive_titanmod_pe_PerSlipSystem(j,myInstance)
else
StressRatio_edge_p=0.0_pReal
endif
!* Stress ratio for screw !* Stress ratio for screw
if((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))>0.0_pReal) then
StressRatio_screw_p = ((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))/ & StressRatio_screw_p = ((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))/ &
constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**constitutive_titanmod_pe_PerSlipSystem(j,myInstance) constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**constitutive_titanmod_pe_PerSlipSystem(j,myInstance)
else
StressRatio_screw_p=0.0_pReal
endif
!* Stress ratio for edge p minus1 !* Stress ratio for edge p minus1
if((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))>0.0_pReal) then
StressRatio_edge_pminus1 = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ & StressRatio_edge_pminus1 = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ &
constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))**(constitutive_titanmod_pe_PerSlipSystem(j,myInstance)-1) constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))**(constitutive_titanmod_pe_PerSlipSystem(j,myInstance)-1)
else
StressRatio_edge_pminus1=0.0_pReal
endif
!* Stress ratio for screw p minus1 !* Stress ratio for screw p minus1
if((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))>0.0_pReal) then
StressRatio_screw_pminus1 = ((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))/ & StressRatio_screw_pminus1 = ((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))/ &
constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**(constitutive_titanmod_pe_PerSlipSystem(j,myInstance)-1) constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**(constitutive_titanmod_pe_PerSlipSystem(j,myInstance)-1)
else
StressRatio_screw_pminus1=0.0_pReal
endif
!* Boltzmann ratio !* Boltzmann ratio
BoltzmannRatio = constitutive_titanmod_f0_PerSlipSystem(f,myInstance)/(kB*Temperature) BoltzmannRatio = constitutive_titanmod_f0_PerSlipSystem(j,myInstance)/(kB*Temperature)
!* Initial shear rates !* Initial shear rates
DotGamma0 = & DotGamma0 = &
state(g,ip,el)%p(j)*constitutive_titanmod_burgersPerSlipSystem(j,myInstance)*& constitutive_titanmod_burgersPerSlipSystem(j,myInstance)*2.0_pReal*(state(g,ip,el)%p(j)*&
constitutive_titanmod_v0e_PerSlipSystem(j,myInstance) + constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)+state(g,ip,el)%p(ns+j)* &
constitutive_titanmod_v0e_PerSlipSystem(j,myInstance))
!* Shear rates due to slip !* Shear rates due to slip
gdot_slip(j) = state(g,ip,el)%p(j)*constitutive_titanmod_burgersPerSlipSystem(j,myInstance)* & gdot_slip(j) = constitutive_titanmod_burgersPerSlipSystem(j,myInstance)*2.0_pReal*(state(g,ip,el)%p(j)* &
constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_edge_p)** & constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_edge_p)** &
constitutive_titanmod_qe_PerSlipSystem(j,myInstance))* sign(1.0_pReal,tau_slip(j)) constitutive_titanmod_qe_PerSlipSystem(j,myInstance))+state(g,ip,el)%p(ns+j)* &
constitutive_titanmod_v0s_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_screw_p)** &
constitutive_titanmod_qs_PerSlipSystem(j,myInstance)))* sign(1.0_pReal,tau_slip(j))
!* Derivatives of shear rates !* Derivatives of shear rates
dgdot_dtauslip(j) = & dgdot_dtauslip(j) = &
((abs(gdot_slip(j))*BoltzmannRatio*& 2.0_pReal* &
constitutive_titanmod_pe_PerSlipSystem(j,myInstance)*constitutive_titanmod_qe_PerSlipSystem(j,myInstance))/ & ( &
state(g,ip,el)%p(5*ns+3*nt+j))*& ( &
StressRatio_edge_pminus1*(1-StressRatio_edge_p)**(constitutive_titanmod_qe_PerSlipSystem(j,myInstance)-1.0_pReal) ( &
( &
abs(gdot_slip(j)) &
*BoltzmannRatio*&
constitutive_titanmod_pe_PerSlipSystem(j,myInstance)* &
constitutive_titanmod_qe_PerSlipSystem(j,myInstance) &
)/ &
constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance) &
)*&
StressRatio_edge_pminus1*(1-StressRatio_edge_p)** &
(constitutive_titanmod_qe_PerSlipSystem(j,myInstance)-1.0_pReal) &
) + &
( &
( &
(abs(gdot_slip(j))*BoltzmannRatio*&
constitutive_titanmod_ps_PerSlipSystem(j,myInstance)* &
constitutive_titanmod_qs_PerSlipSystem(j,myInstance) &
)/ &
constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance) &
)*&
StressRatio_screw_pminus1*(1-StressRatio_screw_p)**(constitutive_titanmod_qs_PerSlipSystem(j,myInstance)-1.0_pReal) &
) &
)
!************************************************* !*************************************************
!* Plastic velocity gradient for dislocation glide !* Plastic velocity gradient for dislocation glide
@ -1239,25 +1304,43 @@ forall (s = 1:ns) &
tau_slip(j) = dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure)) tau_slip(j) = dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure))
!* Stress ratio for edge !* Stress ratio for edge
StressRatio_edge_p = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ & if((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j)) > 0.0_pReal) then
StressRatio_edge_p = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ &
constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))** constitutive_titanmod_pe_PerSlipSystem(j,myInstance) constitutive_titanmod_tau0e_PerSlipSystem(j,myInstance))** constitutive_titanmod_pe_PerSlipSystem(j,myInstance)
else
StressRatio_edge_p=0.0_pReal
endif
!* Stress ratio for screw !* Stress ratio for screw
StressRatio_screw_p = ((abs(tau_slip(j))-state(g,ip,el)%p(5*ns+3*nt+j))/ & if((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j)) > 0.0_pReal) then
StressRatio_screw_p = ((abs(tau_slip(j))-state(g,ip,el)%p(6*ns+3*nt+j))/ &
constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**constitutive_titanmod_ps_PerSlipSystem(j,myInstance) constitutive_titanmod_tau0s_PerSlipSystem(j,myInstance))**constitutive_titanmod_ps_PerSlipSystem(j,myInstance)
!* Boltzmann ratio else
BoltzmannRatio = constitutive_titanmod_f0_PerSlipSystem(s,myInstance)/(kB*Temperature) StressRatio_screw_p=0.0_pReal
endif
if (tau_slip(j) == 0.0_pReal) then !* Boltzmann ratio
edge_velocity(j) = 0.0_pReal BoltzmannRatio = constitutive_titanmod_f0_PerSlipSystem(j,myInstance)/(kB*Temperature)
screw_velocity(j) = 0.0_pReal
else ! if (tau_slip(j) == 0.0_pReal) then
! edge_velocity(j) = 0.0_pReal
! screw_velocity(j) = 0.0_pReal
! else
edge_velocity(j) =constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_edge_p)** & edge_velocity(j) =constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_edge_p)** &
constitutive_titanmod_qe_PerSlipSystem(j,myInstance)) constitutive_titanmod_qe_PerSlipSystem(j,myInstance))
screw_velocity(j) =constitutive_titanmod_v0s_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_screw_p)** & screw_velocity(j) =constitutive_titanmod_v0s_PerSlipSystem(j,myInstance)*exp(-BoltzmannRatio*(1-StressRatio_screw_p)** &
constitutive_titanmod_qs_PerSlipSystem(j,myInstance)) constitutive_titanmod_qs_PerSlipSystem(j,myInstance))
endif ! endif
! write(6,*) 'edge_segment(j) ',edge_segment(j)
! write(6,*) 'screw_segment(j) ',screw_segment(j)
! write(6,*) 'tau_slip(j) ',tau_slip(j)
! write(6,*) 'Temperature ',Temperature
! write(6,*) 'kB ',kB
! write(6,*) 'constitutive_titanmod_f0_PerSlipSystem(j,myInstance) ',constitutive_titanmod_f0_PerSlipSystem(j,myInstance)
! write(6,*) 'StressRatio_edge_p',StressRatio_edge_p,j
! write(6,*) 'StressRatio_screw_p',StressRatio_screw_p,j
! write(6,*) 'edge_velocity(j)',edge_velocity(j),j
! write(6,*) 'screw_velocity(j)',screw_velocity(j),j
!* Multiplication of edge dislocations !* Multiplication of edge dislocations
DotRhoEdgeGeneration(j) = 4.0_pReal*(state(g,ip,el)%p(ns+j)*screw_velocity(j)/screw_segment(j)) DotRhoEdgeGeneration(j) = 4.0_pReal*(state(g,ip,el)%p(ns+j)*screw_velocity(j)/screw_segment(j))
!* Multiplication of screw dislocations !* Multiplication of screw dislocations
@ -1279,6 +1362,11 @@ forall (s = 1:ns) &
constitutive_titanmod_dotState(ns+j) = & constitutive_titanmod_dotState(ns+j) = &
DotRhoScrewGeneration(j)+DotRhoScrewAnnihilation(j) DotRhoScrewGeneration(j)+DotRhoScrewAnnihilation(j)
! write(6,*) 'DotRhoEdgeGeneration(j)',DotRhoEdgeGeneration(j)
! write(6,*) 'DotRhoScrewGeneration(j)',DotRhoScrewGeneration(j)
! write(6,*) 'DotRhoEdgeAnnihilation(j)',DotRhoEdgeAnnihilation(j)
! write(6,*) 'DotRhoScrewAnnihilation(j)',DotRhoScrewAnnihilation(j)
enddo enddo
enddo enddo
@ -1300,7 +1388,6 @@ do f = 1,lattice_maxNtwinFamily ! loop over all
(constitutive_titanmod_MaxTwinFraction(myInstance)-sumf)*& (constitutive_titanmod_MaxTwinFraction(myInstance)-sumf)*&
state(g,ip,el)%p(6*ns+4*nt+j)*constitutive_titanmod_Ndot0PerTwinSystem(f,myInstance)*exp(-StressRatio_r) state(g,ip,el)%p(6*ns+4*nt+j)*constitutive_titanmod_Ndot0PerTwinSystem(f,myInstance)*exp(-StressRatio_r)
endif endif
enddo enddo
enddo enddo
@ -1426,34 +1513,31 @@ do o = 1,phase_Noutput(material_phase(g,ip,el))
DotGamma0*exp(-BoltzmannRatio*(1-StressRatio_p)**constitutive_titanmod_qe_PerSlipSystem(j,myInstance))* & DotGamma0*exp(-BoltzmannRatio*(1-StressRatio_p)**constitutive_titanmod_qe_PerSlipSystem(j,myInstance))* &
sign(1.0_pReal,tau) sign(1.0_pReal,tau)
enddo ; enddo enddo ; enddo
! invLambdaSlipe', &
! 'invLambdaSlips', &
! 'etauSlipThreshold', &
! 'stauSlipThreshold', &
! 'invLambdaSlipTwin
c = c + ns c = c + ns
case ('mfp_slip') case ('edgesegment')
constitutive_titanmod_postResults(c+1:c+ns) = state(g,ip,el)%p((4*ns+2*nt+1):(5*ns+2*nt)) constitutive_titanmod_postResults(c+1:c+ns) = state(g,ip,el)%p((4*ns+2*nt+1):(5*ns+2*nt))
c = c + ns c = c + ns
case ('resolved_stress_slip') case ('screwsegment')
j = 0_pInt j = 0_pInt
do f = 1,lattice_maxNslipFamily ! loop over all slip families do f = 1,lattice_maxNslipFamily
index_myFamily = sum(lattice_NslipSystem(1:f-1,myStructure)) ! at which index starts my family index_myFamily = sum(lattice_NslipSystem(1:f-1,myStructure))
do i = 1,constitutive_titanmod_Nslip(f,myInstance) ! process each (active) slip system in family do i = 1,constitutive_titanmod_Nslip(f,myInstance)
j = j + 1_pInt j = j + 1_pInt
constitutive_titanmod_postResults(c+j) = dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure)) constitutive_titanmod_postResults(c+j) = dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure))
enddo; enddo enddo; enddo
c = c + ns c = c + ns
case ('threshold_stress_slip') case ('edgeresistance')
constitutive_titanmod_postResults(c+1:c+ns) = state(g,ip,el)%p((5*ns+3*nt+1):(6*ns+3*nt)) constitutive_titanmod_postResults(c+1:c+ns) = state(g,ip,el)%p((5*ns+3*nt+1):(6*ns+3*nt))
c = c + ns c = c + ns
case ('edge_dipole_distance') case ('screwresistance')
j = 0_pInt constitutive_titanmod_postResults(c+1:c+ns) = state(g,ip,el)%p((6*ns+3*nt+1):(6*ns+3*nt))
do f = 1,lattice_maxNslipFamily ! loop over all slip families
index_myFamily = sum(lattice_NslipSystem(1:f-1,myStructure)) ! at which index starts my family
do i = 1,constitutive_titanmod_Nslip(f,myInstance) ! process each (active) slip system in family
j = j + 1_pInt
constitutive_titanmod_postResults(c+j) = &
(3.0_pReal*constitutive_titanmod_Gmod(myInstance)*constitutive_titanmod_burgersPerSlipSystem(f,myInstance))/&
(16.0_pReal*pi*abs(dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure))))
constitutive_titanmod_postResults(c+j) = min(constitutive_titanmod_postResults(c+j),state(g,ip,el)%p(4*ns+2*nt+j))
! constitutive_titanmod_postResults(c+j) = max(constitutive_titanmod_postResults(c+j),state(g,ip,el)%p(4*ns+2*nt+j))
enddo; enddo
c = c + ns c = c + ns
case ('twin_fraction') case ('twin_fraction')
constitutive_titanmod_postResults(c+1:c+nt) = state(g,ip,el)%p((2*ns+1):(2*ns+nt)) constitutive_titanmod_postResults(c+1:c+nt) = state(g,ip,el)%p((2*ns+1):(2*ns+nt))
@ -1461,9 +1545,9 @@ do o = 1,phase_Noutput(material_phase(g,ip,el))
case ('shear_rate_twin') case ('shear_rate_twin')
if (nt > 0_pInt) then if (nt > 0_pInt) then
j = 0_pInt j = 0_pInt
do f = 1,lattice_maxNtwinFamily ! loop over all twin families do f = 1,lattice_maxNtwinFamily
index_myFamily = sum(lattice_NtwinSystem(1:f-1,myStructure)) ! at which index starts my family index_myFamily = sum(lattice_NtwinSystem(1:f-1,myStructure))
do i = 1,constitutive_titanmod_Ntwin(f,myInstance) ! process each (active) twin system in family do i = 1,constitutive_titanmod_Ntwin(f,myInstance)
j = j + 1_pInt j = j + 1_pInt
!* Resolved shear stress on twin system !* Resolved shear stress on twin system
@ -1498,46 +1582,6 @@ do o = 1,phase_Noutput(material_phase(g,ip,el))
case ('threshold_stress_twin') case ('threshold_stress_twin')
constitutive_titanmod_postResults(c+1:c+nt) = state(g,ip,el)%p((6*ns+3*nt+1):(6*ns+4*nt)) constitutive_titanmod_postResults(c+1:c+nt) = state(g,ip,el)%p((6*ns+3*nt+1):(6*ns+4*nt))
c = c + nt c = c + nt
case ('stress_exponent')
j = 0_pInt
do f = 1,lattice_maxNslipFamily ! loop over all slip families
index_myFamily = sum(lattice_NslipSystem(1:f-1,myStructure)) ! at which index starts my family
do i = 1,constitutive_titanmod_Nslip(f,myInstance) ! process each (active) slip system in family
j = j + 1_pInt
!* Resolved shear stress on slip system
tau = dot_product(Tstar_v,lattice_Sslip_v(:,index_myFamily+i,myStructure))
!* Stress ratios
StressRatio_p = (abs(tau)/state(g,ip,el)%p(5*ns+3*nt+j))**constitutive_titanmod_pe_PerSlipSystem(j,myInstance)
StressRatio_pminus1 = (abs(tau)/state(g,ip,el)%p(5*ns+3*nt+j))** &
(constitutive_titanmod_pe_PerSlipSystem(j,myInstance)-1.0_pReal)
!* Boltzmann ratio
BoltzmannRatio = constitutive_titanmod_f0_PerSlipSystem(j,myInstance)/(kB*Temperature)
!* Initial shear rates
DotGamma0 = &
state(g,ip,el)%p(j)*constitutive_titanmod_burgersPerSlipSystem(f,myInstance)* &
constitutive_titanmod_v0e_PerSlipSystem(j,myInstance)
!* Shear rates due to slip
gdot_slip = &
DotGamma0*exp(-BoltzmannRatio*(1-StressRatio_p)**constitutive_titanmod_qe_PerSlipSystem(j,myInstance))* &
sign(1.0_pReal,tau)
!* Derivatives of shear rates
dgdot_dtauslip = &
((abs(gdot_slip)*BoltzmannRatio*&
constitutive_titanmod_pe_PerSlipSystem(j,myInstance)*constitutive_titanmod_qe_PerSlipSystem(j,myInstance))/ &
state(g,ip,el)%p(5*ns+3*nt+j))*&
StressRatio_pminus1*(1-StressRatio_p)**(constitutive_titanmod_qe_PerSlipSystem(j,myInstance)-1.0_pReal)
!* Stress exponent
if (gdot_slip==0.0_pReal) then
constitutive_titanmod_postResults(c+j) = 0.0_pReal
else
constitutive_titanmod_postResults(c+j) = (tau/gdot_slip)*dgdot_dtauslip
endif
enddo ; enddo
c = c + ns
end select end select
enddo enddo