added parameter to dislotwin 'dipoleformationfactor'. set it to 0.0 to turn hardening due to dipole formation off (like in the updated tungsten example). standard behavior (e.g. a value of 1) is recovered if no value is given

This commit is contained in:
Martin Diehl 2014-03-13 23:50:55 +00:00
parent 5d4017bbfc
commit bac0e24d21
2 changed files with 9 additions and 1 deletions

View File

@ -24,6 +24,7 @@ Qedge 2.725e-19 # Activation energy for dislocation glide [J
p_slip 0.78 # p-exponent in glide velocity
q_slip 1.58 # q-exponent in glide velocity
tau_peierls 2.03e9 # peierls stress (for bcc)
dipoleformationfactor 0 # to have hardening due to dipole formation off
#hardening
CLambdaSlip 10.0 # Adj. parameter controlling dislocation mean free path

View File

@ -92,6 +92,7 @@ module constitutive_dislotwin
constitutive_dislotwin_sbQedge, & !< value for shearband systems Qedge
constitutive_dislotwin_SFE_0K, & !< stacking fault energy at zero K
constitutive_dislotwin_dSFE_dT, & !< temperature dependance of stacking fault energy
constitutive_dislotwin_dipoleFormationFactor, & !< scaling factor for dipole formation: 0: off, 1: on. other values not useful
constitutive_dislotwin_aTolRho, & !< absolute tolerance for integration of dislocation density
constitutive_dislotwin_aTolTwinFrac !< absolute tolerance for integration of twin volume fraction
@ -272,6 +273,7 @@ subroutine constitutive_dislotwin_init(fileUnit)
allocate(constitutive_dislotwin_sbQedge(maxNinstance), source=0.0_pReal)
allocate(constitutive_dislotwin_SFE_0K(maxNinstance), source=0.0_pReal)
allocate(constitutive_dislotwin_dSFE_dT(maxNinstance), source=0.0_pReal)
allocate(constitutive_dislotwin_dipoleFormationFactor(maxNinstance), source=1.0_pReal) !should be on by default
allocate(constitutive_dislotwin_rhoEdge0(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(constitutive_dislotwin_rhoEdgeDip0(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
allocate(constitutive_dislotwin_burgersPerSlipFamily(lattice_maxNslipFamily,maxNinstance), &
@ -511,6 +513,8 @@ subroutine constitutive_dislotwin_init(fileUnit)
constitutive_dislotwin_SFE_0K(instance) = IO_floatValue(line,positions,2_pInt)
case ('dsfe_dt')
constitutive_dislotwin_dSFE_dT(instance) = IO_floatValue(line,positions,2_pInt)
case ('dipoleformationfactor')
constitutive_dislotwin_dipoleFormationFactor(instance) = IO_floatValue(line,positions,2_pInt)
case ('shearbandresistance')
constitutive_dislotwin_sbResistance(instance) = IO_floatValue(line,positions,2_pInt)
case ('shearbandvelocity')
@ -575,6 +579,9 @@ subroutine constitutive_dislotwin_init(fileUnit)
if (constitutive_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
constitutive_dislotwin_pShearBand(instance) <= 0.0_pReal) &
call IO_error(211_pInt,el=instance,ext_msg='pShearBand ('//PLASTICITY_DISLOTWIN_label//')')
if (constitutive_dislotwin_dipoleFormationFactor(instance) /= 0.0_pReal .and. &
constitutive_dislotwin_dipoleFormationFactor(instance) /= 1.0_pReal) &
call IO_error(211_pInt,el=instance,ext_msg='dipoleFormationFactor ('//PLASTICITY_DISLOTWIN_label//')')
if (constitutive_dislotwin_sbVelocity(instance) > 0.0_pReal .and. &
constitutive_dislotwin_qShearBand(instance) <= 0.0_pReal) &
call IO_error(211_pInt,el=instance,ext_msg='qShearBand ('//PLASTICITY_DISLOTWIN_label//')')
@ -1474,7 +1481,7 @@ pure function constitutive_dislotwin_dotState(Tstar_v,Temperature,state,ipc,ip,e
if (EdgeDipDistance(j)<EdgeDipMinDistance) EdgeDipDistance(j)=EdgeDipMinDistance
DotRhoDipFormation(j) = &
((2.0_pReal*EdgeDipDistance(j))/constitutive_dislotwin_burgersPerSlipSystem(j,instance))*&
state%p(j)*abs(gdot_slip(j))
state%p(j)*abs(gdot_slip(j))*constitutive_dislotwin_dipoleFormationFactor(instance)
endif
!* Spontaneous annihilation of 2 single edge dislocations