ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/types/MoleculeStamp.hpp
Revision: 1930
Committed: Wed Jan 12 22:41:40 2005 UTC (19 years, 5 months ago) by gezelter
File size: 4772 byte(s)
Log Message:
merging new_design branch into OOPSE-2.0

File Contents

# Content
1 /*
2 * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3 *
4 * The University of Notre Dame grants you ("Licensee") a
5 * non-exclusive, royalty free, license to use, modify and
6 * redistribute this software in source and binary code form, provided
7 * that the following conditions are met:
8 *
9 * 1. Acknowledgement of the program authors must be made in any
10 * publication of scientific results based in part on use of the
11 * program. An acceptable form of acknowledgement is citation of
12 * the article in which the program was described (Matthew
13 * A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 * J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 * Parallel Simulation Engine for Molecular Dynamics,"
16 * J. Comput. Chem. 26, pp. 252-271 (2005))
17 *
18 * 2. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 *
21 * 3. Redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the
24 * distribution.
25 *
26 * This software is provided "AS IS," without a warranty of any
27 * kind. All express or implied conditions, representations and
28 * warranties, including any implied warranty of merchantability,
29 * fitness for a particular purpose or non-infringement, are hereby
30 * excluded. The University of Notre Dame and its licensors shall not
31 * be liable for any damages suffered by licensee as a result of
32 * using, modifying or distributing the software or its
33 * derivatives. In no event will the University of Notre Dame or its
34 * licensors be liable for any lost revenue, profit or data, or for
35 * direct, indirect, special, consequential, incidental or punitive
36 * damages, however caused and regardless of the theory of liability,
37 * arising out of the use of or inability to use software, even if the
38 * University of Notre Dame has been advised of the possibility of
39 * such damages.
40 */
41
42 #ifndef TYPES_MOLECULESTAMP_HPP
43 #define TYPES_MOLECULESTAMP_HPP
44 #include <vector>
45 #include <utility>
46 #include "types/AtomStamp.hpp"
47 #include "types/BondStamp.hpp"
48 #include "types/BendStamp.hpp"
49 #include "types/TorsionStamp.hpp"
50 #include "types/RigidBodyStamp.hpp"
51 #include "types/CutoffGroupStamp.hpp"
52 #include "io/LinkedAssign.hpp"
53
54
55 class MoleculeStamp{
56
57 public:
58 MoleculeStamp();
59 ~MoleculeStamp();
60
61 char* assignString( char* lhs, char* rhs );
62 char* assignDouble( char* lhs, double rhs );
63 char* assignInt( char* lhs, int rhs );
64 char* checkMe( void );
65
66 char* addAtom( AtomStamp* the_atom, int atomIndex );
67 char* addRigidBody( RigidBodyStamp* the_rigidbody, int rigidBodyIndex );
68 char* addCutoffGroup( CutoffGroupStamp* the_cutoffgroup, int cutoffGroupIndex );
69 char* addBond( BondStamp* the_bond, int bondIndex );
70 char* addBend( BendStamp* the_bend, int bendIndex );
71 char* addTorsion( TorsionStamp* the_torsion, int torsionIndex );
72
73 char* getID( void ) { return name; }
74 int getNAtoms( void ) { return n_atoms; }
75 int getNBonds( void ) { return n_bonds; }
76 int getNBends( void ) { return n_bends; }
77 int getNTorsions( void ) { return n_torsions; }
78 int getNRigidBodies(void) { return n_rigidbodies; }
79 int getNCutoffGroups(void){ return n_cutoffgroups; }
80 int getNIntegrable(void) { return n_integrable; }
81
82 AtomStamp* getAtom( int index ) { return atoms[index]; }
83 BondStamp* getBond( int index ) { return bonds[index]; }
84 BendStamp* getBend( int index ) { return bends[index]; }
85 TorsionStamp* getTorsion( int index ) { return torsions[index]; }
86 RigidBodyStamp* getRigidBody( int index ) { return rigidBodies[index]; }
87 CutoffGroupStamp* getCutoffGroup( int index ) { return cutoffGroups[index]; }
88
89
90 bool isBondInSameRigidBody(BondStamp*bond);
91 bool isAtomInRigidBody(int atomIndex);
92 bool isAtomInRigidBody(int atomIndex, int& whichRigidBody, int& consAtomIndex);
93 std::vector<std::pair<int, int> > getJointAtoms(int rb1, int rb2);
94
95 int haveExtras( void ) { return have_extras; }
96 LinkedAssign* getUnhandled( void ) { return unhandled; }
97
98 static char errMsg[500];
99 private:
100
101
102 char name[100];
103 int n_atoms;
104 int n_bonds;
105 int n_bends;
106 int n_torsions;
107 int n_rigidbodies;
108 int n_cutoffgroups;
109 int n_integrable;
110
111 int have_name, have_atoms, have_bonds, have_bends, have_torsions;
112 int have_rigidbodies, have_cutoffgroups;
113
114 AtomStamp** atoms;
115 BondStamp** bonds;
116 BendStamp** bends;
117 TorsionStamp** torsions;
118 RigidBodyStamp** rigidBodies;
119 CutoffGroupStamp** cutoffGroups;
120
121 LinkedAssign* unhandled; // the unhandled assignments
122 short int have_extras;
123 };
124
125 #endif