ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-3.0/src/io/ElectrostaticAtomTypesSectionParser.cpp
(Generate patch)

Comparing branches/new_design/OOPSE-3.0/src/io/ElectrostaticAtomTypesSectionParser.cpp (file contents):
Revision 1813 by tim, Wed Dec 1 17:38:32 2004 UTC vs.
Revision 1815 by tim, Wed Dec 1 18:42:45 2004 UTC

# Line 25 | Line 25
25  
26   #include "io/ElectrostaticAtomTypesSectionParser.hpp"
27  
28 #include "types/AtomType.hpp"
29 #include "types/DirectionalAtomType.hpp"
28   #include "UseTheForce/ForceField.hpp"
29  
30   namespace oopse {
# Line 60 | Line 58 | void ElectrostaticAtomTypesSectionParser::parseLine(Fo
58          std::string atomTypeName = tokenizer.nextToken();    
59          int biggestRank = tokenizer.nextTokenAsInt();
60          nTokens -=  2;
63
64        if (nTokens < requiredTokens(biggestRank)) {
65
66        }
61          
62          AtomType* atomType = ff.getAtomType(atomTypeName);
63  
64          if (atomType != NULL) {
71            //parse charge
65  
66 <
67 <            //parse dipole
66 >            
67 >            //parse charge
68 >            if (biggestRank >= 1) {
69 >                parseCharge(tokenizer, atomType);
70 >            }
71 >            
72              DirectionalAtomType* dAtomType = dynamic_cast<DirectionalAtomType*>(atomType);            
73              if (dAtomType != NULL) {
74  
# Line 79 | Line 76 | void ElectrostaticAtomTypesSectionParser::parseLine(Fo
76                  std::cerr << "ElectrostaticAtomTypesSectionParser Warning:" << std::endl;
77              }
78  
79 <            //parse quadrupole
80 <            //QuadrupoleParam quadParam;
81 <            //double quadParam.Qxx = tokenizer.nextTokenAsDouble();
82 <            //double quadParam.Qyy = tokenizer.nextTokenAsDouble();            
83 <            //double quadParam.Qzz = tokenizer.nextTokenAsDouble();
84 <            //dAtomType->setQuadrupole()
85 <            //dAtomType->addProperty(new QuadrupoleParamGenericData("Quadrupole", quadParam));
79 >            switch (biggestRank) {
80 >                case 1 :
81 >                    parseCharge(tokenizer, atomType);
82 >                    break;
83 >
84 >               case 2 :
85 >                    parseCharge(tokenizer, dAtomType);
86 >                    parseDipole(tokenizer, dAtomType);
87 >                    parseElectroBodyFrame(tokenizer, dAtomType);
88 >                    break;
89 >
90 >               case 3:
91 >                    parseCharge(tokenizer, dAtomType);
92 >                    parseDipole(tokenizer, dAtomType);
93 >                    parseQuadruple(tokenizer, dAtomType);
94 >                    parseElectroBodyFrame(tokenizer, dAtomType);
95 >                    break;
96 >                    
97 >               default :
98 >                    break;
99 >
100 >            }
101              
102          } else {
103              std::cerr << "ElectrostaticAtomTypesSectionParser Error: Can not find matched AtomType " << atomTypeName
# Line 118 | Line 130 | void ElectrostaticAtomTypesSectionParser::parseQuadrup
130      DirectionalAtomType* dAtomType) {
131  
132      Vector3d Q;
133 <    double Q[0] = tokenizer.nextTokenAsDouble();
134 <    double Q[1] = tokenizer.nextTokenAsDouble();
135 <    double Q[2] = tokenizer.nextTokenAsDouble();
133 >    Q[0] = tokenizer.nextTokenAsDouble();
134 >    Q[1] = tokenizer.nextTokenAsDouble();
135 >    Q[2] = tokenizer.nextTokenAsDouble();
136      
137      dAtomType->addProperty(new Vector3dGenericData("Quadrupole", Q));
138      dAtomType->setQuadrupole();
# Line 128 | Line 140 | void ElectrostaticAtomTypesSectionParser::parseElectro
140   void ElectrostaticAtomTypesSectionParser::parseElectroBodyFrame(StringTokenizer& tokenizer,
141      DirectionalAtomType* dAtomType) {
142  
143 <    double phi = tokenizer.nextTokenAsDouble();
144 <    double theta = tokenizer.nextTokenAsDouble();
145 <    double psi = tokenizer.nextTokenAsDouble();
143 >    double phi;
144 >    double theta;
145 >    double psi;
146  
147 +    if (tokenizer.countTokens() >=3 ) {
148 +        phi = tokenizer.nextTokenAsDouble()/180.0;
149 +        theta = tokenizer.nextTokenAsDouble()/180.0;
150 +        psi = tokenizer.nextTokenAsDouble()/180.0;
151 +    } else {
152 +        phi = 0.0;
153 +        theta = 0.0;
154 +        psi = 0.0;    
155 +    }
156 +    
157      RotMat3x3d electroBodyFrame(phi, theta, psi);
158      dAtomType->setElectroBodyFrame(electroBodyFrame);
159          

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines