From d5806075d4ec18b819206c4d279a65fa4d858152 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Mon, 5 Apr 2021 18:24:03 +0200 Subject: [PATCH 1/8] distinguish isclose/allclose and __eq__ --- python/damask/_orientation.py | 57 ++++++++++++++++++++++++- python/damask/_rotation.py | 66 +++++++++++++++++++++++------ python/tests/test_ConfigMaterial.py | 3 +- python/tests/test_Orientation.py | 2 +- python/tests/test_Rotation.py | 4 +- 5 files changed, 114 insertions(+), 18 deletions(-) diff --git a/python/damask/_orientation.py b/python/damask/_orientation.py index bbb682e82..0a48279af 100644 --- a/python/damask/_orientation.py +++ b/python/damask/_orientation.py @@ -239,7 +239,9 @@ class Orientation(Rotation): """ matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) for attr in ['family','lattice','parameters']]) - return np.logical_and(super().__eq__(other),matching_type) + s = self if self.family is None else self.reduced + o = other if other.family is None else other.reduced + return np.logical_and(super(__class__,s).__eq__(o),matching_type) def __ne__(self,other): """ @@ -254,6 +256,59 @@ class Orientation(Rotation): return np.logical_not(self==other) + def isclose(self,other,rtol=1e-5,atol=1e-8,equal_nan=True): + """ + Report where values are approximately equal to corresponding ones of other Orientation. + + Parameters + ---------- + other : Orientation + Orientation to compare against. + rtol : float, optional + Relative tolerance of equality. + atol : float, optional + Absolute tolerance of equality. + equal_nan : bool, optional + Consider matching NaN values as equal. Defaults to True. + + Returns + ------- + mask : numpy.ndarray bool + Mask indicating where corresponding orientations are close. + + """ + matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) + for attr in ['family','lattice','parameters']]) + s = self if self.family is None else self.reduced + o = other if other.family is None else other.reduced + return np.logical_and(super(__class__,s).isclose(o),matching_type) + + + + def allclose(self,other,rtol=1e-5,atol=1e-8,equal_nan=True): + """ + Test whether all values are approximately equal to corresponding ones of other Orientation. + + Parameters + ---------- + other : Orientation + Orientation to compare against. + rtol : float, optional + Relative tolerance of equality. + atol : float, optional + Absolute tolerance of equality. + equal_nan : bool, optional + Consider matching NaN values as equal. Defaults to True. + + Returns + ------- + answer : bool + Whether all values are close between both orientations. + + """ + return np.all(self.isclose(other,rtol,atol,equal_nan)) + + def __mul__(self,other): """ Compose this orientation with other. diff --git a/python/damask/_rotation.py b/python/damask/_rotation.py index a067209b2..fff53fc73 100644 --- a/python/damask/_rotation.py +++ b/python/damask/_rotation.py @@ -103,29 +103,20 @@ class Rotation: """ Equal to other. - Equality is determined taking limited floating point precision into account. - See numpy.allclose for details. - Parameters ---------- other : Rotation Rotation to check for equality. """ - s = self.quaternion - o = other.quaternion - if self.shape == () == other.shape: - return np.allclose(s,o) or (np.isclose(s[0],0.0) and np.allclose(s,-1.0*o)) - else: - return np.all(np.isclose(s,o),-1) + np.all(np.isclose(s,-1.0*o),-1) * np.isclose(s[...,0],0.0) + return np.logical_or(np.all(self.quaternion == other.quaternion,axis=-1), + np.all(self.quaternion == -1.0*other.quaternion,axis=-1)) + def __ne__(self,other): """ Not equal to other. - Equality is determined taking limited floating point precision into - account. See numpy.allclose for details. - Parameters ---------- other : Rotation @@ -135,6 +126,57 @@ class Rotation: return np.logical_not(self==other) + def isclose(self,other,rtol=1e-5,atol=1e-8,equal_nan=True): + """ + Report where values are approximately equal to corresponding ones of other Rotation. + + Parameters + ---------- + other : Rotation + Rotation to compare against. + rtol : float, optional + Relative tolerance of equality. + atol : float, optional + Absolute tolerance of equality. + equal_nan : bool, optional + Consider matching NaN values as equal. Defaults to True. + + Returns + ------- + mask : numpy.ndarray bool + Mask indicating where corresponding rotations are close. + + """ + s = self.quaternion + o = other.quaternion + return np.logical_or(np.all(np.isclose(s, o,rtol,atol,equal_nan),axis=-1), + np.all(np.isclose(s,-1.0*o,rtol,atol,equal_nan),axis=-1)) + + + def allclose(self,other,rtol=1e-5,atol=1e-8,equal_nan=True): + """ + Test whether all values are approximately equal to corresponding ones of other Rotation. + + Parameters + ---------- + other : Rotation + Rotation to compare against. + rtol : float, optional + Relative tolerance of equality. + atol : float, optional + Absolute tolerance of equality. + equal_nan : bool, optional + Consider matching NaN values as equal. Defaults to True. + + Returns + ------- + answer : bool + Whether all values are close between both rotations. + + """ + return np.all(self.isclose(other,rtol,atol,equal_nan)) + + def __array__(self): """Initializer for numpy.""" return self.quaternion diff --git a/python/tests/test_ConfigMaterial.py b/python/tests/test_ConfigMaterial.py index cf4a8ab9d..98a557ae8 100644 --- a/python/tests/test_ConfigMaterial.py +++ b/python/tests/test_ConfigMaterial.py @@ -140,6 +140,5 @@ class TestConfigMaterial: if update: cur.save(ref_path/'measured.material_yaml') for i,m in enumerate(ref['material']): - assert Rotation(m['constituents'][0]['O']) == \ - Rotation(cur['material'][i]['constituents'][0]['O']) + assert Rotation(m['constituents'][0]['O']).isclose(Rotation(cur['material'][i]['constituents'][0]['O'])) assert cur.is_valid and cur['phase'] == ref['phase'] and cur['homogenization'] == ref['homogenization'] diff --git a/python/tests/test_Orientation.py b/python/tests/test_Orientation.py index 40d4d0116..6f3503b73 100644 --- a/python/tests/test_Orientation.py +++ b/python/tests/test_Orientation.py @@ -222,7 +222,7 @@ class TestOrientation: blend = util.shapeblender(o.shape,p.shape) for loc in np.random.randint(0,blend,(10,len(blend))): assert o[tuple(loc[:len(o.shape)])].disorientation(p[tuple(loc[-len(p.shape):])]) \ - == o.disorientation(p)[tuple(loc)] + .isclose(o.disorientation(p)[tuple(loc)]) @pytest.mark.parametrize('lattice',Orientation.crystal_families) def test_disorientation360(self,lattice): diff --git a/python/tests/test_Rotation.py b/python/tests/test_Rotation.py index b28a849c5..9d0f26bfc 100644 --- a/python/tests/test_Rotation.py +++ b/python/tests/test_Rotation.py @@ -960,7 +960,7 @@ class TestRotation: if axis_angle[3] > np.pi: axis_angle[3] -= 2.*np.pi axis_angle *= -1 - assert R**pwr == Rotation.from_axis_angle(axis_angle) + assert (R**pwr).isclose(Rotation.from_axis_angle(axis_angle)) def test_rotate_inverse(self): R = Rotation.from_random() @@ -1027,7 +1027,7 @@ class TestRotation: def test_invariant(self): R = Rotation.from_random() - assert R/R == R*R**(-1) == Rotation() + assert (R/R).isclose(R*R**(-1)) and (R/R).isclose(Rotation()) @pytest.mark.parametrize('item',[np.ones(3),np.ones((3,3)), np.ones((3,3,3,3))]) def test_apply(self,item): From bc1454970cf601eb423a865acfc648d0a875993a Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 6 Apr 2021 22:49:08 +0200 Subject: [PATCH 2/8] mandatory symmetry if symmetry is not of interest, damask.Rotation should be used --- python/damask/_orientation.py | 45 +++++++------------------------- python/tests/test_Config.py | 4 +-- python/tests/test_Orientation.py | 40 ++++++++-------------------- 3 files changed, 22 insertions(+), 67 deletions(-) diff --git a/python/damask/_orientation.py b/python/damask/_orientation.py index 0a48279af..5875f1d1c 100644 --- a/python/damask/_orientation.py +++ b/python/damask/_orientation.py @@ -86,11 +86,11 @@ class Orientation(Rotation): """ crystal_families = ['triclinic', - 'monoclinic', - 'orthorhombic', - 'tetragonal', - 'hexagonal', - 'cubic'] + 'monoclinic', + 'orthorhombic', + 'tetragonal', + 'hexagonal', + 'cubic'] lattice_symmetries = { 'aP': 'triclinic', @@ -136,8 +136,7 @@ class Orientation(Rotation): Rotation.__init__(self) if rotation is None else Rotation.__init__(self,rotation=rotation) - if ( lattice is not None - and lattice not in self.lattice_symmetries + if ( lattice not in self.lattice_symmetries and lattice not in self.crystal_families): raise KeyError(f'Lattice "{lattice}" is unknown') @@ -206,7 +205,7 @@ class Orientation(Rotation): def __repr__(self): """Represent.""" return '\n'.join(([] if self.lattice is None else [f'Bravais lattice {self.lattice}']) - + ([] if self.family is None else [f'Crystal family {self.family}']) + + ([f'Crystal family {self.family}']) + [super().__repr__()]) @@ -239,9 +238,7 @@ class Orientation(Rotation): """ matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) for attr in ['family','lattice','parameters']]) - s = self if self.family is None else self.reduced - o = other if other.family is None else other.reduced - return np.logical_and(super(__class__,s).__eq__(o),matching_type) + return np.logical_and(super(__class__,self.reduced).__eq__(other.reduced),matching_type) def __ne__(self,other): """ @@ -279,9 +276,7 @@ class Orientation(Rotation): """ matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) for attr in ['family','lattice','parameters']]) - s = self if self.family is None else self.reduced - o = other if other.family is None else other.reduced - return np.logical_and(super(__class__,s).isclose(o),matching_type) + return np.logical_and(super(__class__,self.reduced).isclose(other.reduced),matching_type) @@ -546,9 +541,6 @@ class Orientation(Rotation): is added to the left of the Rotation array. """ - if self.family is None: - raise ValueError('Missing crystal symmetry') - o = self.symmetry_operations.broadcast_to(self.symmetry_operations.shape+self.shape,mode='right') return self.copy(rotation=o*Rotation(self.quaternion).broadcast_to(o.shape,mode='left')) @@ -556,9 +548,6 @@ class Orientation(Rotation): @property def reduced(self): """Select symmetrically equivalent orientation that falls into fundamental zone according to symmetry.""" - if self.family is None: - raise ValueError('Missing crystal symmetry') - eq = self.equivalent ok = eq.in_FZ ok &= np.cumsum(ok,axis=0) == 1 @@ -587,9 +576,6 @@ class Orientation(Rotation): https://doi.org/10.1107/S0108767391006864 """ - if self.family is None: - raise ValueError('Missing crystal symmetry') - rho_abs = np.abs(self.as_Rodrigues_vector(compact=True))*(1.-1.e-9) with np.errstate(invalid='ignore'): @@ -630,9 +616,6 @@ class Orientation(Rotation): https://doi.org/10.1107/S0108767391006864 """ - if self.family is None: - raise ValueError('Missing crystal symmetry') - rho = self.as_Rodrigues_vector(compact=True)*(1.0-1.0e-9) with np.errstate(invalid='ignore'): @@ -783,8 +766,6 @@ class Orientation(Rotation): 'beta': np.pi/2., 'gamma': np.pi/2., } - else: - raise KeyError(f'Crystal family "{self.family}" is unknown') @property @@ -1081,8 +1062,6 @@ class Orientation(Rotation): Bunge Eulers / deg: (11.40, 21.86, 0.60) """ - if self.family is None or other.family is None: - raise ValueError('missing crystal symmetry') if self.family != other.family: raise NotImplementedError('disorientation between different crystal families') @@ -1139,9 +1118,6 @@ class Orientation(Rotation): https://doi.org/10.1107/S0021889801003077 """ - if self.family is None: - raise ValueError('Missing crystal symmetry') - eq = self.equivalent m = eq.misorientation(self[...,0].reshape((1,)+self.shape[:-1]+(1,)) .broadcast_to(eq.shape))\ @@ -1183,9 +1159,6 @@ class Orientation(Rotation): Index of symmetrically equivalent orientation that rotated vector to SST. """ - if self.family is None: - raise ValueError('Missing crystal symmetry') - eq = self.equivalent blend = util.shapeblender(eq.shape,np.array(vector).shape[:-1]) poles = eq.broadcast_to(blend,mode='right') @ np.broadcast_to(np.array(vector),blend+(3,)) diff --git a/python/tests/test_Config.py b/python/tests/test_Config.py index c64573d93..d2f0b5e72 100644 --- a/python/tests/test_Config.py +++ b/python/tests/test_Config.py @@ -53,7 +53,7 @@ class TestConfig: def test_abstract_is_complete(self): assert Config().is_complete is None - - @pytest.mark.parametrize('data',[Rotation.from_random(),Orientation.from_random()]) + + @pytest.mark.parametrize('data',[Rotation.from_random(),Orientation.from_random(lattice='cI')]) def test_rotation_orientation(self,data): assert str(Config(a=data)) == str(Config(a=data.as_quaternion())) diff --git a/python/tests/test_Orientation.py b/python/tests/test_Orientation.py index 6f3503b73..dce0cf40f 100644 --- a/python/tests/test_Orientation.py +++ b/python/tests/test_Orientation.py @@ -37,9 +37,15 @@ class TestOrientation: assert not ( Orientation(R,lattice) != Orientation(R,lattice) if shape is None else \ (Orientation(R,lattice) != Orientation(R,lattice)).any()) + @pytest.mark.parametrize('lattice',Orientation.crystal_families) + @pytest.mark.parametrize('shape',[None,5,(4,6)]) + def test_close(self,lattice,shape): + R = Orientation.from_random(lattice=lattice,shape=shape) + assert R.isclose(R.reduced).all() and R.allclose(R.reduced) + @pytest.mark.parametrize('a,b',[ - (dict(rotation=[1,0,0,0]), - dict(rotation=[0.5,0.5,0.5,0.5])), + (dict(rotation=[1,0,0,0],lattice='triclinic'), + dict(rotation=[0.5,0.5,0.5,0.5],lattice='triclinic')), (dict(rotation=[1,0,0,0],lattice='cubic'), dict(rotation=[1,0,0,0],lattice='hexagonal')), @@ -335,33 +341,9 @@ class TestOrientation: o.family = invalid_family o.symmetry_operations # noqa - def test_missing_symmetry_equivalent(self): - with pytest.raises(ValueError): - Orientation(lattice=None).equivalent # noqa - - def test_missing_symmetry_reduced(self): - with pytest.raises(ValueError): - Orientation(lattice=None).reduced # noqa - - def test_missing_symmetry_in_FZ(self): - with pytest.raises(ValueError): - Orientation(lattice=None).in_FZ # noqa - - def test_missing_symmetry_in_disorientation_FZ(self): - with pytest.raises(ValueError): - Orientation(lattice=None).in_disorientation_FZ # noqa - - def test_missing_symmetry_disorientation(self): - with pytest.raises(ValueError): - Orientation(lattice=None).disorientation(Orientation(lattice=None)) # noqa - - def test_missing_symmetry_average(self): - with pytest.raises(ValueError): - Orientation(lattice=None).average() # noqa - - def test_missing_symmetry_to_SST(self): - with pytest.raises(ValueError): - Orientation(lattice=None).to_SST(np.zeros(3)) # noqa + def test_invalid_rot(self): + with pytest.raises(TypeError): + Orientation.from_random(lattice='cubic') * np.ones(3) def test_missing_symmetry_immutable(self): with pytest.raises(KeyError): From 44331c504b0394ee465aff7e23a91c564e81a120 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 10 Apr 2021 08:29:42 +0200 Subject: [PATCH 3/8] __class__ is unknown (says prospector) --- python/damask/_orientation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/damask/_orientation.py b/python/damask/_orientation.py index 5875f1d1c..5cc412c98 100644 --- a/python/damask/_orientation.py +++ b/python/damask/_orientation.py @@ -238,7 +238,7 @@ class Orientation(Rotation): """ matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) for attr in ['family','lattice','parameters']]) - return np.logical_and(super(__class__,self.reduced).__eq__(other.reduced),matching_type) + return np.logical_and(matching_type,super(self.__class__,self.reduced).__eq__(other.reduced)) def __ne__(self,other): """ @@ -276,7 +276,7 @@ class Orientation(Rotation): """ matching_type = all([hasattr(other,attr) and getattr(self,attr) == getattr(other,attr) for attr in ['family','lattice','parameters']]) - return np.logical_and(super(__class__,self.reduced).isclose(other.reduced),matching_type) + return np.logical_and(matching_type,super(self.__class__,self.reduced).isclose(other.reduced)) From 07d573a56dd3fa5e2c72e0f07996b1df044f642c Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 10 Apr 2021 09:32:21 +0200 Subject: [PATCH 4/8] more helpful dataset descriptors phase label for single phase material not helpful --- python/damask/_result.py | 5 +- .../6grains6x7x8_single_phase_tensionY.xdmf | 1036 ++++++++--------- 2 files changed, 521 insertions(+), 520 deletions(-) diff --git a/python/damask/_result.py b/python/damask/_result.py index 89c704b94..8196169f4 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -1044,7 +1044,8 @@ class Result: collection = ET.SubElement(domain, 'Grid') collection.attrib={'GridType': 'Collection', - 'CollectionType': 'Temporal'} + 'CollectionType': 'Temporal', + 'Name': 'Increments'} time = ET.SubElement(collection, 'Time') time.attrib={'TimeType': 'List'} @@ -1106,7 +1107,7 @@ class Result: unit = f[name].attrs[u] if h5py3 else f[name].attrs[u].decode() attributes.append(ET.SubElement(grid, 'Attribute')) - attributes[-1].attrib = {'Name': name.split('/',2)[2]+f' / {unit}', + attributes[-1].attrib = {'Name': '/'.join([ty,field,out])+f' / {unit}', 'Center': 'Cell', 'AttributeType': attribute_type_map[shape]} data_items.append(ET.SubElement(attributes[-1], 'DataItem')) diff --git a/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.xdmf b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.xdmf index 31d9d0924..87352e5f9 100644 --- a/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.xdmf +++ b/python/tests/reference/Result/6grains6x7x8_single_phase_tensionY.xdmf @@ -1,7 +1,7 @@ - + @@ -14,145 +14,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_0/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_0/phase/pheno_fcc/mechanical/xi_sl @@ -165,145 +165,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_4/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_4/phase/pheno_fcc/mechanical/xi_sl @@ -316,145 +316,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_8/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_8/phase/pheno_fcc/mechanical/xi_sl @@ -467,145 +467,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_12/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_12/phase/pheno_fcc/mechanical/xi_sl @@ -618,145 +618,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_16/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_16/phase/pheno_fcc/mechanical/xi_sl @@ -769,145 +769,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_20/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_20/phase/pheno_fcc/mechanical/xi_sl @@ -920,145 +920,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_24/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_24/phase/pheno_fcc/mechanical/xi_sl @@ -1071,145 +1071,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_28/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_28/phase/pheno_fcc/mechanical/xi_sl @@ -1222,145 +1222,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_32/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_32/phase/pheno_fcc/mechanical/xi_sl @@ -1373,145 +1373,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_36/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_36/phase/pheno_fcc/mechanical/xi_sl @@ -1524,145 +1524,145 @@ 6grains6x7x8_single_phase_tensionY.hdf5:/increment_40/geometry/u_n - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/F - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/F_e - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/F_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/L_p - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/O - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/P - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/matrix_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/scalar_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/tensor_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_f4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_f8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_i1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_i2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_i4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_i8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_u1 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_u2 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_u4 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/vector_u8 - + 6grains6x7x8_single_phase_tensionY.hdf5:increment_40/phase/pheno_fcc/mechanical/xi_sl From d304654972415612582e9c754fe19126ca8c5348 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 10 Apr 2021 09:33:45 +0200 Subject: [PATCH 5/8] allow easy detection of empty view/get/place --- python/damask/_result.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/damask/_result.py b/python/damask/_result.py index 8196169f4..667a89c87 100644 --- a/python/damask/_result.py +++ b/python/damask/_result.py @@ -1266,7 +1266,7 @@ class Result: if prune: r = util.dict_prune(r) if flatten: r = util.dict_flatten(r) - return r + return None if (type(r) == dict and r == {}) else r def place(self,output='*',flatten=True,prune=True,constituents=None,fill_float=np.nan,fill_int=0): @@ -1353,4 +1353,4 @@ class Result: if prune: r = util.dict_prune(r) if flatten: r = util.dict_flatten(r) - return r + return None if (type(r) == dict and r == {}) else r From 37df78a8e0510834e43efe877e762754d0c779b6 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 10 Apr 2021 09:35:10 +0200 Subject: [PATCH 6/8] don't show progress bar for empty iterations --- python/damask/util.py | 2 +- .../reference/Result/get/test_get[1].pbz2 | Bin 48 -> 46 bytes .../reference/Result/get/test_get[5].pbz2 | Bin 48 -> 46 bytes .../reference/Result/place/test_place[1].pbz2 | Bin 48 -> 46 bytes .../reference/Result/place/test_place[5].pbz2 | Bin 48 -> 46 bytes python/tests/test_Result.py | 33 +++++++++++------- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/python/damask/util.py b/python/damask/util.py index 3fe30320a..b519fb15e 100644 --- a/python/damask/util.py +++ b/python/damask/util.py @@ -137,7 +137,7 @@ def show_progress(iterable,N_iter=None,prefix='',bar_length=50): Character length of bar. Defaults to 50. """ - if N_iter == 1 or (hasattr(iterable,'__len__') and len(iterable) == 1): + if N_iter in [0,1] or (hasattr(iterable,'__len__') and len(iterable) <= 1): for item in iterable: yield item else: diff --git a/python/tests/reference/Result/get/test_get[1].pbz2 b/python/tests/reference/Result/get/test_get[1].pbz2 index c1963d4eaf5b3c808081454a4553c95097f00396..088e68f70a76de1221804f0d88b96e86d7953727 100644 GIT binary patch literal 46 zcmZ>Y%CIzaj8qGb6z0;t&cMKU#eoG#GB7$YC@?6_$}sj7w~0L|^3ch_M`L{q0QX`G AhX4Qo literal 48 zcmZ>Y%CIzaj8qGbd?Z-;kb!~m!UGl{$-v~mz`~%wpxD+pi#fQkTqU@blTT56o&W$p C8Vo%E diff --git a/python/tests/reference/Result/get/test_get[5].pbz2 b/python/tests/reference/Result/get/test_get[5].pbz2 index c1963d4eaf5b3c808081454a4553c95097f00396..088e68f70a76de1221804f0d88b96e86d7953727 100644 GIT binary patch literal 46 zcmZ>Y%CIzaj8qGb6z0;t&cMKU#eoG#GB7$YC@?6_$}sj7w~0L|^3ch_M`L{q0QX`G AhX4Qo literal 48 zcmZ>Y%CIzaj8qGbd?Z-;kb!~m!UGl{$-v~mz`~%wpxD+pi#fQkTqU@blTT56o&W$p C8Vo%E diff --git a/python/tests/reference/Result/place/test_place[1].pbz2 b/python/tests/reference/Result/place/test_place[1].pbz2 index c1963d4eaf5b3c808081454a4553c95097f00396..088e68f70a76de1221804f0d88b96e86d7953727 100644 GIT binary patch literal 46 zcmZ>Y%CIzaj8qGb6z0;t&cMKU#eoG#GB7$YC@?6_$}sj7w~0L|^3ch_M`L{q0QX`G AhX4Qo literal 48 zcmZ>Y%CIzaj8qGbd?Z-;kb!~m!UGl{$-v~mz`~%wpxD+pi#fQkTqU@blTT56o&W$p C8Vo%E diff --git a/python/tests/reference/Result/place/test_place[5].pbz2 b/python/tests/reference/Result/place/test_place[5].pbz2 index c1963d4eaf5b3c808081454a4553c95097f00396..088e68f70a76de1221804f0d88b96e86d7953727 100644 GIT binary patch literal 46 zcmZ>Y%CIzaj8qGb6z0;t&cMKU#eoG#GB7$YC@?6_$}sj7w~0L|^3ch_M`L{q0QX`G AhX4Qo literal 48 zcmZ>Y%CIzaj8qGbd?Z-;kb!~m!UGl{$-v~mz`~%wpxD+pi#fQkTqU@blTT56o&W$p C8Vo%E diff --git a/python/tests/test_Result.py b/python/tests/test_Result.py index a659ce056..0c34e7989 100644 --- a/python/tests/test_Result.py +++ b/python/tests/test_Result.py @@ -65,14 +65,17 @@ class TestResult: assert dict_equal(a,default.view('times','*').get('F')) assert dict_equal(a,default.view('times',default.times_in_range(0.0,np.inf)).get('F')) - @pytest.mark.parametrize('what',['increments','times','phases']) # ToDo: discuss homogenizations + @pytest.mark.parametrize('what',['increments','times','phases','fields']) # ToDo: discuss homogenizations def test_view_none(self,default,what): - a = default.view(what,False).get('F') - b = default.view(what,[]).get('F') + n0 = default.view(what,False) + n1 = default.view(what,[]) - assert a == b == {} + label = 'increments' if what == 'times' else what - @pytest.mark.parametrize('what',['increments','times','phases']) # ToDo: discuss homogenizations + assert n0.get('F') is n1.get('F') is None and \ + len(n0.visible[label]) == len(n1.visible[label]) == 0 + + @pytest.mark.parametrize('what',['increments','times','phases','fields']) # ToDo: discuss homogenizations def test_view_more(self,default,what): empty = default.view(what,False) @@ -81,14 +84,17 @@ class TestResult: assert dict_equal(a,b) - @pytest.mark.parametrize('what',['increments','times','phases']) # ToDo: discuss homogenizations + @pytest.mark.parametrize('what',['increments','times','phases','fields']) # ToDo: discuss homogenizations def test_view_less(self,default,what): full = default.view(what,True) - a = full.view_less(what,'*').get('F') - b = full.view_less(what,True).get('F') + n0 = full.view_less(what,'*') + n1 = full.view_less(what,True) - assert a == b == {} + label = 'increments' if what == 'times' else what + + assert n0.get('F') is n1.get('F') is None and \ + len(n0.visible[label]) == len(n1.visible[label]) == 0 def test_view_invalid(self,default): with pytest.raises(AttributeError): @@ -189,7 +195,7 @@ class TestResult: default.add_stress_Cauchy('P','F') default.add_calculation('sigma_y','#sigma#',unit='y') default.add_equivalent_Mises('sigma_y') - assert default.get('sigma_y_vM') == {} + assert default.get('sigma_y_vM') is None def test_add_Mises_stress_strain(self,default): default.add_stress_Cauchy('P','F') @@ -380,8 +386,8 @@ class TestResult: pickle.dump(cur,f) with bz2.BZ2File((ref_path/'get'/fname).with_suffix('.pbz2')) as f: - assert dict_equal(cur,pickle.load(f)) - + ref = pickle.load(f) + assert cur is None if ref is None else dict_equal(cur,ref) @pytest.mark.parametrize('view,output,flatten,constituents,prune', [({},['F','P','F','L_p','F_e','F_p'],True,True,None), @@ -405,4 +411,5 @@ class TestResult: pickle.dump(cur,f) with bz2.BZ2File((ref_path/'place'/fname).with_suffix('.pbz2')) as f: - assert dict_equal(cur,pickle.load(f)) + ref = pickle.load(f) + assert cur is None if ref is None else dict_equal(cur,ref) From 90e33b14bfe95cbc6b997c0f838b89f65228a5b9 Mon Sep 17 00:00:00 2001 From: Test User Date: Mon, 12 Apr 2021 11:27:44 +0200 Subject: [PATCH 7/8] [skip ci] updated version information after successful test of v3.0.0-alpha2-839-gc55724d95 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 6855a7dca..f8cfbf476 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v3.0.0-alpha2-829-g73b07eda4 +v3.0.0-alpha2-839-gc55724d95 From e360e0de5502a28e3fe8e879bd6762a12dbec545 Mon Sep 17 00:00:00 2001 From: Test User Date: Tue, 13 Apr 2021 14:53:31 +0200 Subject: [PATCH 8/8] [skip ci] updated version information after successful test of v3.0.0-alpha2-866-g1be1a72a0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index f8cfbf476..01ac5403c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v3.0.0-alpha2-839-gc55724d95 +v3.0.0-alpha2-866-g1be1a72a0