From dba49fe387031315f7e6026987426596d1c6da74 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 4 Sep 2019 07:03:50 -0700 Subject: [PATCH 01/10] parameter was not read thanks to Vitesh for reporting --- src/plastic_phenopowerlaw.f90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plastic_phenopowerlaw.f90 b/src/plastic_phenopowerlaw.f90 index 0a0052dfb..a5c5788c9 100644 --- a/src/plastic_phenopowerlaw.f90 +++ b/src/plastic_phenopowerlaw.f90 @@ -250,6 +250,7 @@ subroutine plastic_phenopowerlaw_init !-------------------------------------------------------------------------------------------------- ! slip-twin related parameters slipAndTwinActive: if (prm%totalNslip > 0 .and. prm%totalNtwin > 0) then + prm%h0_TwinSlip = config%getFloat('h0_twinslip') prm%interaction_SlipTwin = lattice_interaction_SlipByTwin(prm%Nslip,prm%Ntwin,& config%getFloats('interaction_sliptwin'), & config%getString('lattice_structure')) From fa2c100d6a5c0b71d1b286e185c9eef6b79da401 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 4 Sep 2019 20:20:55 -0700 Subject: [PATCH 02/10] need to update microstructure to get grid update --- python/damask/geom.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/damask/geom.py b/python/damask/geom.py index 945ec3e1b..176d2bd12 100644 --- a/python/damask/geom.py +++ b/python/damask/geom.py @@ -73,14 +73,15 @@ class Geom(): if size is not None and rescale: raise ValueError('Either set size explicitly or rescale automatically') - elif size is not None: + + self.set_microstructure(microstructure) + self.set_origin(origin) + + if size is not None: self.set_size(size) elif rescale: self.set_size(self.get_grid()/grid_old*self.size) - self.set_microstructure(microstructure) - self.set_origin(origin) - message = ['grid a b c: {}'.format(' x '.join(map(str,grid_old)))] if np.any(grid_old != self.get_grid()): message[-1] = util.delete(message[-1]) From 836172028d4f45201139a9b5d4eb9d5d70d14c5c Mon Sep 17 00:00:00 2001 From: Eureka Pai Kulyadi Date: Fri, 6 Sep 2019 15:44:38 -0400 Subject: [PATCH 03/10] modified plastic_isotropic_LiAndItsTangent to behave correctly --- src/plastic_isotropic.f90 | 47 +++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/plastic_isotropic.f90 b/src/plastic_isotropic.f90 index 3b5ec6e5a..5c5d134f5 100644 --- a/src/plastic_isotropic.f90 +++ b/src/plastic_isotropic.f90 @@ -283,49 +283,52 @@ end subroutine plastic_isotropic_LpAndItsTangent !-------------------------------------------------------------------------------------------------- !> @brief calculates plastic velocity gradient and its tangent -! ToDo: Rename Tstar to Mi? !-------------------------------------------------------------------------------------------------- -subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dTstar,Tstar,instance,of) +subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of) real(pReal), dimension(3,3), intent(out) :: & Li !< inleastic velocity gradient real(pReal), dimension(3,3,3,3), intent(out) :: & - dLi_dTstar !< derivative of Li with respect to the Mandel stress + dLi_dMi !< derivative of Li with respect to the Mandel stress real(pReal), dimension(3,3), intent(in) :: & - Tstar !< Mandel stress ToDo: Mi? + Mi !< Mandel stress integer, intent(in) :: & instance, & of real(pReal), dimension(3,3) :: & - Tstar_sph !< sphiatoric part of the Mandel stress + Mi_sph !< spherical part of the Mandel stress real(pReal) :: & - dot_gamma, & !< strainrate - norm_Tstar_sph, & !< euclidean norm of Tstar_sph - squarenorm_Tstar_sph !< square of the euclidean norm of Tstar_sph + dot_gamma, & !< shear rate + tr !< pressure integer :: & k, l, m, n associate(prm => param(instance), stt => state(instance)) - Tstar_sph = math_spherical33(Tstar) - squarenorm_Tstar_sph = math_mul33xx33(Tstar_sph,Tstar_sph) - norm_Tstar_sph = sqrt(squarenorm_Tstar_sph) + tr=math_trace33(math_spherical33(Mi)) + + if (prm%dilatation .and. abs(tr) > 0.0_pReal) then ! no stress or J2 plasticity --> Li and its derivative are zero + Li = math_I3 & + * prm%dot_gamma_0/prm%M * (3.0_pReal*prm%M*stt%xi(of))**(-prm%n) & + * tr * abs(tr)**(prm%n-1.0_pReal) - if (prm%dilatation .and. norm_Tstar_sph > 0.0_pReal) then ! no stress or J2 plastitiy --> Li and its derivative are zero - dot_gamma = prm%dot_gamma_0 * (sqrt(1.5_pReal) * norm_Tstar_sph /(prm%M*stt%xi(of))) **prm%n - - Li = math_I3/sqrt(3.0_pReal) * dot_gamma/prm%M +#ifdef DEBUG + if (iand(debug_level(debug_constitutive), debug_levelExtensive) /= 0 & + .and. (of == prm%of_debug .or. .not. iand(debug_level(debug_constitutive),debug_levelSelective) /= 0)) then + write(6,'(/,a,/,f12.5)') '<< CONST isotropic >> pressure / MPa', tr/3.0_pReal*1.0e-6_pReal + write(6,'(/,a,/,f12.5)') '<< CONST isotropic >> gdot', prm%dot_gamma_0 * (3.0_pReal*prm%M*stt%xi(of))**(-prm%n) & + * tr * abs(tr)**(prm%n-1.0_pReal) + end if +#endif + forall (k=1:3,l=1:3,m=1:3,n=1:3) & - dLi_dTstar(k,l,m,n) = (prm%n-1.0_pReal) * Tstar_sph(k,l)*Tstar_sph(m,n) / squarenorm_Tstar_sph - forall (k=1:3,l=1:3) & - dLi_dTstar(k,l,k,l) = dLi_dTstar(k,l,k,l) + 1.0_pReal - - dLi_dTstar = dot_gamma / prm%M * dLi_dTstar / norm_Tstar_sph + dLi_dMi(k,l,m,n) = n / tr * Li(k,l) * math_I3(m,n) + else - Li = 0.0_pReal - dLi_dTstar = 0.0_pReal + Li = 0.0_pReal + dLi_dMi = 0.0_pReal endif end associate From cf37f8d405ad933231f01acd13224f4608577515 Mon Sep 17 00:00:00 2001 From: Eureka Pai Kulyadi Date: Fri, 6 Sep 2019 15:45:49 -0400 Subject: [PATCH 04/10] added some lines to help while debugging --- src/crystallite.f90 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/crystallite.f90 b/src/crystallite.f90 index 246cb7092..0157db0e0 100644 --- a/src/crystallite.f90 +++ b/src/crystallite.f90 @@ -1274,7 +1274,7 @@ logical function integrateStress(ipc,ip,el,timeFraction) if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0 & .and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) & .or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0)) then - write(6,'(a,i3,/)') '<< CRYST integrateStress >> iteration ', NiterationStressLp + write(6,'(a,i3,/)') '<< CRYST integrateStress >> Lp iteration ', NiterationStressLp write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST integrateStress >> Lpguess', transpose(Lpguess) write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST integrateStress >> Lp_constitutive', transpose(Lp_constitutive) write(6,'(a,/,3(12x,3(e20.10,1x)/))') '<< CRYST integrateStress >> Fi', transpose(Fi_new) @@ -1377,6 +1377,7 @@ logical function integrateStress(ipc,ip,el,timeFraction) if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0 & .and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) & .or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0)) then + write(6,'(a,i3,/)') '<< CRYST integrateStress >> Li iteration ', NiterationStressLi write(6,'(a,/,3(12x,3(e20.7,1x)/))') '<< CRYST integrateStress >> Li_constitutive', transpose(Li_constitutive) write(6,'(a,/,3(12x,3(e20.7,1x)/))') '<< CRYST integrateStress >> Liguess', transpose(Liguess) endif @@ -1405,6 +1406,13 @@ logical function integrateStress(ipc,ip,el,timeFraction) else ! not converged and residuum not improved... steplengthLi = num%subStepSizeLi * steplengthLi ! ...try with smaller step length in same direction Liguess = Liguess_old + steplengthLi * deltaLi +#ifdef DEBUG + if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0 & + .and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) & + .or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0)) then + write(6,'(a,1x,f7.4)') '<< CRYST integrateStress >> linear search for Liguess with step', steplengthLi + endif +#endif cycle LiLoop endif @@ -1450,6 +1458,13 @@ logical function integrateStress(ipc,ip,el,timeFraction) jacoCounterLi = jacoCounterLi + 1 Liguess = Liguess + steplengthLi * deltaLi +#ifdef DEBUG + if (iand(debug_level(debug_crystallite), debug_levelExtensive) /= 0 & + .and. ((el == debug_e .and. ip == debug_i .and. ipc == debug_g) & + .or. .not. iand(debug_level(debug_crystallite), debug_levelSelective) /= 0)) then + write(6,'(a,/,3(12x,3(e20.7,1x)/))') '<< CRYST integrateStress >> corrected Liguess by', transpose(deltaLi) + endif +#endif enddo LiLoop !* calculate new plastic and elastic deformation gradient From ca760f9ca18828731b6a1e4bf7cef821a9cbd8e2 Mon Sep 17 00:00:00 2001 From: Eureka Pai Kulyadi Date: Fri, 6 Sep 2019 15:47:02 -0400 Subject: [PATCH 05/10] added text lines --- src/grid/DAMASK_grid.f90 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/grid/DAMASK_grid.f90 b/src/grid/DAMASK_grid.f90 index edf26af19..0bec7606c 100644 --- a/src/grid/DAMASK_grid.f90 +++ b/src/grid/DAMASK_grid.f90 @@ -118,6 +118,7 @@ program DAMASK_spectral ! assign mechanics solver depending on selected type select case (trim(config_numerics%getString('spectral_solver',defaultVal='basic'))) case ('basic') + write(6,'(a)') ' Basic solution algorithm' mech_init => grid_mech_spectral_basic_init mech_forward => grid_mech_spectral_basic_forward mech_solution => grid_mech_spectral_basic_solution @@ -125,6 +126,7 @@ program DAMASK_spectral case ('polarisation') if(iand(debug_level(debug_spectral),debug_levelBasic)/= 0) & call IO_warning(42, ext_msg='debug Divergence') + write(6,'(a)') ' Polarisation solution algorithm' mech_init => grid_mech_spectral_polarisation_init mech_forward => grid_mech_spectral_polarisation_forward mech_solution => grid_mech_spectral_polarisation_solution @@ -132,6 +134,7 @@ program DAMASK_spectral case ('fem') if(iand(debug_level(debug_spectral),debug_levelBasic)/= 0) & call IO_warning(42, ext_msg='debug Divergence') + write(6,'(a)') ' FEM solution algorithm' mech_init => grid_mech_FEM_init mech_forward => grid_mech_FEM_forward mech_solution => grid_mech_FEM_solution From 926217fcb6a9ae725dce9c1b8567ad1e828fd698 Mon Sep 17 00:00:00 2001 From: Philip Eisenlohr Date: Tue, 10 Sep 2019 15:08:49 -0400 Subject: [PATCH 06/10] added possibility to reduce rotation to specific fundamental zone, and to output 3-dim Rodrigues vector --- processing/post/addOrientations.py | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/processing/post/addOrientations.py b/processing/post/addOrientations.py index ee2c5f433..31ce6aeb3 100755 --- a/processing/post/addOrientations.py +++ b/processing/post/addOrientations.py @@ -27,6 +27,7 @@ Additional (globally fixed) rotations of the lab frame and/or crystal frame can representations = { 'quaternion': ['qu',4], 'rodrigues': ['ro',4], + 'Rodrigues': ['Ro',3], 'eulers': ['eu',3], 'matrix': ['om',9], 'angleaxis': ['ax',4], @@ -80,15 +81,20 @@ parser.add_option('-z', dest = 'z', metavar = 'string', help = 'label of lab z vector (expressed in crystal coords)') +parser.add_option('--lattice', + dest = 'lattice', + metavar = 'string', + help = 'lattice structure to reduce rotation into fundamental zone') parser.set_defaults(output = [], labrotation = (1.,1.,1.,0.), # no rotation about (1,1,1) crystalrotation = (1.,1.,1.,0.), # no rotation about (1,1,1) + lattice = None, ) (options, filenames) = parser.parse_args() -options.output = list(map(lambda x: x.lower(), options.output)) +#options.output = list(map(lambda x: x.lower(), options.output)) if options.output == [] or (not set(options.output).issubset(set(representations))): parser.error('output must be chosen from {}.'.format(', '.join(representations))) @@ -121,7 +127,7 @@ if filenames == []: filenames = [None] for name in filenames: try: table = damask.ASCIItable(name = name, buffered = False) - except: continue + except Exception: continue damask.util.report(scriptName,name) # ------------------------------------------ read header ------------------------------------------ @@ -156,16 +162,16 @@ for name in filenames: outputAlive = True while outputAlive and table.data_read(): # read next data line of ASCII table if inputtype == 'eulers': - l = representations['eulers'][1] - o = damask.Rotation.fromEulers(list(map(float,table.data[column:column+l])),options.degrees) + d = representations['eulers'][1] + o = damask.Rotation.fromEulers(list(map(float,table.data[column:column+d])),options.degrees) elif inputtype == 'rodrigues': - l = representations['rodrigues'][1] - o = damask.Rotation.fromRodrigues(list(map(float,table.data[column:column+l]))) + d = representations['rodrigues'][1] + o = damask.Rotation.fromRodrigues(list(map(float,table.data[column:column+d]))) elif inputtype == 'matrix': - l = representations['matrix'][1] - o = damask.Rotation.fromMatrix(list(map(float,table.data[column:column+l]))) + d = representations['matrix'][1] + o = damask.Rotation.fromMatrix(list(map(float,table.data[column:column+d]))) elif inputtype == 'frame': M = np.array(list(map(float,table.data[column[0]:column[0]+3] + \ @@ -174,14 +180,18 @@ for name in filenames: o = damask.Rotation.fromMatrix(M/np.linalg.norm(M,axis=0)) elif inputtype == 'quaternion': - l = representations['quaternion'][1] - o = damask.Rotation.fromQuaternion(list(map(float,table.data[column:column+l]))) + d = representations['quaternion'][1] + o = damask.Rotation.fromQuaternion(list(map(float,table.data[column:column+d]))) - o= r*o*R # apply additional lab and crystal frame rotations + o = r*o*R # apply additional lab and crystal frame rotations + + if options.lattice is not None: + o = damask.Orientation(rotation = o,lattice = options.lattice).reduced().rotation for output in options.output: if output == 'quaternion': table.data_append(o.asQuaternion()) elif output == 'rodrigues': table.data_append(o.asRodrigues()) + elif output == 'Rodrigues': table.data_append(o.asRodrigues(vector=True)) elif output == 'eulers': table.data_append(o.asEulers(degrees=options.degrees)) elif output == 'matrix': table.data_append(o.asMatrix()) elif output == 'angleaxis': table.data_append(o.asAxisAngle(degrees=options.degrees)) From c48a56a85c1923ceee2e1ccf851e5a80bffd333b Mon Sep 17 00:00:00 2001 From: Test User Date: Wed, 11 Sep 2019 10:35:24 +0200 Subject: [PATCH 07/10] [skip ci] updated version information after successful test of v2.0.3-625-gbace77db --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 31b2f2948..ff6215089 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v2.0.3-618-g4340c558 +v2.0.3-625-gbace77db From a6b094ec875510cba165907e3ffedac019ec0025 Mon Sep 17 00:00:00 2001 From: Test User Date: Wed, 11 Sep 2019 12:52:31 +0200 Subject: [PATCH 08/10] [skip ci] updated version information after successful test of v2.0.3-643-gb7bd56ec --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 31b2f2948..958ec183c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v2.0.3-618-g4340c558 +v2.0.3-643-gb7bd56ec From 8a98e3c7f140e624a4e2268943e96e98e7c22ef5 Mon Sep 17 00:00:00 2001 From: Test User Date: Wed, 11 Sep 2019 19:48:18 +0200 Subject: [PATCH 09/10] [skip ci] updated version information after successful test of v2.0.3-644-g926217fc --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 31b2f2948..694d5b2ac 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v2.0.3-618-g4340c558 +v2.0.3-644-g926217fc From 997bb22e5da302ee63ca47eba1aae90c45d291ce Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Wed, 11 Sep 2019 12:04:14 -0700 Subject: [PATCH 10/10] an attempt to resolve randomly failing restart MPI tests --- PRIVATE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PRIVATE b/PRIVATE index e8c935312..5c5adbd8c 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit e8c935312c9ff22873f792282ff13e5a991752d3 +Subproject commit 5c5adbd8ccc0210fd6507431db8ec82ecec75352