version 1.1119 | version 1.1120 |
---|
| |
#define EXCHCK_FULL 1 | #define EXCHCK_FULL 1 |
#define EXCHCK_MOD 2 | #define EXCHCK_MOD 2 |
| |
| class ResidueLookupElem |
| { |
| public: |
| char mySegid[11]; |
| ResidueLookupElem *next; // stored as a linked list |
| int firstResid; // valid resid is >= firstResid |
| int lastResid; // valid resid is <= lastResid |
| ResizeArray<int> atomIndex; // 0-based index for first atom in residue |
| |
| ResidueLookupElem(void) { next = 0; firstResid = -1; lastResid = -1; } |
| ~ResidueLookupElem(void) { delete next; } |
| int lookup(const char *segid, int resid, int *begin, int *end) const; |
| ResidueLookupElem* append(const char *segid, int resid, int aid); |
| }; |
| |
// Ported by JLai -- JE | // Ported by JLai -- JE |
typedef struct go_val | typedef struct go_val |
{ | { |
| |
} GoPair; | } GoPair; |
// End of port - JL | // End of port - JL |
| |
| #define QMLSSMODEDIST 1 |
| #define QMLSSMODECOM 2 |
| |
| #define QMFormatORCA 1 |
| #define QMFormatMOPAC 2 |
| #define QMFormatUSR 3 |
| |
| #define QMCHRGNONE 0 |
| #define QMCHRGMULLIKEN 1 |
| #define QMCHRGCHELPG 2 |
| |
| #define QMSCHEMECS 1 |
| #define QMSCHEMERCD 2 |
| #define QMSCHEMEZ1 3 |
| #define QMSCHEMEZ2 4 |
| #define QMSCHEMEZ3 5 |
| |
//only used for compressing the molecule information | //only used for compressing the molecule information |
typedef struct seg_resid | typedef struct seg_resid |
{ | { |
| |
// GO ENERGY CALCULATION CODE | // GO ENERGY CALCULATION CODE |
// End of port - JL | // End of port - JL |
| |
| |
| private: |
| ///////////////////////// |
| // Begin QM |
| ///////////////////////// |
| |
| int qmDroppedBonds, qmDroppedAngles, qmDroppedDihedrals; |
| int qmDroppedImpropers, qmDroppedCrossterms; |
| |
| Bool qmReplaceAll; // Indicates if all forces should be replaced. |
| int qmNumQMAtoms; // Number of QM atoms, from all groups. |
| |
| // Array of abbreviated element names for all atoms. |
| char **qmElementArray; |
| // Array of elements for dummy atoms. |
| char **qmDummyElement; |
| |
| // Number of QM atoms in each QM group |
| int *qmGrpSizes; |
| |
| // QM group for each atom of the system. 0 means MM atom. |
| Real *qmAtomGroup; |
| // Number of different QM regions |
| int qmNumGrps ; |
| |
| // QM Atom charges. |
| Real *qmAtmChrg ; |
| // global indices of all QM atoms. |
| int *qmAtmIndx ; |
| |
| // Number of QM-MM bonds. |
| int qmNumBonds ; |
| // IDs of each group, that is, the value in the qmColumn, per group. |
| Real *qmGrpID ; |
| // The total charge of each QM group. |
| Real *qmGrpChrg; |
| // The multiplicity of QM groups |
| Real *qmGrpMult; |
| // Number of QM-MM bonds in each group. |
| int *qmGrpNumBonds ; |
| // Sequential list of bonds between a MM atom and a QM atom. |
| // (with the bonded atoms ins this order: MM first, QM second). |
| int **qmMMBond ; |
| // List of bond indexes for each QM group. |
| int **qmGrpBonds ; |
| // List of atom indexes for MM atoms in QM-MM bonds, per group. |
| // This is used to check if a point charge is actually an MM atom |
| // that need to be ignored, and will be substituted by a dummy atom (for example). |
| int **qmMMBondedIndx ; |
| // List of indices for MM atoms which will receive fractions of charges from |
| // the MM atom of a QM-MM bond. This is used in the Charge Shift scheme. |
| int **qmMMChargeTarget; |
| // Number of target MM atoms per QM-MM bond. Targets will receive the partial |
| // charge of the MM atom in a QM-MM bond. (in Charge shift scheme) |
| int *qmMMNumTargs; |
| // List of distances from thr QM atom where the dummy atom will be placed. |
| BigReal *qmDummyBondVal; |
| // Indicate if point charges will be used in QM calculations. |
| Bool qmNoPC; |
| |
| ///////////////////////// |
| // These variables are used in case mechanichal embedding is requested (NoPC = TRUE) |
| // AND there are QM-MM bonds in the system. |
| |
| // Indicates the number of items in the arrays for Mechanical embedding with QM-MM bonds. |
| int qmMeNumBonds; |
| // Indicates the indices of MM atoms which participate in QM-MM bonds. |
| int *qmMeMMindx; |
| // Indicates the QM group to which the QM-MM bonds belongs. |
| Real *qmMeQMGrp; |
| ///////////////////////// |
| |
| // Indicates frequency of selection of point charges. |
| int qmPCFreq; |
| // Custom PC array; |
| int *qmCustomPCIdxs; |
| // Number of Indexes associated with each QM Group. |
| int *qmCustPCSizes; |
| // Total number of custom PC charges. |
| int qmTotCustPCs; |
| // Number of solvent molecules that will be selected and updated by NAMD, per group. |
| int *qmLSSSize; |
| // Number of atoms per solvent molecule. We need all molecules to have the same size. |
| int qmLSSResidueSize; |
| // IDs of all atoms belonging to QM solvent molecules, from all groups. |
| int *qmLSSIdxs; |
| // MAss of each atom in LSS solvent molecules. |
| Mass *qmLSSMass; |
| // Atom IDs of QM atoms which will be used to select solvent molecules by distance. |
| int *qmLSSRefIDs; |
| // Mass of each QM atom used as reference for solvent selection. |
| Mass *qmLSSRefMass ; |
| // Number of atom IDs/Mass per group. |
| int *qmLSSRefSize; |
| int qmLSSFreq; |
| int qmLSSTotalNumAtms; |
| // This will map each classical solvent atom with a global index of solvent residues, |
| // so we don't depend on segment names and repeated residue indices. |
| std::map<int,int> qmClassicSolv ; |
| |
| ///////////////////////// |
| // end QM |
| ///////////////////////// |
| |
| public: |
| // QM |
| void set_qm_replaceAll(Bool newReplaceAll) { qmReplaceAll = newReplaceAll; } ; |
| |
| const Real * get_qmAtomGroup() const {return qmAtomGroup; } ; |
| Real get_qmAtomGroup(int indx) const {return qmAtomGroup[indx]; } ; |
| |
| Real *get_qmAtmChrg() {return qmAtmChrg; } ; |
| const int *get_qmAtmIndx() {return qmAtmIndx; } ; |
| |
| int get_numQMAtoms() {return qmNumQMAtoms; } ; |
| const char *const * get_qmElements() {return qmElementArray;} ; |
| int get_qmNumGrps() const {return qmNumGrps; } ; |
| const int * get_qmGrpSizes() {return qmGrpSizes; } ; |
| Real * get_qmGrpID() { return qmGrpID; } ; |
| Real *get_qmGrpChrg() {return qmGrpChrg; } ; |
| Real *get_qmGrpMult() {return qmGrpMult; } ; |
| |
| int get_qmNumBonds() { return qmNumBonds; } ; |
| const BigReal * get_qmDummyBondVal() { return qmDummyBondVal; } ; |
| const int * get_qmGrpNumBonds() { return qmGrpNumBonds; } ; |
| const int *const * get_qmMMBond() { return qmMMBond; } ; |
| const int *const * get_qmGrpBonds() { return qmGrpBonds; } ; |
| const int *const * get_qmMMBondedIndx() { return qmMMBondedIndx; } ; |
| const char *const * get_qmDummyElement() { return qmDummyElement; } ; |
| |
| const int *const * get_qmMMChargeTarget() { return qmMMChargeTarget; } ; |
| const int * get_qmMMNumTargs() { return qmMMNumTargs; } ; |
| |
| int* get_qmLSSSize() { return qmLSSSize;} ; |
| int* get_qmLSSIdxs() { return qmLSSIdxs;} ; |
| Mass *get_qmLSSMass() { return qmLSSMass; } ; |
| int get_qmLSSFreq() { return qmLSSFreq; } ; |
| int get_qmLSSResSize() { return qmLSSResidueSize; } ; |
| int *get_qmLSSRefIDs() { return qmLSSRefIDs ; } ; |
| int *get_qmLSSRefSize() { return qmLSSRefSize ; } ; |
| Mass *get_qmLSSRefMass() {return qmLSSRefMass; } ; |
| std::map<int,int> &get_qmMMSolv() { return qmClassicSolv;} ; |
| |
| Bool get_qmReplaceAll() {return qmReplaceAll; } ; |
| |
| Bool get_noPC() { return qmNoPC; } ; |
| int get_qmMeNumBonds() { return qmMeNumBonds; } ; |
| int *get_qmMeMMindx() { return qmMeMMindx; } ; |
| Real *get_qmMeQMGrp() { return qmMeQMGrp; } ; |
| |
| int get_qmPCFreq() { return qmPCFreq; } ; |
| |
| int get_qmTotCustPCs() { return qmTotCustPCs; } ; |
| int *get_qmCustPCSizes() { return qmCustPCSizes; } ; |
| int *get_qmCustomPCIdxs() { return qmCustomPCIdxs; } ; |
| |
| void prepare_qm(const char *pdbFileName, Parameters *params, ConfigList *cfgList) ; |
| void delete_qm_bonded() ; |
| // end QM |
| |
| |
| |
Molecule(SimParameters *, Parameters *param); | Molecule(SimParameters *, Parameters *param); |
Molecule(SimParameters *, Parameters *param, char *filename, ConfigList *cfgList=NULL); | Molecule(SimParameters *, Parameters *param, char *filename, ConfigList *cfgList=NULL); |
Molecule(SimParameters *simParams, Parameters *param, molfile_plugin_t *pIOHdl, void *pIOFileHdl, int natoms); | Molecule(SimParameters *simParams, Parameters *param, molfile_plugin_t *pIOHdl, void *pIOFileHdl, int natoms); |