Transport

Overview

Transport module integrated in MOMAP is an engine to perform charge transport simulations for organic semiconductors.

Run parameters and Programs

Prepare calculation

Before performing the simulations, operational parameters are required to be set for the specific material. These parameters are contained in config.txt. Let’s take a look at this file for calculating naphthalene:

# general parameters
vector_a    8.0980000  0.0000000  0.0000000
vector_b    0.0000000  5.9530000  0.0000000
vector_c    -4.8880945  0.0000000  7.1388820
mol_limit   0   ! 0: no limit
chargetype  "a" ! e:electron, h:hole or a:all

Here, vector_x stands for the lattice vectors in the crystal packing structure, and mol_limit is the number of types of molecules in the unit cell. If all molecules in a unit cell are identical, mol_limit should be set to 1; if they are all different, then mol_limit should be set to 0 or the total number of molecules in the unit cell. lat_cutoff is the cutoff radius (unit: angstrom) for calculating neighboring transfer integrals, which means that if the nearest atomic distance of two molecules are less than lat_cutoff, the transfer integral between them are taken into account. chargetype is the type of charge carrier you’re concerned about, “e” for electron, “h” for hole, and “a” for both.

# transfer integral and reorganization energy calculations
mater_name  "naphthalene"
basis_name  "b3lyp/6-31g(d,p)"
queue_name  "workq"
queue_type  "pbs"   ! sge or pbs
memory      1024    ! MB
lat_cutoff  4.0 ! angstrom

This part of the config.txt file deals with the parameters for transfer integral and reorganization energy calculations. basis_name is the DFT level for calculating reorganization energies and transfer integrals, queue_name is the name of the queue that your cluster provides, the value of queue_type (“sge” or “pbs”) depends on your cluster setting (this version, v 1.0, only supports pbs), and memory (unit: MB) sets the memory size for the Gaussian jobs required for calculating transfer integral and reorganization energy.

# hopping rate constant
evc_type    "cart"  ! “cart” or “int”
ratetype    quantu  ! “quantu” or “marcus”
temp    300 ! K
maxt    10000
sta 1   ! 1 means short-time approximation is valid

Here, evc_type determines the coordinate used to analyze normal modes, cart for Cartesian coordinate and int for internal coordinate. ratetype sets the type of the hopping rate, with “quantu” to use the full quantum model, or “marcus” to use the Marcus theory. temp is the temperature and maxt is the truncated time (unit: a.u.) for calculating the hopping rate constant. When sta equals 1, short-time approximation is performed upon the normal mode with the largest Huang-Rhys factor when calculating the full quantum hopping rate.

# Monte Carlo simulation
node_number     2
processors_per_node 4
simulations_per_core    20

tsimu       1000    ! ns
tsnap       5   ! ns
super-cell  4 4 4
dimen       3
integral_threshold  1.0 ! meV

nstep       500 ! 0: neglect
delta_angle 10  ! 0: neglect

Start_Temp  200
End_Temp        300
delta_Temp  50

This part of the config.txt file sets parameters required for the Monte Carlo simulation. node_number, processors_per_node, and simulations_per_core determines the number of nodes, processors on each node, and simulation runs on each processor, respectively.

tsimu is the total simulation time, tsnap is the time interval for recording the position of the charge carrier in the track#.dat output file. super-cell is the three-dimensional size of the supercell for the Monte Carlo simulation, and dimen is the hopping dimension. Dimers with transfer integrals less than integral_threshold will be neglected in the simulation, i.e., charge will not transfer in the dimer.

If nstep is greater than 0, then the position of the carrier before every hop will be recorded in the detail.dat output file, and nstep is the number of steps that will be recorded. Otherwise no detail.dat files will be generated. The program will by default give the average mobility and mobility along the three crystal axes, and if delta_angle is greater than 0, mobility along other directions will also be calculated, and the value of delta_angle is the interval of both polar angel and azimuthal angle.

The final three parameters are for temperature dependent simulation. Start_Temp and End_Temp are the initial and final temperature, respectively, and delta_Temp is the temperature interval. If they are set as above, for example, simulations under 200 K, 250K, and 300 K will be run.

# Calculate drift mobility using Master_Equation
density 1.D-6   ! per molecule
iterlimit   1.D6    ! iteration limit
frequency   100 ! output frequency
EFstr   0.1 ! V/m
converge    1.D-15  ! iteration criteria

Here, density is the charge densities (unit: V-1, V is the volume of the unit cell) in the Master Equation simulation, iterlimit is the maxium iteration times, frequency is the output frequency, converge is the iteration criteria, EFstr is the electric field strength (unit V/m), EFdir is the electric field direction which will be normalized in the simulation.

Transfer integral calculation

Once the calculation the prepared, set do_Submit_transfer_integral_calculation = 1 to submit transfer integral calculation. The calculations are running under the numbered folder (e.g. dir/01). If these calculations are done, set do_Collect_transfer_integrals = 1 to collect the calculation result into the dir/transferintegral folder.

Reorganization energy calculation

Once the calculation the prepared, set do_Submit_reorganization_energy_RE_calculation = 1 to submit reorganization energy (RE) calculation. The calculation are running under the dir/RE folder. If these calculations are done, set do_Analyze_reorganization_energy_evc = 1 to collect the calculation results into the dir/evc folder.

Monte-Carlo simulation

Once the above calculation are completed, set do_Run_Monte_Carlo_simulation = 1 to run Monte-Carlo simulation. Generally, the Monte Carlo simulation requires thousands of simulation to ensure that the simulation errors are within 10%. The calculations are running in the dir/MC-xxx folder, where xxx is the hopping rate type. If these calculations are done, set do_Calculate_Random_Walk_mobilities = 1 to analyze the calculation results. The result files are in dir/MC-xxx directory, named as mob-x.dat where x is the charge type.

Master Equation simulation

Once the above calculation are completed, set do_Calculate_drift_mobility_using_Master_Equation = 1 to calculate the drift mobility using Master Equation. Generally, the Monte Carlo simulation requires thousands of simulation to ensure that the simulation errors are within 10%. The calculation are running under the dir/ME-xxx folder, where xxx is the hopping rate type. The result file are in the dir/ME-xxx directory, named as mob-x.dat where x is the charge type.

Temperature dependent simulation

The temperature dependent simulation are very similar to the simulation fixed at a certain temperature. That is, once the calculation are completed, set do_Run_MC_simulation_Temperature_Dependence =1 or set do_Calculate_RW_mobilities_TD = 1, set do_Run_Master_Equation_simulation_TD = 1, set do_Calculate_drift_mobilities_ME_TD = 1 in momap.inp. The start temperature, end temperature and the temperature step are defined in config.txt file (all of these parameters are integer valued).