1 /*
2  *  (c) 2005 Iowa State University
3  *      see the LICENSE file in the top level directory
4  */
5 /*  CML.h
6  *
7  *  Headers related to CML handling
8  *  Created by Brett Bode January 2005
9  */
10 
11 #ifndef _CML_H_
12 #define _CML_H_
13 
14 enum CML_Element {
15 	invalid_CML_Element=0,
16 	CMLElement,
17 	MoleculeElement,
18 	AtomArrayElement,
19 	AtomElement,
20 	BondArrayElement,
21 	BondElement,
22 	StringArrayElement,
23 	FloatArrayElement,
24 	IntegerArrayElement,
25 	ScalarElement,
26 	MatrixElement,
27 	MetaDataElement,
28 	MetaDataListElement,
29 	ArrayElement,
30 	ListElement,
31 
32 	NumberCMLElements
33 };
34 
35 enum CML_Attribute {
36 	invalidCMLAttribute=0,
37 	IdAttr,
38 	atomIdAttr,
39 	titleAttr,
40 	elementTypeAttr,
41 	X3Attr,
42 	Y3Attr,
43 	Z3Attr,
44 	xyz3Attr,
45 	orderAttr,
46 	atomRefs2Attr,
47 	bondRefsAttr,
48 	atomRef1Attr,
49 	atomRef2Attr,
50 	atomRefAttr,
51 	builtinAttr,
52 	dataTypeAttr,
53 	rowsAttr,
54 	columnsAttr,
55 	sizeAttr,
56 	nameAttr,
57 	contentAttr,
58 	selectedAttr,
59 	invisibleAttr,
60 	symmetryUniqueAttr,
61 	effectiveFragmentIdAttr,
62 	SIMOMMFlagAttr,
63 	coordinationNumberAttr,
64 	lonePairCountAttr,
65 
66 	NumberCMLAttributes
67 };
68 
69 enum MMP_NameSpace { // MacMolPlt specific XML tags
70 	invalidMMPName=0,
71 	MMP_RotationMatrix,
72 	MMP_Energy,
73 	MMP_KineticEnergy,
74 	MMP_MP2Energy,
75 	MMP_Time,
76 	MMP_ReactionCoord,
77 	MMP_RMSGradient,
78 	MMP_MaxGradient,
79 	MMP_CartesianGradient,
80 
81 	NumberMMPNames
82 };
83 
84 enum MMP_VibRecNameSpace {
85 	invalidMMPVibRecItem=0,
86 	MMP_CurrentMode,
87 	MMP_VibIntensity,
88 	MMP_VibFrequencies,
89 	MMP_NormalModesCount,
90 	MMP_VibNormalModes,
91 	MMP_Symmetry,
92 	MMP_ReducedMass,
93 	MMP_RamanIntensity,
94 	MMP_Depolarization,
95 
96 	NumberMMPVibRecItems
97 };
98 
99 enum MMP_MetadataNamespace {
100 	invalid_MMPMetadata=0,
101 	MMP_MaxSize,
102 	MMP_WindowSize,
103 	MMP_CurrentFrame,
104 	MMP_DrawNormalMode,
105 	MMP_DrawSpecialAtoms,
106 	MMP_ShowAxis,
107 	MMP_ShowAtomLabels,
108 	MMP_LabelHAtoms,
109 	MMP_ShowAtomNumbers,
110 	MMP_InternalCoordinates,
111 	MMP_BasisSet,
112 	MMP_FragmentNameList,
113 	MMP_FragmentDefinitions,
114 	MMP_InputOptions,
115 	MMP_Annotations,
116 	MMP_Structures,
117 	MMP_Preferences,
118 	MMP_WindowData,
119 	MMP_Use3DMode,
120 
121 	NumberMMPMetadataNames
122 };
123 
124 enum MMP_MolListNameSpace {
125 	invalid_MMPMolList=0,
126 	MMP_ScalarElement,
127 	MMP_BondArrayElement,
128 	MMP_Gradient,
129 	MMP_NormalModes,
130 	MMP_OrbitalSet,
131 	MMP_SurfaceDescription,
132 	MMP_AtomAttrArrayElement,
133 
134 	NumberMMPMolListItems
135 };
136 
137 enum MMP_SurfaceNameSpace {
138 	invalid_MMPSurface=0,
139 	MMP_BaseSurface,
140 	MMP_OrbSurfBase,
141 	MMP_1DSurface,
142 	MMP_2DSurface,
143 	MMP_3DSurface,
144 	MMP_VisibleAttr,
145 	MMP_SurfaceId,
146 	MMP_SurfaceLabel,
147 	MMP_OrbSurfPlotOrb,
148 	MMP_OrbSurfTargetSet,
149 	MMP_OrbSurfUseAOs,
150 	MMP_OrbSurfUseBetaOrbs,
151 	MMP_OrbSurfPhaseChage,
152 	MMP_OrbSurfSpherical,
153 	MMP_OrbSurfOccNums,
154 	MMP_SurfOrigin,
155 	MMP_SurfXInc,
156 	MMP_SurfYInc,
157 	MMP_SurfZInc,
158 	MMP_SurfGridMax,
159 	MMP_SurfGridMin,
160 	MMP_SurfNumGridPoints,
161 	MMP_SurfPosColor,
162 	MMP_SurfNegColor,
163 	MMP_SurfTransColor,
164 	MMP_SurfNumContours,
165 	MMP_SurfMaxContourValue,
166 	MMP_SurfShowZeroContour,
167 	MMP_SurfScreenPlane,
168 	MMP_SurfDashedContours,
169 	MMP_SurfPosNegContours,
170 	MMP_DisplayPlane,
171 	MMP_SurfMaxMEPValue,
172 	MMP_SurfGrid,
173 	MMP_SurfNumXGridPoints,
174 	MMP_SurfNumYGridPoints,
175 	MMP_SurfNumZGridPoints,
176 	MMP_SurfContourValue,
177 	MMP_SurfGridSize,
178 	MMP_SurfSolidSurface,
179 	MMP_SurfColorizeSurface,
180 	MMP_SurfUseSurfaceNormals,
181 	MMP_SurfUseRGBColor,
182 	MMP_SurfInvertRGBColor,
183 	MMP_SurfFixedGrid,
184 	MMP_SurfContourPosNeg,
185 	MMP_SurfNumVertices,
186 	MMP_SurfNumPosTris,
187 	MMP_SurfNumNegTris,
188 	MMP_SurfVertices,
189 	MMP_SurfVerticesList,
190 	MMP_SurfNormals,
191 	MMP_SurfSurfaceValues,
192 	MMP_SurfEndpoint1,
193 	MMP_SurfEndpoint2,
194 
195 	NumberMMPSurfaceItems
196 };
197 
198 enum MMP_OrbitalSetNS {
199 	MMP_OrbitalTypeAttr=1,
200 	MMP_WavefunctionType,
201 	MMP_OrbitalLabel,
202 	MMP_NumAlphaOrbs,
203 	MMP_NumBetaOrbs,
204 	MMP_NumOccAlphaOrbs,
205 	MMP_NumOccBetaOrbs,
206 	MMP_NumBasisFunctions,
207 	MMP_StartingOrbOffset,
208 	MMP_OrbVectors,
209 	MMP_BetaOrbVectors,
210 	MMP_OrbEnergies,
211 	MMP_BetaOrbEnergies,
212 	MMP_OrbOccupations,
213 	MMP_BetaOrbOccupations,
214 	MMP_OrbSyms,
215 	MMP_BetaOrbSyms,
216 
217 	NumberMMPOrbitalSetNSItems
218 };
219 
220 #define kLeftXML "left"
221 #define kRightXML "right"
222 #define kTopXML "top"
223 #define kBottomXML "bottom"
224 #define kVisibleXML "visible"
225 enum MMP_MetaWindowItems {
226 	MMP_InvalidMetaWindowItem=0,
227 	MMP_MainWinRect,
228 	MMP_CoordWinRect,
229 	MMP_BondsWinRect,
230 	MMP_EPlotWinRect,
231 	MMP_FreqWinRect,
232 	MMP_SurfaceWinRect,
233 	MMP_PrefsWinRect,
234 
235 	NumberMMPMetaWindowItems
236 };
237 
238 enum MMP_InternalCoordNS {
239 	MMP_InvalidInternal=0,
240 	MMP_MOPacStyleInternals,
241 	MMP_MOPacStyleCount,
242 	MMP_MOPacStyleConnections,
243 	MMP_MOPacStyleValues,
244 	MMP_MOPacStyleTypes,
245 
246 	NumberMMPInternalCoordItems
247 };
248 
249 enum MMP_BasisSetNS {
250 	MMP_BasisSetInvalid=0,
251 	MMP_BasisSetElement,
252 	MMP_BSMapLength,
253 	MMP_BSNumShells,
254 	MMP_BSNumFunctions,
255 	MMP_BasisShell,
256 	MMP_BSMap,
257 	MMP_BSNucCharge,
258 	MMP_BSShellType,
259 	MMP_BSNumPrims,
260 	MMP_BSExponent,
261 	MMP_BSNormCoef,
262 	MMP_BSInputCoef,
263 
264 	NumberMMPBasisSetItems
265 };
266 
267 enum MMP_InputOptionsNS {
268 	MMP_InputOptionInvalid=0,
269 	MMP_InputOptionsElement,
270 	MMP_IOControlGroupElement,
271 	MMP_IOSystemGroupElement,
272 	MMP_IOBasisGroupElement,
273 	MMP_IODataGroupElement,
274 	MMP_IOGuessGroupElement,
275 	MMP_IOSCFGroupElement,
276 	MMP_IOMP2GroupElement,
277 	MMP_IOHessianGroupElement,
278 	MMP_IOStatPtGroupElement,
279 	MMP_IODFTGroupElement,
280 	MMP_IOEFPGroupElement,
281 	MMP_IOFMOGroupElement,
282 
283 	NumberMMPInputOptions
284 };
285 
286 enum MMP_IOControlGroupNS {
287 	MMP_IIOControlGroupInvalid=0,
288 	MMP_IOCGSCFType,
289 	MMP_IOCGRunType,
290 	MMP_IOCGExeType,
291 	MMP_IOCGMPLevel,
292 	MMP_IOCGCIType,
293 	MMP_IOCGCCType,
294 	MMP_IOCGMaxIterations,
295 	MMP_IOCGCharge,
296 	MMP_IOCGMultiplicity,
297 	MMP_IOCGLocalization,
298 	MMP_IOCGFriend,
299 	MMP_IOCGPrintOption,
300 	MMP_IOCGTolerance,
301 	MMP_IOCGCutoff,
302 	MMP_IOCGMolPlt,
303 	MMP_IOCGPlotOrb,
304 	MMP_IOCGAIMPac,
305 	MMP_IOCGRPac,
306 	MMP_IOCGDFTActive,
307 	MMP_IOCGSphericalHarm,
308 	MMP_IOCGNormF,
309 	MMP_IOCGNormP,
310 
311 	NumberMMPIOControlGroupItems
312 };
313 
314 enum MMP_IOSystemGroupNS {
315 	MMP_IOSystemGroupInvalid=0,
316 	MMP_IOSGTimeLimit,
317 	MMP_IOSGMemory,
318 	MMP_IOSGTimeUnits,
319 	MMP_IOSGMemoryUnits,
320 	MMP_IOSGKDiag,
321 	MMP_IOSGCoreFlag,
322 	MMP_IOSGBalanceType,
323 	MMP_IOSGXDR,
324 	MMP_IOSGMemDDI,
325 	MMP_IOSGParallel,
326 
327 	NumberMMPIOSystemGroupItems
328 };
329 
330 enum MMP_IOBasisGroupNS {
331 	MMP_IOBasisGroupInvalid=0,
332 	MMP_IOBGBasisSet,
333 	MMP_IOBGNumGauss,
334 	MMP_IOBGNumDFuncs,
335 	MMP_IOBGNumFFuncs,
336 	MMP_IOBGNumPFuncs,
337 	MMP_IOBGPolar,
338 	MMP_IOBGECPPotential,
339 	MMP_IOBGDiffuseSP,
340 	MMP_IOBGDiffuseS,
341 	MMP_IOBGDisableBS,
342 
343 	NumberMMPIOBasisGroupItems
344 };
345 
346 enum MMP_IODataGroupNS {
347 	MMP_IODataGroupInvalid=0,
348 	MMP_IODGTitle,
349 	MMP_IODGCoordType,
350 	MMP_IODGNumZVars,
351 	MMP_IODGPointGroup,
352 	MMP_IODGPointGroupOrder,
353 	MMP_IODGUnits,
354 	MMP_IODGNoSymFlag,
355 
356 	NumberMMPIODataGroupItems
357 };
358 
359 enum MMP_IOGuessGroupNS {
360 	MMP_IOGuessGroupInvalid=0,
361 	MMP_IOGGGuessType,
362 	MMP_IOGGNumOrbs,
363 	MMP_IOGGPrintMO,
364 	MMP_IOGGVecSource,
365 	MMP_IOGGOrbReorder,
366 	MMP_IOGGOrbMix,
367 	MMP_IOGGMOTolZ,
368 	MMP_IOGGMOTolEquil,
369 
370 	NumberMMPIOGuessGroupItems
371 };
372 
373 enum MMP_IOSCFGroupNS {
374 	MMP_IOSCFGroupInvalid=0,
375 	MMP_IOSGDirectSCF,
376 	MMP_IOSGFockDiff,
377 	MMP_IOSGUHFNauralOrbitals,
378 	MMP_IOSGConvCriteria,
379 	MMP_IOSGExtrap,
380 	MMP_IOSGDamp,
381 	MMP_IOSGShift,
382 	MMP_IOSGRestriction,
383 	MMP_IOSGDIIS,
384 	MMP_IOSGSOSCF,
385 	MMP_IOSGDEM,
386 	MMP_IOSGGVBNumCoreOrbs,
387 	MMP_IOSGGVBNumPairs,
388 	MMP_IOSGGVBNumOpenShells,
389 	MMP_IOSGGVBOpenShellDeg,
390 	MMP_IOSCFArrayElement,
391 	MMP_IOSCFNPREOArrayElement,
392 
393 	NumberMMPIOSCFGroupItems
394 };
395 
396 enum MMP_IOMP2GroupNS {
397 	MMP_IOMP2GroupInvalid=0,
398 	MMP_IOMGCutOff,
399 	MMP_IOMGNumCoreElectrons,
400 	MMP_IOMGMemory,
401 	MMP_IOMGTransMethod,
402 	MMP_IOMGAOInts,
403 	MMP_IOMGLMOMP2,
404 	MMP_IOMP2MP2PRP,
405 
406 	NumberMMPIOMP2GroupItems
407 };
408 
409 enum MMP_IOHessGroupNS {
410 	MMP_IOHessGroupInvalid=0,
411 	MMP_IOHGDisplacementSize,
412 	MMP_IOHGFrequencyScaleFactor,
413 	MMP_IOHGMethod,
414 	MMP_IOHGDoubleDiff,
415 	MMP_IOHGPurify,
416 	MMP_IOHGInternalFC,
417 	MMP_IOHGVibAnalysis,
418 
419 	NumberMMPIOHessGroupItems
420 };
421 
422 enum MMP_IODFTGroupNS {
423 	MMP_IODFTGroupInvalid=0,
424 	MMP_IODFTGGridSwitch,
425 	MMP_IODFTThreshold,
426 	MMP_IODFTFunctional,
427 	MMP_IODFTNumRadialGrids,
428 	MMP_IODFTNumThetaGrids,
429 	MMP_IODFTNumPhiGrids,
430 	MMP_IODFTNumRadialGridsInit,
431 	MMP_IODFTNumThetaGridsInit,
432 	MMP_IODFTNumPhiGridsInit,
433 	MMP_IODFTGridMethod,
434 	MMP_IODFTGetAuxFunctions,
435 	MMP_IODFTThree,
436 
437 	NumberMMPIODFTGroupItems
438 };
439 
440 enum MMP_IOStatPtGroupNS {
441 	MMP_IOSPGroupInvalid=0,
442 	MMP_IOSPGOptConvergance,
443 	MMP_IOSPGInitTrustRadius,
444 	MMP_IOSPGMaxTrustRadius,
445 	MMP_IOSPGMinTrustRadius,
446 	MMP_IOSPGStatJumpSize,
447 	MMP_IOSPGModeFollow,
448 	MMP_IOSPGRadiusUpdate,
449 	MMP_IOSPGStatPoint,
450 	MMP_IOSPGHessMethod,
451 	MMP_IOSPGMethod,
452 	MMP_IOSPGMaxSteps,
453 	MMP_IOSPGnRecalcHess,
454 	MMP_IOSPGAlwaysPrintOrbs,
455 	MMP_IOSPGHessEnd,
456 
457 	NumberMMPIOStatPtGroupItems
458 };
459 enum MMP_IOEFPGroupNS {
460 	MMP_IOEFPGroupInvalid=0,
461 	MMP_IOEFPCoordType,
462 	MMP_IOEFPPolMethod,
463 	MMP_IOEFPPosition,
464 	MMP_IOEFPMaxBasisFuncs,
465 	MMP_IOEFPMaxMOs,
466 	MMP_IOEFPNumBufferMOs,
467 
468 	NumberMMPIOEFPGroupItems
469 };
470 enum MMP_IOFMOGroupNS {
471 	MMP_IOFMOGroupInvalid=0,
472 	MMP_IOFMOActiveFlag,
473 	MMP_IOFMONumFragments,
474 	MMP_IOFMONBODY,
475 	MMP_IOFMOOutputStyleFlag,
476 	MMP_IOFMOFramentArray,
477 	MMP_IOFMOFragmentNames,
478 	MMP_IOFMOFragmentCharges,
479 	MMP_IOFMOFragmentMultArray,
480 	MMP_IOFMOFragmentSCFArray,
481 	MMP_IOFMOLayerCount,
482 	MMP_IOFMOMPArray,
483 	MMP_IOFMODFTArray,
484 	MMP_IOFMOSCFArray,
485 	MMP_IOFMOCCArray,
486 	MMP_IOFMOTDArray,
487 
488 	NumberMMPIOFMOGroupItems
489 };
490 
491 #define VISIBLE_XML	"visible"
492 enum MMP_WindowDataNS {
493 	MMP_WinDataInvalid=0,
494 	MMP_WinDataMolWin,
495 	MMP_WinDataBondsWin,
496 	MMP_WinDataCoordsWin,
497 	MMP_WinDataEnergyWin,
498 	MMP_WinDataFreqWin,
499 	MMP_WinDataSurfacesWin,
500 	MMP_WinDataInputBWin,
501 	MMP_WinDataPrefWin,
502 	MMP_WinDataZMatWin,
503 
504 	NumberMMPWindowDataItems
505 };
506 
507 #define kStructureXML "Structure"
508 #define kFRAGNAMEXML "FRAGNAME"
509 #define kFragmentDefXML "Fragment"
510 
511 #define kAnnotationXML "Annotation"
512 #define kAnnAtom1XML "Atom-1"
513 #define kAnnAtom2XML "Atom-2"
514 #define kAnnAtom3XML "Atom-3"
515 #define kAnnAtom4XML "Atom-4"
516 enum MMP_AnnotationTypesNS {
517 	MMP_InvalidAnnotation=0,
518 	MMP_AnnotationMarker,
519 	MMP_AnnotationLength,
520 	MMP_AnnotationAngle,
521 	MMP_AnnotationDihedral,
522 
523 	NumberMMPAnnotationTypes
524 };
525 
526 //convert enum to string
527 const char * CML_convert(CML_Element t);
528 const char * CML_convert(CML_Attribute t);
529 const char * CML_convert(BondOrder b);
530 const char * CML_convert(MMP_NameSpace b);
531 const char * CML_convert(MMP_VibRecNameSpace b);
532 const char * CML_convert(MMP_MetadataNamespace b);
533 const char * CML_convert(MMP_MolListNameSpace b);
534 const char * CML_convert(MMP_SurfaceNameSpace b);
535 const char * CML_convert(MMP_OrbitalSetNS b);
536 const char * CML_convert(MMP_MetaWindowItems b);
537 const char * CML_convert(MMP_InternalCoordNS b);
538 const char * CML_convert(MMP_InputOptionsNS b);
539 const char * CML_convert(MMP_IOControlGroupNS b);
540 const char * CML_convert(MMP_IOSystemGroupNS b);
541 const char * CML_convert(MMP_IOBasisGroupNS b);
542 const char * CML_convert(MMP_IODataGroupNS b);
543 const char * CML_convert(MMP_IOGuessGroupNS b);
544 const char * CML_convert(MMP_IOSCFGroupNS b);
545 const char * CML_convert(MMP_IOMP2GroupNS b);
546 const char * CML_convert(MMP_IOHessGroupNS b);
547 const char * CML_convert(MMP_IODFTGroupNS b);
548 const char * CML_convert(MMP_IOStatPtGroupNS b);
549 const char * CML_convert(MMP_IOEFPGroupNS b);
550 const char * CML_convert(MMP_IOFMOGroupNS b);
551 const char * CML_convert(MMP_WindowDataNS b);
552 const char * CML_convert(MMP_BasisSetNS b);
553 const char * CML_convert(MMP_AnnotationTypesNS b);
554 const char * CML_TypetoName(short t);
555 //convert string to enum id
556 bool CML_convert(const char * s, CML_Element & t);
557 bool CML_convert(const char * s, CML_Attribute & t);
558 bool CML_convert(const char * s, BondOrder & b);
559 bool CML_convert(const char * s, MMP_NameSpace & b);
560 bool CML_convert(const char * s, MMP_VibRecNameSpace & b);
561 bool CML_convert(const char * s, MMP_MetadataNamespace & b);
562 bool CML_convert(const char * s, MMP_MolListNameSpace & b);
563 bool CML_convert(const char * s, MMP_SurfaceNameSpace & b);
564 bool CML_convert(const char * s, MMP_OrbitalSetNS & b);
565 bool CML_convert(const char * s, MMP_MetaWindowItems & b);
566 bool CML_convert(const char * s, MMP_InternalCoordNS & b);
567 bool CML_convert(const char * s, MMP_InputOptionsNS & b);
568 bool CML_convert(const char * s, MMP_IOControlGroupNS & b);
569 bool CML_convert(const char * s, MMP_IOSystemGroupNS & b);
570 bool CML_convert(const char * s, MMP_IOBasisGroupNS & b);
571 bool CML_convert(const char * s, MMP_IODataGroupNS & b);
572 bool CML_convert(const char * s, MMP_IOGuessGroupNS & b);
573 bool CML_convert(const char * s, MMP_IOSCFGroupNS & b);
574 bool CML_convert(const char * s, MMP_IOMP2GroupNS & b);
575 bool CML_convert(const char * s, MMP_IOHessGroupNS & b);
576 bool CML_convert(const char * s, MMP_IODFTGroupNS & b);
577 bool CML_convert(const char * s, MMP_IOStatPtGroupNS & b);
578 bool CML_convert(const char * s, MMP_IOEFPGroupNS & b);
579 bool CML_convert(const char * s, MMP_IOFMOGroupNS & b);
580 bool CML_convert(const char * s, MMP_WindowDataNS & b);
581 bool CML_convert(const char * s, MMP_BasisSetNS & b);
582 bool CML_convert(const char * s, MMP_AnnotationTypesNS & b);
583 
584 #endif
585 
586