| 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; |
| | } |