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,24 +385,30 @@ subroutine vacancy_generation_dotState(nSlip, accumulatedSlip, Tstar_v, Temperat
pressure = math_trace33(math_Mandel6to33(Tstar_v)) pressure = math_trace33(math_Mandel6to33(Tstar_v))
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! Calculate nucleation rate of pore
vacancyDiffusion = vacancy_generation_diffusionCoeff0(instance)* &
exp( -vacancy_generation_diffusionEnergy(instance)/(kB*temperature) )
vacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el) vacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el)
chemicalPotential = kB*Temperature * log(vacancyConcentration/ & ratioCvCve = vacancyConcentration/vacancy_generation_equilibConcentration(instance)
vacancy_generation_equilibConcentration(instance))
criticalRadius = 2_pReal/chemicalPotential* &
pore_nucleation_surfaceEnergy(instance) * pore_nucleation_atomVolume(instance)
Gibbs4Pore = 4_pReal/3_pReal * pi * pore_nucleation_surfaceEnergy(instance)* &
criticalRadius * criticalRadius
equilibPoreConcentration = pore_nucleation_concentrationCoeff0(instance)* &
exp( -Gibbs4Pore/(kB*temperature) )
vacancyAbsorpRateCoeff = 2_pReal/pore_nucleation_shellThickness(instance) * & if(ratioCvCve < threshold4ratioCvCve) then
vacancyDiffusion * vacancyConcentration nucleationRatePore = 0.0_pReal
poleZeldovichCoeff = pore_nucleation_atomVolume(instance)* & else
sqrt( pore_nucleation_surfaceEnergy(instance)/(kB*temperature) ) ! Calculate nucleation rate of pore
nucleationRatePore = poleZeldovichCoeff * vacancyAbsorpRateCoeff* equilibPoreConcentration vacancyDiffusion = vacancy_generation_diffusionCoeff0(instance)* &
exp( -vacancy_generation_diffusionEnergy(instance)/(kB*temperature) )
chemicalPotential = kB*Temperature * log(vacancyConcentration/ &
vacancy_generation_equilibConcentration(instance))
criticalRadius = 2_pReal/chemicalPotential* &
pore_nucleation_surfaceEnergy(instance) * pore_nucleation_atomVolume(instance)
Gibbs4Pore = 4_pReal/3_pReal * pi * pore_nucleation_surfaceEnergy(instance)* &
criticalRadius * criticalRadius
equilibPoreConcentration = pore_nucleation_concentrationCoeff0(instance)* &
exp( -Gibbs4Pore/(kB*temperature) )
vacancyAbsorpRateCoeff = 2_pReal/pore_nucleation_shellThickness(instance) * &
vacancyDiffusion * vacancyConcentration
poleZeldovichCoeff = pore_nucleation_atomVolume(instance)* &
sqrt( pore_nucleation_surfaceEnergy(instance)/(kB*temperature) )
nucleationRatePore = poleZeldovichCoeff * vacancyAbsorpRateCoeff* equilibPoreConcentration
endif
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! the net generating rate vacancy ! the net generating rate vacancy