11 #include "atom_config.h"
14 #include "Hierarchy.h"
26 IMPATOM_BEGIN_NAMESPACE
67 IMPATOMEXPORT
extern const AtomType AT_O;
69 IMPATOMEXPORT
extern const AtomType AT_H;
71 IMPATOMEXPORT
extern const AtomType AT_H1;
73 IMPATOMEXPORT
extern const AtomType AT_H2;
75 IMPATOMEXPORT
extern const AtomType AT_H3;
77 IMPATOMEXPORT
extern const AtomType AT_HA;
79 IMPATOMEXPORT
extern const AtomType AT_HA1;
81 IMPATOMEXPORT
extern const AtomType AT_HA2;
83 IMPATOMEXPORT
extern const AtomType AT_HA3;
85 IMPATOMEXPORT
extern const AtomType AT_CB;
87 IMPATOMEXPORT
extern const AtomType AT_HB;
90 IMPATOMEXPORT
extern const AtomType AT_HB2;
91 IMPATOMEXPORT
extern const AtomType AT_HB3;
92 IMPATOMEXPORT
extern const AtomType AT_OXT;
93 IMPATOMEXPORT
extern const AtomType AT_CH3;
94 IMPATOMEXPORT
extern const AtomType AT_CH;
95 IMPATOMEXPORT
extern const AtomType AT_CG;
96 IMPATOMEXPORT
extern const AtomType AT_CG1;
97 IMPATOMEXPORT
extern const AtomType AT_CG2;
98 IMPATOMEXPORT
extern const AtomType AT_HG;
99 IMPATOMEXPORT
extern const AtomType AT_HG1;
100 IMPATOMEXPORT
extern const AtomType AT_HG2;
101 IMPATOMEXPORT
extern const AtomType AT_HG3;
102 IMPATOMEXPORT
extern const AtomType AT_HG11;
103 IMPATOMEXPORT
extern const AtomType AT_HG21;
104 IMPATOMEXPORT
extern const AtomType AT_HG31;
105 IMPATOMEXPORT
extern const AtomType AT_HG12;
106 IMPATOMEXPORT
extern const AtomType AT_HG13;
107 IMPATOMEXPORT
extern const AtomType AT_HG22;
108 IMPATOMEXPORT
extern const AtomType AT_HG23;
109 IMPATOMEXPORT
extern const AtomType AT_HG32;
110 IMPATOMEXPORT
extern const AtomType AT_OG;
111 IMPATOMEXPORT
extern const AtomType AT_OG1;
112 IMPATOMEXPORT
extern const AtomType AT_SG;
113 IMPATOMEXPORT
extern const AtomType AT_CD;
114 IMPATOMEXPORT
extern const AtomType AT_CD1;
115 IMPATOMEXPORT
extern const AtomType AT_CD2;
116 IMPATOMEXPORT
extern const AtomType AT_HD;
117 IMPATOMEXPORT
extern const AtomType AT_HD1;
118 IMPATOMEXPORT
extern const AtomType AT_HD2;
119 IMPATOMEXPORT
extern const AtomType AT_HD3;
120 IMPATOMEXPORT
extern const AtomType AT_HD11;
121 IMPATOMEXPORT
extern const AtomType AT_HD21;
122 IMPATOMEXPORT
extern const AtomType AT_HD31;
123 IMPATOMEXPORT
extern const AtomType AT_HD12;
124 IMPATOMEXPORT
extern const AtomType AT_HD13;
125 IMPATOMEXPORT
extern const AtomType AT_HD22;
126 IMPATOMEXPORT
extern const AtomType AT_HD32;
127 IMPATOMEXPORT
extern const AtomType AT_SD;
128 IMPATOMEXPORT
extern const AtomType AT_OD1;
129 IMPATOMEXPORT
extern const AtomType AT_OD2;
130 IMPATOMEXPORT
extern const AtomType AT_ND1;
131 IMPATOMEXPORT
extern const AtomType AT_ND2;
132 IMPATOMEXPORT
extern const AtomType AT_CE;
133 IMPATOMEXPORT
extern const AtomType AT_CE1;
134 IMPATOMEXPORT
extern const AtomType AT_CE2;
135 IMPATOMEXPORT
extern const AtomType AT_CE3;
136 IMPATOMEXPORT
extern const AtomType AT_HE;
137 IMPATOMEXPORT
extern const AtomType AT_HE1;
138 IMPATOMEXPORT
extern const AtomType AT_HE2;
139 IMPATOMEXPORT
extern const AtomType AT_HE3;
140 IMPATOMEXPORT
extern const AtomType AT_HE21;
141 IMPATOMEXPORT
extern const AtomType AT_HE22;
142 IMPATOMEXPORT
extern const AtomType AT_OE1;
143 IMPATOMEXPORT
extern const AtomType AT_OE2;
144 IMPATOMEXPORT
extern const AtomType AT_NE;
145 IMPATOMEXPORT
extern const AtomType AT_NE1;
146 IMPATOMEXPORT
extern const AtomType AT_NE2;
147 IMPATOMEXPORT
extern const AtomType AT_CZ;
148 IMPATOMEXPORT
extern const AtomType AT_CZ2;
149 IMPATOMEXPORT
extern const AtomType AT_CZ3;
150 IMPATOMEXPORT
extern const AtomType AT_NZ;
151 IMPATOMEXPORT
extern const AtomType AT_HZ;
152 IMPATOMEXPORT
extern const AtomType AT_HZ1;
153 IMPATOMEXPORT
extern const AtomType AT_HZ2;
154 IMPATOMEXPORT
extern const AtomType AT_HZ3;
155 IMPATOMEXPORT
extern const AtomType AT_CH2;
156 IMPATOMEXPORT
extern const AtomType AT_NH1;
157 IMPATOMEXPORT
extern const AtomType AT_NH2;
158 IMPATOMEXPORT
extern const AtomType AT_OH;
159 IMPATOMEXPORT
extern const AtomType AT_HH;
160 IMPATOMEXPORT
extern const AtomType AT_HH11;
161 IMPATOMEXPORT
extern const AtomType AT_HH21;
162 IMPATOMEXPORT
extern const AtomType AT_HH2;
163 IMPATOMEXPORT
extern const AtomType AT_HH12;
164 IMPATOMEXPORT
extern const AtomType AT_HH22;
165 IMPATOMEXPORT
extern const AtomType AT_HH13;
166 IMPATOMEXPORT
extern const AtomType AT_HH23;
167 IMPATOMEXPORT
extern const AtomType AT_HH33;
168 IMPATOMEXPORT
extern const AtomType AT_P;
169 IMPATOMEXPORT
extern const AtomType AT_OP1;
170 IMPATOMEXPORT
extern const AtomType AT_OP2;
171 IMPATOMEXPORT
extern const AtomType AT_OP3;
172 IMPATOMEXPORT
extern const AtomType AT_O5p;
173 IMPATOMEXPORT
extern const AtomType AT_C5p;
174 IMPATOMEXPORT
extern const AtomType AT_H5p;
175 IMPATOMEXPORT
extern const AtomType AT_H5pp;
176 IMPATOMEXPORT
extern const AtomType AT_C4p;
177 IMPATOMEXPORT
extern const AtomType AT_H4p;
178 IMPATOMEXPORT
extern const AtomType AT_O4p;
179 IMPATOMEXPORT
extern const AtomType AT_C1p;
180 IMPATOMEXPORT
extern const AtomType AT_H1p;
181 IMPATOMEXPORT
extern const AtomType AT_C3p;
182 IMPATOMEXPORT
extern const AtomType AT_H3p;
183 IMPATOMEXPORT
extern const AtomType AT_O3p;
184 IMPATOMEXPORT
extern const AtomType AT_C2p;
185 IMPATOMEXPORT
extern const AtomType AT_H2p;
186 IMPATOMEXPORT
extern const AtomType AT_H2pp;
187 IMPATOMEXPORT
extern const AtomType AT_O2p;
188 IMPATOMEXPORT
extern const AtomType AT_HO2p;
189 IMPATOMEXPORT
extern const AtomType AT_N9;
190 IMPATOMEXPORT
extern const AtomType AT_C8;
191 IMPATOMEXPORT
extern const AtomType AT_H8;
192 IMPATOMEXPORT
extern const AtomType AT_N7;
193 IMPATOMEXPORT
extern const AtomType AT_C5;
194 IMPATOMEXPORT
extern const AtomType AT_C4;
195 IMPATOMEXPORT
extern const AtomType AT_N3;
196 IMPATOMEXPORT
extern const AtomType AT_C2;
197 IMPATOMEXPORT
extern const AtomType AT_N1;
198 IMPATOMEXPORT
extern const AtomType AT_C6;
199 IMPATOMEXPORT
extern const AtomType AT_N6;
200 IMPATOMEXPORT
extern const AtomType AT_H61;
201 IMPATOMEXPORT
extern const AtomType AT_H62;
202 IMPATOMEXPORT
extern const AtomType AT_O6;
203 IMPATOMEXPORT
extern const AtomType AT_N2;
204 IMPATOMEXPORT
extern const AtomType AT_NT;
205 IMPATOMEXPORT
extern const AtomType AT_H21;
206 IMPATOMEXPORT
extern const AtomType AT_H22;
207 IMPATOMEXPORT
extern const AtomType AT_H6;
208 IMPATOMEXPORT
extern const AtomType AT_H5;
209 IMPATOMEXPORT
extern const AtomType AT_O2;
210 IMPATOMEXPORT
extern const AtomType AT_N4;
211 IMPATOMEXPORT
extern const AtomType AT_H41;
212 IMPATOMEXPORT
extern const AtomType AT_H42;
213 IMPATOMEXPORT
extern const AtomType AT_O4;
214 IMPATOMEXPORT
extern const AtomType AT_C7;
215 IMPATOMEXPORT
extern const AtomType AT_H71;
216 IMPATOMEXPORT
extern const AtomType AT_H72;
217 IMPATOMEXPORT
extern const AtomType AT_H73;
218 IMPATOMEXPORT
extern const AtomType AT_O1A;
219 IMPATOMEXPORT
extern const AtomType AT_O2A;
220 IMPATOMEXPORT
extern const AtomType AT_O3A;
221 IMPATOMEXPORT
extern const AtomType AT_O1B;
222 IMPATOMEXPORT
extern const AtomType AT_O2B;
223 IMPATOMEXPORT
extern const AtomType AT_O3B;
232 class IMPATOMEXPORT
Atom:
240 return Hierarchy::get_particle();
251 return p->has_attribute(get_atom_type_key())
252 && Hierarchy::particle_is_instance(p);
270 double get_occupancy()
const {
271 if (!
get_particle()->has_attribute(get_occupancy_key())) {
278 void set_occupancy(
double occupancy) {
279 if (!
get_particle()->has_attribute(get_occupancy_key())) {
280 get_particle()->add_attribute(get_occupancy_key(),occupancy);
282 get_particle()->set_value(get_occupancy_key(),occupancy);
286 double get_temperature_factor()
const {
287 if (!
get_particle()->has_attribute(get_temperature_factor_key())) {
290 return get_particle()->get_value(get_temperature_factor_key());
294 void set_temperature_factor(
double tempFactor) {
295 if (!
get_particle()->has_attribute(get_temperature_factor_key())) {
296 get_particle()->add_attribute(get_temperature_factor_key(),tempFactor);
298 get_particle()->set_value(get_temperature_factor_key(),tempFactor);
318 static IntKey get_atom_type_key();
320 static IntKey get_element_key();
322 static IntKey get_input_index_key();
324 static FloatKey get_occupancy_key();
326 static FloatKey get_temperature_factor_key();
373 IMPATOM_END_NAMESPACE