/usr/include/ghemical/eng1_qm.h is in libghemical-dev 3.0.0-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | // ENG1_QM.H : quantum mechanics "engine" base classes.
// Copyright (C) 1998 Tommi Hassinen.
// This package is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// This package is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this package; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
/*################################################################################################*/
#ifndef ENG1_QM_H
#define ENG1_QM_H
class setup1_qm;
class eng1_qm;
/*################################################################################################*/
#include "atom.h"
#include "bond.h"
#include "model.h"
#include "engine.h"
#include "notice.h"
/*################################################################################################*/
// THE ID NUMBERS SHOULD NOT CHANGE!!! the numbering logic is the following:
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// use bits 0xFF00 to select the eng class, and bits 0x00FF as ID numbers.
// 0xFF00 determines the eng class...
#define ENG1_QM_MOPAC 0x0100 // eng1_qm_mopac
#define ENG1_QM_MPQC 0x0200 // eng1_qm_mpqc
// 0x00FF determines the hamiltonian/basis set...
#define MOPAC_MNDO 0x01
#define MOPAC_MINDO3 0x02
#define MOPAC_AM1 0x03
#define MOPAC_PM3 0x04
#define MPQC_STO3G 0x01
#define MPQC_STO6G 0x02
#define MPQC_3_21G 0x03
#define MPQC_3_21GS 0x04
#define MPQC_4_31G 0x05
#define MPQC_4_31GS 0x06
#define MPQC_4_31GSS 0x07
#define MPQC_6_31G 0x08
#define MPQC_6_31GS 0x09
#define MPQC_6_31GSS 0x0A
#define MPQC_6_311G 0x0B
#define MPQC_6_311GS 0x0C
#define MPQC_6_311GSS 0x0D
/// A setup class for MM submodels; should always pass the atoms/bonds of MM submodel to eng.
class setup1_qm : virtual public setup
{
protected:
static const i32u eng_id_tab[];
static const char * eng_name_tab[];
public:
setup1_qm(model *);
~setup1_qm(void);
void UpdateAtomFlags(void); // virtual
static i32u static_GetEngineCount(void);
static i32u static_GetEngineIDNumber(i32u);
static const char * static_GetEngineName(i32u);
static const char * static_GetClassName(void);
i32u GetEngineCount(void); // virtual
i32u GetEngineIDNumber(i32u); // virtual
const char * GetEngineName(i32u); // virtual
const char * GetClassName_lg(void); // virtual
engine * CreateEngineByIndex(i32u); // virtual
static bool CheckSettings(setup *);
};
/*################################################################################################*/
/** A base class for molecular QM calculations.
The qm1-models can have different basis functions and other such different details,
so it is not as straightforward to draw planes/surfaces for those than for molecular
mechanics models. Therefore qm1-engine classes must provide us the values we need
for planes/surfaces.
*/
class eng1_qm : virtual public engine
{
protected:
i32u * l2g_qm; // the local-to-global lookup table.
f64 * tss_ref_str; // this is for transition state search only; DO NOT DELETE HERE!!!
f64 tss_force_const; // this is for transition state search only...
f64 tss_delta_ene; // this is for transition state search only...
friend class transition_state_search;
public:
eng1_qm(setup *, i32u);
virtual ~eng1_qm(void);
virtual bool SetTorsionConstraint(atom *, atom *, atom *, atom *, f64, f64, bool) { assertion_failed(__FILE__, __LINE__, "not yet implemented!"); }
virtual bool RemoveTorsionConstraint(atom *, atom *, atom *, atom *) { assertion_failed(__FILE__, __LINE__, "not yet implemented!"); }
virtual fGL GetVDWSurf(fGL *, fGL *); // virtual
};
/*################################################################################################*/
#endif // ENG1_QM_H
// eof
|