forked from lijiext/lammps
76 lines
2.5 KiB
C
76 lines
2.5 KiB
C
/*
|
|
* This file is distributed under the terms of the
|
|
* GNU General Public License. See the file `License'
|
|
* in the root directory of the present distribution,
|
|
* or http://www.gnu.org/copyleft/gpl.txt .
|
|
*
|
|
* common definitions, APIs and global data for QM/MM interface
|
|
*/
|
|
|
|
#ifndef QE_LIBQMMM_H
|
|
#define QE_LIBQMMM_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* transport method for data exchange between QM and MM codes */
|
|
#define QMMM_COMM_NONE 0
|
|
#define QMMM_COMM_MPI 1
|
|
#define QMMM_COMM_SHM 2
|
|
|
|
/* type or "level" of QM/MM coupling */
|
|
#define QMMM_MODE_OFF -1
|
|
#define QMMM_MODE_NONE 0
|
|
#define QMMM_MODE_MECH 1
|
|
#define QMMM_MODE_ELEC 2
|
|
|
|
/* flag indicating the role of this process in a QM/MM calculation */
|
|
#define QMMM_ROLE_QM 1
|
|
#define QMMM_ROLE_MASTER 2
|
|
#define QMMM_ROLE_SLAVE 3
|
|
|
|
#define QMMM_OK 0
|
|
#define QMMM_ERROR -1
|
|
|
|
/* container struct for global QM/MM configuration information */
|
|
typedef struct {
|
|
int comm_mode, qmmm_mode; /* communication and coupling mode */
|
|
char *qmdir, *madir, *sldir; /* directories to run codes in */
|
|
char *qminp, *mainp, *slinp; /* input files for codes */
|
|
char *qmout, *maout, *slout; /* stdout files for codes */
|
|
char *qmcmd, *macmd, *slcmd; /* command to run codes (SHMEM only) */
|
|
char *qmarg, *maarg, *slarg; /* extra flags to pass to code */
|
|
int verbose; /* verbosity level */
|
|
int role; /* role of this rank */
|
|
int steps; /* number of MD steps */
|
|
int nmm; /* tasks reserved for MD (master and slave) */
|
|
char *restart; /* name of (MM) restart file */
|
|
char *handle; /* handle for SHEMEM communication */
|
|
int my_comm, qm_comm, mm_comm; /* MPI communicators, Fortran-style */
|
|
} qmmm_config_t;
|
|
|
|
/* declare a global variable for the QM/MM setup.
|
|
thus there can be only one QM/MM coupling currently */
|
|
extern qmmm_config_t qmmmcfg;
|
|
|
|
/* read and parse global QM/MM configuration file and
|
|
* store the result in a qmmm_config_t struct */
|
|
int read_qmmm_config(const char *, qmmm_config_t *);
|
|
|
|
/* write out the global QM/MM configuration file in
|
|
* the same format as the read function can parse */
|
|
int write_qmmm_config(const char *, qmmm_config_t *);
|
|
|
|
/* perform consistency checks on a qmmm_config_t struct */
|
|
const char *check_qmmm_config(qmmm_config_t *);
|
|
|
|
/* free storage associated with qmmm_config_t struct */
|
|
void free_qmmm_config(qmmm_config_t *);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* QE_LIBQMMM_H */
|