Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
]  # 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),
Exemplo n.º 4
0
                     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},
Exemplo n.º 5
0
    # 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')