version 1.13 | version 1.14 |
---|
| |
#include <cmath> | #include <cmath> |
| |
| |
| |
colvar::angle::angle(std::string const &conf) | colvar::angle::angle(std::string const &conf) |
: cvc(conf) | : cvc(conf) |
{ | { |
| |
group3->set_weighted_gradient(dxdr3); | group3->set_weighted_gradient(dxdr3); |
} | } |
| |
| |
void colvar::angle::calc_force_invgrads() | void colvar::angle::calc_force_invgrads() |
{ | { |
// This uses a force measurement on groups 1 and 3 only | // This uses a force measurement on groups 1 and 3 only |
| |
return; | return; |
} | } |
| |
| |
void colvar::angle::calc_Jacobian_derivative() | void colvar::angle::calc_Jacobian_derivative() |
{ | { |
// det(J) = (2 pi) r^2 * sin(theta) | // det(J) = (2 pi) r^2 * sin(theta) |
| |
} | } |
| |
| |
| simple_scalar_dist_functions(angle) |
| |
| |
| |
colvar::dipole_angle::dipole_angle(std::string const &conf) | colvar::dipole_angle::dipole_angle(std::string const &conf) |
| |
} | } |
| |
| |
| simple_scalar_dist_functions(dipole_angle) |
| |
| |
| |
colvar::dihedral::dihedral(std::string const &conf) | colvar::dihedral::dihedral(std::string const &conf) |
| |
} | } |
| |
| |
| // metrics functions for cvc implementations with a periodicity |
| |
| cvm::real colvar::dihedral::dist2(colvarvalue const &x1, |
| colvarvalue const &x2) const |
| { |
| cvm::real diff = x1.real_value - x2.real_value; |
| diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); |
| return diff * diff; |
| } |
| |
| |
| colvarvalue colvar::dihedral::dist2_lgrad(colvarvalue const &x1, |
| colvarvalue const &x2) const |
| { |
| cvm::real diff = x1.real_value - x2.real_value; |
| diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); |
| return 2.0 * diff; |
| } |
| |
| |
| colvarvalue colvar::dihedral::dist2_rgrad(colvarvalue const &x1, |
| colvarvalue const &x2) const |
| { |
| cvm::real diff = x1.real_value - x2.real_value; |
| diff = (diff < -180.0 ? diff + 360.0 : (diff > 180.0 ? diff - 360.0 : diff)); |
| return (-2.0) * diff; |
| } |
| |
| |
| void colvar::dihedral::wrap(colvarvalue &x) const |
| { |
| if ((x.real_value - wrap_center) >= 180.0) { |
| x.real_value -= 360.0; |
| return; |
| } |
| |
| if ((x.real_value - wrap_center) < -180.0) { |
| x.real_value += 360.0; |
| return; |
| } |
| |
| return; |
| } |