/* $Revision$ $Author$ $Date$
*
* Copyright (C) 2006-2007 Egon Willighagen <egonw@users.sf.net>
*
* Contact: cdk-devel@lists.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.openscience.cdk.interfaces;
/**
* The base class for atom types. Atom types are typically used to describe the
* behaviour of an atom of a particular element in different environment like
* sp<sup>3</sup> hybridized carbon C3, etc., in some molecular modelling
* applications.
*
* @cdk.module interfaces
* @cdk.githash
*
* @author egonw
* @cdk.created 2005-08-24
*
* @cdk.keyword atom, type
*/
public interface IAtomType extends IIsotope {
public enum Hybridization {
S,
SP1, // linear
SP2, // trigonal planar (single pi-electron in pz)
SP3, // tetrahedral
PLANAR3, // trigonal planar (lone pair in pz)
SP3D1, // trigonal planar
SP3D2, // octahedral
SP3D3, // pentagonal bipyramid
SP3D4, // square antiprim??
SP3D5 // tricapped trigonal prism
}
/**
* Sets the if attribute of the AtomType object.
*
* @param identifier The new AtomTypeID value. Null if unset.
* @see #getAtomTypeName
*/
public void setAtomTypeName(String identifier);
/**
* Sets the MaxBondOrder attribute of the AtomType object.
*
* @param maxBondOrder The new MaxBondOrder value
* @see #getMaxBondOrder
*/
public void setMaxBondOrder(IBond.Order maxBondOrder);
/**
* Sets the the exact bond order sum attribute of the AtomType object.
*
* @param bondOrderSum The new bondOrderSum value
* @see #getBondOrderSum
*/
public void setBondOrderSum(Double bondOrderSum);
/**
* Gets the id attribute of the AtomType object.
*
* @return The id value
* @see #setAtomTypeName
*/
public String getAtomTypeName();
/**
* Gets the MaxBondOrder attribute of the AtomType object.
*
* @return The MaxBondOrder value
* @see #setMaxBondOrder
*/
public IBond.Order getMaxBondOrder();
/**
* Gets the bondOrderSum attribute of the AtomType object.
*
* @return The bondOrderSum value
* @see #setBondOrderSum
*/
public Double getBondOrderSum();
/**
* Sets the formal charge of this atom.
*
* @param charge The formal charge
* @see #getFormalCharge
*/
public void setFormalCharge(Integer charge);
/**
* Returns the formal charge of this atom.
*
* @return the formal charge of this atom
* @see #setFormalCharge
*/
public Integer getFormalCharge();
/**
* Sets the formal neighbour count of this atom.
*
* @param count The neighbour count
* @see #getFormalNeighbourCount
*/
public void setFormalNeighbourCount(Integer count);
/**
* Returns the formal neighbour count of this atom.
*
* @return the formal neighbour count of this atom
* @see #setFormalNeighbourCount
*/
public Integer getFormalNeighbourCount();
/**
* Sets the hybridization of this atom.
*
* @param hybridization The hybridization
* @see #getHybridization
*/
public void setHybridization(Hybridization hybridization);
/**
* Returns the hybridization of this atom.
*
* @return the hybridization of this atom
* @see #setHybridization
*/
public Hybridization getHybridization();
/**
* Sets the covalent radius for this AtomType.
*
* @param radius The covalent radius for this AtomType
* @see #getCovalentRadius
*/
public void setCovalentRadius(Double radius);
/**
* Returns the covalent radius for this AtomType.
*
* @return The covalent radius for this AtomType
* @see #setCovalentRadius
*/
public Double getCovalentRadius();
/**
* Sets the the exact electron valency of the AtomType object.
*
* @param valency The new valency value
* @see #getValency()
*/
public void setValency(Integer valency);
/**
* Gets the the exact electron valency of the AtomType object.
*
* @return The valency value
* @see #setValency(Integer)
*/
public Integer getValency();
}