|
Collective Variables Module - Developer Documentation
|

Public Member Functions | |
| rotation_gpu () | |
| Constructor. | |
| ~rotation_gpu () | |
| Destructor. | |
| bool | initialized () const |
| Check if the object is initialized. | |
| int | init () |
| Initialize member data. | |
| int | add_optimal_rotation_nodes (cvm::real *const d_pos1, cvm::real *const d_pos2, const size_t num_atoms_pos1, const size_t num_atoms_pos2, cudaGraph_t &graph, std::unordered_map< std::string, cudaGraphNode_t > &nodes_map) |
| Calculate the optimal rotation and store the corresponding eigenvalue and eigenvector in the arguments l0 and q0; if the gradients have been previously requested, calculate them as well. | |
| void | check_error () const |
| Checking after synchronization ( eigendecomposition iterations and max crossing). | |
| cvm::real * | get_S () const |
| cvm::real * | get_eigenvectors () const |
| cvm::real * | get_eigenvalues () const |
| cvm::quaternion * | get_q () const |
| void | to_cpu (cvm::rotation &rot) const |
Private Attributes | |
| cvm::real * | d_S |
| Correlation matrix C (3, 3). | |
| cvm::real * | d_S_eigval |
| Eigenvalues of S. | |
| cvm::real * | d_S_eigvec |
| Eigenvectors of S. | |
| unsigned int * | tbcount |
| Used for debugging gradients. | |
| cvm::quaternion * | d_q |
| The rotation itself (implemented as a quaternion). | |
| cvm::quaternion * | d_q_old |
| Crossing monitor. | |
| int * | discontinuous_rotation |
| int * | max_iteration_reached |
| Flag for checking if eigendecomposition is failed. | |
| bool | b_initialized |
| Flag for checking if initialized. | |
| cvm::rmatrix * | h_C |
| Host data for compatibility with CPU buffers. | |
| cvm::real * | h_S |
| cvm::real * | h_S_eigval |
| cvm::real * | h_S_eigvec |
| cudaEvent_t | jacobi_done |
| CUDA event for checking if max iterations are reached. | |
Friends | |
| struct | rotation_derivative_gpu |
| int colvars_gpu::rotation_gpu::add_optimal_rotation_nodes | ( | cvm::real *const | d_pos1, |
| cvm::real *const | d_pos2, | ||
| const size_t | num_atoms_pos1, | ||
| const size_t | num_atoms_pos2, | ||
| cudaGraph_t & | graph, | ||
| std::unordered_map< std::string, cudaGraphNode_t > & | nodes_map ) |
Calculate the optimal rotation and store the corresponding eigenvalue and eigenvector in the arguments l0 and q0; if the gradients have been previously requested, calculate them as well.
The method to derive the optimal rotation is defined in: Coutsias EA, Seok C, Dill KA. Using quaternions to calculate RMSD. J Comput Chem. 25(15):1849-57 (2004) DOI: 10.1002/jcc.20110 PubMed: 15376254
|
private |
Correlation matrix C (3, 3).
Overlap matrix S (4, 4)
|
private |
Eigenvectors of S.
|
private |
Used for debugging gradients.
Eigensolver Thread block atomic counter