Add default for properties origin at the COC#482
Add default for properties origin at the COC#482jaclark5 wants to merge 5 commits intoMolSSI:masterfrom
Conversation
|
This has bitten me a number of times too, especially in conjunction with QCElemental's default of |
|
This change has been verified to work in DS: 464, the following records have completed: [147472201, 147472680, 147472714, 147472946, 147472929, 147472957, 147473071, 147472975, 147472963, 147473206, 147473178, 147473494, 147473396, 147473319, 147473394, 147473291] |
|
Talking with Ben, I think I understand the problem, and yes properties at the origin is weird with fix_com/fix_orientation. (Psi4's default is to reorient to a standard frame, so the origin makes more sense there.) Is center-of-charge much preferred over center-of-mass? I know COC would have been a better choice to start with for isotopic substitution, but everything else in Psi4 is COM-based. |
|
@loriab I agree that COM makes more sense, I suggest COC because it's what the other packages do so psi4 would be consistent. We discussed in an internal meeting and Bill Swope suggested that COC is chosen because it's independent of isotope. |
Codecov Report❌ Patch coverage is 🚀 New features to boost your workflow:
|
|
Hi, I've rebased this, standardized it on QCSchema v1, and started another test. I definitely agree with the problem -- you provided a geometry, didn't ask for it to have its origin respected, and yet the molecule is frozen at that geometry, and properties are calculated respecting the input origin. The difficulty is that the "you didn't ask for it to have its origin respected" is imposed by QCFractal (here, I think https://github.com/MolSSI/QCFractal/blob/main/qcfractal/qcfractal/components/molecules/db_models.py#L56), not QCElemental or QCEngine. Below shows an ordinary molecule input that gets adjusted to COM and thus the properties calc from (0,0,0) makes sense. From QCEngine's POV, the PR is saying even if the user specifically asks that the origin be respected (fix_*=T), ignore that, and compute properties from NUCLEAR_CHARGE (or COM), and that doesn't seem very intuitive. I think this needs solving, but it's probably bigger than just here. If you think I've misanalyzed something, please let me know. |
|
@loriab let me lay out what I understand and get @bennybp opinion. We agree that it's a problem that the origin is used to calculate the scf properties by default. This could be resolved / changed in a few places:
I have confirmed that setting |
|
@jaclark5, I agree with your analysis above. iirc, the motivation for fix_=T imposed by qcfractal was to provide a little more standardization among calcs living in the qca database. For example, gradients should be the same btwn qc programs if run as fix_=T; whereas, each program has its own std orientation so unlikely to match at fix_*=F. I think the longer-term sol'n is: |
|
@loriab Oh I'm glad to hear that you floated the idea of COC at PsiCon, I hope that went well! I'm not sure what you mean by the second point, but it sounds like an issue should be made in this repo for it, and that this current PR should be closed and not pursued. |
|
Will not pursue issue in this repo |
Description
Make SCF properties calculated from the COC (center of charge) of the molecule rather than the origin. This isn't an issue for dipole moments of neutral molecules, but unexpectedly results in very large SCF multipole moments.
I understand if this should be an "us" problem and we should remember to add the keyword, but this is very unexpected behevior. Both Gaussian and ORCA report multiple moments from the center of nuclear charge, so I think this should be consistent.
Changelog description
Set psi4 properties_origin to "center of charge" instead of origin.
Status