#! /bin/sh
# The Discrete Reaction Field (DRF) method is a polarizable QM/MM method. For
# each type of solvent molecule,the DRF method requires two parameters, atomic
# polarizabilities and atomic charges. The main program reads the QM and DRF
# regions, splits the DRF region into unique molecules, computes the atomic
# charges of a single DRF molecule for each unique type, assigns the atomic
# charges and atomic polarizabilities for all the DRF molecules and defines the
# QM_DRF settings. This simple script works for initial configurations that come
# from a MD simulation, for example.
# In this example a python script is used for DRF calculations, that uses PLAMS
# (Python Library for Automating Molecular Simulation). PLAMS takes care of
# input preparation, job execution, file management and output processing, see
# also the PLAMS documentation in the Scripting manual. The DRF python script
# has default settings which can be easily modified if this is required. In the
# simplest case the user just needs to provide the QM and DRF regions (in xyz
# format). Typically the user may also want to choose the functional, basis set
# and numerical quality for the QM and DRF region. By default, atomic charges
# that are used for the DRF are computed with LDA functional, DZP basis set and
# normal numerical quality. Also by default, atomic polarizabilities (computed
# with the Thole's model) are taken from a inner database including H, C, N, O,
# F, S, Cl, Br, I atoms [146]. The main program defines a series of functions
# for general settings for a DRF calculation, reading QM and DRF regions,
# classifying DRF molecules of the same type (first by formula and then for
# configurations for a given formula), computing, for a given settings, the
# charges for a single molecule of unique DRF type and assigning the atomic
# charges for the rest of molecules that belong to a given DRF type (preserving
# atom orders).
# The DRF python script DIMQM_DRF_plams.py users will probably want to change or
# extend:
# ==============================================================================
# from DIMQM_DRF_plams_module import full_DIMQM_DRF
# qm_region_filename = 'qm.xyz'
# drf_region_filename = 'drf.xyz'
# settings = Settings()
# settings.input.Basis.Type = 'TZP'
# settings.input.XC['_1'] = 'GGA BLYP'
# settings.input.NumericalQuality = 'Normal'
# full_DIMQM_DRF(qm_region_filename, drf_region_filename,
# settings, drf_charges_type='MDC-q charges',
# drf_fragment_settings=None)
# ==============================================================================
# This DRF python script DIMQM_DRF_plams.py imports DIMQM_DRF_plams_module.py,
# which contains a script full_DIMQM_DRF that splits the DRF region into unique
# molecules, computes the atomic charges of a single DRF molecule for each
# unique type, assignes the atomic charges and atomic polarizabilities for all
# the DRF molecules and defines the QM_DRF settings.
# The run script DIMQM_DRF_plams.run contains an example, how one could use the
# DIMQM_DRF_plams.py script. In this simple example both the QM and DRF region
# consists of a Formic acid molecule.
cp $ADFHOME/examples/adf/DIMQM_DRF_plams/formic_acid_qm.xyz qm.xyz
cp $ADFHOME/examples/adf/DIMQM_DRF_plams/formic_acid_drf.xyz drf.xyz
cp $ADFHOME/examples/adf/DIMQM_DRF_plams/DIMQM_DRF_plams_module.py .
cp $ADFHOME/examples/adf/DIMQM_DRF_plams/DIMQM_DRF_plams.py .
$ADFBIN/plams DIMQM_DRF_plams.py
# Every time you run a PLAMS script, a uniquely named working directory is
# created (plams.*****). This folder will contain one subdirectory per job. Each
# job directory contains the job's input and results files. In this case there
# will be 1 directory for the ADF calculation of the atomic charges that are
# used for DRF. Next there is a directory which calculates the full system.