ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/io/Globals.hpp
Revision: 2308
Committed: Fri Sep 16 23:04:47 2005 UTC (18 years, 9 months ago) by chuckv
File size: 13910 byte(s)
Log Message:
Added keywords for compressed dump files.

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 IO_GLOBALS_HPP
43 #define IO_GLOBALS_HPP
44
45 #include <iostream>
46
47 #include <stdlib.h>
48 #include <vector>
49 #include <string>
50 #include <map>
51
52 #include "io/BASS_interface.h"
53 #include "types/Component.hpp"
54 #include "types/MakeStamps.hpp"
55 #include "types/ZconStamp.hpp"
56
57
58
59 /**
60 * @class Globals Globals.hpp "io/Globals.hpp"
61 * @brief parsing and storing global parameters for simulation
62 * @todo need refactorying
63 */
64 class Globals{
65
66 public:
67
68 Globals();
69 ~Globals();
70
71 void initalize();
72
73 int newComponent( event* the_event );
74 int componentAssign( event* the_event );
75 int componentEnd( event* the_event );
76
77 int newZconstraint( event* the_event );
78 int zConstraintAssign( event* the_event );
79 int zConstraintEnd( event* the_event );
80
81 int globalAssign( event* the_event );
82 int globalEnd( event* the_event );
83
84 char* getForceField( void ) { return force_field; }
85 int getNComponents( void ) { return n_components; }
86 double getTargetTemp( void ) { return target_temp; }
87 double getTargetPressure( void ) { return target_pressure; }
88 double getQmass( void ) { return q_mass; }
89 double getTauThermostat( void ) { return tau_thermostat; }
90 double getTauBarostat( void ) { return tau_barostat; }
91 char* getEnsemble( void ) { return ensemble; }
92 double getDt( void ) { return dt; }
93 double getRunTime( void ) { return run_time; }
94
95 int getNzConstraints( void ) { return n_zConstraints; }
96 char* getInitialConfig( void ) { return initial_config; }
97 char* getFinalConfig( void ) { return final_config; }
98 int getNMol( void ) { return n_mol; }
99 double getDensity( void ) { return density; }
100 double getBox( void ) { return box; }
101 double getBoxX( void ) { return box_x; }
102 double getBoxY( void ) { return box_y; }
103 double getBoxZ( void ) { return box_z; }
104 double getSampleTime( void ) { return sample_time; }
105 double getStatusTime( void ) { return status_time; }
106 double getResetTime( void ) { return resetTime; }
107 double getThermalTime( void ) { return thermal_time; }
108 double getDielectric( void ) { return dielectric; }
109 double getRcut( void ) { return rcut; }
110 double getRsw( void ) { return rsw; }
111 int getTempSet( void ) { return tempSet; }
112 int getUseInitTime( void ) { return useInitTime; }
113 int getUseInitXSstate( void ) { return useInitXSstate; }
114 double getOrthoBoxTolerance(void) { return orthoBoxTolerance; }
115 int getPBC( void ) { return usePBC; }
116 char* getMixingRule( void) { return mixingRule; }
117 double getZconsTime(void) { return zcons_time; }
118 double getZconsTol(void) { return zcons_tol; }
119 char* getZconsForcePolicy(void) { return zconsForcePolicy; }
120 double getZconsGap(void) { return zcons_gap; }
121 double getZconsFixtime(void) { return zcons_fixtime; }
122 int getZconsUsingSMD(void) { return zcons_using_smd; }
123 int getSeed(void) { return seed; }
124 char* getMinimizer(void) { return minimizer_name; }
125 int getMinMaxIter(void) { return minimizer_maxiteration; }
126 int getMinWriteFrq(void) { return minimizer_writefrq; }
127 double getMinStepSize(void) { return minimizer_stepsize; }
128 double getMinFTol(void) { return minimizer_ftol; }
129 double getMinGTol(void) { return minimizer_gtol; }
130 double getMinLSTol(void) { return minimizer_ls_tol; }
131 int getMinLSMaxIter(void) { return minimizer_ls_maxiteration; }
132 int getUseSolidThermInt(void) { return useSolidThermInt; }
133 int getUseLiquidThermInt(void) { return useLiquidThermInt; }
134 double getThermIntLambda(void) { return thermodynamic_integration_lambda; }
135 double getThermIntK(void) { return thermodynamic_integration_k; }
136 char* getForceFieldVariant( void ) { return forcefield_variant; }
137 char* getForceFieldFileName() { return forcefield_filename; }
138 double getDistSpringConst(void) { return therm_int_dist_spring; }
139 double getThetaSpringConst(void) { return therm_int_theta_spring; }
140 double getOmegaSpringConst(void) { return therm_int_omega_spring; }
141 double getSurfaceTension(void) { return surface_tension; }
142 bool getPrintPressureTensor(void) { return print_pressure_tensor;}
143 char* getElectrostaticSummationMethod(void) { return electrostaticSummationMethod; }
144 double getDampingAlpha(void) { return dampingAlpha; }
145 char* getCutoffPolicy(void) { return cutoffPolicy; }
146 bool getCompressDumpFile(void) { return compressDumpFile;}
147
148 short int haveDt( void ) { return have_dt; }
149 short int haveRunTime( void ) { return have_run_time; }
150 short int haveEnsemble( void ) { return have_ensemble; }
151 short int haveTargetTemp( void ) { return have_target_temp; }
152 short int haveInitialConfig( void ) { return have_initial_config; }
153 short int haveFinalConfig( void ) { return have_final_config; }
154 short int haveNMol( void ) { return have_n_mol; }
155 short int haveDensity( void ) { return have_density; }
156 short int haveBox( void ) { return have_box; }
157 short int haveBoxX( void ) { return have_box_x; }
158 short int haveBoxY( void ) { return have_box_y; }
159 short int haveBoxZ( void ) { return have_box_z; }
160 short int haveSampleTime( void ) { return have_sample_time; }
161 short int haveResetTime( void ) { return have_reset_time; }
162 short int haveStatusTime( void ) { return have_status_time; }
163 short int haveThermalTime( void ) { return have_thermal_time; }
164 short int haveRcut( void ) { return have_rcut; }
165 short int haveRsw( void ) { return have_rsw; }
166 short int haveDielectric( void ) { return have_dielectric; }
167 short int haveTempSet( void ) { return have_tempSet; }
168 short int haveTargetPressure( void ){ return have_target_pressure; }
169 short int haveQmass( void ) { return have_q_mass; }
170 short int haveTauThermostat( void ) { return have_tau_thermostat; }
171 short int haveTauBarostat( void ) { return have_tau_barostat; }
172 short int haveZconstraintTime(void) { return have_zcons_time; }
173 short int haveZconstraints( void ) { return have_zConstraints; }
174 short int haveZconsTol(void) { return have_zcons_tol; }
175 short int haveZconsForcePolicy(void){ return have_zcons_force_policy; }
176 short int haveZConsGap(void) { return have_zcons_gap; }
177 short int haveZConsFixTime(void) { return have_zcons_fixtime; }
178 short int haveZConsUsingSMD(void) { return have_zcons_using_smd; }
179 short int haveSeed(void) { return have_seed; }
180 short int haveMinimizer(void) { return have_minimizer; }
181 short int haveMinMaxIter(void) { return have_minimizer_maxiteration; }
182 short int haveMinWriteFrq(void) { return have_minimizer_writefrq; }
183 short int haveMinStepSize(void) { return have_minimizer_stepsize; }
184 short int haveMinFTol(void) { return have_minimizer_ftol; }
185 short int haveMinGTol(void) { return have_minimizer_gtol; }
186 short int haveMinLSTol(void) { return have_minimizer_ls_tol; }
187 short int haveMinLSMaxIter(void) { return have_minimizer_ls_maxiteration;}
188 short int haveThermIntLambda(void) { return have_thermodynamic_integration_lambda; }
189 short int haveThermIntK(void) { return have_thermodynamic_integration_k; }
190 short int haveForceFieldVariant(void) { return have_forcefield_variant; }
191 short int haveForceFieldFileName(void) { return have_forcefield_filename; }
192 short int haveDistSpringConst(void) { return have_dist_spring_constant; }
193 short int haveThetaSpringConst(void) { return have_theta_spring_constant; }
194 short int haveOmegaSpringConst(void) { return have_omega_spring_constant; }
195 short int haveSurfaceTension(void) { return have_surface_tension; }
196 short int havePrintPressureTensor(void) {return have_print_pressure_tensor;}
197 short int haveElectrostaticSummationMethod(void) {return have_electro_sum_method;}
198 short int haveDampingAlpha(void) { return have_damping_alpha; }
199 short int haveCutoffPolicy(void) { return have_cutoff_policy; }
200 short int haveCompressDumpfile(void) { return have_compress_dumpfile; }
201
202 /* other accessors */
203 Component** getComponents( void ) { return components; }
204 ZconStamp** getZconStamp( void ) { return zConstraints; }
205
206 private:
207
208
209 typedef std::map<std::string, int> CommandMapType;
210 CommandMapType command_table;
211
212
213 char* checkMe( void );
214
215 Component* current_component;
216 Component** components; // the array of components
217
218 ZconStamp* current_zConstraint;
219 ZconStamp** zConstraints; // the array of zConstraints
220
221 char force_field[100];
222 int n_components;
223 int n_zConstraints;
224 double target_temp;
225 double target_pressure;
226 char ensemble[100];
227 char mixingRule[100];
228 double dt;
229 double run_time;
230 char initial_config[120];
231 char final_config[120];
232 int n_mol;
233 double density;
234 double box;
235 double box_x, box_y, box_z;
236 double sample_time;
237 double status_time;
238 double resetTime;
239 double orthoBoxTolerance;
240 double thermal_time;
241 double rcut;
242 double rsw;
243 double dielectric;
244 int tempSet;
245 int useInitTime;
246 int useInitXSstate;
247 int usePBC;
248 double q_mass;
249 double tau_thermostat;
250 double tau_barostat;
251 double zcons_time;
252 double zcons_tol;
253 char zconsForcePolicy[100];
254 double zcons_gap;
255 double zcons_fixtime;
256 int zcons_using_smd;
257
258 int seed;
259 char minimizer_name[100];
260 int minimizer_maxiteration;
261 int minimizer_writefrq;
262 double minimizer_stepsize;
263 double minimizer_ftol;
264 double minimizer_gtol;
265 double minimizer_ls_tol;
266 int minimizer_ls_maxiteration;
267 int useSolidThermInt;
268 int useLiquidThermInt;
269 double thermodynamic_integration_lambda;
270 double thermodynamic_integration_k;
271 char forcefield_variant[100];
272 char forcefield_filename[100];
273 double therm_int_dist_spring;
274 double therm_int_theta_spring;
275 double therm_int_omega_spring;
276 double surface_tension;
277 bool print_pressure_tensor;
278 char electrostaticSummationMethod[100];
279 double dampingAlpha;
280 char cutoffPolicy[100];
281 bool compressDumpFile;
282
283 //required arguments
284 short int have_force_field, have_n_components, have_target_temp;
285 short int have_target_pressure, have_ensemble, have_dt, have_run_time;
286
287 // optional arguments
288 short int have_initial_config, have_final_config, have_n_mol;
289 short int have_density, have_box, have_box_x, have_box_y, have_box_z;
290 short int have_sample_time, have_status_time, have_rcut, have_dielectric;
291 short int have_tempSet, have_thermal_time, have_rsw, have_q_mass;
292 short int have_tau_thermostat, have_tau_barostat;
293 short int have_zcons_time, have_zConstraints, have_n_zConstraints;
294 short int have_zcons_tol, have_seed;
295 short int have_zcons_force_policy, have_reset_time;
296 short int have_zcons_gap, have_zcons_fixtime;
297 short int have_zcons_using_smd;
298 short int have_minimizer, have_minimizer_maxiteration;
299 short int have_minimizer_writefrq, have_minimizer_stepsize;
300 short int have_minimizer_ftol, have_minimizer_gtol;
301 short int have_minimizer_ls_tol, have_minimizer_ls_maxiteration;
302 short int have_thermodynamic_integration_lambda;
303 short int have_thermodynamic_integration_k;
304 short int have_forcefield_variant;
305 short int have_forcefield_filename;
306 short int have_dist_spring_constant;
307 short int have_theta_spring_constant;
308 short int have_omega_spring_constant;
309 short int have_surface_tension;
310 short int have_print_pressure_tensor;
311 short int have_electro_sum_method;
312 short int have_damping_alpha;
313 short int have_cutoff_policy;
314 short int have_compress_dumpfile;
315 };
316
317 #endif