def set_diffracting_famillies(self, hkl_list): """Set the list of diffracting hk planes using a set of families.""" symmetry = self.exp.get_sample().get_material().get_symmetry() hkl_planes = [] for hkl in hkl_list: # here we set include_friedel_pairs to False as we take it into account in the calculation planes = HklPlane.get_family(hkl, include_friedel_pairs=True, crystal_structure=symmetry) for plane in planes: # fix the lattice plane.set_lattice(self.exp.get_sample().get_material()) hkl_planes.extend(planes) self.set_hkl_planes(hkl_planes)
def test_get_family(self): self.assertEqual( len(HklPlane.get_family('001', crystal_structure=Symmetry.cubic)), 3) self.assertEqual( len( HklPlane.get_family('001', crystal_structure=Symmetry.cubic, include_friedel_pairs=True)), 6) self.assertEqual( len(HklPlane.get_family('111', crystal_structure=Symmetry.cubic)), 4) self.assertEqual( len( HklPlane.get_family('111', crystal_structure=Symmetry.cubic, include_friedel_pairs=True)), 8) self.assertEqual( len(HklPlane.get_family('011', crystal_structure=Symmetry.cubic)), 6) self.assertEqual( len( HklPlane.get_family('011', crystal_structure=Symmetry.cubic, include_friedel_pairs=True)), 12) self.assertEqual( len(HklPlane.get_family('112', crystal_structure=Symmetry.cubic)), 12) self.assertEqual( len( HklPlane.get_family('112', crystal_structure=Symmetry.cubic, include_friedel_pairs=True)), 24) self.assertEqual( len(HklPlane.get_family('123', crystal_structure=Symmetry.cubic)), 24) self.assertEqual( len( HklPlane.get_family('123', crystal_structure=Symmetry.cubic, include_friedel_pairs=True)), 48) self.assertEqual( len( HklPlane.get_family('001', crystal_structure=Symmetry.tetragonal)), 1) self.assertEqual( len( HklPlane.get_family('001', crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 2) self.assertEqual( len( HklPlane.get_family('010', crystal_structure=Symmetry.tetragonal)), 2) self.assertEqual( len( HklPlane.get_family('010', crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 4) self.assertEqual( len( HklPlane.get_family('100', crystal_structure=Symmetry.tetragonal)), 2) self.assertEqual( len( HklPlane.get_family('100', crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 4) self.assertEqual( len( HklPlane.get_family([1, 0, 2], crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 8) self.assertEqual( len( HklPlane.get_family([-1, 0, 2], crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 8) self.assertEqual( len( HklPlane.get_family([0, 1, 2], crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 8) self.assertEqual( len( HklPlane.get_family([0, -1, 2], crystal_structure=Symmetry.tetragonal, include_friedel_pairs=True)), 8)
from pymicro.view.vtk_utils import axes_actor, lattice_3d_with_planes, setup_camera if __name__ == '__main__': ''' Create a 3d scene with a cubic crystal lattice. Hkl planes are added to the lattice and displayed. ''' # create the 3D scene base_name = os.path.splitext(__file__)[0] s3d = Scene3D(display=False, ren_size=(800, 800), name=base_name) # create the unit lattice cell l = Lattice.face_centered_cubic(1.0) # create the slip planes and the cubic lattice actor hklplanes = HklPlane.get_family('111') cubic = lattice_3d_with_planes(l, hklplanes, origin='mid', \ crystal_orientation=None, show_normal=True, plane_opacity=0.5) s3d.add(cubic) # add axes actor axes = axes_actor(0.5, fontSize=50) s3d.add(axes) # set up camera and render cam = setup_camera(size=(1, 1, 1)) cam.SetFocalPoint(0, 0, 0) cam.SetPosition(4, -1.5, 1.5) # change the position to something better cam.Dolly(1.2) # get a little closer s3d.set_camera(cam) s3d.render()