@@ -73,18 +73,29 @@ pub fn do_icoscan(
7373 . expect ( "invalid r value" )
7474 . get ( omega)
7575 . expect ( "invalid omega value" ) ;
76- for vertex_a in a. vertices . iter ( ) {
77- for vertex_b in vertex_a. data . get ( ) . unwrap ( ) . vertices . iter ( ) {
78- let q1 = to_neg_zaxis ( & vertex_b. pos ) ;
79- let q2 = around_z ( omega) ;
80- let q3 = UnitQuaternion :: rotation_between ( & zaxis, & vertex_a. pos ) . unwrap ( ) ;
81- let mut mol_b = ref_b. clone ( ) ; // initially at origin
82- mol_b. transform ( |pos| ( q1 * q2) . transform_vector ( & pos) ) ;
83- mol_b. transform ( |pos| q3. transform_vector ( & ( pos + r_vec) ) ) ;
84- let energy = pair_matrix. sum_energy ( & ref_a, & mol_b) ;
85- vertex_b. data . set ( energy) . unwrap ( ) ;
86- }
87- }
76+
77+ a. flat_iter ( ) . for_each ( |( vertex_a, vertex_b) | {
78+ let q1 = to_neg_zaxis ( & vertex_b. pos ) ;
79+ let q2 = around_z ( omega) ;
80+ let q3 = UnitQuaternion :: rotation_between ( & zaxis, & vertex_a. pos ) . unwrap ( ) ;
81+ let mut mol_b = ref_b. clone ( ) ; // initially at origin
82+ mol_b. transform ( |pos| ( q1 * q2) . transform_vector ( & pos) ) ;
83+ mol_b. transform ( |pos| q3. transform_vector ( & ( pos + r_vec) ) ) ;
84+ let energy = pair_matrix. sum_energy ( & ref_a, & mol_b) ;
85+ vertex_b. data . set ( energy) . unwrap ( ) ;
86+ } ) ;
87+ // for vertex_a in a.vertices.iter() {
88+ // for vertex_b in vertex_a.data.get().unwrap().vertices.iter() {
89+ // let q1 = to_neg_zaxis(&vertex_b.pos);
90+ // let q2 = around_z(omega);
91+ // let q3 = UnitQuaternion::rotation_between(&zaxis, &vertex_a.pos).unwrap();
92+ // let mut mol_b = ref_b.clone(); // initially at origin
93+ // mol_b.transform(|pos| (q1 * q2).transform_vector(&pos));
94+ // mol_b.transform(|pos| q3.transform_vector(&(pos + r_vec)));
95+ // let energy = pair_matrix.sum_energy(&ref_a, &mol_b);
96+ // vertex_b.data.set(energy).unwrap();
97+ // }
98+ // }
8899 } ;
89100
90101 // Pair all mass center separations (r) and dihedral angles (omega)
0 commit comments