Helper class for calculating the derivative of rotation.
More...
#include <colvar_rotation_derivative.h>
|
| rotation_derivative (const cvm::rotation &rot, const std::vector< cvm::real > &pos1, const std::vector< cvm::real > &pos2, const size_t num_atoms_pos1, const size_t num_atoms_pos2) |
| Constructor of the cvm::rotation::derivative class for SOA. More...
|
|
void | prepare_derivative (rotation_derivative_dldq require_dl_dq) |
| This function must be called before calc_derivative_wrt_group1 and calc_derivative_wrt_group2 in order to prepare the tmp_Q0Q0 and tmp_Q0Q0_L. More...
|
|
template<bool use_dl, bool use_dq, bool use_ds> |
void | calc_derivative_impl (const cvm::rvector(&ds)[4][4], cvm::rvector *_noalias const dl0_out, cvm::vector1d< cvm::rvector > *_noalias const dq0_out, cvm::matrix2d< cvm::rvector > *_noalias const ds_out) const |
| Actual implementation of the derivative calculation. More...
|
|
template<bool use_dl, bool use_dq, bool use_ds> |
void | calc_derivative_wrt_group1 (size_t ia, cvm::rvector *_noalias const dl0_1_out=nullptr, cvm::vector1d< cvm::rvector > *_noalias const dq0_1_out=nullptr, cvm::matrix2d< cvm::rvector > *_noalias const ds_1_out=nullptr) const |
| Calculate the derivatives of S, the leading eigenvalue L and the leading eigenvector Q with respect to m_pos1 More...
|
|
template<bool use_dl, bool use_dq, bool use_ds> |
void | calc_derivative_wrt_group2 (size_t ia, cvm::rvector *_noalias const dl0_2_out=nullptr, cvm::vector1d< cvm::rvector > *_noalias const dq0_2_out=nullptr, cvm::matrix2d< cvm::rvector > *_noalias const ds_2_out=nullptr) const |
| Calculate the derivatives of S, the leading eigenvalue L and the leading eigenvector Q with respect to m_pos2 More...
|
|
|
const cvm::rotation & | m_rot |
| Reference to the rotation.
|
|
const std::vector< cvm::real > & | m_pos1 |
| Reference to the atom positions of group 1.
|
|
const std::vector< cvm::real > & | m_pos2 |
| Reference to the atom positions of group 2.
|
|
size_t | m_num_atoms_pos1 |
| Number of atoms in group1 (used in SOA)
|
|
size_t | m_num_atoms_pos2 |
| Number of atoms in group1 (used in SOA)
|
|
cvm::real | tmp_Q0Q0 [4][4] |
| Temporary variable that will be updated if prepare_derivative called.
|
|
cvm::real | tmp_Q0Q0_L [4][4][4] |
|
Helper class for calculating the derivative of rotation.
◆ rotation_derivative()
rotation_derivative::rotation_derivative |
( |
const cvm::rotation & |
rot, |
|
|
const std::vector< cvm::real > & |
pos1, |
|
|
const std::vector< cvm::real > & |
pos2, |
|
|
const size_t |
num_atoms_pos1, |
|
|
const size_t |
num_atoms_pos2 |
|
) |
| |
|
inline |
Constructor of the cvm::rotation::derivative class for SOA.
- Parameters
-
[in] | rot | The cvm::rotation object (must have called calc_optimal_rotation before calling calc_derivative_wrt_group1 and calc_derivative_wrt_group2 ) |
[in] | pos1 | The atom positions of group 1 |
[in] | pos2 | The atom positions of group 2 |
[in] | num_atoms_pos1 | The number of atoms in group1 |
[in] | num_atoms_pos2 | The number of atoms in group2 |
◆ calc_derivative_impl()
template<bool use_dl, bool use_dq, bool use_ds>
Actual implementation of the derivative calculation.
- Parameters
-
[in] | ds | The derivative of matrix S with respect to an atom of either group 1 or group 2 |
[out] | dl0_out | The output of derivative of L |
[out] | dq0_out | The output of derivative of Q |
[out] | ds_out | The output of derivative of overlap matrix S |
◆ calc_derivative_wrt_group1()
template<bool use_dl, bool use_dq, bool use_ds>
Calculate the derivatives of S, the leading eigenvalue L and the leading eigenvector Q with respect to m_pos1
- Parameters
-
[in] | ia | The index the of atom |
[out] | dl0_1_out | The output of derivative of L with respect to ia-th atom of group 1 |
[out] | dq0_1_out | The output of derivative of Q with respect to ia-th atom of group 1 |
[out] | ds_1_out | The output of derivative of overlap matrix S with respect to ia-th atom of group 1 |
◆ calc_derivative_wrt_group2()
template<bool use_dl, bool use_dq, bool use_ds>
Calculate the derivatives of S, the leading eigenvalue L and the leading eigenvector Q with respect to m_pos2
- Parameters
-
[in] | ia | The index the of atom |
[out] | dl0_2_out | The output of derivative of L with respect to ia-th atom of group 2 |
[out] | dq0_2_out | The output of derivative of Q with respect to ia-th atom of group 2 |
[out] | ds_2_out | The output of derivative of overlap matrix S with respect to ia-th atom of group 2 |
◆ prepare_derivative()
void rotation_derivative::prepare_derivative |
( |
rotation_derivative_dldq |
require_dl_dq | ) |
|
|
inline |
This function must be called before calc_derivative_wrt_group1
and calc_derivative_wrt_group2
in order to prepare the tmp_Q0Q0 and tmp_Q0Q0_L.
- Parameters
-
[in] | require_dl_dq | Require the calculation of the derivatives of L or/and Q with respect to atoms. |
The documentation for this struct was generated from the following file: