Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Fa_MbsolvEnergy.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 part of the Rosetta software suite and is made available under license.
5 // The Rosetta software is developed by the contributing members of the Rosetta Commons consortium.
6 // (C) 199x-2009 Rosetta Commons participating institutions and developers.
7 // For more information, see http://www.rosettacommons.org/.
8 
9 /// @file core/scoring/methods/Fa_MbsolvEnergy.hh
10 /// @brief LK-type Membrane Solvation
11 /// @author Patrick Barth
12 
13 #ifndef INCLUDED_core_scoring_methods_Fa_MbsolvEnergy_hh
14 #define INCLUDED_core_scoring_methods_Fa_MbsolvEnergy_hh
15 
16 // Unit Headers
19 // Package headers
26 
27 // Project headers
28 #include <core/pose/Pose.fwd.hh>
29 
30 // Utility headers
31 #include <utility/vector1.hh>
32 
33 #include <ObjexxFCL/FArray3D.fwd.hh>
34 
35 namespace core {
36 namespace scoring {
37 namespace methods {
38 
39 ///
41 public:
43 public:
44 
45  Fa_MbsolvEnergy( etable::Etable const & etable_in, etable::MembEtable const & memb_etable_in );
46 
47 
48  /// clone
49  virtual
51  clone() const;
52 
53  virtual
54  void
56  pose::Pose & pose,
57  ScoreFunction const & scfxn
58  ) const;
59 
60  /// called during gradient-based minimization inside dfunc
61  /**
62  F1 and F2 are not zeroed -- contributions from this atom are
63  just summed in
64  **/
65  virtual
66  void
68  id::AtomID const & id,
69  pose::Pose const & pose,
70  kinematics::DomainMap const & domain_map,
71  ScoreFunction const & sfxn,
72  EnergyMap const & weights,
73  Vector & F1,
74  Vector & F2
75  ) const;
76 
77 
78  virtual
79  void
81  conformation::Residue const & rsd1,
82  conformation::Residue const & rsd2,
83  pose::Pose const & pose,
84  ScoreFunction const &,
85  EnergyMap & emap
86  ) const;
87 
88  virtual
89  bool
90  defines_intrares_energy( EnergyMap const & /*weights*/ ) const { return false; }
91 
92  virtual
93  void
95  conformation::Residue const &,
96  pose::Pose const &,
97  ScoreFunction const &,
98  EnergyMap & emap
99  ) const;
100 
101  virtual
102  Distance
104 
105 
106  void indicate_required_context_graphs( utility::vector1< bool > & context_graphs_required ) const;
107 
108  MembraneTopology const & MembraneTopology_from_pose( pose::Pose const & pose ) const;
109  Membrane_FAEmbed const & Membrane_FAEmbed_from_pose( pose::Pose const & pose ) const;
110 
111  void
113  pose::Pose & pose, ScoreFunction const &
114  ) const;
115 
116  virtual
117  void
119  pose::Pose & pose,
120  ScoreFunction const &,
121  EnergyMap & emap // totals
122  ) const;
123 
124 
125 private:
126 
127 
128  void
130  conformation::Residue const & rsd1,
131  conformation::Residue const & rsd2,
132  pose::Pose const & pose,
133  Real & fa_mbsolv_score ) const;
134 
135  Real
136  eval_lk(
137  conformation::Atom const & atom1,
138  conformation::Atom const & atom2,
139  Real const & d2,
140  Real & deriv,
141  Real const & f1,
142  Real const & f2,
143  bool & debug ) const;
144 
145  Real
147  conformation::Atom const & atom1,
148  conformation::Atom const & atom2,
149  EnergyMap const & weights,
150  Vector & F1,
151  Vector & F2,
152  Real const & f1,
153  Real const & f2
154  ) const;
155 
156 // void
157 // distribute_pseudo_base_atom_derivatives( pose::Pose const & pose ) const;
158 
159 /////////////////////////////////////////////////////////////////////////////
160 // data
161 /////////////////////////////////////////////////////////////////////////////
162 
163 private:
164  etable::Etable const & etable_; // shouldn't this be a pointer? Reference count information is (dangerously) lost when
165  //a reference is taken, instead of a smart pointer. There's the potential for a dangling reference with this.
167 
168  /// these guys are taken from the etable
169  ObjexxFCL::FArray3D< Real > const & solv1_;
170  ObjexxFCL::FArray3D< Real > const & solv2_;
171  ObjexxFCL::FArray3D< Real > const & dsolv1_;
172  ObjexxFCL::FArray3D< Real > const & dsolv2_;
173  ObjexxFCL::FArray3D< Real > const & dsolv_;
174 
175  //pba taken from the membrane etable
176  ObjexxFCL::FArray3D< Real > const & memb_solv1_;
177  ObjexxFCL::FArray3D< Real > const & memb_solv2_;
178  ObjexxFCL::FArray3D< Real > const & memb_dsolv1_;
179  ObjexxFCL::FArray3D< Real > const & memb_dsolv2_;
180  //ObjexxFCL::FArray3D< Real > const & memb_dsolv_;
181 
184 
185  bool const verbose_;
186 
188 
189  /// Used soley when calculating derivatives
190  /// Could/should be moved into the Pose's cachable data.
191  mutable Real fa_mbsolv_weight_; // hold this while calculating derivatives.
192 virtual
193 core::Size version() const;
194 };
195 
196 }
197 }
198 }
199 
200 #endif // INCLUDED_core_scoring_methods_Fa_MbsolvEnergy_HH