simplified dislocation kinetics: dropped relativistic correction of velocity, since the infinite attack frequency already sets a limit for the velocity; dropped second; also dropped the correction term for backward jumps, since it was probably not meaningful

This commit is contained in:
Christoph Kords 2013-03-21 12:52:29 +00:00
parent 5ca6b89983
commit cee90bbdb3
2 changed files with 7 additions and 30 deletions

View File

@ -304,7 +304,6 @@ viscosity 1e-4 # viscosity for dislocation gli
p 1 # exponent for thermal barrier profile
q 1 # exponent for thermal barrier profile
attackFrequency 50e9 # attack frequency in Hz
maximumVelocity 3600 # maximum allowed velocity
surfaceTransmissivity 1.0 # transmissivity of free surfaces for dislocation flux
grainboundaryTransmissivity 0.0 # transmissivity of grain boundaries for dislocation flux (grain bundaries are identified as interfaces with different textures on both sides); if not set or set to negative number, the subroutine automatically determines the transmissivity at the grain boundary
interaction_SlipSlip 0 0 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient

View File

@ -121,7 +121,6 @@ constitutive_nonlocal_p, & ! parameter
constitutive_nonlocal_q, & ! parameter for kinetic law (Kocks,Argon,Ashby)
constitutive_nonlocal_viscosity, & ! viscosity for dislocation glide in Pa s
constitutive_nonlocal_fattack, & ! attack frequency in Hz
constitutive_nonlocal_vmax, & ! maximum allowed velocity
constitutive_nonlocal_rhoSglScatter, & ! standard deviation of scatter in initial dislocation density
constitutive_nonlocal_surfaceTransmissivity, & ! transmissivity at free surface
constitutive_nonlocal_grainboundaryTransmissivity, & ! transmissivity at grain boundary (identified by different texture)
@ -324,7 +323,6 @@ allocate(constitutive_nonlocal_p(maxNinstance))
allocate(constitutive_nonlocal_q(maxNinstance))
allocate(constitutive_nonlocal_viscosity(maxNinstance))
allocate(constitutive_nonlocal_fattack(maxNinstance))
allocate(constitutive_nonlocal_vmax(maxNinstance))
allocate(constitutive_nonlocal_rhoSglScatter(maxNinstance))
allocate(constitutive_nonlocal_rhoSglRandom(maxNinstance))
allocate(constitutive_nonlocal_rhoSglRandomBinning(maxNinstance))
@ -357,7 +355,6 @@ constitutive_nonlocal_p = 1.0_pReal
constitutive_nonlocal_q = 1.0_pReal
constitutive_nonlocal_viscosity = 0.0_pReal
constitutive_nonlocal_fattack = 0.0_pReal
constitutive_nonlocal_vmax = 0.0_pReal
constitutive_nonlocal_rhoSglScatter = 0.0_pReal
constitutive_nonlocal_rhoSglRandom = 0.0_pReal
constitutive_nonlocal_rhoSglRandomBinning = 1.0_pReal
@ -541,8 +538,6 @@ do
constitutive_nonlocal_viscosity(i) = IO_floatValue(line,positions,2_pInt)
case('attackfrequency','fattack')
constitutive_nonlocal_fattack(i) = IO_floatValue(line,positions,2_pInt)
case('maximumvelocity','vmax')
constitutive_nonlocal_vmax(i) = IO_floatValue(line,positions,2_pInt)
case('rhosglscatter')
constitutive_nonlocal_rhoSglScatter(i) = IO_floatValue(line,positions,2_pInt)
case('rhosglrandom')
@ -661,8 +656,6 @@ enddo
//constitutive_nonlocal_label//')')
if (constitutive_nonlocal_fattack(i) <= 0.0_pReal) call IO_error(211_pInt,ext_msg='attackFrequency (' &
//constitutive_nonlocal_label//')')
if (constitutive_nonlocal_vmax(i) <= 0.0_pReal) call IO_error(211_pInt,ext_msg='maximumVelocity (' &
//constitutive_nonlocal_label//')')
if (constitutive_nonlocal_rhoSglScatter(i) < 0.0_pReal) call IO_error(211_pInt,ext_msg='rhoSglScatter (' &
//constitutive_nonlocal_label//')')
if (constitutive_nonlocal_rhoSglRandom(i) < 0.0_pReal) call IO_error(211_pInt,ext_msg='rhoSglRandom (' &
@ -1592,30 +1585,15 @@ if (Temperature > 0.0_pReal) then
!* Mean velocity results from waiting time at peierls barriers and solid solution obstacles with respective meanfreepath of
!* free flight at glide velocity in between. Backward jumps at low stresses are considered only at peierls barriers,
!* since those have the smallest activation volume, thus are decisive.
v(s) = 1.0_pReal / (tPeierls / meanfreepath_P + tSolidSolution / meanfreepath_S + 1.0_pReal / vViscous) &
* (1.0_pReal - exp(-tauEff(s) * activationVolume_P / (kB * Temperature)))
if (present(dv_dtau)) then
dv_dtau(s) = 1.0_pReal / (tPeierls / meanfreepath_P + tSolidSolution / meanfreepath_S + 1.0_pReal / vViscous) &
* (v(s) * ( dtPeierls_dtau / meanfreepath_P + dtSolidSolution_dtau / meanfreepath_S &
+ 1.0_pReal / (mobility * tauEff(s)*tauEff(s))) &
+ activationVolume_P / (kB * Temperature) * exp(-tauEff(s) * activationVolume_P / (kB * Temperature)))
endif
!* relativistic correction
if (present(dv_dtau)) then
dv_dtau(s) = dv_dtau(s) * exp( -v(s) / constitutive_nonlocal_vmax(instance))
endif
v(s) = constitutive_nonlocal_vmax(instance) * (1.0_pReal - exp( -v(s) / constitutive_nonlocal_vmax(instance)))
!* free flight at glide velocity in between.
!* adopt sign from resolved stress
v(s) = sign(v(s),tau(s))
v(s) = sign(1.0_pReal,tau(s)) / (tPeierls / meanfreepath_P + tSolidSolution / meanfreepath_S + 1.0_pReal / vViscous)
if (present(dv_dtau)) then
dv_dtau(s) = v(s) * v(s) * (dtPeierls_dtau / meanfreepath_P + dtSolidSolution_dtau / meanfreepath_S &
+ 1.0_pReal / (mobility * tauEff(s)*tauEff(s)))
endif
endif
enddo