Cuby uses YAML language for the input files. To write an input file, following information is needed:
- The input should follow the YAML syntax
- The list of available keywords
- For complex calculations, it is useful to know how cuby handles the separate sections of the input. This is decribed here.
When the method inplemented in cuby consists of multiple calculations, they are defined in separate subsections of the input, while the keywords common for all these calculations are written at the root level (without indentation). A good example is a QM/MM calculation:
interface: QMMM # root level keywords: charge: 1 qmmm_method_lo: interface: foo qmmm_method_hi: interface: bar
The mechanism is following: the contents of the subsection is copied to the root level, replacing the original values if there are keywords of the same name, and the result is used to set up the calculation.
This means that keywords that are not overwritten are applied to all the child calculations. For example, a modifier "X" will be applied to both the composite QM/MM calculation and the three child calculations the QM/MM interface calls:
interface: QMMM modifiers: X qmmm_method_lo: interface: foo qmmm_method_hi: interface: bar
To avoid this, it is necessary to specify that no modifiers are to be used for the child calculations, setting the list of modifiers for them to be empty (""):
interface: QMMM modifiers: X qmmm_method_lo: interface: foo modifiers: "" qmmm_method_hi: interface: bar modifiers: ""
Here, the empty list can of course be replaced by a list of modifiers to be applied to the selected child calculation only.