GLYLIB
0.3.0b
|
00001 /** \file parameter_sets.h 00002 \brief Structures for adding parameters to ensembles and assemblies. 00003 00004 Begun on 20080606 by BLFoley 00005 00006 This file is loaded with the molecules.h header file by default. 00007 It should only be loaded explicitly in a program if, for some reason, 00008 you are using it separately. 00009 00010 The parameter_set structure will eventually contain pointers for 00011 just about any type of data typically used in simulations. As usual, 00012 there is also a void pointer for situations where information is needed 00013 that is not already included in the structure. In any case, this is 00014 likely to be one whopping big structure, hence the separate file. */ 00015 00016 #if !defined(GLYLIB_PARAMETERS) 00017 #define GLYLIB_PARAMETERS 00018 00019 /** \addtogroup PARAMETERS 00020 * @{ 00021 */ 00022 /************ structures for descriptions of molecules ***********************/ 00023 typedef struct { 00024 char RS,DL,pm; ///< for R/S & D/L type chirality & p/m type optical activity 00025 char UD, AB; ///< for up/down and alpha/beta descriptors 00026 int niso; ///< number of other descriptors 00027 char **iso; ///< the niso other descriptions of isomerism 00028 char *ELGEOM,*SPGEOM; ///< electronic (sp2, sp3, etc.) and spatial (tetrahedral, etc.) geometry 00029 } chirality_description; 00030 00031 00032 /************ sub structures for the parameter_set structure *****************/ 00033 typedef struct{ // bond_type 00034 char **NT; // first and second atom types in bond (match NT in atype) 00035 char *desc; // description 00036 double o; // bond order for this type 00037 double k; // force constant 00038 double l; // equilibrium length 00039 double kx; // anharmonicity 00040 double LJD_612,LJZ_612,LJD_1012,LJZ_1012; // Lennard-Jones params (D=depth Z=zero) 00041 double LJ6_612,LJ12_612,LJ10_1012,LJ12_1012; // Lennard-Jones params (alternate) 00042 int nVP ; // number void pointers 00043 void *VP; // the void pointers 00044 } bond_type; // bond types -- for describing bonds 00045 typedef struct { // angle_type 00046 char **NT; // the three atom types (match NT in atype) 00047 char *desc; // description 00048 double k; // force constant (angular) 00049 double l; // equilibrium angle 00050 double kx; // anharmonicity 00051 int nVP ; // number void pointers 00052 void *VP; // the void pointers 00053 } angle_type; // for describing angle parameters 00054 typedef struct { // torsion_type 00055 char **NT; // the four atom types (match NT in atype) 00056 char *desc; // description 00057 int n; // number of terms in this dependence 00058 double *k; // force constant (angular) (n of these...) 00059 double *N; // periodicity (n of these...) 00060 double *P; // phase (n of these...) 00061 int nVP ; // number void pointers 00062 void *VP; // the void pointers 00063 } torsion_type; // for describing torsion parameters 00064 typedef struct { // atype -- for atom types 00065 int n; // atomic number 00066 char *N; // element name 00067 char *NT; // name for element type 00068 double m; // mass of this atom type 00069 char *desc; // brief free-form description field 00070 int nb; // number of typical bonds for this atom type 00071 double *bo; // typical bond orders (nb of these) 00072 int nlp; // number of typical lone pairs (to check geometry sanity) 00073 double LJD_612,LJZ_612,LJD_1012,LJZ_1012; // Lennard-Jones params (D=depth Z=zero) 00074 int nch; // number of charges to associate with this atom type 00075 int *ch; // the charges 00076 int nR; // number of radii 00077 char **RD; // descriptions of the nR radii 00078 double *R; // radii (e.g., van der Waals, Poisson-Boltzmann, etc.) 00079 int nSC; 00080 double *SC; // some other constant (e.g., screening) associated with R 00081 // Pointers for convenience 00082 int nBT; // number of bond types for this atom 00083 int *iBT; // pointers into a bond_type array where likely info is stored (to reduce search time) 00084 bond_type **BT; // pointers into a bond_type array where likely info is stored (to reduce search time) 00085 int nHBT; // number of H-bond types for this atom 00086 int *iHBT; // pointers into a H-bond_type array where likely info is stored (to reduce search time) 00087 bond_type **HBT; // pointers into a H-bond_type array where likely info is stored (to reduce search time) 00088 int nNBT; // number of non-bond types for this atom 00089 int *iNBT; // pointers into a non-bond_type array where likely info is stored (to reduce search time) 00090 bond_type **NBT; // pointers into a non-bond_type array where likely info is stored (to reduce search time) 00091 int nANT; // number of angle types for this atom 00092 int *iANT; // pointers into a angle_type array where likely info is stored (to reduce search time) 00093 angle_type **ANT; // pointers into a angle_type array where likely info is stored (to reduce search time) 00094 int nHANT; // number of H-bond angle types for this atom 00095 int *iHANT; // pointers into a H-bond angle_type array where likely info is stored (to reduce search time) 00096 angle_type **HANT; // pointers into a H-bond angle_type array where likely info is stored (to reduce search time) 00097 int nNANT; // number of non-bond angle_types for this atom 00098 int *iNANT; // pointers into a non-bond angle_type array where likely info is stored (to reduce search time) 00099 angle_type **NANT; // pointers into a non-bond angle_type array where likely info is stored (to reduce search time) 00100 int nTRT; // number of torsion types for this atom 00101 int *iTRT; // pointers into a torsion_type array where likely info is stored (to reduce search time) 00102 torsion_type **TRT; // pointers into a torsion_type array where likely info is stored (to reduce search time) 00103 int nHTRT; // number of H-bond torsion types for this atom 00104 int *iHTRT; // pointers into a H-bond_torsion_type array where likely info is stored (to reduce search time) 00105 torsion_type **HTRT; // pointers into a H-bond_torsion_type array where likely info is stored (to reduce search time) 00106 int nNTRT; // number of non-bond torsion_types for this atom 00107 int *iNTRT; // pointers into a non-bond torsion_type array where likely info is stored (to reduce search time) 00108 torsion_type **NTRT; // pointers into a non-bond torsion_type array where likely info is stored (to reduce search time) 00109 // The void pointers for expansion 00110 int nVP ; // number void pointers 00111 void *VP; // the void pointers 00112 } atype; // atom types, with other info 00113 typedef struct { // rtype -- for residue types 00114 int c; // main class (amino acid, glycan, solvent, etc.) 00115 int nac, *ac; // number alternate classes, those classes 00116 int nVP; // number of other information 00117 void *VP; // pointers to the nVP holders of other information 00118 } rtype; // residue types, with other info 00119 typedef struct { // mtype -- for molecule types 00120 int c; // type class (amino acid, glycan, solvent, etc.) 00121 int nVP; // number of other information 00122 void *VP; // pointers to the no holders of other information 00123 } mtype; // molecule types, with other info 00124 typedef struct { // types -- container for other type info 00125 int na; // # of atom types 00126 atype *a; // na of these 00127 int nr; // # of residue types 00128 rtype *r; // nr of these 00129 int nm; // # of molecule types 00130 mtype *m; // nm of these 00131 int nVP ; // number void pointers 00132 void *VP; // the void pointers 00133 } types; // superstructure for typing information 00134 00135 /***************** structure parameter_set ********************/ 00136 /* parameters for atoms, molecules, residues, etc. */ 00137 typedef struct { 00138 int nAT; // number of atom types represented in this set 00139 atype *AT; // array of atom type structures 00140 int nRT; // number of residue types represented in this set 00141 rtype *RT; // array of residue type structures 00142 int nMT; // number of molecule types represented in this set 00143 mtype *MT; // array of molecule type structures 00144 int nBT; 00145 bond_type *BT; 00146 int nHBT; // for hydrogen bonds 00147 bond_type *HBT; 00148 int nNBT; // for non-bonded interactions 00149 bond_type *NBT; 00150 int nANT; 00151 angle_type *ANT; 00152 int nTRT; 00153 torsion_type *TRT; 00154 } parameter_set; 00155 /** @}*/ 00156 00157 #endif