dislocation stress does not add to stress field anymore, but is only available as constitutive output for purposes of postprocessing. instead, we now use a backstress term (which is added to the resolved shear stress) that depends on the gradient of excess density on the same slip system.
This commit is contained in:
parent
7f94b3f267
commit
8739b9522e
|
@ -189,7 +189,7 @@ constitution nonlocal
|
|||
(output) delta_dip
|
||||
(output) shearrate
|
||||
(output) resolvedstress
|
||||
(output) resolvedstress_internal
|
||||
(output) resolvedstress_back
|
||||
(output) resolvedstress_external
|
||||
(output) resistance
|
||||
(output) rho_dot
|
||||
|
@ -221,6 +221,7 @@ constitution nonlocal
|
|||
(output) d_upper_edge
|
||||
(output) d_upper_screw
|
||||
(output) accumulatedshear
|
||||
(output) dislocationstress
|
||||
|
||||
lattice_structure fcc
|
||||
Nslip 12 # number of slip systems
|
||||
|
|
|
@ -456,7 +456,7 @@ endfunction
|
|||
!*********************************************************************
|
||||
!* This function calculates from state needed variables *
|
||||
!*********************************************************************
|
||||
subroutine constitutive_microstructure(Temperature, Fe, ipc, ip, el)
|
||||
subroutine constitutive_microstructure(Temperature, Fe, Fp, ipc, ip, el)
|
||||
use prec, only: pReal,pInt
|
||||
use material, only: phase_constitution, &
|
||||
material_phase, &
|
||||
|
@ -477,12 +477,12 @@ use constitutive_nonlocal, only: constitutive_nonlocal_label, &
|
|||
implicit none
|
||||
|
||||
!*** input variables ***!
|
||||
integer(pInt), intent(in):: ipc, & ! component-ID of current integration point
|
||||
ip, & ! current integration point
|
||||
el ! current element
|
||||
real(pReal), intent(in) :: Temperature
|
||||
real(pReal), dimension(3,3,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(in) :: &
|
||||
Fe ! elastic deformation gradient
|
||||
integer(pInt), intent(in):: ipc, & ! component-ID of current integration point
|
||||
ip, & ! current integration point
|
||||
el ! current element
|
||||
real(pReal), intent(in) :: Temperature
|
||||
real(pReal), dimension(3,3), intent(in) :: Fe, & ! elastic deformation gradient
|
||||
Fp ! plastic deformation gradient
|
||||
|
||||
!*** output variables ***!
|
||||
|
||||
|
@ -504,7 +504,7 @@ select case (phase_constitution(material_phase(ipc,ip,el)))
|
|||
call constitutive_dislotwin_microstructure(Temperature,constitutive_state,ipc,ip,el)
|
||||
|
||||
case (constitutive_nonlocal_label)
|
||||
call constitutive_nonlocal_microstructure(constitutive_state, Temperature, Fe, ipc, ip, el)
|
||||
call constitutive_nonlocal_microstructure(constitutive_state, Temperature, Fe, Fp, ipc, ip, el)
|
||||
|
||||
end select
|
||||
|
||||
|
@ -773,7 +773,7 @@ integer(pInt), intent(in) :: ipc, & ! component-ID of current integrat
|
|||
el ! current element
|
||||
real(pReal), intent(in) :: Temperature, &
|
||||
dt ! timestep
|
||||
real(pReal), dimension(3,3), intent(in) :: &
|
||||
real(pReal), dimension(3,3,homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(in) :: &
|
||||
Fe ! elastic deformation gradient
|
||||
real(pReal), dimension(6), intent(in) :: &
|
||||
Tstar_v ! 2nd Piola Kirchhoff stress tensor (Mandel)
|
||||
|
@ -801,7 +801,7 @@ select case (phase_constitution(material_phase(ipc,ip,el)))
|
|||
|
||||
case (constitutive_nonlocal_label)
|
||||
constitutive_postResults = constitutive_nonlocal_postResults(Tstar_v, Fe, Temperature, dt, constitutive_state, &
|
||||
constitutive_dotstate, ipc, ip, el)
|
||||
constitutive_dotstate(ipc,ip,el), ipc, ip, el)
|
||||
end select
|
||||
|
||||
endfunction
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -373,7 +373,8 @@ crystallite_orientation0 = crystallite_orientation ! Store initial o
|
|||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
||||
do g = 1,myNgrains
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
@ -1064,7 +1065,8 @@ do n = 1,4
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
@ -1415,7 +1417,8 @@ do n = 1,5
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
constitutive_dotState(g,i,e)%p = 0.0_pReal ! reset dotState to zero
|
||||
enddo; enddo; enddo
|
||||
|
@ -1593,7 +1596,8 @@ relTemperatureResiduum = 0.0_pReal
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
@ -1792,7 +1796,8 @@ if (numerics_integrationMode < 2) then
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
constitutive_dotState(g,i,e)%p = 0.0_pReal ! reset dotState to zero
|
||||
enddo; enddo; enddo
|
||||
|
@ -2071,7 +2076,8 @@ if (numerics_integrationMode < 2) then
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
enddo; enddo; enddo
|
||||
!$OMP ENDDO
|
||||
|
@ -2245,7 +2251,8 @@ endif
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
constitutive_previousDotState2(g,i,e)%p = constitutive_previousDotState(g,i,e)%p ! age previous dotState
|
||||
constitutive_previousDotState(g,i,e)%p = constitutive_dotState(g,i,e)%p ! age previous dotState
|
||||
|
@ -2352,7 +2359,8 @@ do while (any(crystallite_todo) .and. NiterationState < nState )
|
|||
!$OMP DO
|
||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||
if (crystallite_todo(g,i,e)) then
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe, g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
call constitutive_microstructure(crystallite_Temperature(g,i,e), crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fp(1:3,1:3,g,i,e), g, i, e) ! update dependent state variables to be consistent with basic states
|
||||
endif
|
||||
constitutive_previousDotState2(g,i,e)%p = constitutive_previousDotState(g,i,e)%p ! age previous dotState
|
||||
constitutive_previousDotState(g,i,e)%p = constitutive_dotState(g,i,e)%p ! age previous dotState
|
||||
|
@ -2591,7 +2599,8 @@ use debug, only: debug_verbosity, &
|
|||
debug_StressLoopDistribution, &
|
||||
debug_LeapfrogBreakDistribution
|
||||
use constitutive, only: constitutive_homogenizedC, &
|
||||
constitutive_LpAndItsTangent
|
||||
constitutive_LpAndItsTangent, &
|
||||
constitutive_state
|
||||
use math, only: math_mul33x33, &
|
||||
math_mul33xx33, &
|
||||
math_mul66x6, &
|
||||
|
@ -3227,7 +3236,7 @@ function crystallite_postResults(&
|
|||
crystallite_postResults(c+1) = constitutive_sizePostResults(g,i,e) ! size of constitutive results
|
||||
c = c + 1_pInt
|
||||
crystallite_postResults(c+1:c+constitutive_sizePostResults(g,i,e)) = constitutive_postResults(crystallite_Tstar_v(1:6,g,i,e), &
|
||||
crystallite_Fe(1:3,1:3,g,i,e), &
|
||||
crystallite_Fe, &
|
||||
crystallite_Temperature(g,i,e), &
|
||||
dt, g, i, e)
|
||||
c = c + constitutive_sizePostResults(g,i,e)
|
||||
|
|
Loading…
Reference in New Issue