Source code for sknano.structures._base

# -*- coding: utf-8 -*-
"""
==============================================================================
Base structure classes (:mod:`sknano.structures._base`)
==============================================================================

.. currentmodule:: sknano.structures._base

"""
from __future__ import absolute_import, division, print_function, \
    unicode_literals
__docformat__ = 'restructuredtext en'

import numbers

from sknano.core.refdata import CCbond

__all__ = ['StructureBase']


[docs]class StructureBase(object): """Base class for creating abstract representation of nano structure. Parameters ---------- element1, element2 : {str, int}, optional Element symbol or atomic number of basis :class:`~sknano.core.atoms.Atom` 1 and 2 bond : float, optional Distance between nearest neighbor atoms (i.e., bond length). Must be in units of **\u212b**. Default value is the carbon-carbon bond length in graphite, approximately :math:`\\mathrm{a}_{\\mathrm{CC}} = 1.42` \u212b """ def __init__(self, element1='C', element2='C', bond=CCbond, verbose=False, debug=False, **kwargs): self.element1 = element1 self.element2 = element2 if bond is None: bond = CCbond self.bond = bond self.verbose = verbose self.debug = debug super(StructureBase, self).__init__(**kwargs) @property def bond(self): """Bond length in **\u212b**.""" return self._bond @bond.setter def bond(self, value): """Set bond length in **\u212b**.""" if not (isinstance(value, numbers.Real) or value > 0): raise TypeError('Expected a real, positive number.') self._bond = float(value) @bond.deleter def bond(self): del self._bond @property def element1(self): """Element symbol of :class:`~sknano.core.atoms.Atom` 1.""" return self._element1 @element1.setter def element1(self, value): """Set element symbol of :class:`~sknano.core.atoms.Atom` 1.""" self._element1 = value @element1.deleter def element1(self): del self._element1 @property def element2(self): """Element symbol of :class:`~sknano.core.atoms.Atom` 2.""" return self._element2 @element2.setter def element2(self, value): """Set element symbol of :class:`~sknano.core.atoms.Atom` 2.""" self._element2 = value @element2.deleter def element2(self): del self._element2