Closed rfkspada closed 6 years ago
Hi
The molecule is always aligned with the primary axis of the point group in the z axis (this is convention), and (if present) a secondary symmetry element to the x axis.
In the case of benzene the primary axis is the C6 (and therefore the molecule is in the xy plane), whereas for water it is the C2 axis.
The secondary symmetry element is a C2 axis where applicable (Dn, Dnh etc.) and a mirror plane for Cnv (more specific rules apply for triply degenerate groups).
Technically the choice for secondary axis doesn't differentiate between the 2 mirror planes of C2v (the choice is arbitrary at that point since the molecule isn't always planar, see e.g. cyclohexane) but since the detection is based on the moments of inertia, this will select the secondary axis so that the alignment will be the xz plane.
To align water with the xy plane you'd need to use either msymSetAlignmentAxes (or msymSetAlignmentTransform, they do the same thing vector vs matrix). You'd need to set the primary axis to x (or y, your choice), the secondary is dependant on your first choice.
E.g.
double x[3] = {1,0,0}, y[3] = {0,1,0};
msymSetAlignmentAxes(ctx,x,y);
Thank you very much.
Dear developer,
Can I determine to which plane the molecule must be aligned? For example, the xyz to water:
The example aligns it to the xz plane.
However, for the benzene molecule, if I provide the xyz like:
It is aligned to the xy plane like:
I see that it uses a function called msymAlignAxes to do this reorientation, but I could not find a way to set to which plane it must be reoriented.
I see that there are the msymSetAlignmentAxes and msymSetAlignmentTransform functions, but I am not sure how they work or if they are intended to do this.
Is there any other function to set this?