import os
import numpy as np
from pyscf import gto, scf,symm,cc,tools
from pyscf.cc import ccsd_t
from pyscf.gto.basis import parse_molpro
from pyscf.x2c import x2c
mol=gto.Mole()
#unit in angstrom
mol.atom='''La 0 0 0
'''
mol.symmetry='d2h'
#mol = gto.M(atom='N 0 0 1; N 0 0 -1',
# basis={'N':parse_molpro.load('path/to/molpor/basis_name.libmol', 'N')},
# symmetry='d2h')
dat = open('orb.matrop').read().split('\n')
dat = ''.join(dat[2:-2]) # [2:-2] to skip comments
dat = np.array([float(x) for x in dat.split(',')[:-1]]) # [:-1] to remove last comma
#all orbitals in molpro symmetry order
#分子轨道维度做了相应调整,其它部分不变
dims = [22,16,16,11,16,11,11,6] # orbitals in each irrep
off = 0
molpro_mo = []
for i, nd in enumerate(dims):
molpro_mo.append(dat[off:off+nd**2].reshape(nd,nd))
off += nd**2
mo = []
for i, ir in enumerate(mol.irrep_id):
molpro_id = symm.param.IRREP_ID_MOLPRO['D2h'][ir]-1
mo.append(np.dot(mol.symm_orb, molpro_mo[molpro_id]))
mo = np.hstack(mo)
# Check normalization to ensure no bug
#print np.einsum('ji,jk,ki->i', mo, mol.intor('cint1e_ovlp_sph'), mo)
#粘贴完毕
#------------------------------------------------------------------------------------