this fix restores the previous behavior of dislotwin

very strange behavior in plasticity_detect changes for dislotwin. This
fix restores the old behavior with respect to number of iterations.
Using orientation%fromMatrix() results in much more iterations and an
increase in runtime for the test from approx 6 min to 40 min. Results
still match in the end. Also, crystallite_Fp0 differs by approx 1e-15
only between the two methods.
I assume that something is wrong with either dislotwin or the
state/stress integration
This commit is contained in:
Martin Diehl 2019-09-22 07:46:30 -07:00
parent de632ec85c
commit 77011a5dba
2 changed files with 5 additions and 1 deletions

View File

@ -380,7 +380,7 @@ subroutine crystallite_init
do e = FEsolving_execElem(1),FEsolving_execElem(2)
myNcomponents = homogenization_Ngrains(material_homogenizationAt(e))
do i = FEsolving_execIP(1,e), FEsolving_execIP(2,e); do c = 1, myNcomponents
crystallite_Fp0(1:3,1:3,c,i,e) = material_orientation0(c,i,e)%asMatrix() ! plastic def gradient reflects init orientation
crystallite_Fp0(1:3,1:3,c,i,e) = math_EulerToR(material_Eulers(1:3,c,i,e)) ! plastic def gradient reflects init orientation
crystallite_Fi0(1:3,1:3,c,i,e) = constitutive_initialFi(c,i,e)
crystallite_F0(1:3,1:3,c,i,e) = math_I3
crystallite_localPlasticity(c,i,e) = phase_localPlasticity(material_phaseAt(c,e))

View File

@ -169,6 +169,8 @@ module material
microstructure_phase, & !< phase IDs of each microstructure
microstructure_texture !< texture IDs of each microstructure
real(pReal), dimension(:,:,:,:), allocatable, public,protected :: &
material_Eulers
type(Rotation), dimension(:), allocatable, private :: &
texture_orientation !< Euler angles in material.config (possibly rotated for alignment)
real(pReal), dimension(:,:), allocatable, private :: &
@ -316,6 +318,7 @@ subroutine material_init
allocate(material_phaseAt(homogenization_maxNgrains,discretization_nElem), source=0)
allocate(material_texture(homogenization_maxNgrains,discretization_nIP,discretization_nElem),source=0) !this is only needed by plasticity nonlocal
allocate(material_orientation0(homogenization_maxNgrains,discretization_nIP,discretization_nElem))
allocate(material_Eulers(3,homogenization_maxNgrains,discretization_nIP,discretization_nElem))
do e = 1, discretization_nElem
do i = 1, discretization_nIP
@ -324,6 +327,7 @@ subroutine material_init
material_phaseAt(c,e) = microstructure_phase(c,myMicro)
material_texture(c,i,e) = microstructure_texture(c,myMicro)
material_orientation0(c,i,e) = texture_orientation(material_texture(c,i,e))
material_Eulers(1:3,c,i,e) = texture_orientation(material_texture(c,i,e))%asEulers()
enddo
enddo
enddo