def build_aggregate_2(settings): """Example function for building aggregate no. 2""" mol_l = [] mod_l = [] with qr.energy_units("1/cm"): for ind in range(settings["Nmol"]): mol = Molecule([0.0, settings["E1"]]) # mol1.set_dipole(0,1,[1.0, 0.0, 0.0]) # mol1.set_transition_width((0,1), width) mod = Mode(settings["omega"]) mol.add_Mode(mod) mod.set_nmax(0, settings["Nvib_0"]) mod.set_nmax(1, settings["Nvib_1"]) mod.set_HR(1, settings["HR"]) mol_l.append(mol) mod_l.append(mod) agg = Aggregate(molecules=mol_l) for ind in range(settings["Nmol"] - 1): agg.set_resonance_coupling(ind, ind + 1, settings["JJ"]) # agg.set_resonance_coupling(settings["Nmol"]-1, 0, settings["JJ"]) agg.build(mult=1) return agg
def build_testing_aggregate(): """Testing aggregate for unit tests.""" # Number of molecules Nmol = 2 # energy of molecule one E1 = 12500.0 # energy gap to molecule two Edelta = 100.0 # coupling between the two molecules JJ = 30.0 # frequency of the vibrational mode omega = 110.0 # Huan-Rhys factor HR = 0.01 # transition width width = 80 # max nvib states Nvib_0 = 3 Nvib_1 = 3 mol_l = [] mod_l = [] with qr.energy_units("1/cm"): for ind in range(Nmol): mol = Molecule([0.0, E1]) mol.set_dipole(0, 1, [1.0, 0.0, 0.0]) mol.set_transition_width((0, 1), width) mod = Mode(omega) mol.add_Mode(mod) mod.set_nmax(0, Nvib_0) mod.set_nmax(1, Nvib_1) mod.set_HR(1, HR) mol_l.append(mol) mod_l.append(mod) agg = Aggregate(molecules=mol_l) for ind in range(Nmol - 1): agg.set_resonance_coupling(ind, ind + 1, JJ) agg.set_resonance_coupling(Nmol - 1, 0, JJ) agg.build(mult=1) return agg
m1v = Molecule([0.0, 1.0]) m2v = Molecule([0.0, 1.1]) m3v = Molecule([0.0, 1.2]) from quantarhei import Mode mod1 = Mode(0.01) mod2 = Mode(0.01) mod3 = Mode(0.01) Nvib = 2 m1v.add_Mode(mod1) mod1.set_nmax(0, Nvib) mod1.set_nmax(1, Nvib) mod1.set_HR(1, 0.3) m2v.add_Mode(mod2) mod2.set_nmax(0, Nvib) mod2.set_nmax(1, Nvib) mod2.set_HR(1, 0.3) m3v.add_Mode(mod3) mod3.set_nmax(0, Nvib) mod3.set_nmax(1, Nvib) mod3.set_HR(1, 0.3) vagg = Aggregate(molecules=[m1v, m2v, m3v]) vagg.build() from quantarhei.qm import ProjectionOperator