This commit is contained in:
Sharan Roongta 2020-07-12 16:44:26 +02:00
parent debe096a53
commit 70fb68d224
4 changed files with 120 additions and 60 deletions

View File

@ -668,7 +668,7 @@ function constitutive_collectDotState(S, FArray, Fi, FpArray, subdt, ipc, ip, el
sourceType: select case (phase_source(i,phase)) sourceType: select case (phase_source(i,phase))
case (SOURCE_damage_anisoBrittle_ID) sourceType case (SOURCE_damage_anisoBrittle_ID) sourceType
call source_damage_anisoBrittle_dotState (S, ipc, ip, el) !< correct stress? call source_damage_anisoBrittle_dotState (S, ipc, ip, el) ! correct stress?
case (SOURCE_damage_isoDuctile_ID) sourceType case (SOURCE_damage_isoDuctile_ID) sourceType
call source_damage_isoDuctile_dotState ( ipc, ip, el) call source_damage_isoDuctile_dotState ( ipc, ip, el)

View File

@ -23,10 +23,10 @@ submodule(constitutive) constitutive_damage
module subroutine source_damage_anisobrittle_getRateAndItsTangent(localphiDot, dLocalphiDot_dPhi, phi, phase, constituent) module subroutine source_damage_anisobrittle_getRateAndItsTangent(localphiDot, dLocalphiDot_dPhi, phi, phase, constituent)
integer, intent(in) :: & integer, intent(in) :: &
phase, & phase, & !< phase ID of element
constituent constituent !< position of element within its phase instance
real(pReal), intent(in) :: & real(pReal), intent(in) :: &
phi phi !< damage value
real(pReal), intent(out) :: & real(pReal), intent(out) :: &
localphiDot, & localphiDot, &
dLocalphiDot_dPhi dLocalphiDot_dPhi
@ -102,6 +102,9 @@ submodule(constitutive) constitutive_damage
contains contains
!----------------------------------------------------------------------------------------------
!< @brief initialize damage sources and kinematics mechanism
!----------------------------------------------------------------------------------------------
module subroutine damage_init module subroutine damage_init
! initialize source mechanisms ! initialize source mechanisms
@ -118,7 +121,19 @@ module subroutine damage_init
end subroutine damage_init end subroutine damage_init
module procedure constitutive_damage_getRateAndItsTangents !----------------------------------------------------------------------------------------------
!< @brief returns local part of nonlocal damage driving force
!----------------------------------------------------------------------------------------------
module subroutine constitutive_damage_getRateAndItsTangents(phiDot, dPhiDot_dPhi, phi, ip, el)
integer, intent(in) :: &
ip, & !< integration point number
el !< element number
real(pReal), intent(in) :: &
phi
real(pReal), intent(inout) :: &
phiDot, &
dPhiDot_dPhi
real(pReal) :: & real(pReal) :: &
localphiDot, & localphiDot, &
@ -159,9 +174,12 @@ module procedure constitutive_damage_getRateAndItsTangents
enddo enddo
enddo enddo
end procedure constitutive_damage_getRateAndItsTangents end subroutine constitutive_damage_getRateAndItsTangents
!----------------------------------------------------------------------------------------------
!< @brief writes damage sources resultsvto HDF5 output file
!----------------------------------------------------------------------------------------------
module subroutine damage_results module subroutine damage_results
integer :: p,i integer :: p,i

View File

@ -168,7 +168,6 @@ submodule(constitutive) constitutive_plastic
end subroutine plastic_nonlocal_results end subroutine plastic_nonlocal_results
end interface end interface
@ -197,11 +196,18 @@ module subroutine plastic_init
end subroutine plastic_init end subroutine plastic_init
!--------------------------------------------------------------------------------------------------
!> @brief calls microstructure function of the different plasticity constitutive models
!--------------------------------------------------------------------------------------------------
module subroutine constitutive_plastic_dependentState(F, Fp, ipc, ip, el)
!-------------------------------------------------------------------------------------------------- integer, intent(in) :: &
!> @brief calls microstructure function of the different constitutive models ipc, & !< component-ID of integration point
!-------------------------------------------------------------------------------------------------- ip, & !< integration point
module procedure constitutive_plastic_dependentState el !< element
real(pReal), intent(in), dimension(3,3) :: &
F, & !< elastic deformation gradient
Fp !< plastic deformation gradient
integer :: & integer :: &
ho, & !< homogenization ho, & !< homogenization
@ -222,14 +228,28 @@ module procedure constitutive_plastic_dependentState
call plastic_nonlocal_dependentState (F,Fp,instance,of,ip,el) call plastic_nonlocal_dependentState (F,Fp,instance,of,ip,el)
end select plasticityType end select plasticityType
end procedure constitutive_plastic_dependentState end subroutine constitutive_plastic_dependentState
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief contains the constitutive equation for calculating the velocity gradient !> @brief contains the constitutive equation for calculating the velocity gradient
! ToDo: Discuss whether it makes sense if crystallite handles the configuration conversion, i.e. ! ToDo: Discuss whether it makes sense if crystallite handles the configuration conversion, i.e.
! Mp in, dLp_dMp out ! Mp in, dLp_dMp out
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
module procedure constitutive_plastic_LpAndItsTangents module subroutine constitutive_plastic_LpAndItsTangents(Lp, dLp_dS, dLp_dFi, &
S, Fi, ipc, ip, el)
integer, intent(in) :: &
ipc, & !< component-ID of integration point
ip, & !< integration point
el !< element
real(pReal), intent(in), dimension(3,3) :: &
S, & !< 2nd Piola-Kirchhoff stress
Fi !< intermediate deformation gradient
real(pReal), intent(out), dimension(3,3) :: &
Lp !< plastic velocity gradient
real(pReal), intent(out), dimension(3,3,3,3) :: &
dLp_dS, &
dLp_dFi !< derivative of Lp with respect to Fi
real(pReal), dimension(3,3,3,3) :: & real(pReal), dimension(3,3,3,3) :: &
dLp_dMp !< derivative of Lp with respect to Mandel stress dLp_dMp !< derivative of Lp with respect to Mandel stress
@ -280,8 +300,12 @@ module procedure constitutive_plastic_LpAndItsTangents
dLp_dS(i,j,1:3,1:3) = matmul(matmul(transpose(Fi),Fi),dLp_dMp(i,j,1:3,1:3)) ! ToDo: @PS: why not: dLp_dMp:(FiT Fi) dLp_dS(i,j,1:3,1:3) = matmul(matmul(transpose(Fi),Fi),dLp_dMp(i,j,1:3,1:3)) ! ToDo: @PS: why not: dLp_dMp:(FiT Fi)
enddo; enddo enddo; enddo
end procedure constitutive_plastic_LpAndItsTangents end subroutine constitutive_plastic_LpAndItsTangents
!--------------------------------------------------------------------------------------------
!> @brief writes plasticity constitutive results to HDF5 output file
!--------------------------------------------------------------------------------------------
module subroutine plastic_results module subroutine plastic_results
integer :: p integer :: p

View File

@ -39,8 +39,12 @@ submodule(constitutive) constitutive_thermal
end subroutine source_thermal_externalheat_getRateAndItsTangent end subroutine source_thermal_externalheat_getRateAndItsTangent
end interface end interface
contains contains
!----------------------------------------------------------------------------------------------
!< @brief initializes thermal sources and kinematics mechanism
!----------------------------------------------------------------------------------------------
module subroutine thermal_init module subroutine thermal_init
! initialize source mechanisms ! initialize source mechanisms
@ -54,7 +58,21 @@ module subroutine thermal_init
end subroutine thermal_init end subroutine thermal_init
module procedure constitutive_thermal_getRateAndItsTangents !----------------------------------------------------------------------------------------------
!< @brief calculates thermal dissipation rate
!----------------------------------------------------------------------------------------------
module subroutine constitutive_thermal_getRateAndItsTangents(TDot, dTDot_dT, T, Tstar, Lp, ip, el)
integer, intent(in) :: &
ip, & !< integration point number
el !< element number
real(pReal), intent(in) :: &
T
real(pReal), intent(in), dimension(:,:,:,:,:) :: &
Tstar, &
Lp
real(pReal), intent(inout) :: &
TDot, &
dTDot_dT
real(pReal) :: & real(pReal) :: &
my_Tdot, & my_Tdot, &
@ -94,6 +112,6 @@ module procedure constitutive_thermal_getRateAndItsTangents
enddo enddo
enddo enddo
end procedure constitutive_thermal_getRateAndItsTangents end subroutine constitutive_thermal_getRateAndItsTangents
end submodule end submodule