SIGSEGV, segmentation fault occured during transition state search

Greetings!

I got the forrtl: severe (174): SIGSEGV, segmentation fault occurred error during a transition state search in a system of interaction between an acetate anion and a single Zn2+ cation.

The following is the input:

set_num_threads(16)

molecule {
+1 1
--
-1 1
O        1.1701300000      0.1654470000     -0.0947420000                 
O        3.1276960000     -0.8622710000      0.4937720000                 
C        3.2066180000      1.1786520000     -0.6749440000                 
C        2.4258700000      0.0481420000     -0.0275680000                 
H        2.9541340000      1.2423440000     -1.7375930000                 
H        2.9541350000      2.1273840000     -0.1920510000                 
H        4.2856690000      1.0209270000     -0.5846250000                 
--
2 1
Zn       0.8640000000     -2.2140000000      1.2660000000                 
}
set optking { 
    opt_coordinates = cartesian
 }

set {
maxiter 500
geom_maxiter 500
basis def2-QZVPPD
scf_type df
guess sad
reference rks
opt_type ts
frag_mode MULTI
}

optimize('b3lyp-d')

The process went until the following part:

	Back-transformation to cartesian coordinates...
	Successfully converged to displaced geometry.

	--- Internal Coordinate Step in ANG or DEG, aJ/ANG or AJ/DEG ---
	 ---------------------------------------------------------------------------
	   Coordinate                Previous        Force       Change         New 
	   ----------                --------       ------       ------       ------
	    1 R(1,X)          =     -0.471628     0.153137     0.000441    -0.471186
	    2 R(1,Y)          =      1.251632    -0.165398    -0.063903     1.187729
	    3 R(1,Z)          =     -0.715786     0.094543     0.037681    -0.678105
	    4 R(2,X)          =      1.485938    -0.129646     0.012853     1.498791
	    5 R(2,Y)          =      0.223914     0.114420    -0.014956     0.208957
	    6 R(2,Z)          =     -0.127272    -0.065609     0.009723    -0.117549
	    7 R(3,X)          =      1.564860     0.226283    -0.007627     1.557233
	    8 R(3,Y)          =      2.264837     0.208281    -0.009731     2.255105
	    9 R(3,Z)          =     -1.295988    -0.119175     0.004979    -1.291009
	   10 R(4,X)          =      0.784112    -0.162924    -0.001743     0.782369
	   11 R(4,Y)          =      1.134327    -0.220971    -0.031031     1.103296
	   12 R(4,Z)          =     -0.648612     0.126513     0.018732    -0.629880
	   13 R(5,X)          =      1.312376    -0.039272    -0.022157     1.290219
	   14 R(5,Y)          =      2.328529    -0.025754    -0.017270     2.311259
	   15 R(5,Z)          =     -2.358637     0.034111     0.009435    -2.349202
	   16 R(6,X)          =      1.312377    -0.039251    -0.021381     1.290997
	   17 R(6,Y)          =      3.213569    -0.042436    -0.016566     3.197003
	   18 R(6,Z)          =     -0.813095     0.004928     0.008017    -0.805078
	   19 R(7,X)          =      2.643911    -0.054663    -0.010395     2.633516
	   20 R(7,Y)          =      2.107112    -0.030229    -0.009523     2.097589
	   21 R(7,Z)          =     -1.205669     0.017317     0.004492    -1.201176
	 ---------------------------------------------------------------------------

	Back-transformation to cartesian coordinates...
	Successfully converged to displaced geometry.

	--- Internal Coordinate Step in ANG or DEG, aJ/ANG or AJ/DEG ---
	 ---------------------------------------------------------------------------
	   Coordinate                Previous        Force       Change         New 
	   ----------                --------       ------       ------       ------
	    1 R(8,X)          =     -0.777758     0.046208     0.049893    -0.727864
	    2 R(8,Y)          =     -1.127815     0.161888     0.162799    -0.965016
	    3 R(8,Z)          =      0.644956    -0.092512    -0.092952     0.552004
	 ---------------------------------------------------------------------------

The output file just suddenly stopped, while the following error popped up in the terminal:

forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source
libgdma.so         00007F61BFEE40DC  for__signal_handl     Unknown  Unknown
libpthread-2.17.s  00007F61CD6995E0  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C254AA76  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C249F9F7  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C23FE666  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C4C136AD  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C4D1C7C2  Unknown               Unknown  Unknown
core.cpython-39-x  00007F61C48EBB8F  Unknown               Unknown  Unknown
python3.9          0000000000507357  Unknown               Unknown  Unknown
python3.9          00000000004F06EC  _PyObject_MakeTpC     Unknown  Unknown
python3.9          00000000004ECC13  _PyEval_EvalFrame     Unknown  Unknown
python3.9          00000000004E6ABA  Unknown               Unknown  Unknown
python3.9          00000000004F7DE4  _PyFunction_Vecto     Unknown  Unknown
python3.9          00000000004E7D89  _PyEval_EvalFrame     Unknown  Unknown
python3.9          00000000004E6ABA  Unknown               Unknown  Unknown
python3.9          00000000004E6747  _PyEval_EvalCodeW     Unknown  Unknown
python3.9          00000000004E66F9  PyEval_EvalCodeEx     Unknown  Unknown
python3.9          00000000005932FB  PyEval_EvalCode       Unknown  Unknown
python3.9          00000000005C0B77  Unknown               Unknown  Unknown
python3.9          00000000005BCB90  Unknown               Unknown  Unknown
python3.9          00000000005B47AB  PyRun_StringFlags     Unknown  Unknown
python3.9          0000000000597FC8  Unknown               Unknown  Unknown
python3.9          00000000004F8854  Unknown               Unknown  Unknown
python3.9          00000000004E7D89  _PyEval_EvalFrame     Unknown  Unknown
python3.9          00000000004E6ABA  Unknown               Unknown  Unknown
python3.9          00000000004E6747  _PyEval_EvalCodeW     Unknown  Unknown
python3.9          00000000004E66F9  PyEval_EvalCodeEx     Unknown  Unknown
python3.9          00000000005932FB  PyEval_EvalCode       Unknown  Unknown
python3.9          00000000005C0B77  Unknown               Unknown  Unknown
python3.9          00000000005BCB90  Unknown               Unknown  Unknown
python3.9          0000000000456493  Unknown               Unknown  Unknown
python3.9          00000000005B6872  PyRun_SimpleFileE     Unknown  Unknown
python3.9          00000000005B3DEE  Py_RunMain            Unknown  Unknown
python3.9          00000000005873A9  Py_BytesMain          Unknown  Unknown
libc-2.17.so       00007F61CCBDFC05  __libc_start_main     Unknown  Unknown
python3.9          000000000058725E  Unknown               Unknown  Unknown

The matter seems to only pop up once frag_mode MULTI is included as a setting in the input. As additional information, that option was added due to failure of optimization convergence during a previous transition state search due to splitting of acetate molecule into CH3 and CO2 during the search. Hence, I considered using fragments to preserve the molecule during optimization. I would appreciate a feedback on this matter, or any suggestions that can help this calculation reach convergence!

@AlexanderH This one is for you.

Just in case this would help, I’m adding information about my conda installation. I’m using a version
of Psi4 1.5 to avoid lmax error in optimizations of systems with Zn ions.
Kindly find the full conda list below:

_libgcc_mutex             0.1                        main
_openmp_mutex             5.1                       1_gnu
ambit                     0.5.1                hbe8a562_1    psi4
attrs                     22.1.0           py39h06a4308_0
blas                      1.0                         mkl
bottleneck                1.3.5            py39h7deecbd_0
ca-certificates           2023.01.10           h06a4308_0
certifi                   2022.12.7        py39h06a4308_0
chemps2                   1.8.10               hbe8a562_0    psi4
dftd3                     3.2.1                h84218bc_2    psi4
dkh                       1.2                  h173d85e_2    psi4
flit-core                 3.6.0              pyhd3eb1b0_0
gau2grid                  2.0.7                hd18ef5c_0    psi4
gcp                       2.0.2                he991be0_2    psi4
gdma                      2.2.6                h0e1e685_6    psi4
hdf5                      1.10.6               h3ffc7dd_1
importlib-metadata        4.11.3           py39h06a4308_0
importlib_metadata        4.11.3               hd3eb1b0_0
importlib_resources       5.2.0              pyhd3eb1b0_1
intel-openmp              2021.4.0          h06a4308_3561
ld_impl_linux-64          2.38                 h1181459_1
libffi                    3.4.2                h6a678d5_6
libgcc-ng                 11.2.0               h1234567_1
libgfortran-ng            11.2.0               h00389a5_1
libgfortran5              11.2.0               h1234567_1
libgomp                   11.2.0               h1234567_1
libint2                   2.6.0                hc9558a2_9    psi4
libstdcxx-ng              11.2.0               h1234567_1
libxc                     5.2.3                hfebba4c_0    psi4
mkl                       2021.4.0           h06a4308_640
mkl-service               2.4.0            py39h7f8727e_0
mkl_fft                   1.3.1            py39hd3c417c_0
mkl_random                1.2.2            py39h51133e4_0
more-itertools            8.12.0             pyhd3eb1b0_0
ncurses                   6.4                  h6a678d5_0
networkx                  2.8.4            py39h06a4308_0
numexpr                   2.8.4            py39he184ba9_0
numpy                     1.23.5           py39h14f4228_0
numpy-base                1.23.5           py39h31eccc5_0
openssl                   1.1.1t               h7f8727e_0
packaging                 22.0             py39h06a4308_0
pandas                    1.5.3            py39h417a72b_0
pcmsolver                 1.2.1.1          py39h6d17ec8_2    psi4
pint                      0.17               pyhd8ed1ab_0    psi4
pip                       22.3.1           py39h06a4308_0
pluggy                    0.13.1           py39h06a4308_0
psi4                      1.5+e9f4d6d      py39hbf93d9d_0    psi4
psutil                    5.9.0            py39h5eee18b_0
py                        1.11.0             pyhd3eb1b0_0
py-cpuinfo                8.0.0              pyhd3eb1b0_1
pydantic                  1.10.2           py39h5eee18b_0
pytest                    5.4.3            py39h06a4308_0
python                    3.9.16               h7a1cb2a_0
python-dateutil           2.8.2              pyhd3eb1b0_0
pytz                      2022.7           py39h06a4308_0
pyyaml                    6.0              py39h5eee18b_1
qcelemental               0.25.1             pyhd8ed1ab_1    psi4
qcengine                  0.26.0             pyhd8ed1ab_0    psi4
readline                  8.2                  h5eee18b_0
setuptools                65.6.3           py39h06a4308_0
simint                    0.7                  h642920c_1    psi4
six                       1.16.0             pyhd3eb1b0_1
sqlite                    3.40.1               h5082296_0
tk                        8.6.12               h1ccaba5_0
typing-extensions         4.4.0            py39h06a4308_0
typing_extensions         4.4.0            py39h06a4308_0
tzdata                    2022g                h04d1e81_0
wcwidth                   0.2.5              pyhd3eb1b0_0
wheel                     0.38.4           py39h06a4308_0
xz                        5.2.10               h5eee18b_1
yaml                      0.2.5                h7b6447c_0
zipp                      3.11.0           py39h06a4308_0
zlib                      1.2.13               h5eee18b_0

I hope this helps!

Once again, @AlexanderH.

Hi!

Unfortunately the version of psi4 required for the calculation is forcing an old version of the optimization module. I’m unsure if frag multi is actually supported or not in that version. I would avoid that option.

Regardless my recommendation for a TS optimization like this is to compute an initial hessian. While expensive, curvature information is very important for determining a good step direction, uphill along the reaction mode. This can be done with full_hess_every 0 If this is too expensive for your workflow, a TZ hessian would likely work well and be much cheaper computationally. You can compute a hessian with hessian_write on earlier in your input and perform the optimization with cart_hess_read on to explicitly use a lower level hessian.

Hello!

Thanks for the advice!

I’ve tried doing it with full_hess_every at varying values, but the calculations seem to still not converge. When I look at the trajectory, it seems like its due to the acetate molecule being broken during optimization. In light of these findings, I’m trying to install the latest version of Psi4 with higher AM to enable fragments and resolve non-convergence at the same time.

Regardless, thank you very much for your insight! I’ll let this board know how it goes once I have meaningful results.

Best.