ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/io/Globals.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/io/Globals.cpp (file contents):
Revision 2108 by chrisfen, Thu Mar 10 15:10:24 2005 UTC vs.
Revision 2109 by tim, Thu Mar 10 20:28:17 2005 UTC

# Line 123 | Line 123 | Globals::~Globals(){
123  
124   Globals::~Globals(){
125    int i;
126
127  for( i=0; i<hash_size; i++ ){
128    if( command_table[i] != NULL ) delete command_table[i];
129  }
130  delete[] command_table;
131
126    if( components != NULL ){
127      for( i=0; i<n_components; i++ ) delete components[i];
128      delete[] components;
# Line 138 | Line 132 | void Globals::initalize(){
132   void Globals::initalize(){
133    int i;
134    
141  hash_size = 23;
142  hash_shift = 4;
143  
135    components = NULL;
136    
137 <  command_table = new LinkedCommand*[hash_size];
138 <  for( i=0; i<hash_size; i++ ) command_table[i] = NULL;
139 <  
140 <  addHash( "forceField",    G_FORCEFIELD );
141 <  addHash( "nComponents",   G_NCOMPONENTS );
142 <  addHash( "targetTemp",    G_TARGETTEMP );
143 <  addHash( "ensemble",      G_ENSEMBLE );
144 <  
145 <  addHash( "dt",            G_DT );
146 <  addHash( "runTime",       G_RUNTIME );
147 <  
148 <  addHash( "initialConfig", G_INITIALCONFIG );
149 <  addHash( "finalConfig",   G_FINALCONFIG );
150 <  addHash( "nMol",          G_NMOL );
151 <  addHash( "density",       G_DENSITY );
152 <  addHash( "box",           G_BOX );
153 <  addHash( "boxX",          G_BOXX );
154 <  addHash( "boxY",          G_BOXY );
155 <  addHash( "boxZ",          G_BOXZ );
156 <  addHash( "sampleTime",    G_SAMPLETIME );
157 <  addHash( "resetTime",     G_RESETTIME );
158 <  addHash( "statusTime",    G_STATUSTIME );
159 <  addHash( "cutoffRadius",  G_RCUT );
160 <  addHash( "switchingRadius",  G_RSW );
161 <  addHash( "dielectric",    G_DIELECTRIC );
162 <  addHash( "tempSet",       G_TEMPSET );
163 <  addHash( "thermalTime",   G_THERMALTIME );
164 <  addHash( "mixingRule",    G_MIXINGRULE);
165 <  addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
166 <  addHash( "useReactionField",                     G_USERF );
167 <  addHash( "targetPressure",                       G_TARGETPRESSURE);
168 <  addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
169 <  addHash( "tauBarostat",                          G_TAUBAROSTAT);
170 <  addHash( "zconsTime",                            G_ZCONSTIME);
171 <  addHash( "nZconstraints",                        G_NZCONSTRAINTS);
172 <  addHash( "zconsTol",                             G_ZCONSTOL);
173 <  addHash( "zconsForcePolicy",                     G_ZCONSFORCEPOLICY);
174 <  addHash( "seed",                                 G_SEED);
175 <  addHash( "useInitialTime",                       G_USEINITTIME);
176 <  addHash( "useInitialExtendedSystemState",        G_USEINIT_XS_STATE);
177 <  addHash( "orthoBoxTolerance",                    G_ORTHOBOXTOLERANCE);
178 <  addHash( "minimizer",                            G_MINIMIZER);
179 <  addHash( "minimizerMaxIter",                     G_MIN_MAXITER);
180 <  addHash( "minimizerWriteFrq",                    G_MIN_WRITEFRQ);
181 <  addHash( "minimizerStepSize",                    G_MIN_STEPSIZE);
182 <  addHash( "minimizerFTol",                        G_MIN_FTOL);
183 <  addHash( "minimizerGTol",                        G_MIN_GTOL);
184 <  addHash( "minimizerLSTol",                       G_MIN_LSTOL);
185 <  addHash( "minimizerLSMaxIter",                   G_MIN_LSMAXITER);
186 <  addHash( "zconsGap",                             G_ZCONSGAP);
187 <  addHash( "zconsFixtime",                         G_ZCONSFIXTIME);
188 <  addHash( "zconsUsingSMD",                        G_ZCONSUSINGSMD);
189 <  addHash( "useSolidThermInt",                     G_USE_SOLID_THERM_INT);
190 <  addHash( "useLiquidThermInt",                    G_USE_LIQUID_THERM_INT);
191 <  addHash( "thermodynamicIntegrationLambda",       G_THERM_INT_LAMBDA);
192 <  addHash( "thermodynamicIntegrationK",            G_THERM_INT_K);
202 <  addHash( "forceFieldVariant",                    G_FORCEFIELD_VARIANT);
203 <  addHash( "forceFieldFileName",                   G_FORCEFIELD_FILENAME);
204 <  addHash( "thermIntDistSpringConst",              G_THERM_INT_DIST_SPRING);
205 <  addHash( "thermIntThetaSpringConst",             G_THERM_INT_THETA_SPRING);
206 <  addHash( "thermIntOmegaSpringConst",             G_THERM_INT_OMEGA_SPRING);
137 >  command_table.insert(CommandMapType::value_type("forceField", G_FORCEFIELD));
138 >  command_table.insert(CommandMapType::value_type("nComponents", G_NCOMPONENTS));
139 >  command_table.insert(CommandMapType::value_type("targetTemp", G_TARGETTEMP));
140 >  command_table.insert(CommandMapType::value_type("ensemble", G_ENSEMBLE));
141 >  command_table.insert(CommandMapType::value_type("dt", G_DT));
142 >  command_table.insert(CommandMapType::value_type("runTime", G_RUNTIME));
143 >  command_table.insert(CommandMapType::value_type("initialConfig", G_INITIALCONFIG));
144 >  command_table.insert(CommandMapType::value_type("finalConfig", G_FINALCONFIG));
145 >  command_table.insert(CommandMapType::value_type("nMol", G_NMOL));
146 >  command_table.insert(CommandMapType::value_type("density", G_DENSITY));
147 >  command_table.insert(CommandMapType::value_type("box", G_BOX));
148 >  command_table.insert(CommandMapType::value_type("boxX", G_BOXX));
149 >  command_table.insert(CommandMapType::value_type("boxY", G_BOXY));
150 >  command_table.insert(CommandMapType::value_type("boxZ", G_BOXZ));
151 >  command_table.insert(CommandMapType::value_type("sampleTime", G_SAMPLETIME));
152 >  command_table.insert(CommandMapType::value_type("resetTime", G_RESETTIME));
153 >  command_table.insert(CommandMapType::value_type("statusTime", G_STATUSTIME));
154 >  command_table.insert(CommandMapType::value_type("cutoffRadius", G_RCUT));
155 >  command_table.insert(CommandMapType::value_type("switchingRadius", G_RSW));
156 >  command_table.insert(CommandMapType::value_type("dielectric", G_DIELECTRIC));
157 >  command_table.insert(CommandMapType::value_type("tempSet", G_TEMPSET));
158 >  command_table.insert(CommandMapType::value_type("thermalTime", G_THERMALTIME));
159 >  command_table.insert(CommandMapType::value_type("mixingRule", G_MIXINGRULE));
160 >  command_table.insert(CommandMapType::value_type("usePeriodicBoundaryConditions", G_USEPBC));
161 >  command_table.insert(CommandMapType::value_type("useReactionField", G_USERF));
162 >  command_table.insert(CommandMapType::value_type("targetPressure", G_TARGETPRESSURE));
163 >  command_table.insert(CommandMapType::value_type("tauThermostat", G_TAUTHERMOSTAT));
164 >  command_table.insert(CommandMapType::value_type("tauBarostat", G_TAUBAROSTAT));
165 >  command_table.insert(CommandMapType::value_type("zconsTime", G_ZCONSTIME));
166 >  command_table.insert(CommandMapType::value_type("nZconstraints", G_NZCONSTRAINTS));
167 >  command_table.insert(CommandMapType::value_type("zconsTol", G_ZCONSTOL));
168 >  command_table.insert(CommandMapType::value_type("zconsForcePolicy", G_ZCONSFORCEPOLICY));
169 >  command_table.insert(CommandMapType::value_type("seed", G_SEED));
170 >  command_table.insert(CommandMapType::value_type("useInitialTime", G_USEINITTIME));
171 >  command_table.insert(CommandMapType::value_type("useInitialExtendedSystemState", G_USEINIT_XS_STATE));
172 >  command_table.insert(CommandMapType::value_type("orthoBoxTolerance", G_ORTHOBOXTOLERANCE));
173 >  command_table.insert(CommandMapType::value_type("minimizer", G_MINIMIZER));
174 >  command_table.insert(CommandMapType::value_type("minimizerMaxIter", G_MIN_MAXITER));
175 >  command_table.insert(CommandMapType::value_type("minimizerWriteFrq", G_MIN_WRITEFRQ));
176 >  command_table.insert(CommandMapType::value_type("minimizerStepSize", G_MIN_STEPSIZE));
177 >  command_table.insert(CommandMapType::value_type("minimizerFTol", G_MIN_FTOL));
178 >  command_table.insert(CommandMapType::value_type("minimizerGTol", G_MIN_GTOL));
179 >  command_table.insert(CommandMapType::value_type("minimizerLSTol", G_MIN_LSTOL));
180 >  command_table.insert(CommandMapType::value_type("minimizerLSMaxIter", G_MIN_LSMAXITER));
181 >  command_table.insert(CommandMapType::value_type("zconsGap", G_ZCONSGAP));
182 >  command_table.insert(CommandMapType::value_type("zconsFixtime", G_ZCONSFIXTIME));
183 >  command_table.insert(CommandMapType::value_type("zconsUsingSMD", G_ZCONSUSINGSMD));
184 >  command_table.insert(CommandMapType::value_type("useSolidThermInt", G_USE_SOLID_THERM_INT));
185 >  command_table.insert(CommandMapType::value_type("useLiquidThermInt", G_USE_LIQUID_THERM_INT));
186 >  command_table.insert(CommandMapType::value_type("thermodynamicIntegrationLambda", G_THERM_INT_LAMBDA));
187 >  command_table.insert(CommandMapType::value_type("thermodynamicIntegrationK", G_THERM_INT_K));
188 >  command_table.insert(CommandMapType::value_type("forceFieldVariant", G_FORCEFIELD_VARIANT));
189 >  command_table.insert(CommandMapType::value_type("forceFieldFileName", G_FORCEFIELD_FILENAME));
190 >  command_table.insert(CommandMapType::value_type("thermIntDistSpringConst", G_THERM_INT_DIST_SPRING));
191 >  command_table.insert(CommandMapType::value_type("thermIntThetaSpringConst", G_THERM_INT_THETA_SPRING));
192 >  command_table.insert(CommandMapType::value_type("thermIntOmegaSpringConst", G_THERM_INT_OMEGA_SPRING));
193  
194 +
195    strcpy( mixingRule,"standard");  //default mixing rules to standard.
196    usePBC = 1; //default  periodic boundry conditions to on
197    useRF  = 0;
# Line 412 | Line 399 | int Globals::globalAssign( event* the_event ){
399    char err[300];
400    
401    token = 0;
402 <  key = hash( lhs );
403 <  if( command_table[key] != NULL ) token = command_table[key]->match( lhs );
402 >
403 >  CommandMapType::iterator iter;
404 >  std::string keyword(lhs);
405 >  iter = command_table.find(keyword);
406 >  if (iter != command_table.end()) {
407 >    token = iter->second;
408 >  }
409    
410    if( token ){
411      
# Line 1935 | Line 1927 | int Globals::globalEnd( event* the_event ){
1927    if( the_event->err_msg != NULL ) return 0;
1928  
1929    return 1;
1938 }
1939
1940 int Globals::hash( char* text ){
1941
1942  register unsigned short int i = 0; // loop counter
1943  int key = 0; // the hash key
1944  
1945  while( text[i] != '\0' ){
1946    
1947    key = ( ( key << hash_shift ) + text[i] ) % hash_size;
1948    
1949    i++;
1950  }
1951  
1952  if( key < 0 ){
1953
1954    // if the key is less than zero, we've had an overflow error
1955
1956    sprintf( painCave.errMsg,
1957             "There has been an overflow error in the Globals' hash key.");
1958    painCave.isFatal = 1;
1959    simError();
1960 #ifdef IS_MPI
1961    if( painCave.isEventLoop ){
1962      if( worldRank == 0 ) mpiInterfaceExit();
1963    }
1964 #endif //is_mpi
1965  }
1966  
1967  return key;
1930   }
1931  
1970 void Globals::addHash( char* text, int token ){
1971
1972  int key;
1973  LinkedCommand* the_element;
1974
1975  the_element = new LinkedCommand;
1976  the_element->setValues( text, token );
1977
1978  key = hash( text );
1979
1980  the_element->setNext( command_table[key] );
1981  command_table[key] = the_element;
1982 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines