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
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