Exemple #1
0
    def fn():
        context.application.model.file_open("test/input/silica_layer.zml")
        parameters = Parameters()
        parameters.interval_a = numpy.array([0.0, 3.0], float)
        parameters.interval_b = numpy.array([0.0, 3.0], float)
        UnitCellToCluster = context.application.plugins.get_action("UnitCellToCluster")
        assert UnitCellToCluster.analyze_selection(parameters)
        UnitCellToCluster(parameters)
        crd_cluster = [node.transformation.t for node in context.application.model.universe.children]

        context.application.model.file_open("test/input/silica_layer.zml")
        parameters = Parameters()
        parameters.repetitions_a = 3
        parameters.repetitions_b = 3
        SuperCell = context.application.plugins.get_action("SuperCell")
        assert SuperCell.analyze_selection(parameters)
        SuperCell(parameters)
        crd_super = [node.transformation.t for node in context.application.model.universe.children]

        # check that the number of atoms is the same
        assert len(crd_super) == len(crd_cluster)
        # check if the coordinates match
        for c_super in crd_super:
            for i in xrange(len(crd_cluster)):
                c_cluster = crd_cluster[i]
                delta = c_cluster - c_super
                delta = context.application.model.universe.shortest_vector(delta)
                if numpy.linalg.norm(delta) < 1e-3:
                    del crd_cluster[i]
                    break
        assert len(crd_cluster) == 0
Exemple #2
0
 def default_parameters(cls):
     result = Parameters()
     universe = context.application.model.universe
     if universe.cell.active[0]:
         result.interval_a = numpy.array([0.0, universe.repetitions[0]], float)
     if universe.cell.active[1]:
         result.interval_b = numpy.array([0.0, universe.repetitions[1]], float)
     if universe.cell.active[2]:
         result.interval_c = numpy.array([0.0, universe.repetitions[2]], float)
     return result
Exemple #3
0
 def default_parameters(cls):
     result = Parameters()
     universe = context.application.model.universe
     if universe.cell.active[0]:
         result.interval_a = numpy.array([0.0, universe.repetitions[0]],
                                         float)
     if universe.cell.active[1]:
         result.interval_b = numpy.array([0.0, universe.repetitions[1]],
                                         float)
     if universe.cell.active[2]:
         result.interval_c = numpy.array([0.0, universe.repetitions[2]],
                                         float)
     return result
Exemple #4
0
 def fn():
     context.application.model.file_open("test/input/sod.zml")
     parameters = Parameters()
     parameters.interval_b = numpy.array([-0.5, 2.5], float)
     parameters.interval_c = numpy.array([-1.5, 1.5], float)
     UnitCellToCluster = context.application.plugins.get_action("UnitCellToCluster")
     assert UnitCellToCluster.analyze_selection(parameters)
     UnitCellToCluster(parameters)
     # check the bond lengths
     Bond = context.application.plugins.get_node("Bond")
     universe = context.application.model.universe
     for bond in context.application.model.universe.children:
         if isinstance(bond, Bond):
             delta = bond.children[0].target.transformation.t - bond.children[1].target.transformation.t
             delta = universe.shortest_vector(delta)
             distance = numpy.linalg.norm(delta)
             assert distance < 4.0