complement of pore nucleation.

This commit is contained in:
Haiming Zhang 2014-11-12 17:55:02 +00:00
parent fc9f4835c3
commit b407e6ac80
1 changed files with 26 additions and 17 deletions

View File

@ -374,7 +374,10 @@ subroutine vacancy_generation_dotState(nSlip, accumulatedSlip, Tstar_v, Temperat
criticalRadius, & !< the critical pore radius criticalRadius, & !< the critical pore radius
Gibbs4Pore, & !< the Gibbs free energy for generating a critical pore Gibbs4Pore, & !< the Gibbs free energy for generating a critical pore
equilibPoreConcentration, & !< the equilibrium pore concentration equilibPoreConcentration, & !< the equilibrium pore concentration
nucleationRatePore !< the nucleation rate of pore nucleationRatePore, & !< the nucleation rate of pore
ratioCvCve !< the ratio of Cv with respect to Cve
real(pReal) :: &
threshold4ratioCvCve = 2.0_pReal !< the threshold value for Cv/Cve
phase = mappingConstitutive(2,ipc,ip,el) phase = mappingConstitutive(2,ipc,ip,el)
constituent = mappingConstitutive(1,ipc,ip,el) constituent = mappingConstitutive(1,ipc,ip,el)
@ -382,10 +385,15 @@ subroutine vacancy_generation_dotState(nSlip, accumulatedSlip, Tstar_v, Temperat
pressure = math_trace33(math_Mandel6to33(Tstar_v)) pressure = math_trace33(math_Mandel6to33(Tstar_v))
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
vacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el)
ratioCvCve = vacancyConcentration/vacancy_generation_equilibConcentration(instance)
if(ratioCvCve < threshold4ratioCvCve) then
nucleationRatePore = 0.0_pReal
else
! Calculate nucleation rate of pore ! Calculate nucleation rate of pore
vacancyDiffusion = vacancy_generation_diffusionCoeff0(instance)* & vacancyDiffusion = vacancy_generation_diffusionCoeff0(instance)* &
exp( -vacancy_generation_diffusionEnergy(instance)/(kB*temperature) ) exp( -vacancy_generation_diffusionEnergy(instance)/(kB*temperature) )
vacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el)
chemicalPotential = kB*Temperature * log(vacancyConcentration/ & chemicalPotential = kB*Temperature * log(vacancyConcentration/ &
vacancy_generation_equilibConcentration(instance)) vacancy_generation_equilibConcentration(instance))
criticalRadius = 2_pReal/chemicalPotential* & criticalRadius = 2_pReal/chemicalPotential* &
@ -400,6 +408,7 @@ subroutine vacancy_generation_dotState(nSlip, accumulatedSlip, Tstar_v, Temperat
poleZeldovichCoeff = pore_nucleation_atomVolume(instance)* & poleZeldovichCoeff = pore_nucleation_atomVolume(instance)* &
sqrt( pore_nucleation_surfaceEnergy(instance)/(kB*temperature) ) sqrt( pore_nucleation_surfaceEnergy(instance)/(kB*temperature) )
nucleationRatePore = poleZeldovichCoeff * vacancyAbsorpRateCoeff* equilibPoreConcentration nucleationRatePore = poleZeldovichCoeff * vacancyAbsorpRateCoeff* equilibPoreConcentration
endif
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! the net generating rate vacancy ! the net generating rate vacancy