def solver(mol, singlet=True, symm=None): if symm is None: symm = mol.symmetry if symm: if singlet: return direct_spin0_symm.FCISolver(mol) else: return direct_spin1_symm.FCISolver(mol) else: if singlet: return direct_spin0.FCISolver(mol) else: return direct_spin1.FCISolver(mol)
def solver(mol=None, singlet=False, symm=None): if mol and symm is None: symm = mol.symmetry if symm: if singlet: return direct_spin0_symm.FCISolver(mol) else: return direct_spin1_symm.FCISolver(mol) else: if singlet: # The code for singlet direct_spin0 sometimes gets error of # "State not singlet x.xxxxxxe-06" due to numerical issues. # Calling direct_spin1 is slightly slower but more robust than # direct_spin0 especially when combining to energy penalty method # (:func:`fix_spin_`) return direct_spin0.FCISolver(mol) else: return direct_spin1.FCISolver(mol)