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

Comparing trunk/OOPSE-2.0/src/io/LennardJonesAtomTypesSectionParser.cpp (file contents):
Revision 2008 by tim, Sun Feb 13 19:10:25 2005 UTC vs.
Revision 2498 by chuckv, Wed Dec 7 23:00:26 2005 UTC

# Line 1 | Line 1
1 < /*
1 > /*
2   * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3   *
4   * The University of Notre Dame grants you ("Licensee") a
# Line 40 | Line 40
40   */
41  
42   #include "io/LennardJonesAtomTypesSectionParser.hpp"
43 + #include "io/ForceFieldOptions.hpp"
44   #include "types/AtomType.hpp"
45   #include "UseTheForce/ForceField.hpp"
46   #include "utils/simError.h"
47   namespace oopse {
48  
49 < LennardJonesAtomTypesSectionParser::LennardJonesAtomTypesSectionParser() {
49 >  LennardJonesAtomTypesSectionParser::LennardJonesAtomTypesSectionParser(ForceFieldOptions& options) : options_(options) {
50      setSectionName("LennardJonesAtomTypes");
51 < }
51 >  }
52  
53 < void LennardJonesAtomTypesSectionParser::parseLine(ForceField& ff,const std::string& line, int lineNo){
53 >  void LennardJonesAtomTypesSectionParser::parseLine(ForceField& ff,const std::string& line, int lineNo){
54      StringTokenizer tokenizer(line);
55      int nTokens = tokenizer.countTokens();    
56  
57 <    //in AtomTypeSection, a line at least contains 2 tokens
58 <    //atomTypeName and mass
57 >    //in LennardJonesAtomTypesSectionParser, a line at least contains 3 tokens
58 >    //atomTypeName, epsilon and sigma
59      if (nTokens < 3)  {
60 <        sprintf(painCave.errMsg, "LennardJonesAtomTypesSectionParser Error: Not enough tokens at line %d\n",
61 <                lineNo);
62 <        painCave.isFatal = 1;
63 <        simError();                    
60 >      sprintf(painCave.errMsg, "LennardJonesAtomTypesSectionParser Error: Not enough tokens at line %d\n",
61 >              lineNo);
62 >      painCave.isFatal = 1;
63 >      simError();                    
64      } else {
65  
66 <        std::string atomTypeName = tokenizer.nextToken();    
67 <        AtomType* atomType = ff.getAtomType(atomTypeName);
66 >      std::string atomTypeName = tokenizer.nextToken();    
67 >      AtomType* atomType = ff.getAtomType(atomTypeName);
68  
69 <        if (atomType != NULL) {
70 <            LJParam ljParam;                        
71 <            ljParam.epsilon = tokenizer.nextTokenAsDouble();
72 <            ljParam.sigma = tokenizer.nextTokenAsDouble();
73 <            atomType->addProperty(new LJParamGenericData("LennardJones", ljParam));
74 <            atomType->setLennardJones();
75 <        }else {
76 <            sprintf(painCave.errMsg, "LennardJonesAtomTypesSectionParser Error: Atom Type [%s] is not created yet\n", atomTypeName.c_str());
77 <            painCave.isFatal = 1;
78 <            simError();    
79 <        }
69 >      if (atomType != NULL) {
70 >        LJParam ljParam;                        
71 >        ljParam.epsilon = tokenizer.nextTokenAsDouble();
72 >        ljParam.sigma = tokenizer.nextTokenAsDouble();
73 >        ljParam.soft_pot = 0;
74 >  
75 >  ljParam.epsilon *= options_.getEnergyUnitScaling();
76 >  ljParam.sigma   *= options_.getDistanceUnitScaling();
77 >  
78 >        if (tokenizer.hasMoreTokens()) {
79 >          std::string pot_type = tokenizer.nextToken();
80 >          if (pot_type == "soft") {
81 >            ljParam.soft_pot = 1;
82 >          }
83 >        }
84 >            
85 >        atomType->addProperty(new LJParamGenericData("LennardJones", ljParam));
86 >        atomType->setLennardJones();
87 >      }else {
88 >        sprintf(painCave.errMsg, "LennardJonesAtomTypesSectionParser Error: Atom Type [%s] is not created yet\n", atomTypeName.c_str());
89 >        painCave.isFatal = 1;
90 >        simError();    
91 >      }
92                        
93      }    
94  
95  
96 < }
96 >  }
97  
98   } //end namespace oopse
99  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines