AggregateExcitonAnalysis¶
Class adding exciton analysis on molecular aggregates
Most of the present methods are available after the aggregate is
diagonalized by calling the diagonalize
method.
This class should not be used directly. Use Aggregate class, which inherits all the methods from here, instead.
Examples
>>> import quantarhei as qr
>>> agg = qr.TestAggregate("homodimer-2")
>>> agg.set_coupling_by_dipole_dipole()
>>> agg.build()
>>> # create information about eigenstates of the aggregate (to call `diagonalize()` is crucial)
>>> agg.diagonalize()
>>> #
>>> # Create a report on expantions of state with index `1`
>>> agg.report_on_expansion(state=1)
+-------+-------------+--------------+------------------+
| index | squares | coefficients | state signatures |
+-------+-------------+--------------+------------------+
| 1 | 0.50000000 | -0.70710678 | ((1, 0), ()) |
| 2 | 0.50000000 | 0.70710678 | ((0, 1), ()) |
| 0 | 0.00000000 | 0.00000000 | ((0, 0), ()) |
| 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) |
| 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) |
+-------+-------------+--------------+------------------+
Class Details¶
-
class
quantarhei.builders.aggregate_excitonanalysis.
AggregateExcitonAnalysis
(molecules=None, name='')[source]¶ Class adding exciton analysis on molecular aggregates
Methods
add_Mode_by_name
(name, mode)add_Molecule
(mono)Adds monomer to the aggregate allstates
([mult, mode, all_vibronic, …])Generator of all aggregate states build
([mult, sbi_for_higher_ex, …])Builds aggregate properties calculate_resonance_coupling
([method, params])Sets resonance coupling calculated by a given method cast_to_vibronic
(KK)Casts an electronic operator to a vibronic basis clean
()Cleans the aggregate object of anything built convert_to_DensityMatrix
(psi[, …])Converts StateVector into DensityMatrix (possibly reduced one) copy
()Returns a shallow copy of the self coupling
(state1, state2[, full])Coupling between two aggregate states deepcopy
()Returns a deep copy of the self diagonalize
()Transforms some internal quantities into diagonal basis dipole_dipole_coupling
(kk, ll[, epsr, delta])Calculates dipole-dipole coupling elsignatures
([mult, mode, emax])Generator of electronic signatures elstates
([mult, mode, save_indices])Generator of electronic states exciton_report
([file, start, stop, Nrep, …])Prints a report on excitonic properties of the aggregate fc_factor
(state1, state2)Franck-Condon factors between two vibrational states get_DensityMatrix
([condition_type, …])Returns density matrix according to specified condition get_ElectronicState
(sig[, index])Returns electronic state corresponding to this aggregate get_FoersterRateMatrix
()Returns Förster rate matrix for the open system get_Hamiltonian
()Returns the aggregate Hamiltonian get_KTHierarchy
([depth])Returns the Kubo-Tanimura hierarchy of an open system get_KTHierarchyPropagator
([depth])Returns a propagator based on the Kubo-Tanimura hierarchy get_RWA_suggestion
()Returns average transition energy get_RedfieldRateMatrix
()Returns Redfield rate matrix get_ReducedDensityMatrixPropagator
(timeaxis)Returns propagator of the density matrix get_RelaxationTensor
(timeaxis[, …])Returns a relaxation tensor corresponding to the system get_SystemBathInteraction
()Returns the aggregate SystemBathInteraction object get_TransitionDipoleMoment
()Returns the aggregate transition dipole moment operator get_VibronicState
(esig, vsig)Returns vibronic state corresponding to the two specified signatures get_dipole_by_name
(name, N, M)get_electronic_Hamiltonian
([full])Returns the aggregate electronic Hamiltonian get_electronic_groundstate
()Indices of states in electronic ground state get_energy_by_name
(name, N)Electronic energy get_excited_density_matrix
([condition, …])Returns the density matrix corresponding to excitation condition get_excitonic_band
([band])Indices of states in a given excitonic band. get_expansion_squares
([state])Returns the squares of expansion coefficients of an excitonic state. get_intersite_mixing
([state1, state2])Returns inter site mixing ration get_lindich_axes
()get_max_excitations
()Returns a list of maximum number of excitations on each monomer get_nearest_Molecule
(molecule)Returns a molecule nearest in the aggregate to a given molecule get_resonance_coupling
(i, j)Returns resonance coupling value between two sites get_state_energy
([state])Return the energy of a state with a given index get_state_signature_by_index
(N)Return aggregate vibronic state signature by its index get_temperature
()Returns temperature associated with this aggregate get_thermal_ReducedDensityMatrix
()Returns equilibrium density matrix for a give temparature get_transition
(Nf, Ni)Returns relevant info about the energetic transition get_transition_dephasing
(state1[, state2])Returns phenomenological dephasing of a given transition get_transition_dipole
([state1, state2])Returns transition dipole moment between two state. get_transition_width
(state1[, state2])Returns phenomenological width of a given transition get_width
(n, N, M)has_SystemBathInteraction
()Returns True if the Aggregate is embedded in a defined environment init_coupling_matrix
()Nullifies coupling matrix liouville_pathways_1
([eUt, ham, dtol, ptol, …])Generator of the first order Liouville pathways liouville_pathways_3
([ptype, dtol, ptol, …])Generator of Liouville pathways liouville_pathways_3T
([ptype, eUt, ham, t2, …])Generator of Liouville pathways with energy transfer load
(filename[, test])Loads an object from a file and returns it loaddir
(dirname)Returns a directory of objects saved into a directory number_of_electronic_states_in_band
([band])Number of states in a given excitonic band number_of_states_in_band
([band, …])Number of states in a given excitonic band rebuild
([mult, sbi_for_higher_ex, …])Cleans the object and rebuilds it report_on_expansion
([file, state, N])Prints a short report on the composition of an exciton state save
(filename[, comment, test])Saves the object with all its content into a file savedir
(dirname[, tag, comment, test])Saves an object into directory containing a file with unique name scopy
()Creates a copy of the object by saving and loading it set_SystemBathInteraction
(sbi)Sets the SystemBathInteraction operator for this aggregate set_coupling_by_dipole_dipole
([epsr, delta])Sets resonance coupling by dipole-dipole interaction set_egcf_matrix
(cm)Sets a matrix describing system bath interaction set_lindich_axes
(axis_orthog_membrane)Creates a coordinate system with one axis supplied by the user (typically an axis orthogonal to the membrane), and two other axes, all of which are orthonormal. set_resonance_coupling
(i, j, coupling[, …])Sets resonance coupling value between two sites set_resonance_coupling_matrix
(coupmat)Sets resonance coupling values from a matrix total_number_of_electronic_states
([mult])Total number of electronic states in the aggregate total_number_of_states
([mult, …])Total number of states in the aggregate trace_over_vibrations
(operator[, Nt])Average an operator over vibrational degrees of freedom transition_dipole
(state1, state2)Transition dipole moment between two states vibsignatures
(elsignature[, approx])Generator of vibrational signatures wipe_out
()Removes everything except of name attribute convert_energy_2_current_u convert_energy_2_internal_u convert_length_2_current_u convert_length_2_internal_u get_Mode_by_name get_Molecule_by_name get_Molecule_index get_dipole remove_Molecule unit_repr unit_repr_latex -
exciton_report
(file=None, start=1, stop=None, Nrep=5, criterium=None)[source]¶ Prints a report on excitonic properties of the aggregate
Parameters: - start (int (default = 1)) – First state to report on. Because 0 is often the ground state, it is skipped. For systems with molecular vibrations, first mixed states start with an index different from 1.
- stop (int (default = None)) – Where to stop the report. if None, all states are reported
- Nrep (int (default = 5)) – How many sites of the exciton decomposition we should list
Examples
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize() ... >>> agg.exciton_report() Report on excitonic properties ------------------------------ <BLANKLINE> Exciton 1 ========= <BLANKLINE> Transition energy : 11967.06803045 1/cm Transition dipole moment : 2.48026499 D +-------+-------------+--------------+------------------+ | index | squares | coefficients | state signatures | +-------+-------------+--------------+------------------+ | 1 | 0.90998848 | -0.95393316 | ((1, 0), ()) | | 2 | 0.09001152 | 0.30001920 | ((0, 1), ()) | | 0 | 0.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | +-------+-------------+--------------+------------------+ <BLANKLINE> Exciton 2 ========= <BLANKLINE> Transition energy : 12332.93196955 1/cm Transition dipole moment : 5.16973501 D +-------+-------------+--------------+------------------+ | index | squares | coefficients | state signatures | +-------+-------------+--------------+------------------+ | 2 | 0.90998848 | 0.95393316 | ((0, 1), ()) | | 1 | 0.09001152 | 0.30001920 | ((1, 0), ()) | | 0 | 0.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | +-------+-------------+--------------+------------------+ <BLANKLINE>
-
get_expansion_squares
(state=0)[source]¶ Returns the squares of expansion coefficients of an excitonic state.
The Aggregate must be built and diagonalized. This output is used by the report_on_expansion() method.
>>> import quantarhei as qr >>> agg = qr.TestAggregate("homodimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize() ... ... # expansion coefficients >>> (indx, coefs, sqrs) = agg.get_expansion_squares(1) >>> print(indx) [0, 1, 2] >>> print(coefs) [ 0. -0.70710678 0.70710678] >>> print(sqrs) [ 0. 0.5 0.5]
-
get_intersite_mixing
(state1=0, state2=0)[source]¶ Returns inter site mixing ration
Inter site mixing ratio gives the probability that states
state1
andstate2
are localized on different pigments. This measure can be used to distinguish different types of coherence, e.g. vibrational from purely electronic.Literature:
Pavel Maly, Oscar J. G. Somsen, Vladimir I. Novoderezhkin, Tomas Mancal, and Rienk van Grondelle, The Role of Resonant Vibrations in Electronic Energy Transfer, ChemPhysChem 2016, 17,1356–1368 available at DOI:10.1002/cphc.201500965
Examples
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize()
>>> print("{0:.4f}".format(agg.get_intersite_mixing(1,2))) 0.8362
-
get_state_energy
(state=0)[source]¶ Return the energy of a state with a given index
Parameters: state (int) – Index of the state whose energy we ask for Examples
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize() ... >>> print("{0:.4f}".format(agg.get_state_energy(2))) 2.3231
>>> with qr.energy_units("1/cm"): ... print("{0:.4f}".format(agg.get_state_energy(2))) 12332.9320
-
get_state_signature_by_index
(N)[source]¶ Return aggregate vibronic state signature by its index
Parameters: N (int) – Index of state (or site). Signatures make sense only for localized states Example
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize()
>>> agg.get_state_signature_by_index(2) ((0, 1), ())
-
get_transition_dipole
(state1=0, state2=0)[source]¶ Returns transition dipole moment between two state.
If the second state is not specified, we get transition to the first state from the ground state.
Parameters: - state1 (int) – Starting state of the transition
- state2 (int) – Final states of the transition
Examples
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize() ... >>> a = agg.get_transition_dipole(0,1) >>> print("{0:.6f}".format(a)) 2.480265
-
report_on_expansion
(file=None, state=0, N=5)[source]¶ Prints a short report on the composition of an exciton state
Parameters: - state (int) – Excitonic state of the aggregate
- N (int) – Number of states in expansion to report
Examples
>>> import quantarhei as qr >>> agg = qr.TestAggregate("dimer-2") >>> agg.set_coupling_by_dipole_dipole() ... ... # build and diagonalize >>> agg.build() >>> agg.diagonalize() ... >>> agg.report_on_expansion(state=1) +-------+-------------+--------------+------------------+ | index | squares | coefficients | state signatures | +-------+-------------+--------------+------------------+ | 1 | 0.90998848 | -0.95393316 | ((1, 0), ()) | | 2 | 0.09001152 | 0.30001920 | ((0, 1), ()) | | 0 | 0.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | | 0 | -1.00000000 | 0.00000000 | ((0, 0), ()) | +-------+-------------+--------------+------------------+
-