Révision 15 ase/embed.py
embed.py (revision 15) | ||
---|---|---|
16 | 16 |
|
17 | 17 |
class Embed(Atoms): |
18 | 18 |
#--- constructor of the Embed class --- |
19 |
def __init__(self, system=None, cluster=None, cell_cluster = "Auto"):
|
|
19 |
def __init__(self, system, cluster, cell_cluster = "Auto", cluster_pos = True):
|
|
20 | 20 |
super(Embed, self).__init__() |
21 | 21 |
# define the atom map |
22 | 22 |
self.atom_map_sys_cl = [] |
... | ... | |
28 | 28 |
# set the search radius for link atoms |
29 | 29 |
self.d = 10 |
30 | 30 |
# define the systems for calculations |
31 |
if system is None or cluster is None: |
|
32 |
raise RuntimeError("Embed: system or cluster is not definied") |
|
31 | 33 |
self.set_system(system) |
32 |
self.set_cluster(cluster) |
|
34 |
if cluster_pos: |
|
35 |
self.set_cluster(cluster) |
|
36 |
else: |
|
37 |
self.set_cluster_by_numbers(cluster) |
|
38 |
|
|
33 | 39 |
# set the cell of the system |
34 | 40 |
self.set_cell(system.get_cell()) |
35 | 41 |
self.cell_cluster = cell_cluster |
... | ... | |
58 | 64 |
# set the cluster for low and high level calculation |
59 | 65 |
self.atoms_cluster = atoms |
60 | 66 |
return |
67 |
|
|
68 |
#--- set cluster by atom numbers --- |
|
69 |
def set_cluster_by_numbers(self, numbers): |
|
70 |
cluster = Atoms() |
|
71 |
nat = len(self.atoms_system) |
|
72 |
for number in numbers: |
|
73 |
if nat > numbers: |
|
74 |
raise RuntimeError("QMX: The number of the cluster atom ", number, "is bigger than the number of atoms") |
|
75 |
cluster.append(self.atoms_system[number-1]) |
|
76 |
self.set_cluster(cluster) |
|
61 | 77 |
|
62 | 78 |
#--- set the system --- |
63 | 79 |
def set_system(self, atoms): |
Formats disponibles : Unified diff