BrookBondParameters.h 6.13 KB
Newer Older
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
1
2
#ifndef OPENMM_BROOK_BOND_PARAMETERS_H_
#define OPENMM_BROOK_BOND_PARAMETERS_H_
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
3
4
5
6
7
8
9
10
11

/* -------------------------------------------------------------------------- *
 *                                   OpenMM                                   *
 * -------------------------------------------------------------------------- *
 * This is part of the OpenMM molecular simulation toolkit originating from   *
 * Simbios, the NIH National Center for Physics-Based Simulation of           *
 * Biological Structures at Stanford, funded under the NIH Roadmap for        *
 * Medical Research, grant U54 GM072970. See https://simtk.org.               *
 *                                                                            *
12
13
 * Portions copyright (c) 2009 Stanford University and the Authors.           *
 * Authors: Mark Friedrichs, Mike Houston                                     *
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
14
15
 * Contributors:                                                              *
 *                                                                            *
16
17
18
19
 * This program is free software: you can redistribute it and/or modify       *
 * it under the terms of the GNU Lesser General Public License as published   *
 * by the Free Software Foundation, either version 3 of the License, or       *
 * (at your option) any later version.                                        *
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
20
 *                                                                            *
21
22
23
24
 * This program is distributed in the hope that it will be useful,            *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of             *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              *
 * GNU Lesser General Public License for more details.                        *
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
25
 *                                                                            *
26
27
 * You should have received a copy of the GNU Lesser General Public License   *
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.      *
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
28
29
 * -------------------------------------------------------------------------- */

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
30
31
#include <vector>

Mark Friedrichs's avatar
New  
Mark Friedrichs committed
32
33
34
namespace OpenMM {

/**
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
35
 * Container for bond parameters
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
36
 */
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
37
class BrookBondParameters {
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
38
39
40

   public:
  
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
41
     // return values
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
42

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
43
44
      static const int DefaultReturnValue = 0;
      static const int ErrorReturnValue   = -1; 
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
45

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
46
47
48
49
50
51
52
53
54
55
56
      /** 
       * BrookBondParameters constructor
       * 
       * @param bondName                  bond name
       * @param numberOfParticlesInBond   no. of particles in each bond
       * @param numberOfParametersInBond  no. of parameters in each bond
       * @param numberOfBonds             no. of bonds
       * @param log                       optional log reference
       *
       */
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
57
      BrookBondParameters( std::string bondName, int numberOfParticlesInBond, int numberOfParametersInBond, int numberOfBonds, FILE* log );
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
58
  
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
59
      ~BrookBondParameters();
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  
      /** 
       * Set log file reference
       * 
       * @param  log file reference
       *
       * @return DefaultReturnValue
       *
       */
      
      int setLog( FILE* log );

      /* 
       * Get contents of object
       *
       * @param level of dump
       *
       * @return string containing contents
       *
       * */
      
      std::string getContents( int level ) const;

      /** 
       * Get log file reference
       * 
       * @return  log file reference
       *
       */
      
      FILE* getLog( void ) const;
      
      /** 
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
93
       * Set bond info
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
94
       * 
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
95
96
97
98
99
100
101
       * @param bondIndex       index of bond
       * @param particleIndices array of particle indices
       * @param bondParameters  array of bond parameters
       *
       * @return  DefaultReturnValue
       *
       * @throw OpenMMException exeception if bond index is invalid
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
102
103
104
       *
       */
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
      int setBond( int bondIndex, int* particleIndices, double* bondParameters );
      
      /** 
       * Get bond name
       * 
       * @return  bond name
       *
       */
      
      std::string getBondName( void ) const;
      
      /** 
       * Set bond name
       * 
       * @param bondName       bond name
       *
       * @return  DefaultReturnValue
       *
       */
      
      //int setBondName( std::string bondName );
      
      /** 
       * Get NumberOfParticlesInBond
       * 
       * @return NumberOfParticlesInBond
       *
       */
      
      int getNumberOfParticlesInBond( void ) const;
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
135
136
      
      /** 
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
137
       * Get NumberOfParametersInBond
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
138
       * 
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
139
       * @return NumberOfParametersInBond
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
140
141
142
       *
       */
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
143
144
145
146
147
148
149
150
      int getNumberOfParametersInBond( void ) const;
      
      /** 
       * Get NumberOfBonds
       * 
       * @return NumberOfBonds
       *
       */
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
151
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
152
153
      int getNumberOfBonds( void ) const;
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
      /** 
       * Get particle indices
       * 
       * @return particle indices
       *
       */
      
      const std::vector<std::vector<int>>& getParticleIndices( void ) const;
      
      /** 
       * Get parameters
       * 
       * @return parameters
       *
       */
      
      const std::vector<std::vector<double>>& getBondParameters( void ) const;
      
Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
172
173
174
175
176
177
178
179
180
181
182
183
      /*  
       * Get contents of object
       *
       *
       * @param level   level of dump
       *
       * @return string containing contents
       *
       * */
    
      std::string getContentsString( int level = 0 ) const;

Mark Friedrichs's avatar
New  
Mark Friedrichs committed
184
185
186
187
188
189
   private:
   
      // log file reference

      FILE* _log;

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
190
      // bond name
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
191

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
192
      std::string _bondName;
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
193

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
194
      // number of bonds
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
195

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
196
197
198
199
200
      int _numberOfBonds;
      int _numberOfParticlesInBond;
      int _numberOfParametersInBond;
   
      // particle indices and parameters
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
201

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
202
203
      std::vector<std::vector<int>>    _particleIndices;
      std::vector<std::vector<double>> _bondParameters;
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
204

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
205
206
207
208
209
210
211
212
213
214
215
216
217
218
      /* 
       * Get contents of object
       *
       * @param tab         tab
       * @param description description
       * @param value       value
       *
       * @return string containing contents
       *
       * */
      
      std::string _getLine( const std::string& tab, const std::string& description,
                            const std::string& value ) const;
      
Mark Friedrichs's avatar
New  
Mark Friedrichs committed
219
220
221
222
};

} // namespace OpenMM

Mark Friedrichs's avatar
Mods  
Mark Friedrichs committed
223
#endif /* OPENMM_BROOK_BOND_PARAMETERS_H_ */