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