Skip to content

Using the ECCP Program

How To Use The ECCP Program

The Electronic Crystal Calculation Prep (ECCP) program is run using a script called Run_ECCP.py. This contains information about all the crystals you want to obtain molecules and dimers for, as well as the parameters required to create atomic transition charge (ATC), reorganisation energy (RE), and electronic energy transfer (EET) Gaussian/ORCA input files for those molecules and dimers.

An example of this script is shown below. General recommendation for settings are given in Recommended Settings.

Run_ECCP.py
"""
Run_ECCP.py, Geoffrey Weal, 18/2/22

This script is an example input script for the Electronic Crystal Calculation Prep program.
"""
import os, copy
from ECCP import ECCP

# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# These are the parameters needed for the dimer method. 
# See https://github.com/geoffreyweal/ECCP for more information about these parameters

# This is the path to the xyz/cif file containing the crystal of interest. 
filepath = 'MUPMOC.xyz'

# This string points to a file that indicates are any bonds you want to ignore in the "filepath" file. If you do not want to give this, set this to None
bonds_to_ignore = None

# This is the method use to reassemble individual molecule from the crystal. 
make_molecule_method = 'component_assembly_approach'
# This dictionary include information about determining which molecules are equivalent. Required if you want to perform ATC calculations on molecules.
molecule_equivalence_method = {'method': 'invariance_method', 'type': 'combination'} 

# This is the method use to obtain dimers between molecules in the system.
make_dimer_method = {'method': 'nearest_atoms_method', 'max_dimer_distance': 8.0}
# This dictionary provides information for determining which dimers are equivalent
dimer_equivalence_method = {'method': 'invariance_method', 'type': 'combination'} 

# This dictionary includes info about how to treat the enivornment surrounding dimers (where applicable).  
environment_settings = {'include_environment_where_possible': False, 'max_environment_distance': 8.0}

# This tag indicates if you want to remove solvents from the crystal. This requires the input file to have a reference to which molecules are solvents called "SolventList"
remove_solvents = False

# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# The following settings provide details that the ECCP will use to create folders and run the ECCP program

# The following will be added to the end of the ECCP-created folder. If you dont want this folder to have a suffix, set this to ''.
overall_folder_suffix_name = 'Default'

# The number of cpus that will be used to run the ECCP program. 
no_of_cpus = 16

# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# The following dictionaries are required if you want to perform Gaussian/ORCA and Multiwfn jobs on your molecules and dimers

# --------------------------------------------------------------------------------------------------------------
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Atomic Transition Charge (ATC) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_atomic_transition_charges = {}
calculation_parameters_for_atomic_transition_charges['calc_software']                = 'Gaussian'
calculation_parameters_for_atomic_transition_charges['mem']                          = '64GB'
calculation_parameters_for_atomic_transition_charges['method']                       = 'wB97XD'
calculation_parameters_for_atomic_transition_charges['basis']                        = '6-31+G(d,p)'
calculation_parameters_for_atomic_transition_charges['td_settings']                  = 'tda(nstates=10)'
calculation_parameters_for_atomic_transition_charges['obtain_excitation_amplitudes'] = False
calculation_parameters_for_atomic_transition_charges['temp_folder_path']             = '/tmp/wealge'
calculation_parameters_for_atomic_transition_charges['extra']                        = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to get the initial ATC wfn files and to perofmr EET calculations
submission_information_for_atomic_transition_charges = {}
submission_information_for_atomic_transition_charges['cpus_per_task']    = 32
submission_information_for_atomic_transition_charges['mem']              = '68GB' # This has been set to calculation_parameters_for_atomic_transition_charges['mem'] + 12 GBs
submission_information_for_atomic_transition_charges['time']             = '10-00:00'
submission_information_for_atomic_transition_charges['partition']        = 'parallel'
submission_information_for_atomic_transition_charges['constraint']       = 'AVX'
submission_information_for_atomic_transition_charges['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_atomic_transition_charges['gaussian_version'] = 'gaussian/g16'
submission_information_for_atomic_transition_charges['python_version']   = 'python/3.8.1'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing ATC calculations. 
submission_information_for_multiwfn = {}
submission_information_for_multiwfn['cpus_per_task'] = 16
submission_information_for_multiwfn['mem']           = '32GB'
submission_information_for_multiwfn['time']          = '0-03:00'
submission_information_for_multiwfn['partition']     = 'parallel'
submission_information_for_multiwfn['constraint']    = 'AVX'
submission_information_for_multiwfn['email']         = 'geoffreywealslurmnotifications@gmail.com'

# --------------------------------------------------------------------------------------------------------------
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# reorganisation energy (RE) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_reorganisation_energy = {}
calculation_parameters_for_reorganisation_energy['calc_software']    = 'Gaussian'
calculation_parameters_for_reorganisation_energy['mem']              = '256GB'
calculation_parameters_for_reorganisation_energy['method']           = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_reorganisation_energy['basis']            = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_reorganisation_energy['td_settings']      = calculation_parameters_for_atomic_transition_charges['td_settings']
#calculation_parameters_for_reorganisation_energy['temp_folder_path'] = calculation_parameters_for_atomic_transition_charges['temp_folder_path']
calculation_parameters_for_reorganisation_energy['extra']            = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing ATC calculations. 
submission_information_for_reorganisation_energy = {}
submission_information_for_reorganisation_energy['cpus_per_task']    = 128
submission_information_for_reorganisation_energy['mem']              = '264GB' # This has been set to calculation_parameters_for_reorganisation_energy['mem'] + 24 GBs
submission_information_for_reorganisation_energy['time']             = '10-00:00'
submission_information_for_reorganisation_energy['partition']        = 'parallel'
submission_information_for_reorganisation_energy['constraint']       = 'AVX'
submission_information_for_reorganisation_energy['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_reorganisation_energy['gaussian_version'] = 'gaussian/g16'
submission_information_for_reorganisation_energy['python_version']   = 'python/3.8.1'

# --------------------------------------------------------------------------------------------------------------
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Franck-Condon (FC) (and Huang-Rhys (HR)) calculations on your molecules. 
# NOTE: If you want to use this, you also need to set Gaussian/ORCA parameters and submission information for obtaining reorganisation energies. 

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_franck_condon_factors = {}
calculation_parameters_for_franck_condon_factors['calc_software'] = 'Gaussian'
calculation_parameters_for_franck_condon_factors['mem']           = '8GB'
calculation_parameters_for_franck_condon_factors['method']        = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_franck_condon_factors['basis']         = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_franck_condon_factors['extra']         = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing FC calculations. 
submission_information_for_franck_condon_factors = {}
submission_information_for_franck_condon_factors['cpus_per_task']    = 2
submission_information_for_franck_condon_factors['mem']              = '16GB' # This has been set to calculation_parameters_for_reorganisation_energy['mem'] + 24 GBs
submission_information_for_franck_condon_factors['time']             = '00-02:00'
submission_information_for_franck_condon_factors['partition']        = 'quicktest'
submission_information_for_franck_condon_factors['constraint']       = 'AVX'
submission_information_for_franck_condon_factors['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_franck_condon_factors['gaussian_version'] = 'gaussian/g16'
submission_information_for_franck_condon_factors['python_version']   = 'python/3.8.1'

# --------------------------------------------------------------------------------------------------------------
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Electronic Energy Transfer (EET) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA .gjf file
calculation_parameters_for_electronic_energy_transfer = {}
calculation_parameters_for_electronic_energy_transfer['calc_software']                = 'Gaussian'
calculation_parameters_for_electronic_energy_transfer['mem']                          = '64GB'
calculation_parameters_for_electronic_energy_transfer['method']                       = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_electronic_energy_transfer['basis']                        = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_electronic_energy_transfer['td_settings']                  = calculation_parameters_for_atomic_transition_charges['td_settings']
calculation_parameters_for_electronic_energy_transfer['obtain_excitation_amplitudes'] = False
#calculation_parameters_for_electronic_energy_transfer['temp_folder_path']             = calculation_parameters_for_atomic_transition_charges['temp_folder_path']
calculation_parameters_for_electronic_energy_transfer['extra']                        = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to get the initial ATC wfn files and to perform EET calculations
submission_information_for_electronic_energy_transfer = {}
submission_information_for_electronic_energy_transfer['cpus_per_task']    = 32
submission_information_for_electronic_energy_transfer['mem']              = '68GB' # This has been set to calculation_parameters_for_electronic_energy_transfer['mem'] + 12 GBs
submission_information_for_electronic_energy_transfer['time']             = '10-00:00'
submission_information_for_electronic_energy_transfer['partition']        = 'parallel'
submission_information_for_electronic_energy_transfer['constraint']       = 'AVX'
submission_information_for_electronic_energy_transfer['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_electronic_energy_transfer['gaussian_version'] = 'gaussian/g16'
submission_information_for_electronic_energy_transfer['python_version']   = 'python/3.8.1'

# --------------------------------------------------------------------------------------------------------------
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for obtaining 
# eigendata (such as overlap orbtials and molecular orbital energies and coefficients).

# This dictionary will add tags to your Gaussian/ORCA input file
calculation_parameters_for_eigendata = dict(calculation_parameters_for_electronic_energy_transfer)

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to obtain eigendata.
submission_information_for_eigendata = dict(submission_information_for_electronic_energy_transfer)

# --------------------------------------------------------------------------------------------------------------
# These tag provide the information to the ECCP about Gaussian/ORCA parameters and submission information for performing ATC, RE, and/or EET calculations and/or obtain eigendata (such as overlap orbtials and molecular orbital energies and coefficients).
# If you dont want to perform a task, set the appropriate take to None. For example: if you don't want to perform ATC calcs, set atc_file_creation_information = None 

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing ATC calculations. 
atc_file_creation_information = (calculation_parameters_for_atomic_transition_charges, submission_information_for_atomic_transition_charges, submission_information_for_multiwfn)
# This tag indicates if you want to obtain Gaussian/ORCA input files to obtain the disorder energies of the molecules in the crystal.
re_file_creation_information = (calculation_parameters_for_reorganisation_energy, submission_information_for_reorganisation_energy)
# This tag indicates if you want to obtain Gaussian/ORCA input files to obtain the franck-condon factors (and huang-rhys factors) of the molecules in the crystal.
fc_file_creation_information = (calculation_parameters_for_franck_condon_factors, submission_information_for_franck_condon_factors)
# This tag indicates if you want to obtain Gaussian/ORCA input files of dimers for performing EET calculations. 
eet_file_creation_information = (calculation_parameters_for_electronic_energy_transfer, submission_information_for_electronic_energy_transfer)
# This tag indicates if you want to obtain Gaussian/ORCA input files of dimers for obtaining eigendata (such as overlap orbtials and molecular orbital energies and coefficients).
ict_file_creation_information = (calculation_parameters_for_eigendata, submission_information_for_eigendata)

# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# This will run this method
ECCP(filepath, make_molecule_method=make_molecule_method, molecule_equivalence_method=molecule_equivalence_method, make_dimer_method=make_dimer_method, dimer_equivalence_method=dimer_equivalence_method, environment_settings=environment_settings, remove_solvents=remove_solvents, atc_file_creation_information=atc_file_creation_information, re_file_creation_information=re_file_creation_information, fc_file_creation_information=fc_file_creation_information, eet_file_creation_information=eet_file_creation_information, ict_file_creation_information=ict_file_creation_information, overall_folder_suffix_name=overall_folder_suffix_name, no_of_cpus=no_of_cpus)
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------
# --------------------------------------------------------------------------------------------------------------

The first set of parameters allow you to give the path to the crystal file you want to run with the ECCP, set which methods you want to use to extract molecules and dimers from the crystal structure, and determine if you would like to include an environment and solvents.

  • filepath (str.): The path to the crystal file of organic photovoltaic (OPV) crystal or chemical system crystal you would like to analyse with this program.
  • bonds_to_ignore (str): This is the path to a text file (generally called bonds_to_ignore.txt) that contains the list of bonded atom index pairs that you want to ignore as bonds.
    • You can determine the indices of the atoms in the bonds you want to ignore using a GUI program, such as ase gui.

Example

An example of this bonds_to_ignore.txt is shown below:

bonds_to_ignore.txt
0 1
4 5
7 11
23 7
  • make_molecule_method (str.): This is the method you would like to use to reconnect a molecule from a crystal that has been cut due to the molecule spanning across a unit cell boundary. See Methods available for make_molecule_method for more information about the make_molecule_method methods available.
  • molecule_equivalence_method (dict.): This dictionary indicates the method that you want to use to determine which molecules in the crystal are unique (and which ones are equivalent to each other). See Methods available for molecule_equivalence_method for more information about the molecule_equivalence_method methods available.

  • make_dimer_method (dict.): This dictionary contains the information required for determining how dimers are determined/obtained by this program. See Methods available for make_dimer_method for more information about the make_dimer_method methods available.

  • dimer_equivalence_method (dict.): This dictionary contains information required for determining which dimers are equivalent and which are unique. See Methods available for dimer_equivalence_method for more information about the dimer_equivalence_method methods available.

  • environment_settings (dict.): This dictionary contains information about if you would like to include the environment about molecules and dimers in your Gaussian/ORCA calculations. See Environment Settings for more information about the environment_settings settings.

  • remove_solvents (bool.): If True, will include solvents as monomers in your dimers. If False, will not include solvents as monomers in your dimers.

The second set of parameters allows you to determine the names of folders to save ECCP files to and other general housekeeping parameters.

  • overall_folder_suffix_name (str.): This is the suffix that you can add to the 'ECCP_Data' folder name if you need to distinguish it in any way. Folder created will be called 'ECCP_Data_XXX', where XXX is the suffix name. If you don't need to add a suffix, set this to overall_folder_suffix_name = ''

  • no_of_cpus (int.): This is the number of CPUs that you would like ECCP to run.

    • NOTE: This is different to the number of CPUs you would like to be use in your Gaussian/ORCA calculations (see below). This variable is purely the number of CPUs that ECCP uses to run.

Warning

You can only use multiple cpus for running the ECCP program on Linux. Mac seems to have a problem when you try to run ECCP on multiple cpus.

  • If you are running the ECCP program pon a Mac, set no_of_cpus to 1.

The third set of parameters involves indicating which types of Gaussian/ORCA files you would like to create for the molecules and dimers obtained with the ECCP program.

  • Molecule-based calculations:

    • atc_file_creation_information: This variable indicates if you want to write atomic transition charge (ATC) Gaussian/ORCA input files for the molecules found in this crystal. If you would like to perform ATC calculations, see Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers below. If you do not want to perform ATC calculations, set this variable to None.
    • re_file_creation_information: This variable indicates if you want to write reorganisation energy (RE) Gaussian/ORCA input files for the molecules found in this crystal. If you would like to perform RE calculations, see Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers below. If you do not want to perform RE calculations, set this variable to None.
    • fc_file_creation_information: This variable indicates if you want to write franck-condon (FC) and huang-rhys (HR) Gaussian/ORCA input files for the molecules found in this crystal. If you would like to perform FC/HR calculations, see Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers below. If you do not want to perform FC/HR calculation, set this variable to None. Note: If you do want to obtain FC/HR factors, you also need to perform the calculations needed for obtaining reoriganisation energies (RE) as well.
  • Dimer-based calculations:

    • eet_file_creation_information: This variable indicates if you want to write electronic energy transfer (EET) Gaussian/ORCA input files for the dimers found in this crystal. If you would like to perform EET calculations, see Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers below. If you do not want to perform EET calculations, set this variable to None.
    • dimer_eigendata_file_creation_information: NOT IMPLEMENTED YET -> This variable indicates if you want to write intermolecular charge transfer (ICT) Gaussian/ORCA input files for the dimers found in this crystal. Gaussian/ORCA files will be written to extract the eigendata matrices (such as overlap intergral matrices, molecular orbital (MO) energies, and MO coefficients) for the monomers and dimers found in this crystal. If you would like to perform ICT calculations, see Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers below. If you do not want to perform ICT calculations, set this variable to None.

Dictionaries needed for obtaining atomic transition charge (ATC) input files for Monomers

If you would like to obtain input files for performing atomic transition charge (ATC) calculations, you will want to provide three dictionaries for the get_molecule_atcs variable. These are:

  • calculation_parameters_for_atomic_transition_charges (dict.): This dictionary contains information required for the Gaussian/ORCA files for performing ATC calculations.
  • submission_information_for_atomic_transition_charges (dict.): This dictionary contains information required for making the submit.sl file for submitting ATC jobs to slurm.
  • submission_information_for_multiwfn (dict.): This dictionary contains information required for the multiwfn_submit.sl file. This submit script will run the Multiwfn component of the calculation, where the .wfn created by Gaussian/ORCA is used to perform the ATC calculation to obtain the .chg file of the molecule. This .chg file contains the atomic transition charges for the molecule.

If you would like to perform ATC calculations for the molcules, you want to set atc_file_creation_information as:

atc_file_creation_information = (calculation_parameters_for_atomic_transition_charges, submission_information_for_atomic_transition_charges, submission_information_for_multiwfn)

See Calculation Parameter Settings and Submission Information Settings for more information about what settings you want to include in these dictionaries.

If you do not want to perform ATC calculations for the molcules, you want to set atc_file_creation_information = None:

atc_file_creation_information = None

Examples of the calculation_parameters_for_atomic_transition_charges, submission_information_for_atomic_transition_charges, and submission_information_for_multiwfn dictionaries as given below:

Examples of dictionaries needed for obtaining atomic transition charges (ATC) input files
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Atomic Transition Charge (ATC) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_atomic_transition_charges = {}
calculation_parameters_for_atomic_transition_charges['calc_software']                = 'Gaussian'
calculation_parameters_for_atomic_transition_charges['mem']                          = '64GB'
calculation_parameters_for_atomic_transition_charges['method']                       = 'wB97XD'
calculation_parameters_for_atomic_transition_charges['basis']                        = '6-31+G(d,p)'
calculation_parameters_for_atomic_transition_charges['td_settings']                  = 'tda(nstates=10)'
calculation_parameters_for_atomic_transition_charges['obtain_excitation_amplitudes'] = False
calculation_parameters_for_atomic_transition_charges['temp_folder_path']             = '/tmp/wealge'
calculation_parameters_for_atomic_transition_charges['extra']                        = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to get the initial ATC wfn files and to perofmr EET calculations
submission_information_for_atomic_transition_charges = {}
submission_information_for_atomic_transition_charges['cpus_per_task']    = 32
submission_information_for_atomic_transition_charges['mem']              = '68GB' # This has been set to calculation_parameters_for_atomic_transition_charges['mem'] + 12 GBs
submission_information_for_atomic_transition_charges['time']             = '10-00:00'
submission_information_for_atomic_transition_charges['partition']        = 'parallel'
submission_information_for_atomic_transition_charges['constraint']       = 'AVX'
submission_information_for_atomic_transition_charges['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_atomic_transition_charges['gaussian_version'] = 'gaussian/g16'
submission_information_for_atomic_transition_charges['python_version']   = 'python/3.8.1'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing ATC calculations. 
submission_information_for_multiwfn = {}
submission_information_for_multiwfn['cpus_per_task'] = 16
submission_information_for_multiwfn['mem']           = '32GB'
submission_information_for_multiwfn['time']          = '0-03:00'
submission_information_for_multiwfn['partition']     = 'parallel'
submission_information_for_multiwfn['constraint']    = 'AVX'
submission_information_for_multiwfn['email']         = 'geoffreywealslurmnotifications@gmail.com'

Dictionaries needed for obtaining structural and reorganisation energies (RE) input files for Monomers

If you would like to obtain the Gaussian/ORCA input files required for running structural optimisations and obtain ground and excited state energies, as well as to obtain reorganisation energies (RE), you will want to provide two dictionaries for the re_file_creation_information variable. These are:

  • calculation_parameters_for_reorganisation_energy (dict.): This dictionary contains information required for the Gaussian/ORCA files for performing RE calculations.
  • submission_information_for_reorganisation_energy (dict.): This dictionary contains information required for making the submit.sl file for submitting RE jobs to slurm.

If you would like to perform RE calculations for the dimers, you want to set re_file_creation_information as:

re_file_creation_information = (calculation_parameters_for_reorganisation_energy, submission_information_for_reorganisation_energy)

See Calculation Parameter Settings and Submission Information Settings for more information about what settings you want to include in these dictionaries.

If you do not want to perform RE calculations for the molcules, you want to set re_file_creation_information = None:

re_file_creation_information = None

Examples of the calculation_parameters_for_reorganisation_energy and submission_information_for_reorganisation_energy dictionaries as given below:

Examples of dictionaries needed for obtaining structural and reorganisation energies (RE) input files
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# reorganisation energy (RE) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_reorganisation_energy = {}
calculation_parameters_for_reorganisation_energy['calc_software']    = 'Gaussian'
calculation_parameters_for_reorganisation_energy['mem']              = '256GB'
calculation_parameters_for_reorganisation_energy['method']           = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_reorganisation_energy['basis']            = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_reorganisation_energy['td_settings']      = calculation_parameters_for_atomic_transition_charges['td_settings']
#calculation_parameters_for_reorganisation_energy['temp_folder_path'] = calculation_parameters_for_atomic_transition_charges['temp_folder_path']
calculation_parameters_for_reorganisation_energy['extra']            = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing ATC calculations. 
submission_information_for_reorganisation_energy = {}
submission_information_for_reorganisation_energy['cpus_per_task']    = 128
submission_information_for_reorganisation_energy['mem']              = '264GB' # This has been set to calculation_parameters_for_reorganisation_energy['mem'] + 24 GBs
submission_information_for_reorganisation_energy['time']             = '10-00:00'
submission_information_for_reorganisation_energy['partition']        = 'parallel'
submission_information_for_reorganisation_energy['constraint']       = 'AVX'
submission_information_for_reorganisation_energy['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_reorganisation_energy['gaussian_version'] = 'gaussian/g16'
submission_information_for_reorganisation_energy['python_version']   = 'python/3.8.1'

Dictionaries needed for obtaining franck-condon/huang-rhys factor (FC/HR) input files for Monomers

If you would like to obtain input files for performing franck-condon/huang-rhys factor (FC/HR) calculations, you will want to provide the two dictionaries for the re_file_creation_information variable (see above) as well as two dictionaries for the fc_file_creation_information variable. These are:

  • calculation_parameters_for_franck_condon_factors (dict.): This dictionary contains information required for the Gaussian/ORCA files for performing FC/HR calculations.
  • submission_information_for_franck_condon_factors (dict.): This dictionary contains information required for making the submit.sl file for submitting FC/HR jobs to slurm.

If you would like to perform FC/HR calculations for the dimers, you want to set fc_file_creation_information as:

fc_file_creation_information = (calculation_parameters_for_franck_condon_factors, submission_information_for_franck_condon_factors)

See Calculation Parameter Settings and Submission Information Settings for more information about what settings you want to include in these dictionaries.

If you do not want to perform FC/HR calculations for the molcules, you want to set fc_file_creation_information = None:

fc_file_creation_information = None

Examples of the calculation_parameters_for_franck_condon_factors and submission_information_for_franck_condon_factors dictionaries as given below:

Examples of dictionaries needed for obtaining franck-condon/huang-rhys factor (FC/HR) input files
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Franck-Condon (FC) (and Huang-Rhys (HR)) calculations on your molecules. 
# NOTE: If you want to use this, you also need to set Gaussian/ORCA parameters and submission information for obtaining reorganisation energies. 

# This dictionary will add tags to your Gaussian/ORCA input file.
calculation_parameters_for_franck_condon_factors = {}
calculation_parameters_for_franck_condon_factors['calc_software'] = 'Gaussian'
calculation_parameters_for_franck_condon_factors['mem']           = '8GB'
calculation_parameters_for_franck_condon_factors['method']        = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_franck_condon_factors['basis']         = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_franck_condon_factors['extra']         = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This tag indicates if you want to obtain Gaussian/ORCA input files of molecules for performing FC calculations. 
submission_information_for_franck_condon_factors = {}
submission_information_for_franck_condon_factors['cpus_per_task']    = 2
submission_information_for_franck_condon_factors['mem']              = '16GB' # This has been set to calculation_parameters_for_reorganisation_energy['mem'] + 24 GBs
submission_information_for_franck_condon_factors['time']             = '00-02:00'
submission_information_for_franck_condon_factors['partition']        = 'quicktest'
submission_information_for_franck_condon_factors['constraint']       = 'AVX'
submission_information_for_franck_condon_factors['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_franck_condon_factors['gaussian_version'] = 'gaussian/g16'
submission_information_for_franck_condon_factors['python_version']   = 'python/3.8.1'

Dictionaries needed for obtaining electronic energy transfer (EET) input files for Dimers

If you would like to obtain input files for performing electronic energy transfer (EET) calculations, you will want to provide two dictionaries for the eet_file_creation_information variable. These are:

  • calculation_parameters_for_electronic_energy_transfer (dict.): This dictionary contains information required for the Gaussian/ORCA files for performing EET calculations.
  • submission_information_for_electronic_energy_transfer (dict.): This dictionary contains information required for making the submit.sl file for submitting EET jobs to slurm.

If you would like to perform EET calculations for the dimers, you want to set eet_file_creation_information as:

eet_file_creation_information = (calculation_parameters_for_electronic_energy_transfer, submission_information_for_electronic_energy_transfer)

See Calculation Parameter Settings and Submission Information Settings for more information about what settings you want to include in these dictionaries.

If you do not want to perform EET calculations for the dimers, you want to set eet_file_creation_information = None:

eet_file_creation_information = None

Examples of the calculation_parameters_for_electronic_energy_transfer and submission_information_for_electronic_energy_transfer dictionaries as given below:

Examples of dictionaries needed for obtaining electronic energy transfer (EET) input files
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for performing 
# Electronic Energy Transfer (EET) calculations on your molecules.

# This dictionary will add tags to your Gaussian/ORCA .gjf file
calculation_parameters_for_electronic_energy_transfer = {}
calculation_parameters_for_electronic_energy_transfer['calc_software']                = 'Gaussian'
calculation_parameters_for_electronic_energy_transfer['mem']                          = '64GB'
calculation_parameters_for_electronic_energy_transfer['method']                       = calculation_parameters_for_atomic_transition_charges['method']
calculation_parameters_for_electronic_energy_transfer['basis']                        = calculation_parameters_for_atomic_transition_charges['basis']
calculation_parameters_for_electronic_energy_transfer['td_settings']                  = calculation_parameters_for_atomic_transition_charges['td_settings']
calculation_parameters_for_electronic_energy_transfer['obtain_excitation_amplitudes'] = False
#calculation_parameters_for_electronic_energy_transfer['temp_folder_path']             = calculation_parameters_for_atomic_transition_charges['temp_folder_path']
calculation_parameters_for_electronic_energy_transfer['extra']                        = '# maxdisk=2TB scf=(xqc,maxcycle=512)'

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to get the initial ATC wfn files and to perform EET calculations
submission_information_for_electronic_energy_transfer = {}
submission_information_for_electronic_energy_transfer['cpus_per_task']    = 32
submission_information_for_electronic_energy_transfer['mem']              = '68GB' # This has been set to calculation_parameters_for_electronic_energy_transfer['mem'] + 12 GBs
submission_information_for_electronic_energy_transfer['time']             = '10-00:00'
submission_information_for_electronic_energy_transfer['partition']        = 'parallel'
submission_information_for_electronic_energy_transfer['constraint']       = 'AVX'
submission_information_for_electronic_energy_transfer['email']            = 'geoffreywealslurmnotifications@gmail.com'
submission_information_for_electronic_energy_transfer['gaussian_version'] = 'gaussian/g16'
submission_information_for_electronic_energy_transfer['python_version']   = 'python/3.8.1'

Dictionaries needed for obtaining intermolecular charge transfer (ICT) input files for Dimers

Not Functioning Yet

Intermolecular charge transfer coupling values can be obtained for charge transfer between monomers (in a dimer) by obtaining the eigendata from Gaussian/ORCA claculations upon the dimer and the two monomers that are apart of the dimer. This includes obtaining overlap intergral matrices, molecular orbital (MO) energies, and MO coefficients for the monomers and dimers found in this crystal.

If you would like to obtain input files for performing intermolecular charge transfer (ICT) calculations, you will want to provide two dictionaries for the dimer_eigendata_file_creation_information variable. These are:

  • calculation_parameters_for_eigendata (dict.): This dictionary contains information required for the Gaussian/ORCA files for obtaining eigendata from your monomers and dimers, required for obtaining ICT coupling values.
  • submission_information_for_eigendata (dict.): This dictionary contains information required for making the submit.sl file for submitting eigendata gathering jobs to slurm.

If you would like to perform ICT calculations for the dimers, you want to set ict_file_creation_information as:

ict_file_creation_information = (calculation_parameters_for_intermolecular_charge_transfer, submission_information_for_intermolecular_charge_transfer)

See Calculation Parameter Settings and Submission Information Settings for more information about what settings you want to include in these dictionaries.

If you do not want to perform ICT calculations for the dimers, you want to set ict_file_creation_information = None:

ict_file_creation_information = None

NOTE: Both calculation_parameters_for_intermolecular_charge_transfer and submission_information_for_intermolecular_charge_transfer are usually the same as calculation_parameters_for_electronic_energy_transfer and submission_information_for_electronic_energy_transfer, respectively. See below for examples of calculation_parameters_for_intermolecular_charge_transfer and submission_information_for_intermolecular_charge_transfer:

Examples of dictionaries needed for obtaining intermolecular charge transfer (ICT) input files
# The following dictionaries provide the Gaussian/ORCA parameters and Submission information required for obtaining 
# eigendata (such as overlap orbtials and molecular orbital energies and coefficients).

# This dictionary will add tags to your Gaussian/ORCA input file
calculation_parameters_for_eigendata = dict(calculation_parameters_for_electronic_energy_transfer)

# This dictionary will add tags to your submit.sl file for performing Gaussian/ORCA Calculations to obtain eigendata.
submission_information_for_eigendata = dict(submission_information_for_electronic_energy_transfer)

Examples of Input Files

The folder called Examples contains all the files that are needed to run the ECCP program. This includes examples of the Run_ECCP.py file. Click here to access these files on Github.