Add the generation rate of vacancy induced by dislocation movement.
This commit is contained in:
parent
29951a9e1a
commit
a72a9ed8ec
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue