From 906758017b811d4e38ec9dacd91026225584cf10 Mon Sep 17 00:00:00 2001 From: Friederike Schneider Date: Tue, 18 Aug 2026 10:10:58 +0200 Subject: [PATCH] adapt to new adcc interface --- respondo/MatrixWrapper.py | 2 +- respondo/misc.py | 7 ++++--- respondo/rixs.py | 3 ++- respondo/solve_response.py | 11 ++++++----- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/respondo/MatrixWrapper.py b/respondo/MatrixWrapper.py index f82c85d..d3488f7 100644 --- a/respondo/MatrixWrapper.py +++ b/respondo/MatrixWrapper.py @@ -246,7 +246,7 @@ def __init__( assert callable(projection) self._projection = projection if self.fold_doubles: - assert self.matrix.method.level == 2 + assert self.matrix.method.level.to_int() == 2 self.__select_matrix() def __str__(self): diff --git a/respondo/misc.py b/respondo/misc.py index d8405f1..afec1a8 100644 --- a/respondo/misc.py +++ b/respondo/misc.py @@ -1,12 +1,13 @@ import numpy as np +from adcc import IsrMethod def select_property_method(matrix): - if matrix.method.level < 3: - return matrix.method + if matrix.method.level.to_int() < 3: + return matrix.method.as_method(IsrMethod) else: # Auto-select second-order properties for third-order calc - return matrix.method.at_level(2) + return matrix.method.as_method_at_level(IsrMethod, 2) # taken from adcc (written by mfherbst) diff --git a/respondo/rixs.py b/respondo/rixs.py index d5601db..cb481fc 100644 --- a/respondo/rixs.py +++ b/respondo/rixs.py @@ -61,7 +61,8 @@ def rixs(state, omega, gamma, property_method=None, rotating_wave=True, **solver F += F_prime.T else: mom_product = np.einsum( - "A,B->AB", state.transition_dipole_moment, mp.dipole_moment(property_method.level) + "A,B->AB", state.transition_dipole_moment, + mp.dipole_moment(property_method.level.to_int()) ) gs_term = +mom_product / (-(omega + complex(0, gamma))) - mom_product.T / ( omega_prime + complex(0, gamma) diff --git a/respondo/solve_response.py b/respondo/solve_response.py index 9726b32..607be50 100644 --- a/respondo/solve_response.py +++ b/respondo/solve_response.py @@ -1,6 +1,6 @@ import numpy as np from adcc.adc_pp.state2state_transition_dm import state2state_transition_dm -from adcc.OneParticleOperator import product_trace +from adcc.NParticleOperator import product_trace from adcc.solver.conjugate_gradient import conjugate_gradient, default_print from respondo.jacobi_diis import jacobi_diis @@ -97,8 +97,9 @@ def transition_polarizability(method, ground_state, from_vecs, ops, to_vecs): from_vecs = [from_vecs] if not isinstance(to_vecs, list): to_vecs = [to_vecs] - if not isinstance(ops, list): - ops = [ops] + if not isinstance(ops, (tuple, list)): + ops = (ops,) + ret = np.zeros((len(from_vecs), len(ops), len(to_vecs))) for i, from_vec in enumerate(from_vecs): @@ -114,8 +115,8 @@ def transition_polarizability_complex(method, ground_state, from_vecs, ops, to_v from_vecs = [from_vecs] if not isinstance(to_vecs, list): to_vecs = [to_vecs] - if not isinstance(ops, list): - ops = [ops] + if not isinstance(ops, (tuple, list)): + ops = (ops,) # TODO: maybe use non-complex transition_polarizability function? # TODO: "recognize" ResponseVector/AmplitudeVector