Exemplo n.º 1
0
 def __copy_kwargs__(self):
     kw = InternalCoordinate.__copy_kwargs__(self)
     # Give precidence to FunctionCoordinate over InternalCoordinate
     kw.update(FunctionCoordinate.__copy_kwargs__(self))
     kw.update(
         b_vector_same_function = self.b_vector_same_function,
         b_vector_function = self.b_vector_function,
         b_vector_takes_coords = self.b_vector_takes_coords,
         b_tensor_same_function = self.b_tensor_same_function,
         b_tensor_function = self.b_tensor_function,
         b_tensor_takes_coords = self.b_tensor_takes_coords,
         value_takes_coords = self.value_takes_coords
     )
     return kw
Exemplo n.º 2
0
 def copy_with_atoms(self, atoms, **kwargs):
     copykw = InternalCoordinate.__copy_kwargs__(self)
     # Give precidence to FunctionCoordinate over InternalCoordinate
     copykw.update(FunctionCoordinate.__copy_kwargs__(self))
     copykw.update(self.__copy_kwargs__())
     copykw['base_analog'] = self
     # allow manual override of any of the above
     copykw.update(kwargs)
     new_sc = []
     for isc, sc in enumerate(self.subcoordinates):
         atmap = self._idxmap[isc]
         catoms = [atoms[a] for _, a in sorted(atmap.items())]
         new_sc.append(sc.copy_with_atoms(catoms))
     copykw.update(subcoordinates=new_sc)
     return self.__class__(**copykw)