Skip to content

Fix: detect SCRF polarization charge error and troubleshoot with nosymm#900

Closed
LeenFahoum wants to merge 1 commit into
mainfrom
nosymm
Closed

Fix: detect SCRF polarization charge error and troubleshoot with nosymm#900
LeenFahoum wants to merge 1 commit into
mainfrom
nosymm

Conversation

@LeenFahoum

Copy link
Copy Markdown
Contributor

Gaussian jobs using SMD/SCRF solvation can fail at l9999 with "Error on total polarization charges", which is a cavity construction issue unrelated to geometry convergence. ARC was classifying this as a generic Unconverged error and never attempting nosymm, which disables symmetry in the cavity and typically resolves the issue. Added detection of this error string in the l9999 block of determine_ess_status so that NoSymm is included in the parsed keywords, triggering the existing trsh_keyword_nosymm troubleshooting path.

@LeenFahoum LeenFahoum requested review from Lilachn91 and alongd June 16, 2026 11:55
@github-actions github-actions Bot added the Module: trsh Troubleshooting label Jun 16, 2026
@codecov

codecov Bot commented Jun 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 63.02%. Comparing base (a56bd2c) to head (913ff90).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #900      +/-   ##
==========================================
- Coverage   63.03%   63.02%   -0.01%     
==========================================
  Files         114      114              
  Lines       38178    38185       +7     
  Branches     9990     9991       +1     
==========================================
+ Hits        24065    24068       +3     
- Misses      11221    11227       +6     
+ Partials     2892     2890       -2     
Flag Coverage Δ
functionaltests 63.02% <ø> (-0.01%) ⬇️
unittests 63.02% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves ARC’s Gaussian troubleshooting by recognizing a specific SCRF/SMD failure mode (“Error on total polarization charges” in Link 9999) and tagging it to trigger the existing nosymm troubleshooting path, instead of treating it as a generic unconverged optimization.

Changes:

  • Add detection of “Error on total polarization charges” in determine_ess_status() for Gaussian Link 9999 terminations and include NoSymm in the returned keywords.
  • Add a Gaussian output fixture reproducing the Link 9999 polarization-charge error.
  • Extend unit tests to cover the new error classification and keyword behavior.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
arc/testing/trsh/gaussian/polarization_charges.out Adds a minimal Gaussian output sample exhibiting the polarization-charge Link 9999 failure.
arc/job/trsh.py Detects the polarization-charge error and emits ["Unconverged", "GL9999", "NoSymm"] to trigger existing nosymm troubleshooting.
arc/job/trsh_test.py Adds a regression test asserting correct status/keywords/error message for the new fixture.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@alongd

alongd commented Jun 21, 2026

Copy link
Copy Markdown
Member

@LeenFahoum, looks good! please rebase

@LeenFahoum LeenFahoum force-pushed the nosymm branch 3 times, most recently from 380f31a to 913ff90 Compare June 21, 2026 07:53
Gaussian jobs using SMD/SCRF solvation can fail at l9999 with
"Error on total polarization charges", which is a cavity construction
issue unrelated to geometry convergence. ARC was classifying this as
a generic Unconverged error and never attempting nosymm, which disables
symmetry in the cavity and typically resolves the issue.
Added detection of this error string in the l9999 block of
determine_ess_status so that NoSymm is included in the parsed keywords,
triggering the existing trsh_keyword_nosymm troubleshooting path.
@alongd

alongd commented Jun 29, 2026

Copy link
Copy Markdown
Member

@LeenFahoum, please rebase and Slack me to merge

@LeenFahoum

Copy link
Copy Markdown
Contributor Author

Closing this PR, since after checking with Gaussian support we found that "Error on total polarization charges" is not a reliable indication of the convergence issue. It appears in SCRF calculations regardless of whether the job eventually converges, so using it as a detection signal in ARC is not the right approach.
The issue seems to be related to Gaussian reorienting the molecule during SCRF optimizations with tight thresholds, which can introduce numerical noise for C1 cases. Adding NoSymm avoids this by keeping the molecule in the input orientation.

I will implement the fix in the qa_ts branch instead, where ARC can add NoSymm more generally when a Gaussian SCRF calculation does not converge.

@LeenFahoum LeenFahoum closed this Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Module: trsh Troubleshooting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants