Skip to content

Commit 26f6ab0

Browse files
authored
move state_average_mix to CASBase (pyscf#2968)
* move state_average_mix to CASBase * update example
1 parent 8d3359c commit 26f6ab0

6 files changed

Lines changed: 15 additions & 16 deletions

File tree

examples/geomopt/12-mcscf_excited_states.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from pyscf import gto
1111
from pyscf import scf, mcscf
12+
import copy
1213

1314
mol = gto.Mole()
1415
mol.atom="N; N 1, 1.1"
@@ -56,12 +57,11 @@
5657
# 3. Geometry optimization for mixed FCI solvers.
5758
# Note the state-averaged gradients are optimized.
5859
#
59-
import copy
6060
mc = mcscf.CASSCF(mf, 4,4)
6161
solver1 = mc.fcisolver
6262
solver2 = copy.copy(mc.fcisolver)
6363
solver2.spin = 2
64-
mc = mcscf.addons.state_average_mix_(mc, [solver1, solver2], (.5, .5))
64+
mc = mc.state_average_mix([solver1, solver2], (.5, .5))
6565
excited_grad = mc.nuc_grad_method().as_scanner()
6666
mol1 = excited_grad.optimizer().kernel()
6767

@@ -81,7 +81,7 @@
8181
solver1 = mc.fcisolver
8282
solver2 = copy.copy(mc.fcisolver)
8383
solver2.spin = 2
84-
mc = mcscf.addons.state_average_mix_(mc, [solver1, solver2], (.5, .5))
84+
mc.state_average_mix_([solver1, solver2], (.5, .5))
8585
excited_grad = mc.nuc_grad_method().as_scanner(state=1)
8686
mol1 = excited_grad.optimizer().kernel()
8787

examples/mcscf/41-state_average.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@
7373
solver2.spin = 0
7474

7575
mc = mcscf.CASSCF(mf, 4, 4)
76-
mcscf.state_average_mix_(mc, [solver1, solver2], weights)
76+
# method attribute is also available
77+
mc.state_average_mix_([solver1, solver2], weights)
7778
mc.kernel()

pyscf/mcpdft/mcpdft.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
from pyscf.lib import logger
2020
from pyscf.dft import gen_grid
2121
from pyscf.mcscf import mc1step
22-
from pyscf.mcscf.addons import StateAverageMCSCFSolver, state_average_mix
23-
from pyscf.mcscf.addons import state_average_mix_, StateAverageMixFCISolver
22+
from pyscf.mcscf.addons import StateAverageMCSCFSolver, StateAverageMixFCISolver
2423
from pyscf.mcscf.df import _DFCASSCF, _DFCAS
2524
from pyscf.mcpdft import pdft_veff, pdft_feff
2625
from pyscf.mcpdft.otfnal import transfnal, get_transfnal
@@ -746,13 +745,6 @@ def get_energy_decomposition(self, mo_coeff=None, ci=None, ot=None,
746745
split_x_c=split_x_c, verbose=verbose
747746
)
748747

749-
def state_average_mix(self, fcisolvers=None, weights=(0.5, 0.5)):
750-
return state_average_mix(self, fcisolvers, weights)
751-
752-
def state_average_mix_(self, fcisolvers=None, weights=(0.5, 0.5)):
753-
state_average_mix_(self, fcisolvers, weights)
754-
return self
755-
756748
def multi_state_mix(self, fcisolvers=None, weights=(0.5, 0.5), method='LIN'):
757749
if method.upper() == "LIN":
758750
from pyscf.mcpdft.lpdft import linear_multi_state_mix

pyscf/mcscf/casci.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,13 @@ def state_average_(self, weights=(0.5,0.5), wfnsym=None):
10241024
def state_average(self, weights=(0.5,0.5), wfnsym=None):
10251025
return addons.state_average(self, weights, wfnsym)
10261026

1027+
def state_average_mix(self, fcisolvers=None, weights=(0.5, 0.5)):
1028+
return addons.state_average_mix(self, fcisolvers, weights)
1029+
1030+
def state_average_mix_(self, fcisolvers=None, weights=(0.5, 0.5)):
1031+
addons.state_average_mix_(self, fcisolvers, weights)
1032+
return self
1033+
10271034
@lib.with_doc(addons.state_specific_.__doc__)
10281035
def state_specific_(self, state=1):
10291036
addons.state_specific(self, state)

pyscf/mcscf/test/test_addons.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,7 @@ def test_state_average_mix(self):
321321
solver2.wfnsym = 'A1u'
322322
solver2.spin = 2
323323
mc = mcscf.CASSCF(mfr, 4, 4)
324-
mc = mcscf.addons.state_average_mix_(mc, [solver1, solver2],
325-
(0.25,0.25,0.5))
324+
mc = mc.state_average_mix_([solver1, solver2], (0.25,0.25,0.5))
326325
mc.kernel()
327326
e = mc.e_states
328327
self.assertAlmostEqual(mc.e_tot, -108.80340952016508, 7)

pyscf/mcscf/test/test_mc1step.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ def test_state_average_mix(self):
308308
mc = mcscf.CASSCF(m, 4, 4)
309309
cis1 = mc.fcisolver.copy()
310310
cis1.spin = 2
311-
mc = mcscf.addons.state_average_mix(mc, [cis1, mc.fcisolver], [.5, .5])
311+
mc = mc.state_average_mix([cis1, mc.fcisolver], [.5, .5])
312312
mc.run()
313313
self.assertAlmostEqual(mc.e_states[0], -108.7506795311190, 5)
314314
self.assertAlmostEqual(mc.e_states[1], -108.8582272809495, 5)

0 commit comments

Comments
 (0)