Skip to content

IP/EA ADC(0-3) implementation without properties#206

Open
fedy9 wants to merge 6 commits intoadc-connect:masterfrom
fedy9:ip_ea_impl
Open

IP/EA ADC(0-3) implementation without properties#206
fedy9 wants to merge 6 commits intoadc-connect:masterfrom
fedy9:ip_ea_impl

Conversation

@fedy9
Copy link
Contributor

@fedy9 fedy9 commented Mar 6, 2026

  • added IP/EA ADC folders like adc_pp
  • extended adc_type attribute of AdcMethod to EA/IP (e.g. method.adc_type="ip"). Accessible wherever it's necessary
  • IP/EA ADC matrices up to 3rd order yielding excitation energies
  • Modified guess setup that separates guess construction from diagonalisation of the AdcMatrix
  • new guess setup for IP/EA: appropriate estimate of guesses, symmetry setup, doubles guess construction on C++ side
  • generalisation of multiple PP specific routines, e.g. the singles block is selected dynamically (p/h/ph) and no longer automatically "ph"
  • New and adapted error handling
  • modified 'validate_state_parameters()' function in workflow to check for valid IP/EA inputs and returns a new Boolean 'is_alpha' which is None for PP and specifies whether an alpha or beta electron is attached/detached for EA/IP. Default value is "True". Added keyword 'n_doublets' specifying the doublet states for IP/EA
  • spin_change calculation was moved to utility function in guess folder
  • New enforce_spin_kind routines for IP/EA
  • New ChargedExcitation class with AttachedStates and DetachedStates in analogy to ExcitedStates
  • modified describe function of ElectronicStates to be compatible with IP/EA and PP states
  • adapted printouts
  • Updated max_spin_change evaluation in guess_zero.py to check against the actual valid values
  • Updated guess tests for degenerate orbital cases based on guess energy rather than exact indices so CN guess tests work now
  • added Hermiticity test for ADC matrix
  • Updated tests and reference data generators, all tests passed

New methods on user side:
ip-adc{0..3}()
ea-adc{0..3}()
New keywords on user side:
n_doublets, is_alpha
e.g. ip_adc3(scf_result, n_doublets=5, is_alpha=True)
run_adc(method="ip-adc2", ...)

Remarks:

No simultaneous calculation of alpha and beta states to simplify the code and error handling and to keep consistency with PP calculations. If alpha and beta would be computed in the same adcc instance, intermediates could be reused.
But they can also be reused by providing the AdcMatrix instead of the HF data

Quartets not yet implemented since they are pure doubles states which are only Hartree-Fock orbital differences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant