1 /* Copyright (C) 2006-2007  Egon Willighagen <egonw@users.sf.net>
2  *
3  * Contact: cdk-devel@lists.sourceforge.net
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public License
7  * as published by the Free Software Foundation; either version 2.1
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 package org.openscience.cdk.interfaces;
20 
21 /**
22  * The base class for atom types.
23  *
24  * Atom types are typically used to describe the
25  * behaviour of an atom of a particular element in different environment like
26  * sp<sup>3</sup> hybridized carbon C3, etc., in some molecular modelling
27  * applications.
28  *
29  * @cdk.module  interfaces
30  * @cdk.githash
31  *
32  * @author      egonw
33  * @cdk.created 2005-08-24
34  *
35  * @cdk.keyword atom, type
36  */
37 public interface IAtomType extends IIsotope {
38 
39     /**
40      *
41      * An enum for the different hybridization states.
42      *
43      */
44     public enum Hybridization {
45         S, SP1, // linear
46         SP2, // trigonal planar (single pi-electron in pz)
47         SP3, // tetrahedral
48         PLANAR3, // trigonal planar (lone pair in pz)
49         SP3D1, // trigonal planar
50         SP3D2, // octahedral
51         SP3D3, // pentagonal bipyramid
52         SP3D4, // square antiprim??
53         SP3D5 // tricapped trigonal prism
54     }
55 
56     /**
57      * Sets the if attribute of the AtomType object.
58      *
59      * @param  identifier  The new AtomTypeID value. Null if unset.
60      * @see    #getAtomTypeName
61      */
setAtomTypeName(String identifier)62     public void setAtomTypeName(String identifier);
63 
64     /**
65      * Sets the MaxBondOrder attribute of the AtomType object.
66      *
67      * @param  maxBondOrder  The new MaxBondOrder value
68      * @see    #getMaxBondOrder
69      */
setMaxBondOrder(IBond.Order maxBondOrder)70     public void setMaxBondOrder(IBond.Order maxBondOrder);
71 
72     /**
73      * Sets the the exact bond order sum attribute of the AtomType object.
74      *
75      * @param  bondOrderSum  The new bondOrderSum value
76      * @see    #getBondOrderSum
77      */
setBondOrderSum(Double bondOrderSum)78     public void setBondOrderSum(Double bondOrderSum);
79 
80     /**
81      * Gets the id attribute of the AtomType object.
82      *
83      * @return    The id value
84      * @see       #setAtomTypeName
85      */
getAtomTypeName()86     public String getAtomTypeName();
87 
88     /**
89      * Gets the MaxBondOrder attribute of the AtomType object.
90      *
91      * @return    The MaxBondOrder value
92      * @see       #setMaxBondOrder
93      */
getMaxBondOrder()94     public IBond.Order getMaxBondOrder();
95 
96     /**
97      * Gets the bondOrderSum attribute of the AtomType object.
98      *
99      * @return    The bondOrderSum value
100      * @see       #setBondOrderSum
101      */
getBondOrderSum()102     public Double getBondOrderSum();
103 
104     /**
105      * Sets the formal charge of this atom.
106      *
107      * @param  charge  The formal charge
108      * @see    #getFormalCharge
109      */
setFormalCharge(Integer charge)110     public void setFormalCharge(Integer charge);
111 
112     /**
113      * Returns the formal charge of this atom.
114      *
115      * @return the formal charge of this atom
116      * @see    #setFormalCharge
117      */
getFormalCharge()118     public Integer getFormalCharge();
119 
120     /**
121      * Sets the formal neighbour count of this atom.
122      *
123      * @param  count  The neighbour count
124      * @see    #getFormalNeighbourCount
125      */
setFormalNeighbourCount(Integer count)126     public void setFormalNeighbourCount(Integer count);
127 
128     /**
129      * Returns the formal neighbour count of this atom.
130      *
131      * @return the formal neighbour count of this atom
132      * @see    #setFormalNeighbourCount
133      */
getFormalNeighbourCount()134     public Integer getFormalNeighbourCount();
135 
136     /**
137      * Sets the hybridization of this atom.
138      *
139      * @param  hybridization  The hybridization
140      * @see    #getHybridization
141      */
setHybridization(Hybridization hybridization)142     public void setHybridization(Hybridization hybridization);
143 
144     /**
145      * Returns the hybridization of this atom.
146      *
147      * @return the hybridization of this atom
148      * @see    #setHybridization
149      */
getHybridization()150     public Hybridization getHybridization();
151 
152     /**
153      * Sets the covalent radius for this AtomType.
154      *
155      * @param radius The covalent radius for this AtomType
156      * @see    #getCovalentRadius
157      */
setCovalentRadius(Double radius)158     public void setCovalentRadius(Double radius);
159 
160     /**
161      * Returns the covalent radius for this AtomType.
162      *
163      * @return The covalent radius for this AtomType
164      * @see    #setCovalentRadius
165      */
getCovalentRadius()166     public Double getCovalentRadius();
167 
168     /**
169      * Sets the the exact electron valency of the AtomType object.
170      *
171      * @param  valency  The new valency value
172      * @see    #getValency()
173      */
setValency(Integer valency)174     public void setValency(Integer valency);
175 
176     /**
177      * Gets the the exact electron valency of the AtomType object.
178      *
179      * @return The valency value
180      * @see    #setValency(Integer)
181      */
getValency()182     public Integer getValency();
183 
184 }
185