ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/brains/ForceField.hpp
(Generate patch)

Comparing trunk/src/UseTheForce/ForceField.hpp (file contents):
Revision 475 by tim, Tue Apr 12 18:30:37 2005 UTC vs.
Revision 1269 by gezelter, Tue Jul 1 13:28:23 2008 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 39 | Line 39
39   * such damages.
40   */
41  
42 < /**
43 <  * @file ForceField.hpp
44 <  * @author tlin
45 <  * @date 11/04/2004
46 <  * @time 22:51am
47 <  * @version 1.0
48 <  */
42 > /**
43 > * @file ForceField.hpp
44 > * @author tlin
45 > * @date 11/04/2004
46 > * @time 22:51am
47 > * @version 1.0
48 > */
49    
50   #ifndef USETHEFORCE_FORCEFIELD_HPP
51   #define USETHEFORCE_FORCEFIELD_HPP
52  
53 < #define MK_STR(s) # s
54 < #define STR_DEFINE(t, s) t = MK_STR(s)
55 <
53 > #include "config.h"
54   #include <string>
55   #include <utility>
56 + #include <vector>
57  
58   #include "io/basic_ifstrstream.hpp"
59 + #include "io/ForceFieldOptions.hpp"
60   #include "utils/TypeContainer.hpp"
61 + #include "utils/Tuple.hpp"
62   #include "types/AtomType.hpp"
63   #include "types/BondType.hpp"
64   #include "types/BendType.hpp"
65   #include "types/TorsionType.hpp"
66 <
66 > #include "types/NonBondedInteractionType.hpp"
67 > #include "UseTheForce/fForceOptions.h"
68   namespace oopse {
69  
70 < /**
71 < * @class ForceField ForceField.hpp ''UseTheForce/ForceField.hpp"
72 < * @brief
73 < */
74 < class ForceField{
70 >  /**
71 >   * @class ForceField ForceField.hpp ''UseTheForce/ForceField.hpp"
72 >   * @brief
73 >   */
74 >  class ForceField{
75  
76 <    public:
76 >  public:
77  
78 <        typedef TypeContainer<AtomType, 1> AtomTypeContainer;
79 <        typedef TypeContainer<BondType, 2> BondTypeContainer;
80 <        typedef TypeContainer<BendType, 3> BendTypeContainer;
81 <        typedef TypeContainer<TorsionType, 4> TorsionTypeContainer;
78 >    typedef TypeContainer<AtomType, 1> AtomTypeContainer;
79 >    typedef TypeContainer<BondType, 2> BondTypeContainer;
80 >    typedef TypeContainer<BendType, 3> BendTypeContainer;
81 >    typedef TypeContainer<TorsionType, 4> TorsionTypeContainer;
82 >                typedef TypeContainer<NonBondedInteractionType, 2> NonBondedInteractionTypeContainer;
83          
84 <        ForceField();
84 >    ForceField();
85  
86 <        virtual ~ForceField();
86 >    virtual ~ForceField();
87  
88 <        std::string getForceFieldFileName() {
89 <            return forceFieldFileName_;
90 <        }
88 >    std::string getForceFieldFileName() {
89 >      return forceFieldFileName_;
90 >    }
91  
92 <        void setForceFieldFileName(const std::string& filename) {
93 <            forceFieldFileName_ = filename;
94 <        }
92 >    void setForceFieldFileName(const std::string& filename) {
93 >      forceFieldFileName_ = filename;
94 >    }
95          
96 <        virtual void parse(const std::string& filename) = 0;  
96 >    virtual void parse(const std::string& filename) = 0;  
97  
98 <        AtomType* getAtomType(const std::string &at);
99 <        BondType* getBondType(const std::string &at1, const std::string &at2);
100 <        BendType* getBendType(const std::string &at1, const std::string &at2,
101 <                                    const std::string &at3);
102 <        TorsionType* getTorsionType(const std::string &at1, const std::string &at2,
103 <                                          const std::string &at3, const std::string &at4);
98 >    AtomType* getAtomType(const std::string &at);
99 >    BondType* getBondType(const std::string &at1, const std::string &at2);
100 >    BendType* getBendType(const std::string &at1, const std::string &at2,
101 >                          const std::string &at3);
102 >    TorsionType* getTorsionType(const std::string &at1, const std::string &at2,
103 >                                const std::string &at3, const std::string &at4);
104 >                NonBondedInteractionType* getNonBondedInteractionType(const std::string &at1, const std::string &at2);
105 >                                                                                                                        
106 >    BondType* getExactBondType(const std::string &at1, const std::string &at2);
107 >    BendType* getExactBendType(const std::string &at1, const std::string &at2,
108 >                               const std::string &at3);
109 >    TorsionType* getExactTorsionType(const std::string &at1,
110 >                                     const std::string &at2,
111 >                                     const std::string &at3,
112 >                                     const std::string &at4);
113 >                NonBondedInteractionType* getExactNonBondedInteractionType(const std::string &at1, const std::string &at2);
114  
102        BondType* getExactBondType(const std::string &at1, const std::string &at2);
103        BendType* getExactBendType(const std::string &at1, const std::string &at2,
104                                    const std::string &at3);
105        TorsionType* getExactTorsionType(const std::string &at1, const std::string &at2,
106                                          const std::string &at3, const std::string &at4);
115  
116 +    //avoid make virtual function public
117 +    //Herb Sutter and Andrei Alexandrescu, C++ coding Standards, Addision-Wesley
118 +    virtual RealType getRcutFromAtomType(AtomType* at);
119  
120 <        //avoid make virtual function public
121 <        //Herb Sutter and Andrei Alexandrescu, C++ coding Standards, Addision-Wesley
122 <        virtual double getRcutFromAtomType(AtomType* at);
120 >    std::string getWildCard() {
121 >      return wildCardAtomTypeName_;
122 >    }
123  
124 <        std::string getWildCard() {
125 <            return wildCardAtomTypeName_;
126 <        }
124 >    void setWildCard(const std::string& wildCard) {
125 >      wildCardAtomTypeName_ = wildCard;
126 >    }
127  
117        void setWildCard(const std::string& wildCard) {
118            wildCardAtomTypeName_ = wildCard;
119        }
128  
129 <
130 <        unsigned int getNAtomType() {
131 <            return atomTypeCont_.size();
124 <        }
129 >    unsigned int getNAtomType() {
130 >      return atomTypeCont_.size();
131 >    }
132          
133 <        bool addAtomType(const std::string &at, AtomType* atomType);
133 >    bool addAtomType(const std::string &at, AtomType* atomType);
134  
135 <        bool addBondType(const std::string &at1, const std::string &at2, BondType* bondType);
135 >    bool addBondType(const std::string &at1, const std::string &at2,
136 >                     BondType* bondType);
137  
138 <        bool addBendType(const std::string &at1, const std::string &at2,
139 <                                    const std::string &at3, BendType* bendType);
138 >    bool addBendType(const std::string &at1, const std::string &at2,
139 >                     const std::string &at3, BendType* bendType);
140  
141 <        bool addTorsionType(const std::string &at1, const std::string &at2,
142 <                                          const std::string &at3, const std::string &at4, TorsionType* torsionType);
141 >    bool addTorsionType(const std::string &at1, const std::string &at2,
142 >                        const std::string &at3, const std::string &at4, TorsionType* torsionType);
143  
144 <        ifstrstream* openForceFieldFile(const std::string& filename);
144 >    bool addNonBondedInteractionType(const std::string &at1, const std::string &at2,
145 >                        NonBondedInteractionType* nbiType);
146  
147 <    protected:
147 >    ifstrstream* openForceFieldFile(const std::string& filename);
148  
149 <        AtomTypeContainer atomTypeCont_;    
141 <        BondTypeContainer bondTypeCont_;
142 <        BendTypeContainer bendTypeCont_;
143 <        TorsionTypeContainer torsionTypeCont_;
144 <        
145 <    private:  
146 <        std::string ffPath_;
149 >    ForceFieldOptions& getForceFieldOptions() {return forceFieldOptions_;}
150  
151 <        std::string wildCardAtomTypeName_;
151 >    void setFortranForceOptions(void);
152  
150        std::string forceFieldFileName_;
151 };
152
153  
154 +  protected:
155 +
156 +    AtomTypeContainer atomTypeCont_;    
157 +    BondTypeContainer bondTypeCont_;
158 +    BendTypeContainer bendTypeCont_;
159 +    TorsionTypeContainer torsionTypeCont_;
160 +    NonBondedInteractionTypeContainer nonBondedInteractionTypeCont_;
161 +    ForceFieldOptions forceFieldOptions_;
162 +    
163 +  private:  
164 +    std::string ffPath_;
165 +
166 +    std::string wildCardAtomTypeName_;
167 +
168 +    std::string forceFieldFileName_;
169 +
170 +
171 +  };
172   }//end namespace oopse
173   #endif
174  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines