Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Membrane_FAPotential.hh
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // This file is made available under the Rosetta Commons license.
5 // See http://www.rosettacommons.org/license
6 // (C) 199x-2007 University of Washington
7 // (C) 199x-2007 University of California Santa Cruz
8 // (C) 199x-2007 University of California San Francisco
9 // (C) 199x-2007 Johns Hopkins University
10 // (C) 199x-2007 University of North Carolina, Chapel Hill
11 // (C) 199x-2007 Vanderbilt University
12 
13 /// @file core/scoring/methods/Membrane_FAPotential.hh
14 /// @brief Membrane FA Potential
15 /// @author Patrick Barth
16 
17 
18 #ifndef INCLUDED_core_scoring_Membrane_FAPotential_hh
19 #define INCLUDED_core_scoring_Membrane_FAPotential_hh
20 
21 #include <core/types.hh>
22 
23 // Unit headers
25 
26 // Package headers
31 
32 // Project headers
33 #include <core/pose/Pose.fwd.hh>
34 
35 #include <basic/datacache/CacheableData.hh>
36 
37 // Utility headers
38 #include <utility/vector1.hh>
39 #include <utility/pointer/ReferenceCount.hh>
40 
41 // Numeric headers
42 #include <numeric/xyzVector.hh>
43 
44 // ObjexxFCL headers
45 #include <ObjexxFCL/FArray1D.hh>
46 #include <ObjexxFCL/FArray2D.hh>
47 #include <ObjexxFCL/FArray3D.hh>
48 
49 namespace core {
50 namespace scoring {
51 
52 
53 class Membrane_FAEmbed : public basic::datacache::CacheableData {
54 
55 
56 public:
58  Membrane_FAEmbed( Membrane_FAEmbed const & src );
59 
60 
61  basic::datacache::CacheableDataOP
62  clone() const
63  {
64  return new Membrane_FAEmbed( *this );
65  }
66 
67  Real &
68  fa_proj(Size const seqpos, Size const atom)
69  {
70  return fa_proj_[seqpos][atom];
71  }
72 
73  Real
74  fa_proj(Size const seqpos, Size const atom) const
75  {
76  return fa_proj_[seqpos][atom];
77  }
78 
79  Real &
80  fa_depth(Size const seqpos, Size const atom)
81  {
82  return fa_depth_[seqpos][atom];
83  }
84 
85  Real
86  fa_depth(Size const seqpos, Size const atom) const
87  {
88  return fa_depth_[seqpos][atom];
89  }
90 
91  Real &
92  fa_proj_deriv(Size const seqpos, Size const atom)
93  {
94  return fa_proj_deriv_[seqpos][atom];
95  }
96 
97  Real
98  fa_proj_deriv(Size const seqpos, Size const atom) const
99  {
100  return fa_proj_deriv_[seqpos][atom];
101  }
102 
103  Vector &
104  fa_proj_coord(Size const seqpos, Size const atom)
105  {
106  return fa_proj_coord_[seqpos][atom];
107  }
108 
109  Vector
110  fa_proj_coord(Size const seqpos, Size const atom) const
111  {
112  return fa_proj_coord_[seqpos][atom];
113  }
114 
115  Real
116  fa_center() const //pba
117  {
118  return fa_center_;
119  }
120 
121  Real &
122  fa_center() //pba
123  {
124  return fa_center_;
125  }
126 
127  Real
128  fa_penalty() const //pba
129  {
130  return fa_penalty_;
131  }
132 
133  Real &
134  fa_penalty() //pba
135  {
136  return fa_penalty_;
137  }
138 
139  Real
140  thickness() const //pba
141  {
142  return thickness_;
143  }
144 
145  Real &
146  thickness() //pba
147  {
148  return thickness_;
149  }
150 
151  Real
152  steepness() const //pba
153  {
154  return steepness_;
155  }
156 
157  Real &
158  steepness() //pba
159  {
160  return steepness_;
161  }
162 
163  bool
164  calculated() const
165  {
166  return calculated_;
167  }
168 
169  bool &
171  {
172  return calculated_;
173  }
174 
175  bool
177  {
178  return Fa_Membed_update_;
179  }
180 
181  bool &
183  {
184  return Fa_Membed_update_;
185  }
186 
187  void
188  initialize( pose::Pose const & pose );
189 
190 private:
191 
192  void
193  allocate_appropriate_memory( pose::Pose const & pose ) const;
194 
195 /////////////////////////////////////////////////////////////////////////////
196 // data
197 /////////////////////////////////////////////////////////////////////////////
198 
199 private:
205  mutable Real fa_center_; //pba
206  mutable Real fa_penalty_;
210 };
211 
212 //class Membrane_FAPotential : public MembranePotential {
214 
215 public:
217  membrane_potential_( ScoringManager::get_instance()->get_MembranePotential() ) {};
218 
219  void
220  compute_fa_projection(pose::Pose & pose) const;
221 // compute_fa_projection(pose::Pose const & pose) const;
222 
223  void
224  finalize( pose::Pose & pose ) const;
225 
226 protected:
227 /*
228  Membrane_FAEmbed const & Membrane_FAEmbed_from_pose( pose::Pose const & ) const;
229  Membrane_FAEmbed & nonconst_Membrane_FAEmbed_from_pose( pose::Pose & ) const;
230  MembraneEmbed const & MembraneEmbed_from_pose( pose::Pose const & ) const;
231  MembraneEmbed & nonconst_MembraneEmbed_from_pose( pose::Pose & ) const;
232  //MembraneTopology const & MembraneTopology_from_pose( pose::Pose const & ) const;
233  //MembraneTopology & nonconst_MembraneTopology_from_pose( pose::Pose & ) const;
234  MembranePotential & nonconst_MembranePotential_from_pose( pose::Pose & ) const;
235 */
236 private: // function
237 
238  void
240  pose::Pose & pose,
241  Vector const & normal,
242  Vector const & center,
243  Real const & thickness,
244  Real const & steepness,
245  Real const & penalty
246  ) const;
247 
248 private: // data
249 
250 // ObjexxFCL::FArray3D< Real > mem_env_log6_;
251 // ObjexxFCL::FArray1D< Real > cenpack_log_;
252  bool calculated_; //pba needed ??
254 
255 };
256 
259 
260 
261 } // ns scoring
262 } // ns core
263 
264 #endif