| 46 | 
  | 
 * @time 13:51am | 
| 47 | 
  | 
 * @version 1.0 | 
| 48 | 
  | 
 */ | 
| 49 | 
< | 
 | 
| 49 | 
> | 
#include <exception> | 
| 50 | 
  | 
#include <iostream> | 
| 51 | 
  | 
#include <sstream> | 
| 52 | 
  | 
#include <string> | 
| 147 | 
  | 
             simParams = treeParser.walkTree(parser.getAST()); | 
| 148 | 
  | 
 | 
| 149 | 
  | 
        } | 
| 150 | 
+ | 
 | 
| 151 | 
  | 
       | 
| 152 | 
  | 
      catch(antlr::MismatchedCharException& e) { | 
| 153 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 153 | 
> | 
          sprintf(painCave.errMsg,  | 
| 154 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 155 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 156 | 
> | 
          painCave.isFatal = 1; | 
| 157 | 
> | 
          simError();            | 
| 158 | 
  | 
      } | 
| 159 | 
  | 
      catch(antlr::MismatchedTokenException &e) { | 
| 160 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 160 | 
> | 
          sprintf(painCave.errMsg,  | 
| 161 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 162 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 163 | 
> | 
          painCave.isFatal = 1; | 
| 164 | 
> | 
          simError();    | 
| 165 | 
  | 
      } | 
| 166 | 
  | 
      catch(antlr::NoViableAltForCharException &e) { | 
| 167 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 167 | 
> | 
          sprintf(painCave.errMsg,  | 
| 168 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 169 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 170 | 
> | 
          painCave.isFatal = 1; | 
| 171 | 
> | 
          simError();    | 
| 172 | 
  | 
      } | 
| 173 | 
  | 
      catch(antlr::NoViableAltException &e) { | 
| 174 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 174 | 
> | 
          sprintf(painCave.errMsg,  | 
| 175 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 176 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 177 | 
> | 
          painCave.isFatal = 1; | 
| 178 | 
> | 
          simError();    | 
| 179 | 
  | 
      } | 
| 180 | 
+ | 
       | 
| 181 | 
  | 
        catch(antlr::TokenStreamRecognitionException& e) { | 
| 182 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 182 | 
> | 
          sprintf(painCave.errMsg,  | 
| 183 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 184 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 185 | 
> | 
          painCave.isFatal = 1; | 
| 186 | 
> | 
          simError();    | 
| 187 | 
  | 
        } | 
| 188 | 
+ | 
         | 
| 189 | 
  | 
        catch(antlr::TokenStreamIOException& e) { | 
| 190 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << endl; | 
| 190 | 
> | 
          sprintf(painCave.errMsg,  | 
| 191 | 
> | 
                  "parser exception: %s\n", | 
| 192 | 
> | 
                  e.getMessage().c_str()); | 
| 193 | 
> | 
          painCave.isFatal = 1; | 
| 194 | 
> | 
          simError(); | 
| 195 | 
  | 
        } | 
| 196 | 
+ | 
         | 
| 197 | 
  | 
        catch(antlr::TokenStreamException& e) { | 
| 198 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << endl; | 
| 198 | 
> | 
          sprintf(painCave.errMsg,  | 
| 199 | 
> | 
                  "parser exception: %s\n", | 
| 200 | 
> | 
                  e.getMessage().c_str()); | 
| 201 | 
> | 
          painCave.isFatal = 1; | 
| 202 | 
> | 
          simError(); | 
| 203 | 
  | 
        }         | 
| 204 | 
  | 
       catch (antlr::RecognitionException& e) { | 
| 205 | 
< | 
          cerr<< "parser exception: " << e.getMessage() << " " <<  e.getFilename() << ":" << e.getLine() << " " << e.getColumn() << endl; | 
| 205 | 
> | 
          sprintf(painCave.errMsg,  | 
| 206 | 
> | 
                  "parser exception: %s %s:%d:%d\n", | 
| 207 | 
> | 
                  e.getMessage().c_str(),e.getFilename().c_str(), e.getLine(), e.getColumn()); | 
| 208 | 
> | 
          painCave.isFatal = 1; | 
| 209 | 
> | 
          simError();           | 
| 210 | 
  | 
       } | 
| 211 | 
  | 
       catch (antlr::CharStreamException& e) { | 
| 212 | 
< | 
            cerr << "parser exception: " << e.getMessage() << endl; | 
| 212 | 
> | 
          sprintf(painCave.errMsg,  | 
| 213 | 
> | 
                  "parser exception: %s\n", | 
| 214 | 
> | 
                  e.getMessage().c_str()); | 
| 215 | 
> | 
          painCave.isFatal = 1; | 
| 216 | 
> | 
          simError();         | 
| 217 | 
  | 
       } | 
| 218 | 
< | 
        catch (exception& e) { | 
| 219 | 
< | 
            cerr << "parser exception: " << e.what() << endl; | 
| 220 | 
< | 
        } | 
| 218 | 
> | 
       catch (OOPSEException& e) { | 
| 219 | 
> | 
          sprintf(painCave.errMsg,  | 
| 220 | 
> | 
                  "%s\n", | 
| 221 | 
> | 
                  e.getMessage().c_str()); | 
| 222 | 
> | 
          painCave.isFatal = 1; | 
| 223 | 
> | 
          simError(); | 
| 224 | 
> | 
       } | 
| 225 | 
> | 
       catch (std::exception& e) { | 
| 226 | 
> | 
          sprintf(painCave.errMsg,  | 
| 227 | 
> | 
                  "parser exception: %s\n", | 
| 228 | 
> | 
                  e.what()); | 
| 229 | 
> | 
          painCave.isFatal = 1; | 
| 230 | 
> | 
          simError(); | 
| 231 | 
> | 
       } | 
| 232 | 
  | 
 | 
| 233 | 
  | 
        return simParams; | 
| 234 | 
  | 
  } | 
| 279 | 
  | 
    //create SimInfo | 
| 280 | 
  | 
    SimInfo * info = new SimInfo(ff, simParams); | 
| 281 | 
  | 
      | 
| 282 | 
< | 
    //gather parameters (SimCreator only retrieves part of the parameters) | 
| 282 | 
> | 
    //gather parameters (SimCreator only retrieves part of the | 
| 283 | 
> | 
    //parameters) | 
| 284 | 
  | 
    gatherParameters(info, mdFileName); | 
| 285 | 
  | 
     | 
| 286 | 
  | 
    //divide the molecules and determine the global index of molecules | 
| 292 | 
  | 
    createMolecules(info); | 
| 293 | 
  | 
     | 
| 294 | 
  | 
     | 
| 295 | 
< | 
    //allocate memory for DataStorage(circular reference, need to break it) | 
| 295 | 
> | 
    //allocate memory for DataStorage(circular reference, need to | 
| 296 | 
> | 
    //break it) | 
| 297 | 
  | 
    info->setSnapshotManager(new SimSnapshotManager(info)); | 
| 298 | 
  | 
     | 
| 299 | 
< | 
    //set the global index of atoms, rigidbodies and cutoffgroups (only need to be set once, the | 
| 300 | 
< | 
    //global index will never change again). Local indices of atoms and rigidbodies are already set by  | 
| 301 | 
< | 
    //MoleculeCreator class which actually delegates the responsibility to LocalIndexManager.  | 
| 299 | 
> | 
    //set the global index of atoms, rigidbodies and cutoffgroups | 
| 300 | 
> | 
    //(only need to be set once, the global index will never change | 
| 301 | 
> | 
    //again). Local indices of atoms and rigidbodies are already set | 
| 302 | 
> | 
    //by MoleculeCreator class which actually delegates the | 
| 303 | 
> | 
    //responsibility to LocalIndexManager. | 
| 304 | 
  | 
    setGlobalIndex(info); | 
| 305 | 
  | 
     | 
| 306 | 
< | 
    //Alought addExculdePairs is called inside SimInfo's addMolecule method, at that point | 
| 307 | 
< | 
    //atoms don't have the global index yet  (their global index are all initialized to -1). | 
| 308 | 
< | 
    //Therefore we have to call addExcludePairs explicitly here. A way to work around is that | 
| 309 | 
< | 
    //we can determine the beginning global indices of atoms before they get created. | 
| 306 | 
> | 
    //Although addExcludePairs is called inside SimInfo's addMolecule | 
| 307 | 
> | 
    //method, at that point atoms don't have the global index yet | 
| 308 | 
> | 
    //(their global index are all initialized to -1).  Therefore we | 
| 309 | 
> | 
    //have to call addExcludePairs explicitly here. A way to work | 
| 310 | 
> | 
    //around is that we can determine the beginning global indices of | 
| 311 | 
> | 
    //atoms before they get created. | 
| 312 | 
  | 
    SimInfo::MoleculeIterator mi; | 
| 313 | 
  | 
    Molecule* mol; | 
| 314 | 
  | 
    for (mol= info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) { |