How to surpass "Following atoms are too close:" at least to 0.01 angstrom or allowing ghost atom(s) with a closer distance

Hi,

I tried the following input using Psi4 1.3.2 release, Git: Rev {HEAD} ecbda83

memory 300 mb
molecule oh {
0 2
O 0.0 0.0 0.047
H 0.0 0.0 -0.732
@O 0.0 0.0 0.102
@H 0.0 0.0 -1.515
@O 0.0 0.0 0.159
@H 0.0 0.0 -2.226
units angstrom
symmetry c1
}
set basis 6-31G
set reference uhf
set scf_type pk
E, wfn = energy(‘scf’, return_wfn=True)
energy(‘scf’)

I got a message

File “”, line 32, in
File /psi4conda/lib//python3.6/site-packages/psi4/driver/molutil.py", line 250, in geometry
geom, enable_qm=True, missing_enabled_return_qm=‘minimal’, enable_efp=True, missing_enabled_return_efp=‘none’)
File /psi4conda/lib//python3.6/site-packages/qcelemental/molparse/from_string.py", line 263, in from_string
**molinit)
File /psi4conda/lib//python3.6/site-packages/qcelemental/molparse/from_arrays.py", line 123, in from_input_arrays
verbose=1)
File /psi4conda/lib//python3.6/site-packages/qcelemental/molparse/from_arrays.py", line 347, in from_arrays
tooclose=tooclose) # yapf: disable
File /psi4conda/lib//python3.6/site-packages/qcelemental/molparse/from_arrays.py", line 586, in validate_and_fill_geometry
[(i, j, dm[i, j]) for i, j in zip(*tooclosem)]))
qcelemental.exceptions.ValidationError: Following atoms are too close: [(2, 0, 0.0474115), (4, 0, 0.0840313), (4, 2, 0.036619799999999994), (6, 2, 0.0701034), (6, 4, 0.0334836)]

It seems the distance is between atom O and ghost atom O. I tried to modify from_arrays, set the value of “tooclose” to 0.03. It led to

forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libgdma.so 00007F45CE9660DC for__signal_handl Unknown Unknown
libpthread-2.19.s 00007F45D3BF0330 Unknown Unknown Unknown
core.cpython-36m- 00007F45D1FB3207 Unknown Unknown Unknown
core.cpython-36m- 00007F45CF8EE684 Unknown Unknown Unknown
core.cpython-36m- 00007F45CF511FE6 Unknown Unknown Unknown
python3.6 00007F45D4294744 _PyCFunction_Fast Unknown Unknown
python3.6 00007F45D431B57E Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D43148E4 Unknown Unknown Unknown
python3.6 00007F45D4315771 Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D431553B Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D43171A6 Unknown Unknown Unknown
python3.6 00007F45D429454E PyObject_Call Unknown Unknown
python3.6 00007F45D4341A6C _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D43171A6 Unknown Unknown Unknown
python3.6 00007F45D429454E PyObject_Call Unknown Unknown
python3.6 00007F45D4341A6C _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D43148E4 Unknown Unknown Unknown
python3.6 00007F45D4315771 Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D4341147 _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D431701C PyEval_EvalCode Unknown Unknown
python3.6 00007F45D43993C4 Unknown Unknown Unknown
python3.6 00007F45D439945D PyRun_StringFlags Unknown Unknown
python3.6 00007F45D433DD2E Unknown Unknown Unknown
python3.6 00007F45D4294681 _PyCFunction_Fast Unknown Unknown
python3.6 00007F45D431B42C Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D431701C PyEval_EvalCode Unknown Unknown
python3.6 00007F45D43993C4 Unknown Unknown Unknown
python3.6 00007F45D43997C1 PyRun_FileExFlags Unknown Unknown
python3.6 00007F45D43999C3 PyRun_SimpleFileE Unknown Unknown
python3.6 00007F45D439D4B3 Py_Main Unknown Unknown
python3.6 00007F45D426602E main Unknown Unknown
libc-2.19.so 00007F45D3831F45 __libc_start_main Unknown Unknown
python3.6 00007F45D4346E0E Unknown Unknown Unknown

Is there any way to surpass the 0.1 atomic distance threshold, at least for atom and ghost atom? It seems ORCA can accept a distance closer than 0.1.

Thank you very much

Not that I’m aware of. I tried looking into this a while back but there’s just too many checks on the way.

Note that if you have atoms (or basis function centers) that are that close to each other, you’ll run into trouble if linear dependencies in the basis set are not handled properly. This is why most codes have a hard, large-ish threshold for dependencies. I showed that this problem can be solved without problems only very recently in https://journals.aps.org/pra/abstract/10.1103/PhysRevA.101.032504. I’ve implemented these routines in Psi4; the problem just is that the core code in Psi4 is aimed for chemical relevance :wink:

This is handled by QCElemental and not by PSI4 code itself. Of course both codes are strongly interconnected.

Perhaps try to manually parse a molecule using PSI4 API: Linking C++ and Python
and set tooclose=<some value>
PSI4 API: Linking C++ and Python

I cannot say for sure if this removes all ‘physical validation tests’ down the road.

Thanks. I tried to modify from_arrays.py, set the value of tooclose to 0.03. It led to

forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
libgdma.so 00007F45CE9660DC for__signal_handl Unknown Unknown
libpthread-2.19.s 00007F45D3BF0330 Unknown Unknown Unknown
core.cpython-36m- 00007F45D1FB3207 Unknown Unknown Unknown
core.cpython-36m- 00007F45CF8EE684 Unknown Unknown Unknown
core.cpython-36m- 00007F45CF511FE6 Unknown Unknown Unknown
python3.6 00007F45D4294744 _PyCFunction_Fast Unknown Unknown
python3.6 00007F45D431B57E Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D43148E4 Unknown Unknown Unknown
python3.6 00007F45D4315771 Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D431553B Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D43171A6 Unknown Unknown Unknown
python3.6 00007F45D429454E PyObject_Call Unknown Unknown
python3.6 00007F45D4341A6C _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D43171A6 Unknown Unknown Unknown
python3.6 00007F45D429454E PyObject_Call Unknown Unknown
python3.6 00007F45D4341A6C _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D43148E4 Unknown Unknown Unknown
python3.6 00007F45D4315771 Unknown Unknown Unknown
python3.6 00007F45D431B505 Unknown Unknown Unknown
python3.6 00007F45D4341147 _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D431701C PyEval_EvalCode Unknown Unknown
python3.6 00007F45D43993C4 Unknown Unknown Unknown
python3.6 00007F45D439945D PyRun_StringFlags Unknown Unknown
python3.6 00007F45D433DD2E Unknown Unknown Unknown
python3.6 00007F45D4294681 _PyCFunction_Fast Unknown Unknown
python3.6 00007F45D431B42C Unknown Unknown Unknown
python3.6 00007F45D434038A _PyEval_EvalFrame Unknown Unknown
python3.6 00007F45D4316289 PyEval_EvalCodeEx Unknown Unknown
python3.6 00007F45D431701C PyEval_EvalCode Unknown Unknown
python3.6 00007F45D43993C4 Unknown Unknown Unknown
python3.6 00007F45D43997C1 PyRun_FileExFlags Unknown Unknown
python3.6 00007F45D43999C3 PyRun_SimpleFileE Unknown Unknown
python3.6 00007F45D439D4B3 Py_Main Unknown Unknown
python3.6 00007F45D426602E main Unknown Unknown
libc-2.19.so 00007F45D3831F45 __libc_start_main Unknown Unknown
python3.6 00007F45D4346E0E Unknown Unknown Unknown

seems something deeper :frowning: I guess I shall search more chemical coordinates for a while, though 0.03 seems acceptable to me