Interfaces
Monalisa consists of interfaces which provide the energy, gradients and hessian matrices of investigated molecules. These quantities are further passed to the runners (e.g. optimizer, md, thermo etc.), which process them.
Types:
External Interfaces
External Interfaces (also called Leaf Interfaces) are objects which prepare the input files for the external QM programs, and are able to run these programs and subsequently read energy, gradient and hessian from the output of these programs. Monalisa provides the following leaf interfaces:
ORCA
ORCA is an ab initio, DFT, and semi-empirical SCF-MO package developed by Frank Neese et al. at the Max Planck Institute for Chemical Energy Conversion.
A unique feature of the Orca is DLPNO method which provides approximate MP2, CCSD and CCSD(T) energies for really big molecules. Orca interface is invoked by:
interface = orca {}
Orca interface doesn't need any additional keywords. In such a case it will use default settings for keywords. If you want to change the options you put keywords in the curly brackets {}.
Example
Informative example of the orca interface definition:
#definition of the orca interface
interface = orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords to define type of calculations
keywords = PBE D2 cc-pVTZ cc-pVTZ/J
# charge of the molecule
charge = 0 #default
# multiplicity of the molecule
multiplicity = 1 #default
# number of processors
nprocs = 8
# maximal memory per core allocated for the program (total memory is nprocs * maxcore)
maxcore = 2000
}
setup
Before running calculations one has to setup the system. After this in the appropriate subfolder of toplevel MonaLisa will prepare: energy.setup and hessian.setup file. These files are templates for energy.inp and hessian.inp files, which are created from .setup files by replacing UPDATECOORD keyword by coordinates which are updated by actual structure of the molecule during the run of MonaLisa. Whatever is changed in .setup files will affect Orca calculations. In this way one may use some special setting of the program, but one may also spoil the calculations, so beware.
keywords
keywords = <string>
Creates a keyword line which specifies orca calculations type (default: "pbe D2 def2-TZVP def2-TZVP/J")
program = <string>
Command to execute the orca program (when the program is in the $PATH) or the path to the binary of the program (default: "orca")
energyprogram = <string>
Path to the binary of the program for energy calculations. If it is not specified it is the same as the program variable (default: the same as program, so "orca")
hessianprogram = <string>
Path to the binary of the program for hessian calculations. If not specified - the same as the program variable (default: "orca")
energyonly = <bool>
Energy-only calculations. By default orca generates energy and gradient (EnGrad in keywords line). To force the program to run only energy (what is much cheaper in the case of e.g. MP2) set: energyonly = true (default: "false")
nprocs = <int>
Number of processors used in calculations. Creates the "%PAL NPROCS
maxcore = <int>
Maximal amount of memory per core (in MB). (default: "")
charge = <int>
Charge of the system (default: "0")
multiplicity = <int>
Multiplicity of the system (default: "1")
extraline = <string>
Line to add in the input file. In this way one may specify some special orca options (default: ""). Note: currently only one extraline available
energyinput = <string>
Name of the energy input file. Default value is "energy". The interface creates then energy.inp, and reads energy.out file. Modification will change the input and output file names
hessianprogram = <string>
Name of the hessian input file. Default value is "hessian". The interface creates then energy.inp, and reads energy.out file. Modification will change the input and output file names
fullcommand = <bool>
Only specified "program" string will be executed. Default value is (false). In the case false program runs: program energy.inp > energy.out. Some libraries may interferer and more involved commands are needed. In such cases one have to put fullcommand = true and specify the advanced command in the "program" variable. One useful example is when somebody wants to load and unload modules before and after running the program: "program = module load ORCA.401; /apps/ORCA/4.0.1/orca energy.inp > energy.out ; module unload ORCA.401"
numerical_hessian = <bool>
Calculates hessian matrix numerically (default: false). Useful keyword for methods which have no analytical hessian impementation, ex. RI-MP2.
hessian_displacement = <double>
Displacement of the coordinates (default: 0.015 A) in the numerical hessian calculations
expert keywords
read_energy = <string>
Read energy from specified precalculated file (default: ""). The safest way is to define file with respect to the folder in which Orca calculations are done, i.e. relative path. If keyword is empty it reads standard output of orca. Use this option carefully.
read_model = <string>
Specify the type of energy which has to be read from output file. Possible keywords: "hf", "mp2", "ccsd", "ccsd(t)".
Note:
These both keywords are very useful in the case of ExtrapolInterface, in which we need both HF and post-HF energies. Since as prerequisite for the post-HF calculations are HF calculations, these two types of jobs are done in one Orca job, and we don't need to run them separately (which requires then twice HF calculations). In such a case one can run firs MP2 calculation in HF job (e.g. scf-X of ExtrapolInterface), read the HF results from the default output file, and then in the MP2 calculation just read MP2 energy from appropriate output file (the one generated by HF job). The same can be done in the case of CCSD(T) calculations, which output contain HF, MP2, CCSD and CCSD(T) results.
Turbomole
TURBOMOLE is a quantum chemical program package, initially developed in the group of Prof. Dr. Reinhart Ahlrichs at the University of Karlsruhe and at the Forschungszentrum Karlsruhe. Presently TURBOMOLE is one of the fastest and most stable codes available for standard quantum chemical applications. Unlike many other programs, the main focus in the development of TURBOMOLE has not been to implement all new methods and functionals, but to provide a fast and stable code which is able to treat molecules of industrial relevance at reasonable time and memory requirements.
The interface is invoked by:
interface = turbo {
key1 = val1
key2 = val2 ....
}
Example
Informative example of the Turbomole interface definition:
#definition of the turbomole interface
interface = orca{
# Turbomole binary names
energyprogram = ridft
gradientprogram = rdgrad
hessianprogram = aoforce
# Automatic definition of the system
auto_define = true
run_define = true
# keywords to define the system (only if auto_define = true)
method = ridft # Calculation method. Supported options: hf, dft, ridft, hf-rpa, dft-rpa, mp2, ccsd, ccsd(t)
functional = pbe
dsp = old # Dispersion correction to dft. Options: on = D3 (default), old = D2, off = no dispersion
charge = 0.0
multiplicity = 1 #default
basis = def2-TZVP
}
setup
By default --setup option of the turbomole interface prepares only the turbomole's coord file and the user has to prepare all input files alone.
There exists also the automatic setup where the input file define.inp
for the Turbomole's define
script is prepared by monalisa and the program executes the following comman internally:
define < define.inp > define.out
this automatic define procedure is initiated by the keyword auto_define = true
together with run_define = true
. This options open the whole range of possible keywords which specify the type of turbomole calcuclations, which normally are ignored. More options are available in the keywords section.
keywords
energyprogram = dscf
Source file of the energy program. Options: "dscf" (default), "ridft", "ricc2", "ricc2_huge" or "ccsdt"
gradientprogram = grad
Source file of the gradient program. Options: "grad" (default), "rdgrad" or "" (for energyprogram = ricc2)
hessianprogram = aoforce
Source file of the hessian program. Options: "aoforce" (default), "numforce -frznuclei -central" (numerical hessian)
read_energy = (empty)
Read energy from specified file. E.g. "./dscf.out" or "/users/mary/results/methane.out"
read_gradient = (empty)
Read gradient from specified file. E.g. "./rdgrad.out" or "/users/mary/results/grad.out"
read_hessian = (empty)
Read hessian from specified file. E.g. "./aoforce.out"
Automatic define options:
auto_define = false
Prepare automatic define script file define.inp (Default: false)
run_define = true
Run define script: define < define.inp > define.out
(Default: true), Beware: make sure that define program of Turbomole package is accessible from the terminal
basis = def2-pVTZ
// Basis set for calculations (Default: def2-pVTZ), the same basis set will be used for all atoms, only the basis accessible from define program are supported
charge = 0
Total charge of the system (Default: 0)
multiplicity = 1
Multiplicity of the system (Default: 1 - singlet), defines number of unpaired electrons
mo_guess = eht
Molecular orbitals guess method (Default: "eht" - EXTENDED HUECKEL GUESS), Options:...
method = dft
// Calculations method (Default: "dft"), Options: ridft, mp2, ccsd(t), hf-rpa, dft-rpa,
functional = pbe
DFT functional (Default: "pbe"), the option works for methods: dft, ridft and dft-rpa
grid = m3
Density grid for DFT calculations (Default: "m3") Options: m4, m5, ...
dsp = off
Dispersion description (Default: "off" = no disp) Options: "old" = D2, "on" = D3, it works only for dft or ridft
ricore = 500
ricore memory for ridft in MB (default: 500)
scfconv = 7
minus exponent of the scf convergence criterium in Ha (Default: 7, i.e. 1.0e-7)
scfiterlimit = 60
maximal number of scf iterations (default: 60)
scfdamp = 0.5; 0.05; 0.05
// damping parameters separated by; max_damping, increment, final damping (default: default Turbomole parameters)
uhf = false
unrestricted HF calculations (default: false)
rpagrad = false
Calculate rpa gradients (default: false)
freeze_core = true
Set frozen occupied/virtual orbital options (Default: true - orbitals will be frozen). If true, then freeze_options keyword will specify further behavior
freeze_options = (empty)
Specify frozen occupied/virtual orbital options (Default: (empty) - default turbomole options will be used, i.e. Orbitals with eigenvalues smaller than -3.000 will be treated as inert). For more options see freeze menu in cc define sub-menu. Useful options: "core 20" - freeze 20 first orbitals, "fp -4.00" set a new freezing point to -4.00 Ha.
maxcor = (empty)
Maximal memory per core in MB (for post HF calculations in ricc2 or ccsdt), Default: (empty) - default value of define.
ccgrad = false
Gradient calculations for post-HF methods with ricc2 program (Default: false)
VASP
VASP (Vienna Ab initio Simulation Package) is a program for modeling 3D periodic structures (crystals) using plane wave basis sets and pseudopotentials. It performs particularly good for LDA/GGA DFT, however DFT with hybrid functionals, Hartree-Fock and MP2 methods are also supported. The interface is invoked by:
interface = vasp{}
VASP interface doesn't need any additional keywords. In such a case it will use default settings for keywords. If you want to change the options you put the keywords in the curly brackets {}.
setup:
Before running calculations one has to setup the system. After this in the appropriate subfolder of the toplevel/ MonaLisa will prepare: POSCAR_UPDATE file. This file is a template for POSCAR file (structure of the molecule - see VASP internet site), which is created from POSCAR_UPDATE file by replacing UPDATECOORD keyword with coordinates of actual structure of the molecule. These coordinates are updated during the MonaLisa run. Whatever is changed in POSCAR_UPDATE file will affect VASP calculations. In this way one may use some special setting of the program, but one may also spoil the calculations, so beware.
VASP needs also specification of k-points (KPOINTS
), calculation settings (INCAR
) and pseudopotentials (POTCAR
). These three files may be generated automatically during the setup run ($monalisa_bin --setup monalisa.inp) by MonaLisa by invoking auto_incar = true
in the vasp interface data group. By default auto_incar = false
in such case one these three files should be generated manually in respective file folder before run. Please remember to put appropriate settings for the single point calculation in the INCAR file
Example
An example of vasp interface with automatic generation of files is presented below:
vasp {
program = mpirun /apps/VASP/5.3.5/vasp
auto_incar = true
GA = PE
PREC = High
EDIFF = 1.0e-6
ENCUT = 400
ALGO = VeryFast
IVDW = 1
ISPIN = 1
KPOINTS = 1 1 1
PP_LIBRARY = /users/mary/vasp_PP_LIBRARY/potpaw_PBE.52/
NPAR = 4
ISTART = 1
}
Many of the default settings are well balanced, therefore even running setup with only auto_incar = true and pointing to the place where the POTCAR files are present (PP_LIBRARY
) creates reasonable input.
If one would like to use special keywords of VASP, which are not supported by keywords of MonaLisa, can modify the INCAR_TEMPL_E
and INCAR_TEMPL_H
files (for Energy/Gradient and Hessian calculations, respectively) which are created during setup run manually before running calculations.
If you would like to use your own INCAR files, place them in the VASP running directory (in correspondig subfolder of toplevel). An example of the INCAR
file which should work fine (settings for insulators with D2 dispersion):
#Electronic minimization
GGA = PE ! density functional
PREC = Accurate ! precision tag
EDIFF = 1E-6 ! criterion to end SCF loop
ENCUT = 400.0 ! energy cutoff
NELMIN = 5 ! minimum number of SCF-iterations
NSW = 1 ! Number of ionic steps
NELM = 100 ! Number of electronic iterations
#DOS related values
ISMEAR = 0 ! Gaussian smearing for big cells
#Single point energy calculation
IBRION = -1 ! job type (-1 for single point)
NSW = 1 ! number of ionic steps (1 for single point)
LVDW = .TRUE. ! grimme D2 dispersion
#Do not write huge files - restart options
LCHARG = .FALSE. ! do not write charges
LWAVE = .FALSE. ! do not write wave function
ISTART = 0 ! do not read previous SCF guess
#Performance options
NPAR = 8 ! adjust to number of node (same number)
IALGO = 48 ! RMM-DIIS algorithm for electrons
LPLANE = .TRUE. ! data distribution in real space is done plane wise
LREAL = Auto ! do projection in real or reciprocal space
For more details see VASP manual.
Beware! All coordinates in the VASP's POSCAR are sorted with respect to the atom type, therefore the order of the atoms may be different than in the POSCAR. The pseudopotentials in the POTCAR file have to be in the same order as atoms in the POSCAR, so always check the atom order in POSCAR_UPDATE and compere if the atom order in the POTCAR is the same. If not - you will get unphysical results. If you use auto_incar = true
MonaLisa takes care of ther right order of the POTCAR
file
Keywords
auto_incar = false
Automatic creation of INCAR files (default: false). If false - one has to prepare INCAR file manually and place it in the running folder by hand. If true - INCAR files (for energy and hessian calculations) are prepared automatically
program =
Command to execute the VASP program (when the program is in the $PATH) or the path to the binary of the program (default: "vasp").
read_energy =
Read energy and gradient from the already existing file specified in the string (path to the OUTCAR file) (default: "", i.e. don't read the file). If the string is not empty then the program will not calculate energy, but will read the specified file instead.
read_hessian =
Read hessian from the already existing file specified in the string (path to the OUTCAR file) (default: "", i.e. don't read the file). If the string is not empty then the program will not calculate hessian, but will read the specified file instead.
INCAR_templ_E = INCAR_TEMPL_E
Name of the INCAR template file for creation of INCAR in energy/gradient calculations (default: INCAR_TEMPL_E)
INCAR_templ_H = INCAR_TEMPL_H
Name of the INCAR template file for creation of INCAR in hessian calculations (default: INCAR_TEMPL_H).
GGA = PE
Type of the GGA functional used (default: "PE", i.e. PBE), for more details see VASP manual.
PREC = Accurate
Specifies the "precision"-mode (default: Accurate). Options: Low, Normal, High.
LREAL = Auto
Whether the projection operators are evaluated in real-space or in reciprocal space (default: Auto)
ISPIN = 1
Specifies spin polarization (default: 1 - non spin polarized) 2 - spin polarized
VDW_C6 =
C6 parameters of D2 dispersion for each kind of atoms (default: "" - default D2 parameters)
VDW_R0 =
R0 parameters of D2 dispersion for each kind of atoms (default: "" - default D2 parameters)
VDW_S6 =
Global scaling parameter for D2 dispersion (default: "" - corresponds to 0.75 value of PBE)
ALGO = VeryFast
Electronic minimisation algorithm (default: VeryFast). Options: Fast, Normal (default for VASP), Conjugate, and more ...
PP_LIBRARY =
The absolute path to the VASP pseudopotentials library (default: ""). If empty, than the proper POTCAR file has to be copied by user to the vasp interface folder. If not empty than the POTCAR will be automatically generated according to the structure. Example of the usage: "PP_LIBRARY = /apps/vasp_PP_LIBRARY/potpaw_PBE.52/"
PP_KIND =
Specify pseudopotential kind for each element separately (default: ""), it has to be specified for each element in the correct order as in the POSCAR file, and separated by semicolon (;). If variable is empty and PP_LIBRARY is specified, then always the default POTCAR is used (element name). If variable is not empty and PP_LIBRARY is specified, then it creates POTCAR using specified psedopotentials, e.g. "PP_KIND = H;C_s;O_h;S"
KPOINTS = 1 1 1
Automatic generation of KPOINTS grid file (default: "1 1 1" - i.e. Gamma point). The type of automatic generation scheme is defined by KPOINTS_SCHEME
keyword
KPOINTS_SCHEME = Monkhorst-pack
Scheme of generation of the KPOINTS grid (default: Monkhorst-pack) alternative: Gamma
KPOINTS_SHIFT = 0. 0. 0.
Shift of the KPOINTS mesh (default: 0. 0. 0.)
EDIFF = 1.0E-6
Convergence criterium for SCF loop in eV (default: 1.0e-6)
ENCUT = 400
Energy cutoff of the plane-vawes in eV (default: 400.0)
POTIM = 0.015
Step-width (in A) for Hessian calculations (default: 0.015)
SIGMA = 0.2
Determines the width of the smearing in eV (default: 0.2). See also ISMEAR
keyword
NELECT = -1
Number of valence electrons (default: -1.0). If NELECT < 0.0 - don't specify number of electrons, i.e. the system is charge neutral
NFREE = 2
How to calculate the frequencies (default: 2 - symetric displacements), options: 1 - one displ., 4 - four displ.
NELMIN = 6
Minimal number of SCF loops (default: 6)
NELM = 80
Maximal number of SCF loops (default: 80)
IVDW = 1
Dispersion (vdW) corrections (default: 1 - Grimme D2 method), Options: 0 - no disperssion, 11 - D3, and more ...
ISMEAR = 0
How the partial occupancies fnk are set for each orbital (default: 0 - Gaussian smearing). For more options see VASP manual, related keyword is SIGMA
ISTART = 0
Whether or not to read the WAVECAR file (default: 0 - don't read WAVECAR). Other options: 1 - read WAVECAR with constant energy cutoff, 2 - restart with constant basis set
LVDW_EWALD = false
D2 dispersion calculated using Ewald summation technique (default: false)
LPLANE = true
Switches on the plane-wise data distribution in real space (default: true)
precommand = <string>
Terminal command which will be invoked before the program runs (i.e. module load ompi-165_xe2013.sp1.1.106) (default value "" , i.e. don't run the command)
postcommand = <string>
Terminal command which will be invoked after the program runs (i.e. module unload ompi-165_xe2013.sp1.1.106) (default value "" , i.e. don't run the command)
CP2K
CP2K is a quantum chemistry and solid state physics software package that can perform atomistic simulations of solid state, liquid, molecular, periodic, material, crystal, and biological systems. CP2K provides a general framework for different modeling methods such as DFT using the mixed Gaussian and plane waves approaches GPW and GAPW. Supported theory levels include DFTB, LDA, GGA, MP2, RPA, semi-empirical methods (AM1, PM3, PM6, RM1, MNDO, …), and classical force fields (AMBER, CHARMM, …).
CP2K interface is invoked by:
interface = cp2k {
key1 = val1
...
}
The interface doesn't need any additional keywords. In such a case it will use default settings for keywords. If you want to change the options you put keywords in the curly brackets {}.
setup:
Before running calculations one has to setup the system. After this in the appropriate subfolder of toplevel MonaLisa will prepare: energy_template.inp and hessian_template.inp files. These files are templates for energy.inp and hessian.inp files, which are created from *_template.inp
files by replacing UPDATECOORD keyword by coordinates which are updated by actual structure of the molecule during the run of MonaLisa. Whatever is changed in *_template.inp
files will affect CP2K calculations. In this way one may use some special setting of the program, but one may also spoil the calculations, so beware.
Keywords
program = <string>
Command to execute the CP2K program (when the program is in the $PATH) or the path to the binary of the program (default: "cp2k")
hessianprogram = <string>
Command to execute the CP2K hessian (when the program is in the $PATH) or the path to the binary of the program (default: the same as program)
precommand = <string>
Terminal command which will be invoked before the program runs (i.e. module load ompi-165_xe2013.sp1.1.106) (default value "" , i.e. don't run the command)
postcommand = <string>
Terminal command which will be invoked after the program runs (i.e. module unload ompi-165_xe2013.sp1.1.106) (default value "" , i.e. don't run the command)
read_hessian = <string>
read specific hessian file , eg. output_hessian (useful if precalculated hessian is available)
read_energy = <string>
read specific energy file , eg. output_sp (useful if you have already some calculations and you want to read just energy)
input_energy = <string>
Energy input file name (default: energy.inp)
output_energy = <string>
Energy output file name (default: energy.out)
input_hessian = <string>
Hessian input file name (default: hessian.inp)
output_hessian = <string>
Hessian output file name (default: hessian.out)
kind_basis_potential = <string>
Definition of the kind, basis set and potential, for each atom (default: ""). If the variable is not defined or empty, than the same basis, and potentials are used for all kinds of atoms present in the system. as defined in variables basis and potential
basis_file = <string>
Definition of the basis set file (default: ./GTH_BASIS_SETS)
potential_file = <string>
Definition of the pseudopotential file (default: ./GTH_POTENTIALS)
dispersion_file = <string>
Definition of the dispersion file (for D3 dispersion) (default: "")
scf_guess = <string>
Initial guess for the wavefunction (default: "ATOMIC") options: RANDOM,CORE,...
diag_alg = <string>
Algorithm used for diagonalization (default: "STANDARD") options: see cp2k manual
mix_method = <string>
Mixing method to be applied (default: "BROYDEN_MIXING") options: see cp2k manual
functional = <string>
The XC functional for DFT (default: "PBE") options: see cp2k manual
dispersion = <string>
Potential to calculate dispersion (default: "DFTD2") options: see cp2k manual under PAIR_POTENTIAL
basis = <string>
Definition of the basis set of all atoms (default: "DZVP-GTH"), the same basis is used for all atoms if kind_basis_potential
variable is empty
potential = <string>
Definition of the pseudopotential of all atoms (default: "GTH-PBE"), the same pseudopotential is used for all atoms if kind_basis_potential variable is empty
kpoints_scheme = <string>
K-points scheme to be used (default: "", i.e. GAMMA), optional values: GAMMA, MONKHORST-PACK, MACDONALD, this option is activated only if kpoints variable is not empty
kpoints = <string>
Set up the k-points (default: "", than use GAMMA point), it expects 3 integers separated by spaces (e.g. 3 3 3)
uks = <bool>
Unrestricted Kohn-Sham calculations (default: false = restricted KS)
eps_default = <double>
Threshold used for accuracy estimates within energy correction (default: 1.0E-10)
cutoff = <double>
The cutoff of the finest grid level in Ry (default: 280.0)
rel_cutoff = <double>
Determines the grid at which a Gaussian is mapped in Ry (default: 40.0), giving the cutoff used for a gaussian with alpha=1. A value 50+-10Ry, might be required for highly accurate results.
eps_scf = <double>
Target accuracy for the SCF convergence in Ha (default: 1.0E-05)
alpha = <double>
Fraction of new density to be included in mixing (default: 0.40)
hess_dx = <double>
the increment to be used to construct the HESSIAN in A (default: 0.015 A)
ngrids = <int>
The number of multigrids to use (default: 4)
max_scf = <int>
Maximum number of SCF iteration to be performed (default: 50)
npulay = <int>
Number of previous steps stored for the actual mixing scheme (default: 4)
nproc_rep = <int>
Number of processors to be used per replica environment (default: 1), in the big systems it might be useful to set it to the number of available processors (to diminish amount of output files). The time performance should be, however, testet against this parameter.
charge = <int>
Total charge of the system (default: 0)
multiplicity = <int>
Two times the total spin plus one (default: 1), specify 3 for a triplet, 4 for a quartet, and so on.
Gaussian
To be written
MOLPRO
To be written
gulp
To be written
Internal Interfaces
Internal interfaces are functions which are calling the other interfaces, that provide observables (energies, gradients and hessians). This observables are processed to deliver new energy, gradient and hessian. Internal interfaces may process observables from the leaf interfaces or from the other internal interfaces.
Embed
It is one of the most important internal interface of the MonaLisa. This interface realize mechanical embedding scheme developed by Sauer and co-workers (J. Comput. Chem. 1997, 18, 463). The total hybrid energy of the system is defined as: where represents the energy of the cluster calculated using high level of theory, is the energy of the cluster calculated using low level of theory, whereas is the energy of the whole system calculated using the low level theory. Note that each of these energies may be provided by leaf interfaces or another internal interfaces. Analogically one can define gradient and hessian.
Embed calculations are only possible if one defines the cluster molecule and hi_cluster, lo_cluster and lo_host interfaces.
Example
The informative example of the embed interface is below:
interface = embed{
cluster_atoms = 1, 2, 9, 10, 17, 18, 27, 37, 39, 69, 72, 78, 80, 84, 97, 98, 105, 106, 113, 114, 149, 157, 165, 175, 179, 181, 183, 193, 194, 201, 202, 209, 210, 245, 249, 253, 261, 267, 275, 279, 281, 289, 290, 297, 298, 305, 306, 307, 315, 316, 321, 322, 329, 330, 349, 371, 381, 385, 386, 393, 394, 401, 402, 411, 412, 421, 422, 431, 432, 447, 457, 473, 501, 504, 515, 536, 540, 558, 560, 574, 577-581 # Numbering of the atoms w.r.t. the input structure (numbers separated by commas, ranges are indicated by "-" character)
# link atoms information
input_format = manual #Definition of the link atoms: "manual" - manual, "auto" - automatic
# Link atoms definition
# atom -- anchoratom (host) -- borderatom (cluster) -- distance to cluster -- atom type (MM)
linker {
H 435 27 0.961 H1
H 445 37 0.961 H1
H 475 39 0.961 H1
H 514 72 0.961 H1
H 534 78 0.961 H1
H 494 157 0.961 H1
H 491 175 0.961 H1
H 511 181 0.961 H1
H 568 245 0.961 H1
H 451 249 0.961 H1
H 484 261 0.961 H1
H 487 267 0.961 H1
H 525 281 0.961 H1
H 516 289 0.961 H1
H 557 298 0.961 H1
H 474 305 0.961 H1
H 403 307 0.961 H1
H 448 315 0.961 H1
H 535 322 0.961 H1
H 503 330 0.961 H1
H 524 371 0.961 H1
H 541 381 0.961 H1
}
#definition of the hi_cluster interface (here turbomole)
hi_cluster{
interface = turbo{
energyprogram = ridft
gradientprogram = rdgrad
}
}
#definition of the lo_cluster interface (here gulp)
lo_cluster{
interface = gulp{
program = gulp
periodic = 0D
shells = o1,o2,o3
}
}
#definition of the lo_cluster interface (here gulp)
lo_host{
interface = gulp{
# gulp interface
program = gulp
periodic = 0D
shells = o1,o2,o3
}
}
}
In this example we use turbomole as a high-level cluster calculations, whereas low-level calculations of either cluster and host are performed using force-field provide by GULP program.
setup:
Before running calculations one has to setup the system. After this in the appropriate subfolder of toplevel MonaLisa will prepare subfolders: hi_cluster, lo_cluster and lo_host (if mode = hionly, only hi_cluster will be created). Program will also prepare files: cluster.cif
(cluster structure) and linkers
(information about link atoms). It is always worth to check if the folders are created properly.
keywords:
mode = embed
Type of calculations, options: "embed" (default) - embed calculations; "hionly" - calculations for cluster only, useful for testing cluster performance
cluster_atoms = 1,2,3 ect.
List of atoms constituting the cluster. Numbering as in the input file. Integers separated by commas, or range of numbers specified by initial index and final index separated by "-". Eg. "1,2,6,8-13,4,22-45".
input_format = manual
Way of the link atoms definition. Options: "manual" (default) - manual definition of the link atoms (needs linker definition); "auto" - automatic definition of the link atoms. See link atoms section for more details.
linker {<datagroup>}
Explicit definition of link atoms. See link atoms section for more details.
periodic_cluster = true
Options: "true" (default) - hi- and lo-clusters are treated as periodic systems with unit cell size as in the parent structure; "false" - no unit cell is ascribed to the clusters.
interface = {datagroup}
interface used to calculate the energy, gradient, etc.
Link atoms
Creation of the cluster may create dangling bonds. If this is the case these bonds should be saturated by link atoms, which typically are hydrogen atoms. These link atoms should be placed between the border cluster atom and the neighboring atom which is not included in the cluster (anchor atom). The link atoms are placed on the line between the border atom and the anchor atom at predefined border atom - link atom distance. The link atoms can be defined manually using linker keyword (input_format = manual
):
# link atom element - anchor atom index - border atom index - border-link distance - MM atom type (optional)
linker {
H 435 27 0.961 H1
F 445 37 1.400 F1
C 475 39 1.510 Csp3
}
Link atoms can be also created automatically by MonaLisa. This option is activated by "input_format = auto". In such case the hydrogen link atoms are created between two atoms which are separated less than 1.2 * sum of covalent radii of border and anchor. The border - link distance is defined as the sum of covalent radii of both atoms. This automatic procedure is performed in the beginning of calculations and the link atoms cannot change during optimization.
To have control over this automatic procedure it is good to run first setup, and after this control the cluster.cif
file. If the different than default border - link distance is required, one should copy the linker definition from the "linkers" file to the input file, adjust the distances and change the format to input_format = manual
BSSE
Interface for calculation of Basis Set Superposition Error (BSSE) according to approach of Boys and Bernardi (ref).
Calculation with this interface are invoked using the following syntax:
interface = bsse_general{
key1 = val1
...
}
Example
Illustrative example of using bsse mode with ORCA interface:
interface = bsse_general{
# Definition of monomers,separated by semicolon
domains = 10-20
# Not specified atoms are treated automatically as complementary monomer (here monomer = 1-9)
complementary = true
# Interface used for calculations here orca, specified by define (not atached in this example)
interface $orca
# Supermolecule interface specification
supermol{
interface $orca
export charge = $charge_sm
}
# monomer1 interface specification
monomer1{
interface $orca
export charge = $charge_m1
}
# monomer2 interface specification
monomer2{
export charge = $charge_m2
interface $orca
}
# ghost1 interface specification
ghost1{
export charge = $charge_m1
interface $orca
}
# ghost2 interface specification
ghost2{
export charge = $charge_m2
interface $orca
}
}
#definition of the orca interface alias
define orca "orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords default or exported from the calling interface
# charge default or exported from the calling interface
# multiplicity of the molecule
multiplicity = 1 #default
# number of processors
nprocs = 8
# maximal memory per core allocated for the program (total memory is nprocs * maxcore)
maxcore = 2000
}"
#definition of charge alliases
define charge_sm "0"
define charge_m1 "-1"
define charge_m2 "1"
Keywords
complementary = false
How to specify monomers: "false" (default) - all monomers have to be specified explicitly (see domains keyword). If "true" you need to specify only N-1 monomers. The last one is assumed to be the rest of the molecules atoms.
domains = 1,3,5, ect.
Atoms which build monomers in BSSE scheme. By default you need to specify all monomers in the scheme. If the keyword complementary = true you need to specify only N-1 monomers. Monomers are defined in one string and are separated by semicolon ";". An example: (without complementary option) "domains = 1,2,5-10; 3,4,11-50" or "domains = 1,2,5-10" (with complementary option).
interface = {<datagroup>}
Definition of the interface used for calculations.
monomers_only = false
(Default "false") If "true" then calculations are done without ghost atoms. It is then no BSSE calculations, but it returns the interaction energy (without BSSE-correction) in one run (without relaxation energy).
ghosts_only = false
(Default "false") If "true" then calculations are done without monomer atoms (ghost molecules only). It is then no BSSE calculations, but it returns the BSSE-corrected interaction energy in one run (without relaxation energy).
Extrapol
This interface realize the extrapolation of the basis set according to two point fitting described detailed in the article of Tuma and Sauer (J. Chem. Phys. 143 (2015) 102810).
This approach is reasonable only for calculation based on the HF or post-HF approach.
Calculation with this interface are invoked using the following syntax:
interface = extrapol{
key1 = val1
...
}
Example
Ilustrative example of extrapol calculations:
interface = extrapol{
type = scf-corr # type of extrapolation (scf-corr or scf)
CardinalNum_X = 3 # cardinal number of the smaller basis set (X)
CardinalNum_Y = 4 # cardinal number of the bigger bsisi set (Y)
# interface to calculate HF (with orca)
scf-X{
export keywords = HF cc-pVTZ
interface = $orca # orca interface defined outside the interface
}
scf-Y{
export keywords = HF cc-pVQZ
interface = $orca
}
# interfaces to calculate post-HF (with orca)
corr-X{
export keywords = RI-MP2 cc-pVTZ
interface = $orca
}
corr-Y{
export keywords = RI-MP2 cc-pVTZ
interface = $orca
}
}
#definition of the orca interface alias
define orca "orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords default or exported from the calling interface
# charge of the molecule
charge = 0 #default
# multiplicity of the molecule
multiplicity = 1 #default
# number of processors
nprocs = 8
# maximal memory per core allocated for the program (total memory is nprocs * maxcore)
maxcore = 2000
}"
keywords
type = scf-corr
Type of calculations, options: "scf-corr" (default) - extrapolation of HF and correlation part (blocks scf-X,Y and corr-X,Y need to be specified); "scf" - HF extrapolation only (blocks scf-X,Y need to be specified)
CardinalNum_X = <int>
,CardinalNum_Y = <int>
Cardinal numbers of the basis sets. Both need to be specify. No default values. X has to be lower than Y. In the most standard case: aug-cc-pVXZ and cc-pVXZ: D=2, T=3, Q=4.
scf-X{<datagroup>}
,scf-Y{<datagroup>}
Definition of the interface used for scf calculations.
corr-X{<datagroup>}
, corr-Y{<datagroup>}
Definition of the interface used for post-HF calculations (correlation energy). Mandatory only for: type = scf-corr
Manybody
No documentation available yet