simplified
This commit is contained in:
parent
3ff7c9c0eb
commit
f458de82fa
|
@ -291,6 +291,7 @@ subroutine plastic_phenopowerlaw_init
|
||||||
ext_msg='shape(tausat_slip) ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
ext_msg='shape(tausat_slip) ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
||||||
if (size(prm%H_int) /= size(prm%Nslip)) call IO_error(211_pInt,ip=instance, &
|
if (size(prm%H_int) /= size(prm%Nslip)) call IO_error(211_pInt,ip=instance, &
|
||||||
ext_msg='shape(H_int) ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
ext_msg='shape(H_int) ('//PLASTICITY_PHENOPOWERLAW_label//')')
|
||||||
|
prm%H_int = math_expand(prm%H_int,prm%Nslip)
|
||||||
|
|
||||||
if (any(prm%tau0_slip < 0.0_pReal .and. prm%Nslip > 0_pInt)) &
|
if (any(prm%tau0_slip < 0.0_pReal .and. prm%Nslip > 0_pInt)) &
|
||||||
extmsg = trim(extmsg)//"tau0_slip "
|
extmsg = trim(extmsg)//"tau0_slip "
|
||||||
|
@ -511,9 +512,8 @@ pure subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMstar99,Mstar,ipc,
|
||||||
|
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
index_myFamily, &
|
index_myFamily, &
|
||||||
f,i,j,k,l,m,n, &
|
j,k,l,m,n, &
|
||||||
of, &
|
of
|
||||||
ph
|
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
tau_slip_pos,tau_slip_neg, &
|
tau_slip_pos,tau_slip_neg, &
|
||||||
gdot_slip_pos,gdot_slip_neg, &
|
gdot_slip_pos,gdot_slip_neg, &
|
||||||
|
@ -525,10 +525,9 @@ pure subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMstar99,Mstar,ipc,
|
||||||
type(tPhenopowerlawState) :: stt
|
type(tPhenopowerlawState) :: stt
|
||||||
|
|
||||||
of = phasememberAt(ipc,ip,el)
|
of = phasememberAt(ipc,ip,el)
|
||||||
ph = material_phase(ipc,ip,el)
|
|
||||||
|
|
||||||
associate(prm => param(phase_plasticityInstance(ph)),&
|
associate(prm => param(phase_plasticityInstance(material_phase(ipc,ip,el))),&
|
||||||
stt => state(phase_plasticityInstance(ph)))
|
stt => state(phase_plasticityInstance(material_phase(ipc,ip,el))))
|
||||||
|
|
||||||
Lp = 0.0_pReal
|
Lp = 0.0_pReal
|
||||||
dLp_dMstar = 0.0_pReal
|
dLp_dMstar = 0.0_pReal
|
||||||
|
@ -599,7 +598,6 @@ end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_NslipSystem, &
|
|
||||||
lattice_NtwinSystem, &
|
lattice_NtwinSystem, &
|
||||||
lattice_shearTwin
|
lattice_shearTwin
|
||||||
use math, only: &
|
use math, only: &
|
||||||
|
@ -639,10 +637,9 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
||||||
type(tPhenopowerlawState) :: dst,stt
|
type(tPhenopowerlawState) :: dst,stt
|
||||||
|
|
||||||
of = phasememberAt(ipc,ip,el)
|
of = phasememberAt(ipc,ip,el)
|
||||||
ph = material_phase(ipc,ip,el)
|
associate(prm => param(phase_plasticityInstance(material_phase(ipc,ip,el))), &
|
||||||
associate(prm => param(phase_plasticityInstance(ph)), &
|
stt => state(phase_plasticityInstance(material_phase(ipc,ip,el))), &
|
||||||
stt => state(phase_plasticityInstance(ph)), &
|
dst => dotState(phase_plasticityInstance(material_phase(ipc,ip,el))))
|
||||||
dst => dotState(phase_plasticityInstance(ph)))
|
|
||||||
|
|
||||||
dst%whole(:,of) = 0.0_pReal
|
dst%whole(:,of) = 0.0_pReal
|
||||||
Mstar = math_Mandel6to33(Mstar6)
|
Mstar = math_Mandel6to33(Mstar6)
|
||||||
|
@ -656,30 +653,23 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! calculate left and right vectors
|
! calculate left and right vectors
|
||||||
ssat_offset = prm%spr*sqrt(stt%sumF(of))
|
ssat_offset = prm%spr*sqrt(stt%sumF(of))
|
||||||
j = 0_pInt
|
do j = 1_pInt, prm%totalNslip
|
||||||
slipFamilies1: do f =1_pInt,size(prm%Nslip,1)
|
left_SlipSlip(j) = 1.0_pReal + prm%H_int(j) ! modified no system-dependent left part
|
||||||
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
right_SlipSlip(j) = abs(1.0_pReal-stt%s_slip(j,of) / (prm%tausat_slip(f)+ssat_offset)) **prm%a_slip &
|
||||||
slipSystems1: do i = 1_pInt,prm%Nslip(f)
|
* sign(1.0_pReal,1.0_pReal-stt%s_slip(j,of) / (prm%tausat_slip(f)+ssat_offset))
|
||||||
j = j+1_pInt
|
|
||||||
left_SlipSlip(j) = 1.0_pReal + prm%H_int(f) ! modified no system-dependent left part
|
|
||||||
right_SlipSlip(j) = abs(1.0_pReal-stt%s_slip(j,of) / (prm%tausat_slip(f)+ssat_offset)) **prm%a_slip &
|
|
||||||
* sign(1.0_pReal,1.0_pReal-stt%s_slip(j,of) / (prm%tausat_slip(f)+ssat_offset))
|
|
||||||
|
|
||||||
tau_slip_pos = math_mul33xx33(Mstar,prm%Schmid_slip(1:3,1:3,j))
|
tau_slip_pos = math_mul33xx33(Mstar,prm%Schmid_slip(1:3,1:3,j))
|
||||||
tau_slip_neg = tau_slip_pos
|
tau_slip_neg = tau_slip_pos
|
||||||
nonSchmidSystems: do k = 1,size(prm%nonSchmidCoeff)
|
nonSchmidSystems: do k = 1,size(prm%nonSchmidCoeff)
|
||||||
tau_slip_pos = tau_slip_pos + math_mul33xx33(Mstar,prm%nonSchmid_pos(1:3,1:3,k,j))
|
tau_slip_pos = tau_slip_pos + math_mul33xx33(Mstar,prm%nonSchmid_pos(1:3,1:3,k,j))
|
||||||
tau_slip_neg = tau_slip_neg + math_mul33xx33(Mstar,prm%nonSchmid_neg(1:3,1:3,k,j))
|
tau_slip_neg = tau_slip_neg + math_mul33xx33(Mstar,prm%nonSchmid_neg(1:3,1:3,k,j))
|
||||||
enddo nonSchmidSystems
|
enddo nonSchmidSystems
|
||||||
gdot_slip(j) = prm%gdot0_slip*0.5_pReal* &
|
gdot_slip(j) = prm%gdot0_slip*0.5_pReal* &
|
||||||
( (abs(tau_slip_pos)/(stt%s_slip(j,of)))**prm%n_slip*sign(1.0_pReal,tau_slip_pos) &
|
( (abs(tau_slip_pos)/(stt%s_slip(j,of)))**prm%n_slip*sign(1.0_pReal,tau_slip_pos) &
|
||||||
+(abs(tau_slip_neg)/(stt%s_slip(j,of)))**prm%n_slip*sign(1.0_pReal,tau_slip_neg))
|
+(abs(tau_slip_neg)/(stt%s_slip(j,of)))**prm%n_slip*sign(1.0_pReal,tau_slip_neg))
|
||||||
enddo slipSystems1
|
enddo
|
||||||
enddo slipFamilies1
|
|
||||||
|
|
||||||
do j = 1_pInt, prm%totalNtwin
|
do j = 1_pInt, prm%totalNtwin
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
! Calculation of dot vol frac
|
|
||||||
tau_twin = math_mul33xx33(Mstar,prm%Schmid_twin(1:3,1:3,j))
|
tau_twin = math_mul33xx33(Mstar,prm%Schmid_twin(1:3,1:3,j))
|
||||||
gdot_twin(j) = (1.0_pReal-stt%sumF(of))*prm%gdot0_twin* (abs(tau_twin)/stt%s_twin(j,of))**prm%n_twin &
|
gdot_twin(j) = (1.0_pReal-stt%sumF(of))*prm%gdot0_twin* (abs(tau_twin)/stt%s_twin(j,of))**prm%n_twin &
|
||||||
* max(0.0_pReal,sign(1.0_pReal,tau_twin))
|
* max(0.0_pReal,sign(1.0_pReal,tau_twin))
|
||||||
|
@ -695,6 +685,7 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
||||||
dst%sumGamma(of) = dst%sumGamma(of) + sum(abs(gdot_slip))
|
dst%sumGamma(of) = dst%sumGamma(of) + sum(abs(gdot_slip))
|
||||||
dst%accshear_slip(1:prm%totalNslip,of) = abs(gdot_slip)
|
dst%accshear_slip(1:prm%totalNslip,of) = abs(gdot_slip)
|
||||||
|
|
||||||
|
ph = material_phase(ipc,ip,el)
|
||||||
j = 0_pInt
|
j = 0_pInt
|
||||||
twinFamilies2: do f = 1_pInt,size(prm%Ntwin,1)
|
twinFamilies2: do f = 1_pInt,size(prm%Ntwin,1)
|
||||||
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
|
@ -709,6 +700,7 @@ subroutine plastic_phenopowerlaw_dotState(Mstar6,ipc,ip,el)
|
||||||
enddo twinSystems2
|
enddo twinSystems2
|
||||||
enddo twinFamilies2
|
enddo twinFamilies2
|
||||||
end associate
|
end associate
|
||||||
|
|
||||||
end subroutine plastic_phenopowerlaw_dotState
|
end subroutine plastic_phenopowerlaw_dotState
|
||||||
|
|
||||||
|
|
||||||
|
@ -746,19 +738,15 @@ function plastic_phenopowerlaw_postResults(Mstar6,ipc,ip,el)
|
||||||
|
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
ph, of, &
|
ph, of, &
|
||||||
o,f,i,c,j,k
|
o,c,j,k
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
tau_slip_pos,tau_slip_neg,tau
|
tau_slip_pos,tau_slip_neg,tau
|
||||||
|
|
||||||
type(tParameters) :: prm
|
type(tParameters) :: prm
|
||||||
type(tPhenopowerlawState) :: stt, dst
|
type(tPhenopowerlawState) :: stt
|
||||||
|
|
||||||
of = phasememberAt(ipc,ip,el)
|
associate( prm => param(phase_plasticityInstance(material_phase(ipc,ip,el))), &
|
||||||
ph = material_phase(ipc,ip,el)
|
stt => state(phase_plasticityInstance(material_phase(ipc,ip,el))) )
|
||||||
|
|
||||||
associate( prm => param(phase_plasticityInstance(ph)), &
|
|
||||||
stt => state(phase_plasticityInstance(ph)), &
|
|
||||||
dst => dotState(phase_plasticityInstance(ph)))
|
|
||||||
Mstar = math_Mandel6to33(Mstar6)
|
Mstar = math_Mandel6to33(Mstar6)
|
||||||
|
|
||||||
plastic_phenopowerlaw_postResults = 0.0_pReal
|
plastic_phenopowerlaw_postResults = 0.0_pReal
|
||||||
|
|
Loading…
Reference in New Issue