def setUp(self): np.random.seed(0) # set random seed in order for the examples to reproduce the exact references # list of decay functions by state molecule = Molecule() # define system as a crystal self.system = crystal_system(molecules=[molecule], # molecule to use as reference scaled_site_coordinates=[[0.0, 0.0]], unitcell=[[5.0, 1.0], [1.0, 5.0]], dimensions=[2, 2], # supercell size orientations=[[0.0, 0.0, np.pi / 2]]) # if element is None then random, if list then Rx Ry Rz # set initial exciton self.system.add_excitation_index(s1, 1) self.system.add_excitation_index(s1, 0) # set additional system parameters self.system.cutoff_radius = 8 # interaction cutoff radius in Angstrom
conditions=conditions, molecule=molecule, lattice={ 'size': [4, 4, 4], 'parameters': [3.0, 3.0, 3.0] }, # Angstroms orientation=[0.8492, 1.0803, 0.4389]) # (Rx, Ry, Rz) if None then random orientation system_2 = crystal_system( conditions=conditions, molecules=[molecule, molecule], scaled_site_coordinates=[[0, 0, 0], [0.5, 0.5, 0.0]], unitcell=[[6.32367864, 0.0000000, -4.35427391], [0.00000000, 5.7210000, 0.00000000], [0.00000000, 0.0000000, 8.39500000]], dimensions=[2, 2, 2], orientations=[ [-2.4212, -1.8061, 1.9804], # if element is None then random, if list then oriented [2.4212, -1.8061, -1.9804], None ]) system = system_2 # choose 2 system.transfer_scheme = transfer_scheme system.cutoff_radius = 8 system.add_excitation_index('s1', 0) #system.add_excitation_center('s1') # Donor: 558 / Acceptor: 447 # Donor: 558 / Acceptor: 540
] # eV # define system as a crystal molecule = Molecule() #print(molecule, molecule.state, molecule.state.get_center()) molecule2 = Molecule(site_energy=2) print(molecule2, molecule2.state, molecule2.state.get_center()) print(molecule, molecule.state, molecule.state.get_center()) system = crystal_system( molecules=[molecule, molecule], # molecule to use as reference scaled_site_coordinates=[[0.0, 0.0], [0.0, 0.5]], unitcell=[[5.0, 1.0], [1.0, 5.0]], dimensions=[2, 2], # supercell size orientations=[[0.0, 0.0, np.pi / 2], [0.0, 0.0, 0.0] ]) # if element is None then random, if list then Rx Ry Rz print([m.site_energy for m in system.molecules]) print(system.get_ground_states()) # set initial exciton system.add_excitation_index(s1, 0) system.add_excitation_index(s1, 1) # set additional system parameters system.process_scheme = [ GoldenRule( initial_states=(s1, gs),
1.2e-3] # b # Vibrations vibrational_model = MarcusModel(reorganization_energies={(gs, s1): 0.07, (s1, gs): 0.07, (gs, t1): 0.07, # assuming triplet same reorganization (t1, gs): 0.07}, # energy as singlet temperature=300) ################################################################################# # 2D model (plane a-b) , not diffusion in C molecule = Molecule() system = crystal_system(molecules=[molecule, molecule], # molecule to use as reference scaled_site_coordinates=[[0.0, 0.0], [0.5, 0.5]], unitcell=[[7.3347, 0.0000], [-0.2242, 6.0167]], dimensions=[4, 4], # supercell size orientations=[[0.0, 0.0, np.pi/8], [0.0, 0.0, -np.pi/8]]) # if element is None then random, if list then Rx Ry Rz system.cutoff_radius = 8.1 # Angstroms # Transport system.process_scheme = [GoldenRule(initial_states=(s1, gs), final_states=(gs, s1), electronic_coupling_function=electronic_coupling_direction, arguments={'couplings': singlet_couplings}, vibrations=vibrational_model, description='singlet transport'), GoldenRule(initial_states=(t1, gs), final_states=(gs, t1), electronic_coupling_function=electronic_coupling_direction, arguments={'couplings': triplet_couplings},
# store structure in file struct_c.to(filename='naphtalene.cif') struct_c.to(filename='POSCAR') scale_factor = 50 molecule = Molecule( states=[State(label='gs', energy=0.0), State(label='s1', energy=1.0)], transition_moment={ ('s1', 'gs'): dipole * scale_factor, ('s2', 'gs'): dipole2 * scale_factor }, # transition dipole moment of the molecule (Debye) ) system = crystal_system(conditions={}, molecules=[molecule], scaled_site_coordinates=[position], unitcell=lattice.matrix, dimensions=[1, 1, 1], orientations=[params]) print('TM: {}'.format( system.molecules[0].get_transition_moment(to_state='s1'))) print('TM_test: {}'.format( get_dipole_in_basis( np.array(dipole) * ATOMIC_TO_ANGS_EL * scale_factor, ev_dipole, ev))) visualize_system(system) visualize_system(system, dipole='s1')