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 1151 by chuckv, Fri Jul 6 18:15:03 2007 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  
57   #include "io/basic_ifstrstream.hpp"
58 + #include "io/ForceFieldOptions.hpp"
59   #include "utils/TypeContainer.hpp"
60   #include "types/AtomType.hpp"
61   #include "types/BondType.hpp"
62   #include "types/BendType.hpp"
63   #include "types/TorsionType.hpp"
64 <
64 > #include "types/NonBondedInteractionType.hpp"
65 > #include "UseTheForce/fForceOptions.h"
66   namespace oopse {
67  
68 < /**
69 < * @class ForceField ForceField.hpp ''UseTheForce/ForceField.hpp"
70 < * @brief
71 < */
72 < class ForceField{
68 >  /**
69 >   * @class ForceField ForceField.hpp ''UseTheForce/ForceField.hpp"
70 >   * @brief
71 >   */
72 >  class ForceField{
73  
74 <    public:
74 >  public:
75  
76 <        typedef TypeContainer<AtomType, 1> AtomTypeContainer;
77 <        typedef TypeContainer<BondType, 2> BondTypeContainer;
78 <        typedef TypeContainer<BendType, 3> BendTypeContainer;
79 <        typedef TypeContainer<TorsionType, 4> TorsionTypeContainer;
76 >    typedef TypeContainer<AtomType, 1> AtomTypeContainer;
77 >    typedef TypeContainer<BondType, 2> BondTypeContainer;
78 >    typedef TypeContainer<BendType, 3> BendTypeContainer;
79 >    typedef TypeContainer<TorsionType, 4> TorsionTypeContainer;
80 >                typedef TypeContainer<NonBondedInteractionType, 2> NonBondedInteractionTypeContainer;
81          
82 <        ForceField();
82 >    ForceField();
83  
84 <        virtual ~ForceField();
84 >    virtual ~ForceField();
85  
86 <        std::string getForceFieldFileName() {
87 <            return forceFieldFileName_;
88 <        }
86 >    std::string getForceFieldFileName() {
87 >      return forceFieldFileName_;
88 >    }
89  
90 <        void setForceFieldFileName(const std::string& filename) {
91 <            forceFieldFileName_ = filename;
92 <        }
90 >    void setForceFieldFileName(const std::string& filename) {
91 >      forceFieldFileName_ = filename;
92 >    }
93          
94 <        virtual void parse(const std::string& filename) = 0;  
94 >    virtual void parse(const std::string& filename) = 0;  
95  
96 <        AtomType* getAtomType(const std::string &at);
97 <        BondType* getBondType(const std::string &at1, const std::string &at2);
98 <        BendType* getBendType(const std::string &at1, const std::string &at2,
99 <                                    const std::string &at3);
100 <        TorsionType* getTorsionType(const std::string &at1, const std::string &at2,
101 <                                          const std::string &at3, const std::string &at4);
96 >    AtomType* getAtomType(const std::string &at);
97 >    BondType* getBondType(const std::string &at1, const std::string &at2);
98 >    BendType* getBendType(const std::string &at1, const std::string &at2,
99 >                          const std::string &at3);
100 >    TorsionType* getTorsionType(const std::string &at1, const std::string &at2,
101 >                                const std::string &at3, const std::string &at4);
102 >                NonBondedInteractionType* getNonBondedInteractionType(const std::string &at1, const std::string &at2);
103 >                                                                                                                        
104 >    BondType* getExactBondType(const std::string &at1, const std::string &at2);
105 >    BendType* getExactBendType(const std::string &at1, const std::string &at2,
106 >                               const std::string &at3);
107 >    TorsionType* getExactTorsionType(const std::string &at1,
108 >                                     const std::string &at2,
109 >                                     const std::string &at3,
110 >                                     const std::string &at4);
111 >                NonBondedInteractionType* getExactNonBondedInteractionType(const std::string &at1, const std::string &at2);
112  
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);
113  
114 +    //avoid make virtual function public
115 +    //Herb Sutter and Andrei Alexandrescu, C++ coding Standards, Addision-Wesley
116 +    virtual RealType getRcutFromAtomType(AtomType* at);
117  
118 <        //avoid make virtual function public
119 <        //Herb Sutter and Andrei Alexandrescu, C++ coding Standards, Addision-Wesley
120 <        virtual double getRcutFromAtomType(AtomType* at);
118 >    std::string getWildCard() {
119 >      return wildCardAtomTypeName_;
120 >    }
121  
122 <        std::string getWildCard() {
123 <            return wildCardAtomTypeName_;
124 <        }
122 >    void setWildCard(const std::string& wildCard) {
123 >      wildCardAtomTypeName_ = wildCard;
124 >    }
125  
117        void setWildCard(const std::string& wildCard) {
118            wildCardAtomTypeName_ = wildCard;
119        }
126  
127 <
128 <        unsigned int getNAtomType() {
129 <            return atomTypeCont_.size();
124 <        }
127 >    unsigned int getNAtomType() {
128 >      return atomTypeCont_.size();
129 >    }
130          
131 <        bool addAtomType(const std::string &at, AtomType* atomType);
131 >    bool addAtomType(const std::string &at, AtomType* atomType);
132  
133 <        bool addBondType(const std::string &at1, const std::string &at2, BondType* bondType);
133 >    bool addBondType(const std::string &at1, const std::string &at2,
134 >                     BondType* bondType);
135  
136 <        bool addBendType(const std::string &at1, const std::string &at2,
137 <                                    const std::string &at3, BendType* bendType);
136 >    bool addBendType(const std::string &at1, const std::string &at2,
137 >                     const std::string &at3, BendType* bendType);
138  
139 <        bool addTorsionType(const std::string &at1, const std::string &at2,
140 <                                          const std::string &at3, const std::string &at4, TorsionType* torsionType);
139 >    bool addTorsionType(const std::string &at1, const std::string &at2,
140 >                        const std::string &at3, const std::string &at4, TorsionType* torsionType);
141  
142 <        ifstrstream* openForceFieldFile(const std::string& filename);
142 >    bool addNonBondedInteractionType(const std::string &at1, const std::string &at2,
143 >                        NonBondedInteractionType* nbiType);
144  
145 <    protected:
145 >    ifstrstream* openForceFieldFile(const std::string& filename);
146  
147 <        AtomTypeContainer atomTypeCont_;    
141 <        BondTypeContainer bondTypeCont_;
142 <        BendTypeContainer bendTypeCont_;
143 <        TorsionTypeContainer torsionTypeCont_;
144 <        
145 <    private:  
146 <        std::string ffPath_;
147 >    ForceFieldOptions& getForceFieldOptions() {return forceFieldOptions_;}
148  
149 <        std::string wildCardAtomTypeName_;
149 >    void setFortranForceOptions(void);
150 >  protected:
151  
152 <        std::string forceFieldFileName_;
153 < };
152 >    AtomTypeContainer atomTypeCont_;    
153 >    BondTypeContainer bondTypeCont_;
154 >    BendTypeContainer bendTypeCont_;
155 >    TorsionTypeContainer torsionTypeCont_;
156 >    NonBondedInteractionTypeContainer nonBondedInteractionTypeCont_;
157 >    ForceFieldOptions forceFieldOptions_;
158 >    
159 >  private:  
160 >    std::string ffPath_;
161  
162 +    std::string wildCardAtomTypeName_;
163 +
164 +    std::string forceFieldFileName_;
165 +  };
166 +
167  
168   }//end namespace oopse
169   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines