ReactionMechanismGenerator / ReactionMechanismGenerator/ARC

Mismatch in Angles After Z-matrix to XYZ Conversion in zmat_to_xyz

Open
#779 4 comments 0 reactions 2 assignees View on GitHub

@alongd is already working on this.

Since Dec 29, 2024.

Type: Bug
Dominant language
Python
Stars
51
Forks
25
Avg merge
4d 5h
Merged PRs (30d)
15

Description

Describe the bug
When converting a Z-matrix to XYZ coordinates using the zmat_to_xyz function, the angle A_8_2_1 is incorrectly calculated. It is defined as 77.4° in the Z-matrix, but after conversion and visualization in GaussView, it is shown as 51.93824°. All other parameters appear to be converted correctly.
This is just one example, but I’m encountering the same issue with other molecules as well, consistently with the angle A_8_2_1.

How to reproduce

zmat = {
    'symbols': ('C', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'O', 'H', 'H'),
    'coords': (
        (None, None, None),
        ('R_1_0', None, None),
        ('R_2_1', 'A_2_1_0', None),
        ('R_3_2', 'A_3_2_1', 'D_3_2_1_0'),
        ('R_4_0', 'A_4_0_1', 'D_4_0_1_3'),
        ('R_5|6_0|0', 'A_5|6_0|0_1|1', 'D_5_0_1_4'),
        ('R_5|6_0|0', 'A_5|6_0|0_1|1', 'D_6_0_1_5'),
        ('R_7_2', 'A_7_2_3', 'D_7_2_3_6'),
        ('R_8_2', 'A_8_2_1', 'D_8_2_7_3'),
        ('R_9_8', 'A_9_8_2', 'D_9_8_2_1'),
        ('R_10_8', 'A_10_8_9', 'D_10_8_9_2')
    ),
    'vars': {
        'R_1_0': 1.4279748215793069, 'R_2_1': 1.7627308829567612, 'A_2_1_0': 113.78880933352458,
        'R_3_2': 1.220223245519294, 'A_3_2_1': 126.68953118378808, 'D_3_2_1_0': 6.273929367455621e-06,
        'R_4_0': 1.093536138062114, 'A_4_0_1': 108.0618680369275, 'D_4_0_1_3': 61.484528505772055,
        'R_7_2': 1.1010626883230803, 'A_7_2_3': 124.35232167955662, 'D_7_2_3_6': 199.80067229824692,
        'R_8_2': 1.85, 'A_8_2_1': 77.4, 'D_8_2_7_3': 140,
        'R_9_8': 1.21, 'A_9_8_2': 70, 'D_9_8_2_1': 1.64,
        'R_10_8': 0.97, 'A_10_8_9': 111, 'D_10_8_9_2': 103
    },
    'map': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10}
}

xyz = zmat_to_xyz(zmat)
print(xyz)

To reproduce the issue, convert the Z-matrix using the zmat_to_xyz function. Next, visualize the resulting XYZ coordinates in GaussView and examine the geometric structure. Compare the angle A_8_2_1 in the XYZ output to its defined value in the Z-matrix (77.4°) and note the discrepancy.

Expected behavior
The angle A_8_2_1 should match its defined value in the Z-matrix (77.4°).

Additional context
Gaussian successfully computes the correct angle using the same Z-matrix, so the discrepancy appears to be specific to ARC’s zmat_to_xyz function.
- Observed XYZ from zmat_to_xyz:

C          -0.25870627  -0.85853197  -1.53345513
O          -0.25870627  -0.85853197  -0.10548031
C          -0.25870627   0.75443460   0.60554643
O          -0.25870638   1.81623563   0.00427832
H           0.65482121  -0.36220752  -1.87249919
H          -0.25870630  -1.88367885  -1.91708716
H          -1.11876827  -0.30066148  -1.91708716
H          -0.29397484   0.66137562   1.70210249
O           0.91829111  -0.63533633   0.93068322
H           0.10796546  -0.96617019   0.09520653
H           0.70717317  -1.02539152   1.79334547

- Observed XYZ from Gaussian:

C                  0.00000000    0.00000000    0.00000000
O                  0.00000000    0.00000000    1.42800000
C                  1.61293842    0.00000000    2.13901402
O                  2.67471880    0.00000000    1.53775661
H                  0.49630837   -0.91349690   -0.33903344
H                 -1.02516826   -0.00000000   -0.38363940
H                  0.55788139    0.86008042   -0.38363940
H                  1.51987759    0.03526445    3.23560752
O                  0.68578419    1.16051832    3.24177521
H                 -0.05359017    0.71661428    2.39302628
H                  0.95208240    2.06894661    3.03024906

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.