* kinetics now according to Mohles; enables solid solution hardening
* changed example in material.config accordingly
This commit is contained in:
parent
6ac06af517
commit
05d4d5fef2
|
@ -1222,7 +1222,11 @@ endfunction
|
||||||
case (234)
|
case (234)
|
||||||
msg = 'Negative cutoff radius'
|
msg = 'Negative cutoff radius'
|
||||||
case (235)
|
case (235)
|
||||||
msg = 'Non-positive activation energy for dislocation glide'
|
msg = 'Non-positive attack frequency'
|
||||||
|
case (236)
|
||||||
|
msg = 'Non-positive wall depth'
|
||||||
|
case (237)
|
||||||
|
msg = 'Non-positive obstacle strength'
|
||||||
case (240)
|
case (240)
|
||||||
msg = 'Non-positive Taylor factor'
|
msg = 'Non-positive Taylor factor'
|
||||||
case (241)
|
case (241)
|
||||||
|
|
|
@ -54,12 +54,15 @@ real(pReal), dimension(:), allocatable :: constitutive_nonlocal_
|
||||||
constitutive_nonlocal_C44, & ! C44 element in elasticity matrix
|
constitutive_nonlocal_C44, & ! C44 element in elasticity matrix
|
||||||
constitutive_nonlocal_Gmod, & ! shear modulus
|
constitutive_nonlocal_Gmod, & ! shear modulus
|
||||||
constitutive_nonlocal_nu, & ! poisson's ratio
|
constitutive_nonlocal_nu, & ! poisson's ratio
|
||||||
constitutive_nonlocal_Q0, & ! activation energy for dislocation glide
|
|
||||||
constitutive_nonlocal_atomicVolume, & ! atomic volume
|
constitutive_nonlocal_atomicVolume, & ! atomic volume
|
||||||
constitutive_nonlocal_D0, & ! prefactor for self-diffusion coefficient
|
constitutive_nonlocal_Dsd0, & ! prefactor for self-diffusion coefficient
|
||||||
constitutive_nonlocal_Qsd, & ! activation enthalpy for diffusion
|
constitutive_nonlocal_Qsd, & ! activation enthalpy for diffusion
|
||||||
constitutive_nonlocal_aTolRho, & ! absolute tolerance for dislocation density in state integration
|
constitutive_nonlocal_aTolRho, & ! absolute tolerance for dislocation density in state integration
|
||||||
constitutive_nonlocal_R ! cutoff radius for dislocation stress
|
constitutive_nonlocal_R, & ! cutoff radius for dislocation stress
|
||||||
|
constitutive_nonlocal_d0, & ! wall depth as multiple of b
|
||||||
|
constitutive_nonlocal_tauObs, & ! obstacle strength in Pa
|
||||||
|
constitutive_nonlocal_fattack, & ! attack frequency in Hz
|
||||||
|
constitutive_nonlocal_vs ! maximum dislocation velocity = velocity of sound
|
||||||
real(pReal), dimension(:,:,:), allocatable :: constitutive_nonlocal_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
real(pReal), dimension(:,:,:), allocatable :: constitutive_nonlocal_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
||||||
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_nonlocal_Cslip_3333 ! elasticity matrix for each instance
|
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_nonlocal_Cslip_3333 ! elasticity matrix for each instance
|
||||||
real(pReal), dimension(:,:), allocatable :: constitutive_nonlocal_rhoSglEdgePos0, & ! initial edge_pos dislocation density per slip system for each family and instance
|
real(pReal), dimension(:,:), allocatable :: constitutive_nonlocal_rhoSglEdgePos0, & ! initial edge_pos dislocation density per slip system for each family and instance
|
||||||
|
@ -68,8 +71,6 @@ real(pReal), dimension(:,:), allocatable :: constitutive_nonlocal_
|
||||||
constitutive_nonlocal_rhoSglScrewNeg0, & ! initial screw_neg dislocation density per slip system for each family and instance
|
constitutive_nonlocal_rhoSglScrewNeg0, & ! initial screw_neg dislocation density per slip system for each family and instance
|
||||||
constitutive_nonlocal_rhoDipEdge0, & ! initial edge dipole dislocation density per slip system for each family and instance
|
constitutive_nonlocal_rhoDipEdge0, & ! initial edge dipole dislocation density per slip system for each family and instance
|
||||||
constitutive_nonlocal_rhoDipScrew0, & ! initial screw dipole dislocation density per slip system for each family and instance
|
constitutive_nonlocal_rhoDipScrew0, & ! initial screw dipole dislocation density per slip system for each family and instance
|
||||||
constitutive_nonlocal_v0PerSlipFamily, & ! dislocation velocity prefactor [m/s] for each family and instance
|
|
||||||
constitutive_nonlocal_v0PerSlipSystem, & ! dislocation velocity prefactor [m/s] for each slip system and instance
|
|
||||||
constitutive_nonlocal_lambda0PerSlipFamily, & ! mean free path prefactor for each family and instance
|
constitutive_nonlocal_lambda0PerSlipFamily, & ! mean free path prefactor for each family and instance
|
||||||
constitutive_nonlocal_lambda0PerSlipSystem, & ! mean free path prefactor for each slip system and instance
|
constitutive_nonlocal_lambda0PerSlipSystem, & ! mean free path prefactor for each slip system and instance
|
||||||
constitutive_nonlocal_burgersPerSlipFamily, & ! absolute length of burgers vector [m] for each family and instance
|
constitutive_nonlocal_burgersPerSlipFamily, & ! absolute length of burgers vector [m] for each family and instance
|
||||||
|
@ -78,6 +79,7 @@ real(pReal), dimension(:,:), allocatable :: constitutive_nonlocal_
|
||||||
constitutive_nonlocal_dLowerEdgePerSlipSystem, & ! minimum stable edge dipole height for each slip system and instance
|
constitutive_nonlocal_dLowerEdgePerSlipSystem, & ! minimum stable edge dipole height for each slip system and instance
|
||||||
constitutive_nonlocal_dLowerScrewPerSlipFamily, & ! minimum stable screw dipole height for each family and instance
|
constitutive_nonlocal_dLowerScrewPerSlipFamily, & ! minimum stable screw dipole height for each family and instance
|
||||||
constitutive_nonlocal_dLowerScrewPerSlipSystem, & ! minimum stable screw dipole height for each slip system and instance
|
constitutive_nonlocal_dLowerScrewPerSlipSystem, & ! minimum stable screw dipole height for each slip system and instance
|
||||||
|
constitutive_nonlocal_Qeff0, & ! prefactor for activation enthalpy for dislocation glide in J
|
||||||
constitutive_nonlocal_interactionSlipSlip ! coefficients for slip-slip interaction for each interaction type and instance
|
constitutive_nonlocal_interactionSlipSlip ! coefficients for slip-slip interaction for each interaction type and instance
|
||||||
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_nonlocal_v, & ! dislocation velocity
|
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_nonlocal_v, & ! dislocation velocity
|
||||||
constitutive_nonlocal_rhoDotFlux ! dislocation convection term
|
constitutive_nonlocal_rhoDotFlux ! dislocation convection term
|
||||||
|
@ -209,14 +211,17 @@ allocate(constitutive_nonlocal_C33(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_C44(maxNinstance))
|
allocate(constitutive_nonlocal_C44(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Gmod(maxNinstance))
|
allocate(constitutive_nonlocal_Gmod(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_nu(maxNinstance))
|
allocate(constitutive_nonlocal_nu(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Q0(maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_atomicVolume(maxNinstance))
|
allocate(constitutive_nonlocal_atomicVolume(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_D0(maxNinstance))
|
allocate(constitutive_nonlocal_Dsd0(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Qsd(maxNinstance))
|
allocate(constitutive_nonlocal_Qsd(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_aTolRho(maxNinstance))
|
allocate(constitutive_nonlocal_aTolRho(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_nonlocal_Cslip_66(6,6,maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Cslip_3333(3,3,3,3,maxNinstance))
|
allocate(constitutive_nonlocal_Cslip_3333(3,3,3,3,maxNinstance))
|
||||||
allocate(constitutive_nonlocal_R(maxNinstance))
|
allocate(constitutive_nonlocal_R(maxNinstance))
|
||||||
|
allocate(constitutive_nonlocal_d0(maxNinstance))
|
||||||
|
allocate(constitutive_nonlocal_tauObs(maxNinstance))
|
||||||
|
allocate(constitutive_nonlocal_vs(maxNinstance))
|
||||||
|
allocate(constitutive_nonlocal_fattack(maxNinstance))
|
||||||
constitutive_nonlocal_CoverA = 0.0_pReal
|
constitutive_nonlocal_CoverA = 0.0_pReal
|
||||||
constitutive_nonlocal_C11 = 0.0_pReal
|
constitutive_nonlocal_C11 = 0.0_pReal
|
||||||
constitutive_nonlocal_C12 = 0.0_pReal
|
constitutive_nonlocal_C12 = 0.0_pReal
|
||||||
|
@ -224,15 +229,18 @@ constitutive_nonlocal_C13 = 0.0_pReal
|
||||||
constitutive_nonlocal_C33 = 0.0_pReal
|
constitutive_nonlocal_C33 = 0.0_pReal
|
||||||
constitutive_nonlocal_C44 = 0.0_pReal
|
constitutive_nonlocal_C44 = 0.0_pReal
|
||||||
constitutive_nonlocal_Gmod = 0.0_pReal
|
constitutive_nonlocal_Gmod = 0.0_pReal
|
||||||
constitutive_nonlocal_Q0 = 0.0_pReal
|
|
||||||
constitutive_nonlocal_atomicVolume = 0.0_pReal
|
constitutive_nonlocal_atomicVolume = 0.0_pReal
|
||||||
constitutive_nonlocal_D0 = 0.0_pReal
|
constitutive_nonlocal_Dsd0 = 0.0_pReal
|
||||||
constitutive_nonlocal_Qsd = 0.0_pReal
|
constitutive_nonlocal_Qsd = 0.0_pReal
|
||||||
constitutive_nonlocal_aTolRho = 0.0_pReal
|
constitutive_nonlocal_aTolRho = 0.0_pReal
|
||||||
constitutive_nonlocal_nu = 0.0_pReal
|
constitutive_nonlocal_nu = 0.0_pReal
|
||||||
constitutive_nonlocal_Cslip_66 = 0.0_pReal
|
constitutive_nonlocal_Cslip_66 = 0.0_pReal
|
||||||
constitutive_nonlocal_Cslip_3333 = 0.0_pReal
|
constitutive_nonlocal_Cslip_3333 = 0.0_pReal
|
||||||
constitutive_nonlocal_R = 0.0_pReal
|
constitutive_nonlocal_R = -1.0_pReal
|
||||||
|
constitutive_nonlocal_d0 = 0.0_pReal
|
||||||
|
constitutive_nonlocal_tauObs = 0.0_pReal
|
||||||
|
constitutive_nonlocal_vs = 0.0_pReal
|
||||||
|
constitutive_nonlocal_fattack = 0.0_pReal
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_rhoSglEdgeNeg0(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglEdgeNeg0(lattice_maxNslipFamily, maxNinstance))
|
||||||
|
@ -240,7 +248,6 @@ allocate(constitutive_nonlocal_rhoSglScrewPos0(lattice_maxNslipFamily, maxNinsta
|
||||||
allocate(constitutive_nonlocal_rhoSglScrewNeg0(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglScrewNeg0(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_rhoDipEdge0(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_rhoDipEdge0(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_rhoDipScrew0(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_rhoDipScrew0(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_v0PerSlipFamily(lattice_maxNslipFamily, maxNinstance))
|
|
||||||
allocate(constitutive_nonlocal_burgersPerSlipFamily(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_burgersPerSlipFamily(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_Lambda0PerSlipFamily(lattice_maxNslipFamily, maxNinstance))
|
allocate(constitutive_nonlocal_Lambda0PerSlipFamily(lattice_maxNslipFamily, maxNinstance))
|
||||||
allocate(constitutive_nonlocal_interactionSlipSlip(lattice_maxNinteraction, maxNinstance))
|
allocate(constitutive_nonlocal_interactionSlipSlip(lattice_maxNinteraction, maxNinstance))
|
||||||
|
@ -252,7 +259,6 @@ constitutive_nonlocal_rhoSglScrewPos0 = -1.0_pReal
|
||||||
constitutive_nonlocal_rhoSglScrewNeg0 = -1.0_pReal
|
constitutive_nonlocal_rhoSglScrewNeg0 = -1.0_pReal
|
||||||
constitutive_nonlocal_rhoDipEdge0 = -1.0_pReal
|
constitutive_nonlocal_rhoDipEdge0 = -1.0_pReal
|
||||||
constitutive_nonlocal_rhoDipScrew0 = -1.0_pReal
|
constitutive_nonlocal_rhoDipScrew0 = -1.0_pReal
|
||||||
constitutive_nonlocal_v0PerSlipFamily = 0.0_pReal
|
|
||||||
constitutive_nonlocal_burgersPerSlipFamily = 0.0_pReal
|
constitutive_nonlocal_burgersPerSlipFamily = 0.0_pReal
|
||||||
constitutive_nonlocal_lambda0PerSlipFamily = 0.0_pReal
|
constitutive_nonlocal_lambda0PerSlipFamily = 0.0_pReal
|
||||||
constitutive_nonlocal_interactionSlipSlip = 0.0_pReal
|
constitutive_nonlocal_interactionSlipSlip = 0.0_pReal
|
||||||
|
@ -313,8 +319,6 @@ do
|
||||||
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_rhoDipEdge0(f,i) = IO_floatValue(line,positions,1+f)
|
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_rhoDipEdge0(f,i) = IO_floatValue(line,positions,1+f)
|
||||||
case ('rhodipscrew0')
|
case ('rhodipscrew0')
|
||||||
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_rhoDipScrew0(f,i) = IO_floatValue(line,positions,1+f)
|
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_rhoDipScrew0(f,i) = IO_floatValue(line,positions,1+f)
|
||||||
case ('v0')
|
|
||||||
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_v0PerSlipFamily(f,i) = IO_floatValue(line,positions,1+f)
|
|
||||||
case ('lambda0')
|
case ('lambda0')
|
||||||
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_lambda0PerSlipFamily(f,i) = IO_floatValue(line,positions,1+f)
|
forall (f = 1:lattice_maxNslipFamily) constitutive_nonlocal_lambda0PerSlipFamily(f,i) = IO_floatValue(line,positions,1+f)
|
||||||
case ('burgers')
|
case ('burgers')
|
||||||
|
@ -327,18 +331,24 @@ do
|
||||||
case('ddipminscrew')
|
case('ddipminscrew')
|
||||||
forall (f = 1:lattice_maxNslipFamily) &
|
forall (f = 1:lattice_maxNslipFamily) &
|
||||||
constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i) = IO_floatValue(line,positions,1+f)
|
constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i) = IO_floatValue(line,positions,1+f)
|
||||||
case('q0')
|
|
||||||
constitutive_nonlocal_Q0(i) = IO_floatValue(line,positions,2)
|
|
||||||
case('atomicvolume')
|
case('atomicvolume')
|
||||||
constitutive_nonlocal_atomicVolume(i) = IO_floatValue(line,positions,2)
|
constitutive_nonlocal_atomicVolume(i) = IO_floatValue(line,positions,2)
|
||||||
case('d0')
|
case('dsd0')
|
||||||
constitutive_nonlocal_D0(i) = IO_floatValue(line,positions,2)
|
constitutive_nonlocal_Dsd0(i) = IO_floatValue(line,positions,2)
|
||||||
case('qsd')
|
case('qsd')
|
||||||
constitutive_nonlocal_Qsd(i) = IO_floatValue(line,positions,2)
|
constitutive_nonlocal_Qsd(i) = IO_floatValue(line,positions,2)
|
||||||
case('atol_rho')
|
case('atol_rho')
|
||||||
constitutive_nonlocal_aTolRho(i) = IO_floatValue(line,positions,2)
|
constitutive_nonlocal_aTolRho(i) = IO_floatValue(line,positions,2)
|
||||||
case ('interaction_slipslip')
|
case ('interaction_slipslip')
|
||||||
forall (it = 1:lattice_maxNinteraction) constitutive_nonlocal_interactionSlipSlip(it,i) = IO_floatValue(line,positions,1+it)
|
forall (it = 1:lattice_maxNinteraction) constitutive_nonlocal_interactionSlipSlip(it,i) = IO_floatValue(line,positions,1+it)
|
||||||
|
case('d0')
|
||||||
|
constitutive_nonlocal_d0(i) = IO_floatValue(line,positions,2)
|
||||||
|
case('tauobs')
|
||||||
|
constitutive_nonlocal_tauObs(i) = IO_floatValue(line,positions,2)
|
||||||
|
case('vs')
|
||||||
|
constitutive_nonlocal_vs(i) = IO_floatValue(line,positions,2)
|
||||||
|
case('fattack')
|
||||||
|
constitutive_nonlocal_fattack(i) = IO_floatValue(line,positions,2)
|
||||||
end select
|
end select
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
@ -366,7 +376,6 @@ enddo
|
||||||
if (constitutive_nonlocal_rhoDipEdge0(f,i) < 0.0_pReal) call IO_error(220)
|
if (constitutive_nonlocal_rhoDipEdge0(f,i) < 0.0_pReal) call IO_error(220)
|
||||||
if (constitutive_nonlocal_rhoDipScrew0(f,i) < 0.0_pReal) call IO_error(220)
|
if (constitutive_nonlocal_rhoDipScrew0(f,i) < 0.0_pReal) call IO_error(220)
|
||||||
if (constitutive_nonlocal_burgersPerSlipFamily(f,i) <= 0.0_pReal) call IO_error(221)
|
if (constitutive_nonlocal_burgersPerSlipFamily(f,i) <= 0.0_pReal) call IO_error(221)
|
||||||
if (constitutive_nonlocal_v0PerSlipFamily(f,i) <= 0.0_pReal) call IO_error(226)
|
|
||||||
if (constitutive_nonlocal_lambda0PerSlipFamily(f,i) <= 0.0_pReal) call IO_error(227)
|
if (constitutive_nonlocal_lambda0PerSlipFamily(f,i) <= 0.0_pReal) call IO_error(227)
|
||||||
if (constitutive_nonlocal_dLowerEdgePerSlipFamily(f,i) <= 0.0_pReal) call IO_error(228)
|
if (constitutive_nonlocal_dLowerEdgePerSlipFamily(f,i) <= 0.0_pReal) call IO_error(228)
|
||||||
if (constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i) <= 0.0_pReal) call IO_error(228)
|
if (constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i) <= 0.0_pReal) call IO_error(228)
|
||||||
|
@ -374,12 +383,15 @@ enddo
|
||||||
enddo
|
enddo
|
||||||
if (any(constitutive_nonlocal_interactionSlipSlip(1:maxval(lattice_interactionSlipSlip(:,:,myStructure)),i) < 0.0_pReal)) &
|
if (any(constitutive_nonlocal_interactionSlipSlip(1:maxval(lattice_interactionSlipSlip(:,:,myStructure)),i) < 0.0_pReal)) &
|
||||||
call IO_error(229)
|
call IO_error(229)
|
||||||
if (constitutive_nonlocal_Q0(i) <= 0.0_pReal) call IO_error(235)
|
|
||||||
if (constitutive_nonlocal_R(i) < 0.0_pReal) call IO_error(234)
|
if (constitutive_nonlocal_R(i) < 0.0_pReal) call IO_error(234)
|
||||||
if (constitutive_nonlocal_atomicVolume(i) <= 0.0_pReal) call IO_error(230)
|
if (constitutive_nonlocal_atomicVolume(i) <= 0.0_pReal) call IO_error(230)
|
||||||
if (constitutive_nonlocal_D0(i) <= 0.0_pReal) call IO_error(231)
|
if (constitutive_nonlocal_Dsd0(i) <= 0.0_pReal) call IO_error(231)
|
||||||
if (constitutive_nonlocal_Qsd(i) <= 0.0_pReal) call IO_error(232)
|
if (constitutive_nonlocal_Qsd(i) <= 0.0_pReal) call IO_error(232)
|
||||||
if (constitutive_nonlocal_aTolRho(i) <= 0.0_pReal) call IO_error(233)
|
if (constitutive_nonlocal_aTolRho(i) <= 0.0_pReal) call IO_error(233)
|
||||||
|
if (constitutive_nonlocal_d0(i) <= 0.0_pReal) call IO_error(236)
|
||||||
|
if (constitutive_nonlocal_tauObs(i) <= 0.0_pReal) call IO_error(237)
|
||||||
|
if (constitutive_nonlocal_vs(i) <= 0.0_pReal) call IO_error(226)
|
||||||
|
if (constitutive_nonlocal_fattack(i) <= 0.0_pReal) call IO_error(235)
|
||||||
|
|
||||||
|
|
||||||
!*** determine total number of active slip systems
|
!*** determine total number of active slip systems
|
||||||
|
@ -397,9 +409,6 @@ maxTotalNslip = maxval(constitutive_nonlocal_totalNslip)
|
||||||
allocate(constitutive_nonlocal_burgersPerSlipSystem(maxTotalNslip, maxNinstance))
|
allocate(constitutive_nonlocal_burgersPerSlipSystem(maxTotalNslip, maxNinstance))
|
||||||
constitutive_nonlocal_burgersPerSlipSystem = 0.0_pReal
|
constitutive_nonlocal_burgersPerSlipSystem = 0.0_pReal
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_v0PerSlipSystem(maxTotalNslip, maxNinstance))
|
|
||||||
constitutive_nonlocal_v0PerSlipSystem = 0.0_pReal
|
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_lambda0PerSlipSystem(maxTotalNslip, maxNinstance))
|
allocate(constitutive_nonlocal_lambda0PerSlipSystem(maxTotalNslip, maxNinstance))
|
||||||
constitutive_nonlocal_lambda0PerSlipSystem = 0.0_pReal
|
constitutive_nonlocal_lambda0PerSlipSystem = 0.0_pReal
|
||||||
|
|
||||||
|
@ -409,6 +418,9 @@ constitutive_nonlocal_dLowerEdgePerSlipSystem = 0.0_pReal
|
||||||
allocate(constitutive_nonlocal_dLowerScrewPerSlipSystem(maxTotalNslip, maxNinstance))
|
allocate(constitutive_nonlocal_dLowerScrewPerSlipSystem(maxTotalNslip, maxNinstance))
|
||||||
constitutive_nonlocal_dLowerScrewPerSlipSystem = 0.0_pReal
|
constitutive_nonlocal_dLowerScrewPerSlipSystem = 0.0_pReal
|
||||||
|
|
||||||
|
allocate(constitutive_nonlocal_Qeff0(maxTotalNslip, maxNinstance))
|
||||||
|
constitutive_nonlocal_Qeff0 = 0.0_pReal
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_forestProjectionEdge(maxTotalNslip, maxTotalNslip, maxNinstance))
|
allocate(constitutive_nonlocal_forestProjectionEdge(maxTotalNslip, maxTotalNslip, maxNinstance))
|
||||||
constitutive_nonlocal_forestProjectionEdge = 0.0_pReal
|
constitutive_nonlocal_forestProjectionEdge = 0.0_pReal
|
||||||
|
|
||||||
|
@ -446,7 +458,7 @@ do i = 1,maxNinstance
|
||||||
|
|
||||||
ns = constitutive_nonlocal_totalNslip(i)
|
ns = constitutive_nonlocal_totalNslip(i)
|
||||||
constitutive_nonlocal_sizeState(i) = size(constitutive_nonlocal_listBasicStates) * ns &
|
constitutive_nonlocal_sizeState(i) = size(constitutive_nonlocal_listBasicStates) * ns &
|
||||||
+ ( size(constitutive_nonlocal_listDependentStates) - 1_pInt ) * ns + 6_pInt
|
+ (size(constitutive_nonlocal_listDependentStates) - 1_pInt) * ns + 6_pInt
|
||||||
constitutive_nonlocal_sizeDotState(i) = size(constitutive_nonlocal_listBasicStates) * ns
|
constitutive_nonlocal_sizeDotState(i) = size(constitutive_nonlocal_listBasicStates) * ns
|
||||||
|
|
||||||
|
|
||||||
|
@ -573,10 +585,9 @@ do i = 1,maxNinstance
|
||||||
|
|
||||||
f = constitutive_nonlocal_slipFamily(s1,i)
|
f = constitutive_nonlocal_slipFamily(s1,i)
|
||||||
|
|
||||||
!*** burgers vector, dislocation velocity prefactor, mean free path prefactor and minimum dipole distance for each slip system
|
!*** burgers vector, mean free path prefactor and minimum dipole distance for each slip system
|
||||||
|
|
||||||
constitutive_nonlocal_burgersPerSlipSystem(s1,i) = constitutive_nonlocal_burgersPerSlipFamily(f,i)
|
constitutive_nonlocal_burgersPerSlipSystem(s1,i) = constitutive_nonlocal_burgersPerSlipFamily(f,i)
|
||||||
constitutive_nonlocal_v0PerSlipSystem(s1,i) = constitutive_nonlocal_v0PerSlipFamily(f,i)
|
|
||||||
constitutive_nonlocal_lambda0PerSlipSystem(s1,i) = constitutive_nonlocal_lambda0PerSlipFamily(f,i)
|
constitutive_nonlocal_lambda0PerSlipSystem(s1,i) = constitutive_nonlocal_lambda0PerSlipFamily(f,i)
|
||||||
constitutive_nonlocal_dLowerEdgePerSlipSystem(s1,i) = constitutive_nonlocal_dLowerEdgePerSlipFamily(f,i)
|
constitutive_nonlocal_dLowerEdgePerSlipSystem(s1,i) = constitutive_nonlocal_dLowerEdgePerSlipFamily(f,i)
|
||||||
constitutive_nonlocal_dLowerScrewPerSlipSystem(s1,i) = constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i)
|
constitutive_nonlocal_dLowerScrewPerSlipSystem(s1,i) = constitutive_nonlocal_dLowerScrewPerSlipFamily(f,i)
|
||||||
|
@ -603,6 +614,12 @@ do i = 1,maxNinstance
|
||||||
|
|
||||||
enddo; enddo
|
enddo; enddo
|
||||||
|
|
||||||
|
!*** calculation of prefactor for activation enthalpy for dislocation glide
|
||||||
|
|
||||||
|
constitutive_nonlocal_Qeff0(:,i) = constitutive_nonlocal_burgersPerSlipSystem(:,i) ** 3.0_pReal &
|
||||||
|
* dsqrt(0.5_pReal * constitutive_nonlocal_d0(i) ** 3.0_pReal &
|
||||||
|
* constitutive_nonlocal_Gmod(i) * constitutive_nonlocal_tauObs(i))
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
endsubroutine
|
endsubroutine
|
||||||
|
@ -965,6 +982,7 @@ do s = 1,ns
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
|
||||||
!**********************************************************************
|
!**********************************************************************
|
||||||
!*** set states
|
!*** set states
|
||||||
|
|
||||||
|
@ -1026,7 +1044,10 @@ real(pReal), dimension(constitutive_nonlocal_totalNslip(phase_constitutionInstan
|
||||||
tauThreshold, & ! threshold shear stress
|
tauThreshold, & ! threshold shear stress
|
||||||
tau, & ! resolved shear stress
|
tau, & ! resolved shear stress
|
||||||
rhoForest ! forest dislocation density
|
rhoForest ! forest dislocation density
|
||||||
real(pReal) boltzmannProbability
|
real(pReal) boltzmannProbability, &
|
||||||
|
tauRel, & ! relative thermally active resolved shear stress
|
||||||
|
wallFunc, & ! functions reflecting the shape of the obstacle wall (see PhD thesis Mohles p.53)
|
||||||
|
timeRatio ! ratio of travel to dwell time
|
||||||
|
|
||||||
|
|
||||||
myInstance = phase_constitutionInstance(material_phase(g,ip,el))
|
myInstance = phase_constitutionInstance(material_phase(g,ip,el))
|
||||||
|
@ -1041,23 +1062,40 @@ tau = 0.0_pReal
|
||||||
constitutive_nonlocal_v(:,:,g,ip,el) = 0.0_pReal
|
constitutive_nonlocal_v(:,:,g,ip,el) = 0.0_pReal
|
||||||
if (present(dv_dtau)) dv_dtau = 0.0_pReal
|
if (present(dv_dtau)) dv_dtau = 0.0_pReal
|
||||||
|
|
||||||
if ( Temperature > 0.0_pReal ) then
|
|
||||||
|
if (Temperature > 0.0_pReal) then
|
||||||
do s = 1,ns
|
do s = 1,ns
|
||||||
|
|
||||||
tau(s) = math_mul6x6( Tstar_v + Tdislocation_v, &
|
tau(s) = math_mul6x6(Tstar_v + Tdislocation_v, &
|
||||||
lattice_Sslip_v(:,constitutive_nonlocal_slipSystemLattice(s,myInstance),myStructure) )
|
lattice_Sslip_v(:,constitutive_nonlocal_slipSystemLattice(s,myInstance),myStructure))
|
||||||
|
|
||||||
if ( abs(tau(s)) > 0.0_pReal ) then
|
!*** only if the resolved shear stress exceeds the threshold stress, dislocations are able to cut the dislocation forest
|
||||||
boltzmannProbability = dexp( -constitutive_nonlocal_Q0(myInstance) * dsqrt(rhoForest(s)) / ( abs(tau(s)) * kB * Temperature) )
|
!*** the forest can't be overcome by thermal activation
|
||||||
constitutive_nonlocal_v(s,:,g,ip,el) = sign(constitutive_nonlocal_v0PerSlipSystem(s,myInstance), tau(s)) &
|
|
||||||
/ ( boltzmannProbability + constitutive_nonlocal_burgersPerSlipSystem(s,myInstance) * dsqrt(rhoForest(s)) ) &
|
|
||||||
* boltzmannProbability
|
|
||||||
|
|
||||||
|
tauRel = (abs(tau(s)) - tauThreshold(s)) / constitutive_nonlocal_tauObs(myInstance)
|
||||||
|
if (tauRel > 0.0_pReal .and. tauRel < 1.0_pReal) then
|
||||||
|
wallFunc = 4.0_pReal * dsqrt(2.0_pReal) / 3.0_pReal * dsqrt(1.0_pReal - tauRel) / tauRel
|
||||||
|
boltzmannProbability = dexp(- constitutive_nonlocal_Qeff0(s,myInstance) * wallFunc / (kB * Temperature))
|
||||||
|
timeRatio = boltzmannProbability * constitutive_nonlocal_fattack(myInstance) &
|
||||||
|
/ (constitutive_nonlocal_vs(myInstance) * dsqrt(rhoForest(s)))
|
||||||
|
|
||||||
if (present(dv_dtau)) &
|
constitutive_nonlocal_v(s,:,g,ip,el) = sign(constitutive_nonlocal_vs(myInstance),tau(s)) * timeRatio / (1.0_pReal + timeRatio)
|
||||||
dv_dtau(s) = abs(constitutive_nonlocal_v(s,1,g,ip,el)) * constitutive_nonlocal_Q0(myInstance) &
|
|
||||||
* constitutive_nonlocal_burgersPerSlipSystem(s,myInstance) * rhoForest(s) / ( tau(s)**2.0_pReal * kB * Temperature ) &
|
if (present(dv_dtau)) then
|
||||||
/ ( boltzmannProbability + constitutive_nonlocal_burgersPerSlipSystem(s,myInstance) * dsqrt(rhoForest(s)) )
|
dv_dtau(s) = abs(constitutive_nonlocal_v(s,1,g,ip,el)) * constitutive_nonlocal_Qeff0(s,myInstance) &
|
||||||
|
/ (kB * Temperature * (1.0_pReal + timeRatio)) &
|
||||||
|
* 0.5_pReal * wallFunc * (2.0_pReal - tauRel) &
|
||||||
|
/ ((1.0_pReal - tauRel) * (abs(tau(s)) - tauThreshold(s)))
|
||||||
|
endif
|
||||||
|
|
||||||
|
!*** if resolved stress exceeds even threshold plus obstacle stress, then allow for maximum travel velocity
|
||||||
|
!*** the tangent is zero, since no dependency of tau
|
||||||
|
|
||||||
|
elseif (tauRel >= 1.0_pReal) then
|
||||||
|
constitutive_nonlocal_v(s,:,g,ip,el) = sign(constitutive_nonlocal_vs(myInstance), tau(s)) &
|
||||||
|
* constitutive_nonlocal_fattack(myInstance) &
|
||||||
|
/ (constitutive_nonlocal_vs(myInstance) * dsqrt(rhoForest(s)) &
|
||||||
|
+ constitutive_nonlocal_fattack(myInstance))
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
@ -1620,7 +1658,7 @@ forall (c=1:2) &
|
||||||
|
|
||||||
rhoDotThermalAnnihilation = 0.0_pReal
|
rhoDotThermalAnnihilation = 0.0_pReal
|
||||||
|
|
||||||
D = constitutive_nonlocal_D0(myInstance) * exp(-constitutive_nonlocal_Qsd(myInstance) / (kB * Temperature))
|
D = constitutive_nonlocal_Dsd0(myInstance) * exp(-constitutive_nonlocal_Qsd(myInstance) / (kB * Temperature))
|
||||||
|
|
||||||
vClimb = constitutive_nonlocal_atomicVolume(myInstance) * D / ( kB * Temperature ) &
|
vClimb = constitutive_nonlocal_atomicVolume(myInstance) * D / ( kB * Temperature ) &
|
||||||
* constitutive_nonlocal_Gmod(myInstance) / ( 2.0_pReal * pi * (1.0_pReal-constitutive_nonlocal_nu(myInstance)) ) &
|
* constitutive_nonlocal_Gmod(myInstance) / ( 2.0_pReal * pi * (1.0_pReal-constitutive_nonlocal_nu(myInstance)) ) &
|
||||||
|
@ -2295,7 +2333,7 @@ do o = 1,phase_Noutput(material_phase(g,ip,el))
|
||||||
cs = cs + ns
|
cs = cs + ns
|
||||||
|
|
||||||
case ('rho_dot_ann_the')
|
case ('rho_dot_ann_the')
|
||||||
D = constitutive_nonlocal_D0(myInstance) * exp(-constitutive_nonlocal_Qsd(myInstance) / (kB * Temperature))
|
D = constitutive_nonlocal_Dsd0(myInstance) * exp(-constitutive_nonlocal_Qsd(myInstance) / (kB * Temperature))
|
||||||
|
|
||||||
vClimb = constitutive_nonlocal_atomicVolume(myInstance) * D / ( kB * Temperature ) &
|
vClimb = constitutive_nonlocal_atomicVolume(myInstance) * D / ( kB * Temperature ) &
|
||||||
* constitutive_nonlocal_Gmod(myInstance) / ( 2.0_pReal * pi * (1.0_pReal-constitutive_nonlocal_nu(myInstance)) ) &
|
* constitutive_nonlocal_Gmod(myInstance) / ( 2.0_pReal * pi * (1.0_pReal-constitutive_nonlocal_nu(myInstance)) ) &
|
||||||
|
|
|
@ -231,15 +231,17 @@ rhoSglScrewNeg0 1e11 0 0 0 # Initial negative screw single
|
||||||
rhoDipEdge0 1e8 0 0 0 # Initial edge dipole dislocation density in m/m**3
|
rhoDipEdge0 1e8 0 0 0 # Initial edge dipole dislocation density in m/m**3
|
||||||
rhoDipScrew0 1e8 0 0 0 # Initial screw dipole dislocation density in m/m**3
|
rhoDipScrew0 1e8 0 0 0 # Initial screw dipole dislocation density in m/m**3
|
||||||
r 10e-6 # cutoff radius for dislocation stress in m
|
r 10e-6 # cutoff radius for dislocation stress in m
|
||||||
v0 3500 0 0 0 # maximum dislocation velocity (velocity of sound)
|
vs 3500 0 0 0 # maximum dislocation velocity (velocity of sound) in m/s
|
||||||
Q0 5e-19 # activation energy for dislocation glide
|
|
||||||
dDipMinEdge 1e-9 0 0 0 # minimum distance for stable edge dipoles in m
|
dDipMinEdge 1e-9 0 0 0 # minimum distance for stable edge dipoles in m
|
||||||
dDipMinScrew 1e-9 0 0 0 # minimum distance for stable screw dipoles in m
|
dDipMinScrew 1e-9 0 0 0 # minimum distance for stable screw dipoles in m
|
||||||
lambda0 100 0 0 0 # prefactor for mean free path
|
lambda0 100 0 0 0 # prefactor for mean free path
|
||||||
atomicVolume 1.7e-29
|
atomicVolume 1.7e-29 # atomic volume in m**3
|
||||||
D0 1e-4 # prefactor for self-diffusion coefficient
|
Dsd0 1e-4 # prefactor for self-diffusion coefficient in m**2/s
|
||||||
Qsd 2.3e-19 # activation enthalpy for seld-diffusion
|
Qsd 2.3e-19 # activation enthalpy for seld-diffusion in J
|
||||||
atol_rho 1e2 # dislocation density considered relevant
|
d0 2.0 # obstacle depth in multiples of the burgers vector length
|
||||||
|
tauObs 2e6 # obstacle strength in Pa
|
||||||
|
fattack 50e9 # attack frequency in Hz
|
||||||
|
atol_rho 1e2 # dislocation density considered relevant in m/m**3
|
||||||
interaction_SlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient
|
interaction_SlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient
|
||||||
|
|
||||||
[BCC_Ferrite]
|
[BCC_Ferrite]
|
||||||
|
|
Loading…
Reference in New Issue