def energy_i(self, posits): params = self.params cutoff = self.cutoff #posits_ext = extend_structure(posits.copy(), self.pbc, self.cell) #layer_indices = self.layer_indices layer_neighbors = self.layer_neighbors chem_symbs = self.chem_symbs e_KC = np.zeros(len(posits)) for i, ri in enumerate(posits): if chem_symbs[i] == 'C': ni = local_normal(i, posits, layer_neighbors, accept_noneighbor = self.no_edge_neighbor) ni = -1*ni nj = np.array([0., 0., 1.]) neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: e, new_maps = get_potential_ij(ri, rj, ni, nj, posits, i, params, \ cutoff) if new_maps != None: self.map_seqs = new_maps e_KC[i] += e return e_KC
def energy_i(self, posits): params = self.params cutoff = self.cutoff #posits_ext = extend_structure(posits.copy(), self.pbc, self.cell) #layer_indices = self.layer_indices layer_neighbors = self.layer_neighbors chem_symbs = self.chem_symbs e_KC = np.zeros(len(posits)) for i, ri in enumerate(posits): if chem_symbs[i] == 'C': ni = local_normal(i, posits, layer_neighbors, accept_noneighbor=self.no_edge_neighbor) ni = -1 * ni nj = np.array([0., 0., 1.]) neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: e, new_maps = get_potential_ij(ri, rj, ni, nj, posits, i, params, \ cutoff) if new_maps != None: self.map_seqs = new_maps e_KC[i] += e return e_KC
def forces_on_posArr(self, split_beg, pos_arr, af1, af2, af3, dnGreat, \ posits, layer_neighbors, \ chem_symbs, params, cutoff, natoms): nj = np.array([0., 0., 1.]) dnj = np.array([[0., 0., 0], [0., 0., 0], [0., 0., 0]]) for l, ri in enumerate(pos_arr): i = l + split_beg if chem_symbs[i] == 'C': # SHREAR ADD ni_f = local_normal(i, posits, layer_neighbors, accept_noneighbor=self.no_edge_neighbor) dni_f = dnGreat[i] ni = -1 * ni_f dni = -dni_f neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: # Force due to atom j on atom i fij = get_forces_ij(ri, rj, ni, nj, dni, dnj, \ posits, i, params, \ cutoff, no_edge_neighbor = self.no_edge_neighbor) #, layer_neighbors = layer_neighbors) af1[i] += fij[0] af2[i] += fij[1] af3[i] += fij[2]
def nj(xi, *args): i = args[0] posits_use = positions.copy() posits_use[ind, i] = xi #posits_ext_use = extend_structure(posits_use.copy(), pbc, cell) nj = local_normal(ind, posits_use, layer_neighbors, \ accept_noneighbor = no_edge_neighbor) return nj
def e(rik, *args): k = args[0] posits_use = posits.copy() posits_use[i,k] = rik ri = posits_use[i] #posits_ext = extend_structure(posits_use, pbc, cell) ni = local_normal(i, posits, layer_neighbors, accept_noneighbor = no_edge_neighbor)*(-1) nj = np.array([0.,0.,1.]) return get_potential_ij(ri, rj, ni, nj, posits_use, i, params, cutoff)
def e(rik, *args): k = args[0] posits_use = posits.copy() posits_use[i, k] = rik ri = posits_use[i] #posits_ext = extend_structure(posits_use, pbc, cell) ni = local_normal( i, posits, layer_neighbors, accept_noneighbor=no_edge_neighbor) * (-1) nj = np.array([0., 0., 1.]) return get_potential_ij(ri, rj, ni, nj, posits_use, i, params, cutoff)
def energy_on_posArr(self, k, split_len, pos_arr, e_KCm, \ posits, layer_neighbors, chem_symbs, params, cutoff, natoms): nj = np.array([0., 0., 1.]) for l, ri in enumerate(pos_arr): i = l + split_len if chem_symbs[i] == 'C': # SHEAR ADD ni = local_normal(i, posits, layer_neighbors, accept_noneighbor = self.no_edge_neighbor) ni = -1*ni neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: e = get_potential_ij(ri, rj, ni, nj, posits, i, params, \ cutoff) e_KCm[k] += e
def forces_on_posArr(self, split_beg, pos_arr, af1, af2, af3, dnGreat, \ posits, layer_neighbors, \ chem_symbs, params, cutoff, natoms): nj = np.array([0., 0., 1.]) dnj = np.array([[0., 0., 0], [0., 0., 0], [0., 0., 0]]) for l, ri in enumerate(pos_arr): i = l + split_beg if chem_symbs[i] == 'C': # SHREAR ADD ni_f = local_normal(i, posits, layer_neighbors, accept_noneighbor = self.no_edge_neighbor) dni_f = dnGreat[i] ni = -1*ni_f dni = -dni_f neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: # Force due to atom j on atom i fij = get_forces_ij(ri, rj, ni, nj, dni, dnj, \ posits, i, params, \ cutoff, no_edge_neighbor = self.no_edge_neighbor) #, layer_neighbors = layer_neighbors) af1[i] += fij[0] af2[i] += fij[1] af3[i] += fij[2]
def energy_on_posArr(self, k, split_len, pos_arr, e_KCm, \ posits, layer_neighbors, chem_symbs, params, cutoff, natoms): nj = np.array([0., 0., 1.]) for l, ri in enumerate(pos_arr): i = l + split_len if chem_symbs[i] == 'C': # SHEAR ADD ni = local_normal(i, posits, layer_neighbors, accept_noneighbor=self.no_edge_neighbor) ni = -1 * ni neigh_orig = get_setOrig(ri, self.edge, self.bond) neigh_pos = self.neigh_set + neigh_orig for rj in neigh_pos: e = get_potential_ij(ri, rj, ni, nj, posits, i, params, \ cutoff) e_KCm[k] += e