37 #include <basic/datacache/BasicDataCache.hh>
39 #include <basic/options/option.hh>
41 #include <basic/options/keys/membrane.OptionKeys.gen.hh>
49 #include <utility/vector1.hh>
50 #include <numeric/xyzVector.hh>
55 #include <ObjexxFCL/FArray1D.hh>
56 #include <ObjexxFCL/FArray2D.hh>
90 Fa_Membed_update_=basic::options::option[ basic::options::OptionKeys::membrane::Fa_Membed_update ]();
105 static Size const MAX_AMINOACID_SIZE = 15;
106 for (
Size i = 1; i <= nres; ++i ) {
112 for (
Size j = 1; j <= max_size; ++j ) {
150 fa_projection(pose,normal,center,thickness,steepness,penalty);
158 Real const & thickness,
159 Real const & steepness,
168 Real internal_product(0), z(0), zn(0), znm1(0);
170 membrane_faembed.
fa_center() = std::abs(dot(center, normal));
183 for (
Size i = 1; i <= nres; ++i ) {
186 membrane_faembed.
fa_depth( i, j ) = dot(
xyz-center, normal);
188 internal_product = std::abs(membrane_faembed.
fa_depth( i, j ));
189 z = internal_product;
191 zn = std::pow( z, steepness );
192 membrane_faembed.
fa_proj( i, j ) = zn/(1 + zn);
195 znm1 = std::pow( z, (steepness-1) );
196 membrane_faembed.
fa_proj_deriv( i, j ) = steepness * znm1 * std::pow((1 + zn),-2);
201 Vector proj_center = center - i_ip;
230 return *membrane_faembed;