ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/src/io/Globals.hpp
Revision: 2302
Committed: Fri Sep 16 16:07:39 2005 UTC (18 years, 9 months ago) by chrisfen
File size: 13709 byte(s)
Log Message:
some fixes but even more breaking (cutting out the old way to do reaction field)

File Contents

# User Rev Content
1 gezelter 2204 /*
2 gezelter 1930 * 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 gezelter 1490
45     #include <iostream>
46    
47     #include <stdlib.h>
48     #include <vector>
49 tim 2109 #include <string>
50     #include <map>
51 gezelter 1490
52 tim 1492 #include "io/BASS_interface.h"
53     #include "types/Component.hpp"
54     #include "types/MakeStamps.hpp"
55     #include "types/ZconStamp.hpp"
56 gezelter 1490
57    
58 gezelter 1930
59 tim 2109 /**
60     * @class Globals Globals.hpp "io/Globals.hpp"
61     * @brief parsing and storing global parameters for simulation
62     * @todo need refactorying
63     */
64 gezelter 1490 class Globals{
65    
66 gezelter 2204 public:
67 gezelter 1490
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 chrisfen 2279 double getThermIntLambda(void) { return thermodynamic_integration_lambda; }
135 gezelter 1490 double getThermIntK(void) { return thermodynamic_integration_k; }
136     char* getForceFieldVariant( void ) { return forcefield_variant; }
137 chrisfen 2279 char* getForceFieldFileName() { return forcefield_filename; }
138 chrisfen 2101 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 chrisfen 2279 double getSurfaceTension(void) { return surface_tension; }
142     bool getPrintPressureTensor(void) { return print_pressure_tensor;}
143 chrisfen 2302 char* getElectrostaticSummationMethod(void) { return electrostaticSummationMethod; }
144 chrisfen 2297 double getDampingAlpha(void) { return dampingAlpha; }
145 gezelter 2285 char* getCutoffPolicy(void) { return cutoffPolicy; }
146 tim 2233
147 gezelter 1490 short int haveDt( void ) { return have_dt; }
148     short int haveRunTime( void ) { return have_run_time; }
149     short int haveEnsemble( void ) { return have_ensemble; }
150     short int haveTargetTemp( void ) { return have_target_temp; }
151     short int haveInitialConfig( void ) { return have_initial_config; }
152     short int haveFinalConfig( void ) { return have_final_config; }
153     short int haveNMol( void ) { return have_n_mol; }
154     short int haveDensity( void ) { return have_density; }
155     short int haveBox( void ) { return have_box; }
156     short int haveBoxX( void ) { return have_box_x; }
157     short int haveBoxY( void ) { return have_box_y; }
158     short int haveBoxZ( void ) { return have_box_z; }
159     short int haveSampleTime( void ) { return have_sample_time; }
160     short int haveResetTime( void ) { return have_reset_time; }
161     short int haveStatusTime( void ) { return have_status_time; }
162     short int haveThermalTime( void ) { return have_thermal_time; }
163     short int haveRcut( void ) { return have_rcut; }
164     short int haveRsw( void ) { return have_rsw; }
165     short int haveDielectric( void ) { return have_dielectric; }
166     short int haveTempSet( void ) { return have_tempSet; }
167     short int haveTargetPressure( void ){ return have_target_pressure; }
168     short int haveQmass( void ) { return have_q_mass; }
169     short int haveTauThermostat( void ) { return have_tau_thermostat; }
170     short int haveTauBarostat( void ) { return have_tau_barostat; }
171     short int haveZconstraintTime(void) { return have_zcons_time; }
172     short int haveZconstraints( void ) { return have_zConstraints; }
173     short int haveZconsTol(void) { return have_zcons_tol; }
174     short int haveZconsForcePolicy(void){ return have_zcons_force_policy; }
175     short int haveZConsGap(void) { return have_zcons_gap; }
176     short int haveZConsFixTime(void) { return have_zcons_fixtime; }
177     short int haveZConsUsingSMD(void) { return have_zcons_using_smd; }
178     short int haveSeed(void) { return have_seed; }
179     short int haveMinimizer(void) { return have_minimizer; }
180     short int haveMinMaxIter(void) { return have_minimizer_maxiteration; }
181     short int haveMinWriteFrq(void) { return have_minimizer_writefrq; }
182     short int haveMinStepSize(void) { return have_minimizer_stepsize; }
183     short int haveMinFTol(void) { return have_minimizer_ftol; }
184     short int haveMinGTol(void) { return have_minimizer_gtol; }
185     short int haveMinLSTol(void) { return have_minimizer_ls_tol; }
186     short int haveMinLSMaxIter(void) { return have_minimizer_ls_maxiteration;}
187     short int haveThermIntLambda(void) { return have_thermodynamic_integration_lambda; }
188 chrisfen 2297 short int haveThermIntK(void) { return have_thermodynamic_integration_k; }
189 gezelter 2285 short int haveForceFieldVariant(void) { return have_forcefield_variant; }
190 chrisfen 2101 short int haveForceFieldFileName(void) { return have_forcefield_filename; }
191 gezelter 2285 short int haveDistSpringConst(void) { return have_dist_spring_constant; }
192     short int haveThetaSpringConst(void) { return have_theta_spring_constant; }
193     short int haveOmegaSpringConst(void) { return have_omega_spring_constant; }
194     short int haveSurfaceTension(void) { return have_surface_tension; }
195 tim 2238 short int havePrintPressureTensor(void) {return have_print_pressure_tensor;}
196 chrisfen 2302 short int haveElectrostaticSummationMethod(void) {return have_electro_sum_method;}
197 chrisfen 2297 short int haveDampingAlpha(void) { return have_damping_alpha; }
198 gezelter 2285 short int haveCutoffPolicy(void) { return have_cutoff_policy; }
199    
200 gezelter 1490 /* other accessors */
201     Component** getComponents( void ) { return components; }
202     ZconStamp** getZconStamp( void ) { return zConstraints; }
203    
204 gezelter 2204 private:
205 gezelter 1490
206 tim 2109
207     typedef std::map<std::string, int> CommandMapType;
208     CommandMapType command_table;
209    
210 gezelter 1490
211     char* checkMe( void );
212    
213     Component* current_component;
214     Component** components; // the array of components
215    
216     ZconStamp* current_zConstraint;
217     ZconStamp** zConstraints; // the array of zConstraints
218    
219     char force_field[100];
220     int n_components;
221     int n_zConstraints;
222     double target_temp;
223     double target_pressure;
224     char ensemble[100];
225     char mixingRule[100];
226     double dt;
227     double run_time;
228     char initial_config[120];
229     char final_config[120];
230     int n_mol;
231     double density;
232     double box;
233     double box_x, box_y, box_z;
234     double sample_time;
235     double status_time;
236     double resetTime;
237     double orthoBoxTolerance;
238     double thermal_time;
239     double rcut;
240     double rsw;
241     double dielectric;
242     int tempSet;
243     int useInitTime;
244     int useInitXSstate;
245     int usePBC;
246     double q_mass;
247     double tau_thermostat;
248     double tau_barostat;
249     double zcons_time;
250     double zcons_tol;
251     char zconsForcePolicy[100];
252     double zcons_gap;
253     double zcons_fixtime;
254     int zcons_using_smd;
255    
256     int seed;
257     char minimizer_name[100];
258     int minimizer_maxiteration;
259     int minimizer_writefrq;
260     double minimizer_stepsize;
261     double minimizer_ftol;
262     double minimizer_gtol;
263     double minimizer_ls_tol;
264     int minimizer_ls_maxiteration;
265     int useSolidThermInt;
266     int useLiquidThermInt;
267     double thermodynamic_integration_lambda;
268     double thermodynamic_integration_k;
269     char forcefield_variant[100];
270 tim 1957 char forcefield_filename[100];
271 chrisfen 2101 double therm_int_dist_spring;
272     double therm_int_theta_spring;
273     double therm_int_omega_spring;
274 tim 2235 double surface_tension;
275 tim 2238 bool print_pressure_tensor;
276 chrisfen 2302 char electrostaticSummationMethod[100];
277 chrisfen 2297 double dampingAlpha;
278 gezelter 2285 char cutoffPolicy[100];
279 tim 2233
280 gezelter 1490 //required arguments
281     short int have_force_field, have_n_components, have_target_temp;
282     short int have_target_pressure, have_ensemble, have_dt, have_run_time;
283    
284     // optional arguments
285     short int have_initial_config, have_final_config, have_n_mol;
286     short int have_density, have_box, have_box_x, have_box_y, have_box_z;
287     short int have_sample_time, have_status_time, have_rcut, have_dielectric;
288     short int have_tempSet, have_thermal_time, have_rsw, have_q_mass;
289     short int have_tau_thermostat, have_tau_barostat;
290     short int have_zcons_time, have_zConstraints, have_n_zConstraints;
291     short int have_zcons_tol, have_seed;
292     short int have_zcons_force_policy, have_reset_time;
293     short int have_zcons_gap, have_zcons_fixtime;
294     short int have_zcons_using_smd;
295     short int have_minimizer, have_minimizer_maxiteration;
296     short int have_minimizer_writefrq, have_minimizer_stepsize;
297     short int have_minimizer_ftol, have_minimizer_gtol;
298     short int have_minimizer_ls_tol, have_minimizer_ls_maxiteration;
299     short int have_thermodynamic_integration_lambda;
300     short int have_thermodynamic_integration_k;
301     short int have_forcefield_variant;
302 tim 1957 short int have_forcefield_filename;
303 chrisfen 2101 short int have_dist_spring_constant;
304     short int have_theta_spring_constant;
305     short int have_omega_spring_constant;
306 tim 2235 short int have_surface_tension;
307 tim 2238 short int have_print_pressure_tensor;
308 chrisfen 2302 short int have_electro_sum_method;
309 chrisfen 2297 short int have_damping_alpha;
310 gezelter 2285 short int have_cutoff_policy;
311 gezelter 1490 };
312    
313     #endif