calculate plastic dissipation based on M_p not S

This commit is contained in:
Franz Roters 2023-02-13 17:59:22 +01:00
parent c9bd2c88a9
commit 4c65047612
3 changed files with 23 additions and 1 deletions

View File

@ -196,6 +196,10 @@ module phase
real(pReal), dimension(3,3) :: F_e
end function mechanical_F_e
module function mechanical_F_i(ph,en) result(F_i)
integer, intent(in) :: ph,en
real(pReal), dimension(3,3) :: F_i
end function mechanical_F_i
module function phase_F(co,ce) result(F)
integer, intent(in) :: co, ce

View File

@ -1319,6 +1319,20 @@ module function mechanical_F_e(ph,en) result(F_e)
end function mechanical_F_e
!--------------------------------------------------------------------------------------------------
!< @brief Get eigen deformation gradient (for use by non-mech physics).
!--------------------------------------------------------------------------------------------------
module function mechanical_F_i(ph,en) result(F_i)
integer, intent(in) :: ph,en
real(pReal), dimension(3,3) :: F_i
F_i = phase_mechanical_Fi(ph)%data(1:3,1:3,en)
end function mechanical_F_i
!--------------------------------------------------------------------------------------------------
!< @brief Get second Piola-Kirchhoff stress (for use by homogenization).
!--------------------------------------------------------------------------------------------------

View File

@ -1,6 +1,7 @@
!--------------------------------------------------------------------------------------------------
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
!> @author Pratheek Shanthraj, Max-Planck-Institut für Eisenforschung GmbH
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
!> @brief material subroutine for thermal source due to plastic dissipation
!> @details to be done
!--------------------------------------------------------------------------------------------------
@ -77,10 +78,13 @@ module function dissipation_f_T(ph,en) result(f_T)
integer, intent(in) :: ph, en
real(pReal) :: &
f_T
real(pReal), dimension(3,3) :: &
Mp !< Mandel stress work conjugate with Lp
Mp = matmul(matmul(transpose(mechanical_F_i(ph,en)),mechanical_F_i(ph,en)),mechanical_S(ph,en))
associate(prm => param(ph))
f_T = prm%kappa*sum(abs(mechanical_S(ph,en)*mechanical_L_p(ph,en)))
f_T = prm%kappa*sum(abs(Mp*mechanical_L_p(ph,en)))
end associate
end function dissipation_f_T