################## Project Settings ################## Configure project-specific settings for Gaussian and ORCA calculations. *************************** Gaussian Project Settings *************************** The ``~/.chemsmart/gaussian/`` directory contains project settings files specifying DFT functionals, basis sets, and other calculation parameters. This folder is created automatically when configuring CHEMSMART. Users can access and freely modify the contents in this folder without affecting the CHEMSMART codes. Job Type Settings ================= Project settings are organized by job type, allowing you to specify different computational methods for different phases of your calculations: - ``gas``: Used for geometry optimization, transition state searches, and other gas-phase structural calculations. - ``solv``: Used for single point energy calculations in solution. - ``td``: Used for TD-DFT (time-dependent DFT) calculations for excited states and UV-Vis spectra. If ``gas: Null`` is set, then all job types will be run in solvent phase specified by ``solv``. Example 1: Basic Multi-Phase Settings ===================================== This example (``~/.chemsmart/gaussian/test.yaml``) demonstrates how to configure different settings for gas-phase optimizations, solution-phase single points, and TD-DFT calculations: .. code:: yaml gas: ab_initio: Null functional: m062x basis: def2svp semiempirical: Null solvent_model: smd solvent_id: dichloroethane solv: functional: m062x basis: def2tzvp freq: False solvent_model: smd solvent_id: dichloroethane td: functional: cam-b3lyp basis: genecp heavy_elements: ['I'] heavy_elements_basis: def2-SVPD light_elements_basis: def2SVP freq: False In this configuration: - **Gas phase** optimizations use M062X/def2-SVP with SMD(dichloroethane) implicit solvation - **Solution phase** single points use M062X/def2-TZVP with higher basis set for better energies - **TD-DFT** calculations use CAM-B3LYP with mixed basis sets for systems containing iodine where ``I`` element takes def2-SVPD basis set whereas all other elements take def2-SVP basis set. Since iodine (Z=53) has atomic number > 36, the ``genecp`` keyword will be used in the Gaussian input file. Example 2: Mixed Element Basis Sets =================================== For systems with transition metals or heavy elements (or in fact any system), you can specify different basis sets for different elements, as seen in example project settings file in ``~/.chemsmart/gaussian/test2.yaml``: .. code:: yaml gas: functional: b3lyp basis: genecp additional_route_parameters: empiricaldispersion=gd3bj heavy_elements: ['Pd', 'Ag', 'Br', 'Cu', 'Mn'] heavy_elements_basis: def2-TZVPPD light_elements_basis: def2-SVP solv: functional: b3lyp freq: False basis: def2qzvp additional_route_parameters: empiricaldispersion=gd3bj solvent_model: smd solvent_id: TetraHydroFuran This configuration: - Uses B3LYP-D3(BJ) functional with Grimme's D3 dispersion correction - Assigns def2-TZVPPD basis to heavy elements (Pd, Ag, Br, Cu, Mn); if such elements do not occur in the molecule, it will be simply ignored. - Assigns def2-SVP basis to all other light elements (H, C, N, O, etc.) - Solution phase calculations use uniform def2-QZVP basis set for all atoms for high accuracy .. note:: **Automatic GEN/GENECP Selection**: CHEMSMART automatically determines whether to use ``gen`` or ``genecp`` keywords in the Gaussian input file based on the elements present in your molecule: - If no heavy elements from the ``heavy_elements`` list are present, the ``light_elements_basis`` is used - If all heavy elements have atomic number ≤ 36 (up to Kr), the ``gen`` keyword is used - If any heavy element has atomic number > 36 (Rb and beyond), the ``genecp`` keyword is used For example, with ``heavy_elements: ['Pd', 'Ag', 'Br']``: - A molecule containing only Br (Z=35) will use ``gen`` - A molecule containing Pd (Z=46) or Ag (Z=47) will use ``genecp`` - A molecule with no heavy elements will use ``light_elements_basis`` directly This ensures that effective core potentials (ECPs) are only applied when needed for heavier elements. Example 3: Custom Solvent Parameters ==================================== For non-standard solvents, you can define custom solvent parameters (``~/.chemsmart/gaussian/test3.yaml``): .. code:: yaml gas: functional: mn15 basis: genecp heavy_elements: ['Rh','Ag','Br','Cu', 'Pd'] heavy_elements_basis: def2tzvpd light_elements_basis: def2svp solv: functional: mn15 basis: def2qzvp freq: False solvent_model: smd solvent_id: generic custom_solvent : | solventname=1,1,1,3,3,3-hexafluoropropan-2-ol eps=16.7 epsinf=1.625625 !(not really needed for gs properties) HBondAcidity=0.77 HBondBasicity=0.10 SurfaceTensionAtInterface=23.23 CarbonAromaticity=0.0 ElectronegativeHalogenicity=0.60 This example shows how to: - Define custom solvent properties (dielectric constant, H-bonding parameters, etc.) - Use MN15 functional with mixed basis sets for transition metal systems - Set ``solvent_id: generic`` and provide detailed parameters via ``custom_solvent`` Special Settings ================ To run all calculations with solvent (skip gas phase), set ``gas: Null``: .. code:: yaml gas: Null Other project settings can also be specified, for example, if one requires ``#p`` dieze tag for Gaussian input, then in the project settings, one can add .. code:: yaml gas: dieze_tag: p functional: M062X basis: def2svp to specify it and allow automatically inclusion of it in input file writing. .. note:: If ``freq: False`` is not set, frequency calculations are performed by default for all geometry optimization jobs. *********************** ORCA Project Settings *********************** The ``~/.chemsmart/orca/`` directory contains ORCA project settings files. Job Type Settings ================= Similar to Gaussian, ORCA project settings support multiple job types: - ``gas``: Used for geometry optimization and transition state searches in gas phase. - ``solv``: Used for single point energy calculations, often with higher-level methods. Example: DFT Optimization with High-Level Single Points ======================================================= This example (``~/.chemsmart/orca/test.yaml``) demonstrates a common workflow: geometry optimization with DFT followed by high-accuracy single point calculations using coupled cluster methods: .. code:: yaml gas: functional: M062X basis: def2-SVP solv: ab_initio: DLPNO-CCSD(T) functional: Null basis: Extrapolate(2/3,cc) aux_basis: AutoAux defgrid: DEFGRID3 freq: False scf_tol: TightSCF scf_algorithm: KDIIS scf_maxiter: 500 mdci_cutoff: Normal mdci_density: None dipole: False solvent_model: SMD solvent_id: "toluene" This configuration: - **Gas phase**: Performs geometry optimizations using M062X/def2-SVP DFT method - **Solution phase**: Performs high-accuracy single point energies with DLPNO-CCSD(T) using: - Complete basis set (CBS) extrapolation from cc-pVDZ and cc-pVTZ (``Extrapolate(2/3,cc)``) - Automatic auxiliary basis set selection (``AutoAux``) - Tight SCF convergence with KDIIS algorithm - SMD implicit solvation model with toluene as solvent - MDCI (Modified Davidson Configuration Interaction) cutoff parameters This workflow is efficient for obtaining highly accurate energies on DFT-optimized geometries, commonly used for thermochemistry and reaction energetics. One can simply use Gaussian .log file as input for chemsmart to automatically create ORCA single-point .inp file in a single command (see later examples). Key ORCA-Specific Parameters ============================ - ``ab_initio``: Specifies post-HF methods (e.g., DLPNO-CCSD(T), CCSD, MP2) - ``functional``: DFT functional (set to ``Null`` when using pure ab initio methods) - ``basis``: Basis set specification, supports extrapolation schemes - ``aux_basis``: Auxiliary basis for RI approximations (``AutoAux`` for automatic selection) - ``defgrid``: Integration grid quality (DEFGRID1-3) - ``scf_tol``: SCF convergence threshold (``TightSCF``, ``VeryTightSCF``) - ``scf_algorithm``: SCF convergence algorithm (``KDIIS``, ``SOSCF``) - ``mdci_cutoff``: MDCI method cutoff settings (``Loose``, ``Normal``, ``Tight``) - ``mdci_density``: Density treatment in MDCI (must be the string ``"None"``, not YAML null value) Example: Custom Solvent Parameters for ORCA =========================================== For non-standard solvents in ORCA, custom solvent parameters are written directly into the model's solvent block. Unlike Gaussian (where ``custom_solvent`` is appended after the molecular coordinates), ORCA reads these parameters from the appropriate block (``%cpcm`` or ``%cosmors``). Supported solvent models and their corresponding ORCA blocks: .. list-table:: :header-rows: 1 :widths: 15 30 55 - - Model - Route keyword - Block written - - ``cpcm`` - ``CPCM(solvent)`` or bare ``CPCM`` - ``%cpcm … end`` - - ``cpcmc`` - ``CPCMC(solvent)`` or bare ``CPCMC`` - ``%cpcm … end`` (CPCM with COSMO epsilon function; replaces legacy COSMO removed in ORCA 4.0) - - ``smd`` - ``SMD(solvent)`` or bare ``SMD`` - ``%cpcm … end`` only if ``custom_solvent`` / ``-so`` options present - - ``cosmors`` - ``COSMORS(solvent)`` or bare ``COSMORS`` - ``%cosmors … end`` **CPCM with custom dielectric** (``~/.chemsmart/orca/custom.yaml``): .. code:: yaml gas: functional: m062x basis: def2-svp defgrid: DEFGRID3 solv: functional: m062x basis: def2-tzvp defgrid: DEFGRID3 freq: False solvent_model: cpcm custom_solvent : | Epsilon 16.7 Refrac 1.275 This produces the following ORCA input for the ``solv`` job type: .. code:: text ! CPCM M062X def2-tzvp DEFGRID3 ... %cpcm Epsilon 16.7 Refrac 1.275 end **CPCMC with custom dielectric** (CPCM + COSMO epsilon; use instead of legacy COSMO): .. code:: yaml solv: functional: m062x basis: def2-tzvp solvent_model: cpcmc custom_solvent : | Epsilon 16.7 Refrac 1.275 This produces: .. code:: text ! CPCMC M062X def2-tzvp ... %cpcm Epsilon 16.7 Refrac 1.275 end **openCOSMO-RS with named solvent and full parameter block:** .. code:: yaml solv: functional: m062x basis: def2-tzvp solvent_model: cosmors solvent_id: water custom_solvent : | aeff 5.925 lnalpha 0.202 lnchb 0.166 chbt 1.50 sigmahb 9.61e-3 rav 0.50 fcorr 2.40 ravcorr 1.00 astd 41.624 zcoord 10.0 dgsolv_eta -4.4480 dgsolv_omegaring 0.2630 temp 298.15 dftfunc "BP86" dftbas "def2-TZVPD" solventfilename "water" orbs_vac false This produces: .. code:: text ! COSMORS(water) M062X def2-tzvp ... %cosmors aeff 5.925 lnalpha 0.202 lnchb 0.166 chbt 1.50 sigmahb 9.61e-3 rav 0.50 fcorr 2.40 ravcorr 1.00 astd 41.624 zcoord 10.0 dgsolv_eta -4.4480 dgsolv_omegaring 0.2630 temp 298.15 dftfunc "BP86" dftbas "def2-TZVPD" solventfilename "water" orbs_vac false end .. note:: **ORCA 6.1 duplicate-keyword guard:** When ``solvent_id`` is set, ``COSMORS(solvent_id)`` already encodes the solvent in the route line. Writing ``solvent "name"`` inside the ``%cosmors`` block too would cause ORCA to raise an ``INPUT ERROR: DUPLICATED KEYWORD``. chemsmart automatically filters out any ``solvent "..."`` lines from the ``%cosmors`` block when ``solvent_id`` is set. ``solventfilename "..."`` is a **different** keyword (it points to a ``.cosmorsxyz`` file) and is **never** filtered. If you want the solvent name to go into the ``%cosmors`` block only (omitting it from the route), leave ``solvent_id`` unset and add ``solvent "name"`` to ``custom_solvent`` — the route will then use bare ``COSMORS`` without parentheses. All other parameters listed in the ``custom_solvent`` block correspond directly to keywords in the ORCA ``%cosmors`` section. Any subset of these can be used — only the parameters you want to override from their defaults need to be listed. .. note:: **Using a custom ``.cosmorsxyz`` file via ``-sf``:** If you have a custom solvent file (e.g. ``mysolvent.cosmorsxyz``), specify it via the ``-sf`` / ``--solventfilename`` CLI option instead of (or in addition to) the YAML ``custom_solvent`` block: .. code:: chemsmart sub orca -p myproject -f molecule.xyz -c 0 -m 1 \ -sm cosmors -si mysolvent -sf /path/to/mysolvent.cosmorsxyz sp The file is copied to the running directory (scratch or job folder) and ``solventfilename "mysolvent"`` is injected into the ``%cosmors`` block automatically. If scratch is enabled, chemsmart also detects ``solventfilename "..."`` entries in the written input and copies the corresponding ``.cosmorsxyz`` file to scratch so ORCA can locate it. **SMD with named solvent and extra parameters:** .. code:: yaml solv: functional: m062x basis: def2-tzvp solvent_model: smd solvent_id: water custom_solvent : | Epsilon 78.36 Refrac 1.33 This produces: .. code:: text ! SMD(water) M062X def2-tzvp ... %cpcm Epsilon 78.36 Refrac 1.33 end .. note:: The ``custom_solvent`` block and ``-so``/``--solvent-options`` CLI parameters all appear together in a single solvent block, in that order: ``custom_solvent`` lines first, then any extra options from ``-so``. For SMD in ORCA 6.0, the model is activated by the ``SMD(solvent)`` route keyword alone — no ``SMD true`` / ``SMDsolvent`` lines are needed in the ``%cpcm`` block. ******************* Scratch Directory ******************* Set up scratch directories for Gaussian and ORCA jobs: .. code:: bash ln -s /path/to/scratch/ ~/scratch