NAMD
GroupRestraintsParam.h
Go to the documentation of this file.
1 #ifndef GROUP_RESTRAINTS_PARAM
2 #define GROUP_RESTRAINTS_PARAM
3 
4 #include "common.h"
5 #include "Vector.h"
6 #include <vector>
7 #include <string>
8 #include <map>
9 
10 
19 
20 public:
21  GroupRestraintParam(void);
22 
24 
26  void SetGroup1AtomFileIndices(const char *fileName);
27 
29  void SetGroup1AtomListIndices(const char *list);
30 
32  void SetGroup1RefPosition(const char *vec);
33 
35  void SetGroup2AtomFileIndices(const char *fileName);
36 
38  void SetGroup2AtomListIndices(const char *list);
39 
41  void SetGroupName(const char *name);
42 
44  void SetForce(const BigReal force);
45 
47  void SetExponent(const int exponent);
48 
50  void SetResCenter(const char *vec);
51 
53  void SetResDirection(const char *status, const int component);
54 
56  void SetUseDistMagnitude(const char *status);
57 
59  void CheckParam(void);
60 
62  void PrintSummary();
63 
65  const char* GetGroupName() const {return groupName;}
66 
68  int GetExponent() const {return restraintExp;}
69 
71  double GetForce() const {return restraintForce;}
72 
74  Vector GetGroupRes1Position() const {return group1RefPosition;}
75 
77  Vector GetResDirection() const {return restraintDir;}
78 
80  Vector GetResCenter() const {return restraintCenter;}
81 
83  const std::vector<int> &GetGroup1AtomIndex() const {return group1Idx;}
84 
86  const std::vector<int> &GetGroup2AtomIndex() const {return group2Idx;}
87 
88  /* Get the restraint distance mode true for magnitude, false for vector */
89  bool GetUseDistMagnitude() const {return useDistanceMagnitude;}
90 
91 private:
93  template<typename Type>
94  Type CheckStatus(const char *status) const;
95 
96  char *groupName;
97  bool restraintForceDefined;
98  bool group1RefPositionDefined;
99  bool groupNameDefined;
100  bool restraintCenterDefined;
101  bool useDistanceMagnitude;
103  int restraintExp;
104  double restraintForce;
105  Vector restraintCenter;
106  Vector group1RefPosition;
107  Vector restraintDir;
108  std::vector<int> group1Idx;
109  std::vector<int> group2Idx;
110 };
111 
117 
118 public:
120 
122  void SetGroup1AtomFileIndices(const char *groupTag, const char *fileName);
123 
125  void SetGroup1AtomListIndices(const char *groupTag, const char *list);
126 
128  void SetGroup1RefPosition(const char *groupTag, const char *vec);
129 
131  void SetGroup2AtomFileIndices(const char *groupTag, const char *fileName);
132 
134  void SetGroup2AtomListIndices(const char *groupTag, const char *list);
135 
137  void SetForce(const char *groupTag, const BigReal force);
138 
140  void SetExponent(const char *groupTag, const int exponent);
141 
143  void SetResCenter(const char *groupTag, const char *vec);
144 
146  void SetResDirectionX(const char *groupTag, const char *status);
147 
149  void SetResDirectionY(const char *groupTag, const char *status);
150 
152  void SetResDirectionZ(const char *groupTag, const char *status);
153 
155  void SetUseDistMagnitude(const char *groupTag, const char *status);
156 
158  void CheckGroupRestraints();
159 
161  void PrintGroupRestraints();
162 
163  const std::map<std::string, GroupRestraintParam*> &GetGroupResMap() const {
164  return groupRestraints;
165  }
166 
167 
168 private:
171  GroupRestraintParam* FindGroupRestraint(const char *tag);
172 
174  std::map<std::string, GroupRestraintParam*> groupRestraints;
175 
176 };
177 
178 #endif
void SetExponent(const int exponent)
void SetGroup2AtomListIndices(const char *groupTag, const char *list)
void SetResCenter(const char *groupTag, const char *vec)
Definition: Vector.h:72
void SetForce(const BigReal force)
void SetResDirectionY(const char *groupTag, const char *status)
void SetGroup1AtomFileIndices(const char *groupTag, const char *fileName)
const std::map< std::string, GroupRestraintParam * > & GetGroupResMap() const
Vector GetGroupRes1Position() const
void SetGroup1AtomListIndices(const char *list)
void SetGroup2AtomFileIndices(const char *fileName)
Vector GetResDirection() const
void SetResDirectionX(const char *groupTag, const char *status)
void SetGroup2AtomFileIndices(const char *groupTag, const char *fileName)
const char * GetGroupName() const
void SetResCenter(const char *vec)
void SetGroup2AtomListIndices(const char *list)
void SetResDirectionZ(const char *groupTag, const char *status)
void SetGroupName(const char *name)
void SetForce(const char *groupTag, const BigReal force)
Vector GetResCenter() const
void SetGroup1RefPosition(const char *groupTag, const char *vec)
const std::vector< int > & GetGroup2AtomIndex() const
void SetResDirection(const char *status, const int component)
void SetUseDistMagnitude(const char *groupTag, const char *status)
void SetGroup1RefPosition(const char *vec)
void SetGroup1AtomFileIndices(const char *fileName)
bool GetUseDistMagnitude() const
const std::vector< int > & GetGroup1AtomIndex() const
void SetUseDistMagnitude(const char *status)
void SetExponent(const char *groupTag, const int exponent)
double BigReal
Definition: common.h:123
void SetGroup1AtomListIndices(const char *groupTag, const char *list)