semi-separate handling of damage
This commit is contained in:
parent
2b24224c7e
commit
594ad2c310
|
@ -1009,17 +1009,13 @@ module function phase_mechanical_constitutive(dt,co,ip,el) result(converged_)
|
||||||
subLi0 = phase_mechanical_Li0(ph)%data(1:3,1:3,en)
|
subLi0 = phase_mechanical_Li0(ph)%data(1:3,1:3,en)
|
||||||
subLp0 = phase_mechanical_Lp0(ph)%data(1:3,1:3,en)
|
subLp0 = phase_mechanical_Lp0(ph)%data(1:3,1:3,en)
|
||||||
subState0 = plasticState(ph)%State0(:,en)
|
subState0 = plasticState(ph)%State0(:,en)
|
||||||
|
|
||||||
if (damageState(ph)%sizeState > 0) &
|
|
||||||
damageState(ph)%subState0(:,en) = damageState(ph)%state0(:,en)
|
|
||||||
|
|
||||||
subFp0 = phase_mechanical_Fp0(ph)%data(1:3,1:3,en)
|
subFp0 = phase_mechanical_Fp0(ph)%data(1:3,1:3,en)
|
||||||
subFi0 = phase_mechanical_Fi0(ph)%data(1:3,1:3,en)
|
subFi0 = phase_mechanical_Fi0(ph)%data(1:3,1:3,en)
|
||||||
subF0 = phase_mechanical_F0(ph)%data(1:3,1:3,en)
|
subF0 = phase_mechanical_F0(ph)%data(1:3,1:3,en)
|
||||||
subFrac = 0.0_pReal
|
subFrac = 0.0_pReal
|
||||||
subStep = 1.0_pReal/num%subStepSizeCryst
|
|
||||||
todo = .true.
|
todo = .true.
|
||||||
converged_ = .false. ! pretend failed step of 1/subStepSizeCryst
|
subStep = 1.0_pReal/num%subStepSizeCryst
|
||||||
|
converged_ = .false. ! pretend failed step of 1/subStepSizeCryst
|
||||||
|
|
||||||
todo = .true.
|
todo = .true.
|
||||||
cutbackLooping: do while (todo)
|
cutbackLooping: do while (todo)
|
||||||
|
@ -1038,9 +1034,6 @@ module function phase_mechanical_constitutive(dt,co,ip,el) result(converged_)
|
||||||
subFp0 = phase_mechanical_Fp(ph)%data(1:3,1:3,en)
|
subFp0 = phase_mechanical_Fp(ph)%data(1:3,1:3,en)
|
||||||
subFi0 = phase_mechanical_Fi(ph)%data(1:3,1:3,en)
|
subFi0 = phase_mechanical_Fi(ph)%data(1:3,1:3,en)
|
||||||
subState0 = plasticState(ph)%state(:,en)
|
subState0 = plasticState(ph)%state(:,en)
|
||||||
if (damageState(ph)%sizeState > 0) &
|
|
||||||
damageState(ph)%subState0(:,en) = damageState(ph)%state(:,en)
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! cut back (reduced time and restore)
|
! cut back (reduced time and restore)
|
||||||
|
@ -1048,16 +1041,13 @@ module function phase_mechanical_constitutive(dt,co,ip,el) result(converged_)
|
||||||
subStep = num%subStepSizeCryst * subStep
|
subStep = num%subStepSizeCryst * subStep
|
||||||
phase_mechanical_Fp(ph)%data(1:3,1:3,en) = subFp0
|
phase_mechanical_Fp(ph)%data(1:3,1:3,en) = subFp0
|
||||||
phase_mechanical_Fi(ph)%data(1:3,1:3,en) = subFi0
|
phase_mechanical_Fi(ph)%data(1:3,1:3,en) = subFi0
|
||||||
phase_mechanical_S(ph)%data(1:3,1:3,en) = phase_mechanical_S0(ph)%data(1:3,1:3,en) ! why no subS0 ? is S0 of any use?
|
phase_mechanical_S(ph)%data(1:3,1:3,en) = phase_mechanical_S0(ph)%data(1:3,1:3,en) ! why no subS0 ? is S0 of any use?
|
||||||
if (subStep < 1.0_pReal) then ! actual (not initial) cutback
|
if (subStep < 1.0_pReal) then ! actual (not initial) cutback
|
||||||
phase_mechanical_Lp(ph)%data(1:3,1:3,en) = subLp0
|
phase_mechanical_Lp(ph)%data(1:3,1:3,en) = subLp0
|
||||||
phase_mechanical_Li(ph)%data(1:3,1:3,en) = subLi0
|
phase_mechanical_Li(ph)%data(1:3,1:3,en) = subLi0
|
||||||
endif
|
endif
|
||||||
plasticState(ph)%state(:,en) = subState0
|
plasticState(ph)%state(:,en) = subState0
|
||||||
if (damageState(ph)%sizeState > 0) &
|
todo = subStep > num%subStepMinCryst ! still on track or already done (beyond repair)
|
||||||
damageState(ph)%state(:,en) = damageState(ph)%subState0(:,en)
|
|
||||||
|
|
||||||
todo = subStep > num%subStepMinCryst ! still on track or already done (beyond repair)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -1066,11 +1056,13 @@ module function phase_mechanical_constitutive(dt,co,ip,el) result(converged_)
|
||||||
subF = subF0 &
|
subF = subF0 &
|
||||||
+ subStep * (phase_mechanical_F(ph)%data(1:3,1:3,en) - phase_mechanical_F0(ph)%data(1:3,1:3,en))
|
+ subStep * (phase_mechanical_F(ph)%data(1:3,1:3,en) - phase_mechanical_F0(ph)%data(1:3,1:3,en))
|
||||||
converged_ = .not. integrateState(subF0,subF,subFp0,subFi0,subState0(1:sizeDotState),subStep * dt,co,ip,el)
|
converged_ = .not. integrateState(subF0,subF,subFp0,subFi0,subState0(1:sizeDotState),subStep * dt,co,ip,el)
|
||||||
converged_ = converged_ .and. .not. integrateDamageState(subStep * dt,co,(el-1)*discretization_nIPs + ip)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
enddo cutbackLooping
|
enddo cutbackLooping
|
||||||
|
|
||||||
|
if (damageState(ph)%sizeState > 0) damageState(ph)%subState0(:,en) = damageState(ph)%state0(:,en)
|
||||||
|
converged_ = converged_ .and. .not. integrateDamageState(dt,co,(el-1)*discretization_nIPs + ip)
|
||||||
|
|
||||||
end function phase_mechanical_constitutive
|
end function phase_mechanical_constitutive
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue