MonaLisa Files Reference
MonaLisa Input File
The monalisa input file defines:
- runner (
run = {}
) - interface (
toplevel{}
) - molecular structure (
structure = ...
)
The name of the file is arbitrary, but it affects the names of some output files. For example if the name of the input file is monalisa.inp
the output file with the optimized structure will be monalisa_dbg.car
and the name of the hessian file will be monalisa.hessian
, i.e. the string before the first dot of the input file name constitute the base of the output files.
The input file has to be piped into the binary of the MonaLisa. For the monalisa.inp
the command to run the program is:
/path_to_bin/monalisa monalisa.inp
Example
The simple example of the input file is below:
# molecular structure specification
structure = monalisa.car
# definition of the interface (PES)
toplevel{
interface = example # This is an example interface which returns zeroes
}
# definition of the runner
run{
single
}
keywords
The order of the keywords in the input file is arbitrary. There are three basic keywords:
structure = ...
the name of the monalisa molecular structure file. The basic format of the monalisa structure is .car. If no structure keyword is specified MonaLisa will try to read the monalisa.inp
it will by default read the structure from the monalisa.car
. All available file formats are described in Structure Files section.
toplevel{...}
(mandatory) definition of the interfaces calculating the PES of the system. This datagroup has to contain the interface =
keyword.
run{...}
(mandatory) definition of the runner type. It has no default value.
aliases
Monalisa supports definition of aliases, i.e. the text blocks which are accessible under the predefined variable name.
Example:
define orca_mp2 " orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords to define type of calculations
keywords = RI-MP2 cc-pVTZ cc-pVTZ/C TightSCF
}
"
In this way monalisa will interpret the variable $orca_mp2
as the text placed between quotation marks. It will internally replace every occurrence of the variable with the defined text block. One can put any text as an alias, and even put an alias in another alias, i.e.
define orca_mp2 " orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords to define type of calculations
keywords = $key_mp2
}"
define key_mp2 "RI-MP2 cc-pVTZ cc-pVTZ/C TightSCF"
which will be equivalent to the preceding example.
export and aliases
The export command allows to pass some keyword to the interfaces below in the interface tree. The simplest example is presented below:
toplevel{
export charge = 1 # Export the keyword charge = 1 to the orca interface
interface = orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords to define type of calculations
keywords = $key_mp2
}
}
In the example above the keyword charge is exported from the toplevel interface to the orca interface.
In this case the export of the keyword does not have any advantage against the normal definition of the charge within the orca{}
interface. The real power of the export commands is visible in the combination with aliases and internal interfaces.
The example below presents how to use aiases in the bsse calculations calculations, where five single point energies are needed for five subsystems: monomer1, monomer2, ghost1, ghost2 and supermolecule. Without aliases and exports this task requires five definitions of sub-interfaces (here orca). Using aliases and exports makes the input file simpler:
toplevel{
interface = $extrapol # alias for extrapol interface
}
# definition of the alias for extrapol interface
interface = bsse_general{
# Definition of monomers (by alias)
domains = $monomers
# Interface used for calculations here orca, specified by alias
interface = $orca
# Supermolecule interface specification
supermol{
export charge = $charge_sm # the charge keyword will be exported to the all interfaces below
interface = $orca
}
# monomer1 interface specification
monomer1{
export charge = $charge_m1 # the charge keyword will be exported to the all interfaces below
interface = $orca
}
# monomer2 interface specification
monomer2{
export charge = $charge_m2 # the charge keyword will be exported to the all interfaces below
interface = $orca
}
# ghost1 interface specification
ghost1{
export charge = $charge_m1 # the charge keyword will be exported to the all interfaces below
interface = $orca
}
# ghost2 interface specification
ghost2{
export charge = $charge_m2 # the charge keyword will be exported to the all interfaces below
interface = $orca
}
}
#definition of the orca interface alias
define orca "orca{
# path to the ORCA binary
program = /apps/ORCA/4.2.1/orca
# keywords
keywords = $orca_keywords
# charge is not specified, therefore will be define by export command
}"
#definition of charge aliases
define charge_sm "0" # charge of the supermolecule
define charge_m1 "-1" # charge of the monomer 1
define charge_m2 "1" # charge of the monomer 2
#definition of the monomers
define monomers "10-20; 1-9"
#definition of orca keywords
define orca_keywords "RI-MP2 cc-pVTZ"
This example is complex, but without using aliases and export we would have to define orca interface five times instead of one, which shorten the input file and make it simpler.
Very useful is also defining all parameters at the end of the file by aliases to have a good overview of the settings used in calculations.
Beware! The export
method repeats the keyword in every interface below the execution point (also interfaces of interfaces), so the default keywords are replaced in each interface. However, if the keyword is explicitly defined inside the interface its value is not overwritten by export
.