pcxcm2
Hi, I'm attempting to model a phenyl ring fragment of an asymmetric unit the macro below:
Hexagon_sitting_on_point_in_xy_plane(C10, C15, C14, C12, C8, C11, pr)
From the crystal structure, I found that the centroid of this ring was at 1.02483, 0.2883, 0.176278, and so initially translated it there using the Translate macro, but I now need to allow it to rotate and I'm having difficulty finding the correct method from the technical reference.
Ideally I would like to rotate freely about the centroid position but having tried many of the rotate macros I can't seem to get this to happen, as the macros seem to require 2 points.
Any help would be greatly appreciated.
Thanks
alancoelho
The section in the Technical_Reference.PDF titled "Rotating part of a rigid body around a point" gives an example of how to rotate around a point. Please have a look and if you get stuck then ask again.
helenmc
Hi - connected issue I think,
I'm trying to do the same thing and have got a little stuck. I've got a benzene ring which is centered about 0.5, 0, 0 and i'd like to refine it's rotation about that point (because of the symmetry I only need to define half of it).
rigid
prm !j 1.084 min 1.05 max 1.1
prm !k 1.40000 min 1.35 max 1.40
z_matrix X1
z_matrix C1b X1 =k;
z_matrix C2b C1b =k; X1 60
z_matrix C3b C1b =k; X1 60 C2b 180
z_matrix H1b C1b = j; C2b 120 C3b 180
z_matrix H2b C2b = j; C1b 120 C3b 180
z_matrix H3b C3b = j; C2b 210 C1b 180
Translate( 0.5 , 0 , 0 )
Translate_point_amount(X1, -) operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qa 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qb 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qc 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
Translate_point_amount(X1, +) operate_on_points "C1b C2b C3b H1b H2b H3b "
Only I'm getting the error 'Equation error for X1 in get_s' - could anyone point me to where I'm going wrong with this? Is the issue that I'm fixing the translate part?
Thanks,
Helen
helenmc
I thought about it over coffee - and wondered if the fact that I hadn't defined all the atoms in my rigid body relative to the dummy atom X1 was the issue so I amended the rigid body too:
rigid
prm !j 2.484
prm !k 1.400 min 1.35 max 1.40
z_matrix X1
z_matrix C1b X1 =k;
z_matrix C2b X1 =k; C1b 60
z_matrix C3b X1 =k; C1b 60 C2b 180
z_matrix H1b X1 =j; C1b 180 C2b 0
z_matrix H2b X1 =j; C2b 180 C1b 0
z_matrix H3b X1 =j; C3b 180 C1b 0
Translate( 0.5 , 0 , 0 )
Translate_point_amount(X1, -) operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qa 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qb 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
rotate @ 0 qc 1 operate_on_points "C1b C2b C3b H1b H2b H3b "
Translate_point_amount(X1, +) operate_on_points "C1b C2b C3b H1b H2b H3b "
But I still get the same error........
alancoelho
Hi Helen
Change the dummy atom name from X1 to X1_ and it will then work.
The reason is that X1 appears in an equation within the Translate_point_amount macro but X1 is a reserved parameter name which returns the start of the x-axis. Actually its a little bug I need to look at.
cheers
alan
helenmc
Thanks for that Alan! (was beginning to tear my hair out a bit - should have noticed it was a reserved parameter!)
Best,
H