Problem reading orbitals in DMRG-CASSCF

Hi,

I tried to read orbitals in from the previously converged calculations, but the energy is much higher than expected.
Below I attached the input (N2/STO-3G).

R = 1.2 angstrom gives E = -107.6772347442
R = 1.22 angstrom gives E = -106.4360604200 (when reading in orbitals from R=1.2)
E = -107.6760114825 (when starting from ROHF orbitals)

I wonder if I am using ref_wfn wrong in the input below. Please let me know if you have some thoughts.

memory 200 Gb

molecule N2 {N
N 1 R
symmetry c1
units angstrom
}

Rvals = [1.20 + i * 0.02 for i in range (241)]

set basis sto-3g
set reference rohf
set soscf true
set DAMPING_PERCENTAGE 50.0
set SOSCF_START_CONVERGENCE 1e-1
set e_convergence 1e-7
set d_convergence 1e-7
set maxiter 10000
set solver_maxiter 100000

set dmrg_irrep 0
set dmrg_multiplicity 1
set restricted_docc [2]
set active [8]

set dmrg_sweep_states [ 500, 500, 1000]
set dmrg_sweep_energy_conv [ 1e-8, 1e-8, 1e-3]
set dmrg_sweep_dvdson_rtol [ 1e-6, 1e-6, 1e-8]
set dmrg_sweep_max_sweeps [ 5, 30, 30]
set dmrg_sweep_noise_prefac [ 0.05, 0.0, 0.0]
set dmrg_print_corr true
set dmrg_mps_write false

set dmrg_unitary_write true
set dmrg_diis true
set dmrg_scf_diis_thr 1e-2
set dmrg_diis_write true

set dmrg_excitation 0 # Ground state
set dmrg_scf_state_avg false
set dmrg_scf_active_space LOC # INPUT; NO; LOC
set dmrg_local_init true

count = 0

N2.R = 1.20
edmrg, prev_dmrg_wfn = energy(“dmrg-scf”, return_wfn=True)

for R in Rvals[1:]:
N2.R = R
set maxiter 10000
set scf guess read
edmrg, cur_dmrg_wfn = energy(“dmrg-scf”, return_wfn=True, ref_wfn=prev_dmrg_wfn)
prev_dmrg_wfn = cur_dmrg_wfn.copy()
count += 1

There was a bug at some point reading in orbitals for ROHF Wavefunctions that was fixed in the last month or so. Can you try this on a current version of Psi4?

Sorry – I made a typo.
I used an RHF wavefunction and it still produces the same wrong energy.

Here is the correct input:

memory 200 Gb

molecule N2 {N
N 1 R
symmetry c1
units angstrom
}

Rvals = [1.20 + i * 0.02 for i in range (241)]

set basis sto-3g
set reference rhf
set soscf true
set DAMPING_PERCENTAGE 50.0
set SOSCF_START_CONVERGENCE 1e-1
set e_convergence 1e-7
set d_convergence 1e-7
set maxiter 10000
set solver_maxiter 100000

set dmrg_irrep 0
set dmrg_multiplicity 1
set restricted_docc [2]
set active [8]

set dmrg_sweep_states [ 500, 500, 1000]
set dmrg_sweep_energy_conv [ 1e-8, 1e-8, 1e-3]
set dmrg_sweep_dvdson_rtol [ 1e-6, 1e-6, 1e-8]
set dmrg_sweep_max_sweeps [ 5, 30, 30]
set dmrg_sweep_noise_prefac [ 0.05, 0.0, 0.0]
set dmrg_print_corr true
set dmrg_mps_write false

set dmrg_unitary_write true
set dmrg_diis true
set dmrg_scf_diis_thr 1e-2
set dmrg_diis_write true

set dmrg_excitation 0 # Ground state
set dmrg_scf_state_avg false
set dmrg_scf_active_space LOC # INPUT; NO; LOC
set dmrg_local_init true

count = 0

N2.R = 1.20
edmrg, prev_dmrg_wfn = energy(“dmrg-scf”, return_wfn=True)

for R in Rvals[1:]:
N2.R = R
set maxiter 10000
set scf guess read
edmrg, cur_dmrg_wfn = energy(“dmrg-scf”, return_wfn=True, ref_wfn=prev_dmrg_wfn)
prev_dmrg_wfn = cur_dmrg_wfn
count += 1