-
Couldn't load subscription status.
- Fork 36
Open
Labels
enhancementNew feature or requestNew feature or request
Description
To enable local state-averaging, the H1EZipFCISolver member functions must be further generalized. Currently, in the dev branch, the *_make_rdm* functions will do local state-averaging correctly thanks to this hacky function:
Lines 63 to 84 in ef4bf4a
| # This is a hack designed to, i.e., set | |
| # self.fcisolvers[i].nroots = 1 for all i | |
| # in the context of StateAverageMixFCISolver._loop_civecs, so that local state-averaging | |
| # in the ith Hilbert space can be totally abstracted away from the HIEZipFCISolver, | |
| # StateAverageNMixFCISolver layer | |
| def _loop_civecs (self, *args, **kwargs): | |
| _solver_args = self._solver_args | |
| _state_args = self._state_args | |
| for i, solver in enumerate (self.fcisolvers): | |
| my_args = [] | |
| for arg in args: | |
| if isinstance (arg, (_state_args, _solver_args)): | |
| my_args.append (arg[i]) | |
| else: | |
| my_args.append (arg) | |
| my_kwargs = {} | |
| for key, item in kwargs.items (): | |
| if isinstance (arg, (_state_args, _solver_args)): | |
| my_kwargs[key] = item[i] | |
| else: | |
| my_kwargs[key] = item | |
| yield solver, my_args, my_kwargs |
But kernel, approx_kernel, and the other states_ functions, which use _loop_solver rather than _loop_civecs, generally do not work with local state-averaging.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request