called kinematic_deltaFp in phase_mechanical

This commit is contained in:
achalhp 2024-02-03 18:12:08 +05:30
parent cde95bf2d3
commit 7a736a4a02
2 changed files with 20 additions and 6 deletions

View File

@ -128,6 +128,15 @@ submodule(phase) mechanical
dLp_dFi !< derivative of Lp with respect to Fi
end subroutine plastic_LpAndItsTangents
module subroutine plastic_KinematicJump(ph, en, Jump_occurr,deltaFp)
integer, intent(in) :: &
ph, &
en
logical , intent(out) :: &
Jump_occurr
real(pReal), dimension(3,3), intent(out) :: &
deltaFp
end subroutine plastic_KinematicJump
module subroutine plastic_isotropic_results(ph,group)
integer, intent(in) :: ph
@ -353,7 +362,7 @@ end subroutine mechanical_results
!--------------------------------------------------------------------------------------------------
!> @brief calculation of stress (P) with time integration based on a residuum in Lp and
!> intermediate acceleration of the Newton-Raphson correction
!> @modified by Satya and achal
!> @modified by Satya and Achal
!> check for detour i.e. if twinning is possible (we are not going ahead in Lp loop consistency)
!> checking by calling the deltaFp subroutine that should return 4 things
!1) deltaFp= Cij (correspondance matrix) representing twinning shear and reorientation
@ -389,7 +398,8 @@ function integrateStress(F,subFp0,subFi0,Delta_t,ph,en) result(broken)
S, & ! 2nd Piola-Kirchhoff Stress in plastic (lattice) configuration
A, &
B, &
temp_33
temp_33, &
deltaFp ! Achal
real(pReal), dimension(9) :: temp_9 ! needed for matrix inversion by LAPACK
integer, dimension(9) :: devNull_9 ! needed for matrix inversion by LAPACK
real(pReal), dimension(9,9) :: dRLp_dLp, & ! partial derivative of residuum (Jacobian for Newton-Raphson scheme)
@ -414,10 +424,12 @@ function integrateStress(F,subFp0,subFi0,Delta_t,ph,en) result(broken)
p, &
jacoCounterLp, &
jacoCounterLi ! counters to check for Jacobian update
logical :: error,broken
logical :: error,broken, &
FpJumped ! Achal
broken = .true.
FpJumped = .false.
call plastic_dependentState(ph,en)
Lpguess = phase_mechanical_Lp(ph)%data(1:3,1:3,en) ! take as first guess
@ -458,11 +470,13 @@ function integrateStress(F,subFp0,subFi0,Delta_t,ph,en) result(broken)
call phase_hooke_SandItsTangents(S, dS_dFe, dS_dFi, &
Fe, Fi_new, ph, en)
! achal call Kinematic DeltaFp here
!** Starting to implement changes for accommodating large shear and reorientation caused by twinning**
if(.not. FpJumped .and. NiterationStressLp>1) then
call plastic_KinematicJump(ph, en, FpJumped,deltaFp)
endif
call plastic_LpAndItsTangents(Lp_constitutive, dLp_dS, dLp_dFi, &
S, Fi_new, ph,en)

View File

@ -516,7 +516,7 @@ associate(prm => param(ph), stt => state(ph), dot => dotState(ph), dlt => deltas
twin_var = maxloc(stt%f_twin(:,en),dim=1)
!fdot_twin = (0.05_pReal*(abs(tau_tw)/stt%xi_tw(:,en))**prm%n_tw)/prm%gamma_char ! This is sometimes >1
write(6,*) 'twin_var', twin_var !delete this
!write(6,*) 'twin_var', twin_var !delete this
!if (en==1) write(6,*)'correspondanceMatrix1', param(ph)%CorrespondanceMatrix(:,:,1) !delete this !delete this