Add the generation rate of vacancy induced by dislocation movement.

This commit is contained in:
Haiming Zhang 2014-11-06 16:53:34 +00:00
parent 29951a9e1a
commit a72a9ed8ec
1 changed files with 29 additions and 3 deletions

View File

@ -29,7 +29,12 @@ module vacancy_generation
vacancy_generation_freq, & vacancy_generation_freq, &
vacancy_generation_energy, & vacancy_generation_energy, &
vacancy_generation_C1, & vacancy_generation_C1, &
vacancy_generation_C2 vacancy_generation_C2, &
vacancy_generation_jogHeight, & !< the height of jogs in Burgers vectors
vacancy_generation_jogSeparation, & !< the jog seperation
vacancy_generation_nLatticeSites, & !< the number of lattice sites per unit volume
vacancy_generation_burgersVec, & !< the Burgers vector
vacancy_generateFactorbyDislocation
real(pReal), parameter, private :: & real(pReal), parameter, private :: &
kB = 1.38e-23_pReal !< Boltzmann constant in J/Kelvin kB = 1.38e-23_pReal !< Boltzmann constant in J/Kelvin
@ -130,6 +135,12 @@ subroutine vacancy_generation_init(fileUnit)
allocate(vacancy_generation_energy(maxNinstance), source=0.0_pReal) allocate(vacancy_generation_energy(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_C1(maxNinstance), source=0.0_pReal) allocate(vacancy_generation_C1(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_C2(maxNinstance), source=0.0_pReal) allocate(vacancy_generation_C2(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_jogHeight(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_jogSeparation(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_nLatticeSites(maxNinstance), source=0.0_pReal)
allocate(vacancy_generation_burgersVec(maxNinstance), source=0.0_pReal)
allocate(vacancy_generateFactorbyDislocation(maxNinstance), source=0.0_pReal)
rewind(fileUnit) rewind(fileUnit)
phase = 0_pInt phase = 0_pInt
@ -179,6 +190,15 @@ subroutine vacancy_generation_init(fileUnit)
case ('vacancy_C2') case ('vacancy_C2')
vacancy_generation_C2(instance) = IO_floatValue(line,positions,2_pInt) vacancy_generation_C2(instance) = IO_floatValue(line,positions,2_pInt)
case ('vacancy_jogHeight')
vacancy_generation_jogHeight(instance) = IO_floatValue(line,positions,2_pInt)
case ('vacancy_jogSeparation')
vacancy_generation_jogSeparation(instance) = IO_floatValue(line,positions,2_pInt)
case ('vacancy_nLatticeSites')
vacancy_generation_nLatticeSites(instance) = IO_floatValue(line,positions,2_pInt)
case ('vacancy_burgersVec')
vacancy_generation_burgersVec(instance) = IO_floatValue(line,positions,2_pInt)
end select end select
endif; endif endif; endif
enddo parsingFile enddo parsingFile
@ -225,6 +245,12 @@ subroutine vacancy_generation_init(fileUnit)
allocate(vacancyState(phase)%RK4dotState (sizeDotState,NofMyPhase), source=0.0_pReal) allocate(vacancyState(phase)%RK4dotState (sizeDotState,NofMyPhase), source=0.0_pReal)
if (any(numerics_integrator == 5_pInt)) & if (any(numerics_integrator == 5_pInt)) &
allocate(vacancyState(phase)%RKCK45dotState (6,sizeDotState,NofMyPhase),source=0.0_pReal) allocate(vacancyState(phase)%RKCK45dotState (6,sizeDotState,NofMyPhase),source=0.0_pReal)
! Calculate the coefficient which decribes the rate of vacancy concentration induced by dislocation motion.
vacancy_generateFactorbyDislocation(instance) = vacancy_generation_jogHeight(instance)/ &
vacancy_generation_jogSeparation(instance)/ &
vacancy_generation_nLatticeSites(instance)/ &
vacancy_generation_burgersVec(instance)/ &
vacancy_generation_burgersVec(instance)
call vacancy_generation_stateInit(phase,instance) call vacancy_generation_stateInit(phase,instance)
call vacancy_generation_aTolState(phase,instance) call vacancy_generation_aTolState(phase,instance)
@ -310,9 +336,9 @@ subroutine vacancy_generation_dotState(nSlip, accumulatedSlip, Tstar_v, Temperat
vacancyState(phase)%dotState(1,constituent) = & vacancyState(phase)%dotState(1,constituent) = &
vacancy_generation_freq(instance)* & vacancy_generation_freq(instance)* &
(1.0_pReal + vacancy_generation_C2(instance)*sum(accumulatedSlip))* &
exp(-(vacancy_generation_energy(instance) - vacancy_generation_C2(instance)*pressure)/ & exp(-(vacancy_generation_energy(instance) - vacancy_generation_C2(instance)*pressure)/ &
(kB*Temperature)) (kB*Temperature)) + &
sum(accumulatedSlip) * vacancy_generateFactorbyDislocation(instance) !< Induced by dislocation motion.
end subroutine vacancy_generation_dotState end subroutine vacancy_generation_dotState