From b861ad11c1704558004d79a8516979b5cd77e694 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 12 Feb 2020 20:01:11 +0100 Subject: [PATCH] tiny differences between orientation conversions result in more iterations Seen so far only for plasticityDetectChanges test (confirmed for dislotwin and phenopowerlaw). The max difference between the entries of the rotation matrix from orientation0%asMatrix() and eu2om(Eulers)/eu2om(orientation0%asEulers) is 1e-15. This is the ratio of km/atom radius! Still, the number of iterations is consistently higher. Results are the same. I believe this is a strange coincidence where one particular orientation causes problems. The current version recovers almost the 'good' behavior of math_EulerToR(Eulers) --- src/crystallite.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crystallite.f90 b/src/crystallite.f90 index 38c7f3e0c..c3a19fc6b 100644 --- a/src/crystallite.f90 +++ b/src/crystallite.f90 @@ -238,7 +238,7 @@ subroutine crystallite_init do e = FEsolving_execElem(1),FEsolving_execElem(2) myNcomponents = homogenization_Ngrains(material_homogenizationAt(e)) do i = FEsolving_execIP(1), FEsolving_execIP(2); 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) = eu2om(material_orientation0(c,i,e)%asEulers()) ! 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))