vacancy diffusion proportional to accumulated slip (pipe diffusion along dislocations)

This commit is contained in:
Pratheek Shanthraj 2014-10-11 10:39:44 +00:00
parent c0584b47e1
commit bc9cf40371
3 changed files with 85 additions and 3 deletions

View File

@ -39,6 +39,7 @@ module constitutive
constitutive_getLocalVacancyConcentration, & constitutive_getLocalVacancyConcentration, &
constitutive_putLocalVacancyConcentration, & constitutive_putLocalVacancyConcentration, &
constitutive_getVacancyConcentration, & constitutive_getVacancyConcentration, &
constitutive_getVacancyDiffusion33, &
constitutive_postResults constitutive_postResults
private :: & private :: &
@ -1252,6 +1253,46 @@ function constitutive_getVacancyConcentration(ipc, ip, el)
end function constitutive_getVacancyConcentration end function constitutive_getVacancyConcentration
!--------------------------------------------------------------------------------------------------
!> @brief returns vacancy diffusion tensor
!--------------------------------------------------------------------------------------------------
function constitutive_getVacancyDiffusion33(Fp, ipc, ip, el)
use prec, only: &
pReal
use lattice, only: &
lattice_VacancyDiffusion33
use material, only: &
material_phase, &
LOCAL_VACANCY_generation_ID, &
phase_vacancy
use vacancy_generation, only: &
vacancy_generation_getVacancyDiffusion33
implicit none
integer(pInt), intent(in) :: &
ipc, & !< grain number
ip, & !< integration point number
el !< element number
real(pReal), dimension(3,3) :: &
Fp, &
constitutive_getVacancyDiffusion33
real(pReal), dimension(:), allocatable :: &
accumulatedSlip
integer(pInt) :: &
nSlip
constitutive_getVacancyDiffusion33 = lattice_VacancyDiffusion33(1:3,1:3,material_phase(ipc,ip,el))
select case(phase_vacancy(material_phase(ipc,ip,el)))
case (LOCAL_VACANCY_generation_ID)
call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc,ip,el)
constitutive_getVacancyDiffusion33 = &
vacancy_generation_getVacancyDiffusion33(nSlip,accumulatedSlip,constitutive_getTemperature(ipc,ip,el), &
ipc,ip,el)
end select
end function constitutive_getVacancyDiffusion33
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief returns accumulated slip on each system defined !> @brief returns accumulated slip on each system defined
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------

View File

@ -1107,13 +1107,15 @@ function field_getVacancyDiffusion33(ip,el)
use lattice, only: & use lattice, only: &
lattice_vacancyDiffusion33 lattice_vacancyDiffusion33
use material, only: & use material, only: &
material_phase, &
material_homog, & material_homog, &
field_vacancy_type, & field_vacancy_type, &
FIELD_VACANCY_NONLOCAL_ID, & FIELD_VACANCY_NONLOCAL_ID, &
homogenization_Ngrains homogenization_Ngrains
use crystallite, only: & use crystallite, only: &
crystallite_push33ToRef crystallite_push33ToRef, &
crystallite_Fp
use constitutive, only: &
constitutive_getVacancyDiffusion33
implicit none implicit none
real(pReal), dimension(3,3) :: field_getVacancyDiffusion33 real(pReal), dimension(3,3) :: field_getVacancyDiffusion33
@ -1129,7 +1131,8 @@ function field_getVacancyDiffusion33(ip,el)
case (FIELD_VACANCY_NONLOCAL_ID) case (FIELD_VACANCY_NONLOCAL_ID)
do ipc = 1, homogenization_Ngrains(mesh_element(3,el)) do ipc = 1, homogenization_Ngrains(mesh_element(3,el))
field_getVacancyDiffusion33 = field_getVacancyDiffusion33 + & field_getVacancyDiffusion33 = field_getVacancyDiffusion33 + &
crystallite_push33ToRef(ipc,ip,el,lattice_vacancyDiffusion33(:,:,material_phase(ipc,ip,el))) crystallite_push33ToRef(ipc,ip,el, &
constitutive_getVacancyDiffusion33(crystallite_Fp(1:3,1:3,ipc,ip,el),ipc,ip,el))
enddo enddo
end select end select

View File

@ -49,6 +49,7 @@ module vacancy_generation
vacancy_generation_dotState, & vacancy_generation_dotState, &
vacancy_generation_getConcentration, & vacancy_generation_getConcentration, &
vacancy_generation_putConcentration, & vacancy_generation_putConcentration, &
vacancy_generation_getVacancyDiffusion33, &
vacancy_generation_postResults vacancy_generation_postResults
contains contains
@ -356,6 +357,43 @@ subroutine vacancy_generation_putConcentration(ipc, ip, el, localVacancyConcentr
end subroutine vacancy_generation_putConcentration end subroutine vacancy_generation_putConcentration
!--------------------------------------------------------------------------------------------------
!> @brief returns generation vacancy diffusion tensor
!--------------------------------------------------------------------------------------------------
function vacancy_generation_getVacancyDiffusion33(nSlip,accumulatedSlip,temperature,ipc,ip,el)
use lattice, only: &
lattice_VacancyDiffusion33
use material, only: &
mappingConstitutive, &
phase_vacancyInstance, &
vacancyState
implicit none
integer(pInt), intent(in) :: &
nSlip, &
ipc, & !< grain number
ip, & !< integration point number
el !< element number
real(pReal), dimension(3,3) :: &
vacancy_generation_getVacancyDiffusion33
real(pReal), dimension(nSlip) :: &
accumulatedSlip
real(pReal) :: &
temperature
integer(pInt) :: &
phase, constituent, instance
phase = mappingConstitutive(2,ipc,ip,el)
constituent = mappingConstitutive(1,ipc,ip,el)
instance = phase_vacancyInstance(phase)
vacancy_generation_getVacancyDiffusion33 = &
lattice_VacancyDiffusion33(1:3,1:3,phase)* &
(1.0_pReal + vacancy_generation_C2(instance)*sum(accumulatedSlip))* &
exp(-vacancy_generation_energy(instance)/(kB*temperature))
end function vacancy_generation_getVacancyDiffusion33
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief return array of constitutive results !> @brief return array of constitutive results
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------