From cee90bbdb33e12ce8aa910d4a7fab8ee578f7b4e Mon Sep 17 00:00:00 2001 From: Christoph Kords Date: Thu, 21 Mar 2013 12:52:29 +0000 Subject: [PATCH] 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 --- code/config/material.config | 1 - code/constitutive_nonlocal.f90 | 36 +++++++--------------------------- 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/code/config/material.config b/code/config/material.config index 6157d1f32..fe509958c 100644 --- a/code/config/material.config +++ b/code/config/material.config @@ -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 diff --git a/code/constitutive_nonlocal.f90 b/code/constitutive_nonlocal.f90 index 514fd6025..a2640735d 100644 --- a/code/constitutive_nonlocal.f90 +++ b/code/constitutive_nonlocal.f90 @@ -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