How to make geometry relaxation robuts?

I’m using psi4 for about 2 years and generally I have very hard time with geometry optimization.

I need to optimize many different molecules using B3LYP in high-throughput manner and I don’t have time to hand-pick optimal settings for every single molecule and babysit it personally.

I would like to find some general settings which works most of the time (like 99% of the time) even thout they are not the most efficient.

For example even this simple “furan” molecule which was generated a pre-optimized in avogadro using UFF-forcefield does not converge after 1000 iteration.

In other DFT codes I always used normal Damped-Molecular dynamics (Structure optimization — ASE documentation) or FIRE (Structure optimization — ASE documentation). These algorithms does simple update of force, velocity and position by verlet algorithm in cartesian coordinates. Using that, relaxation of such simple molecules typically take just about ~100 iterations (with reasonable time step). I don’t know how the optimizer in psi4 works but is seems very unstable to me (it fails me in ~60% of cases).

In psi4 I’m getting all sorts of problems due to transformation into internal coordinates, so I’m trying to avoid it by switching to cartesian coords and preventing any transformations.

Also the tag print_trajectory_xyz_file true does not seem to work in psi4 which is big problem for me, because in other codes I use the relaxation trajectory to debug what is the problem when optimization does not converge.

molecule dimer {
0 1
C     -1.12089   -0.65679   -0.73095
C      0.17086   -0.59467    1.08779
C     -1.13636   -0.73338    0.68284
C      0.19464   -0.47638   -1.08990
H      0.70579   -0.36359   -2.03580
O      0.98633   -0.43773    0.01304
H     -1.99219   -0.87240    1.32802
H      0.66115   -0.58569    2.05125
H     -1.96228   -0.72431   -1.40589
units angstrom
no_reorient
symmetry c1
}

set {
    basis cc-pvdz
    scf_type df
    opt_type MIN
    geom_maxiter 1000
    g_convergence GAU_TIGHT
    print_trajectory_xyz_file true
    WRITE_TRAJECTORY true
    opt_coordinates cartesian
    step_type nr
}

optimize('b3lyp' )