Interface cuby

Cuby's interface to Cuby. It allows building cuby inputs for individual calculations that are part of more complex jobs. For example, it is possible to use it for generation of all the individual calculations in a data set. These calculations can be then run separately (e.g. submitted as individual jobs on a cluster) and the results can be then collected by the dataset protocol. See the example below.

Limitations

The interface now supports only the basic single point energy calculations. Moreover, only some calculation setup is transferred from this interface to the child calculation - geometry (including ghost atom information), charge and multiplicity. The remaining setup must be provided in a separate block in the input (named "calculation").

Methods and capabilities

The interface implements following methods (specified by keyword 'method'):

All the methods support calculation of following properties:

Keywords used

This interface does not use any specific keywords

Other keywords used by this interface:

Examples

The following examples, along with all other files needed to run them, can be found in the directory cuby4/interfaces/cuby/examples

#===============================================================================
# Cuby interface example 1 - dataset calculation
#===============================================================================

# This example shows how to break a dataset calculation into individual jobs
# and read their results back into cuby. It is achieved in three steps:
#
# 1) Prepare the calculations without running them, using the -p option
#    that sets the keyword prepare_only:
#    cuby4 -p yes cuby_example_01.yaml
#
# 2) Run all the calculations prepared in step 1 in cuby, e.g. (in bash):
#    for i in *_CUBY; do cd $i; cuby4 cuby_input.yaml; cd ..; done
#
# 3) Run this input again to collect and process the results:
#    cuby4 cuby_example_01.yaml

# Dataset calculation
job: dataset
dataset: A24

# When results (in this case calculated externally) are found,
# read them instead of running the calculation.
existing_calc_dir: read_results
job_cleanup: no

# Cuby interface is used as an intermediate layer between
# the protocol and the calculation itself. This allows us to prepare
# the child calculations as cuby inputs.
interface: cuby

# The calculation is defined in a separate block
calculation:
  interface: mopac
  method: pm6

#===============================================================================
# Cuby interface example 2 - dataset calculation using queue system
#===============================================================================

# This example is identical to Example 1 but the child jobs are prepared
# for running in a queue system. When they are run in step 2, they are not
# executed in series but submitted to the queue system and can run
# simultaneously on a cluster. The user has to wait for all the jobs to finish
# before running step 3.

# Dataset calculation
job: dataset
dataset: A24

# When results (in this case calculated externally) are found,
# read them instead of running the calculation.
existing_calc_dir: read_results
job_cleanup: no

# Cuby interface is used as an intermediate layer between
# the protocol and the calculation itself. This allows us to prepare
# the child calculations as cuby inputs.
interface: cuby

# The calculation is defined in a separate block
calculation:
  interface: mopac
  method: pm6
  # Make the child jobs run in SGE queue
  queue_submit: yes
  queue_system: sge
  queue_scratch_dir: /scratch/$USER
  queue_name: gq*
  queue_jobname: DatasetItem