GLYLIB  0.3.0b
parameter_sets.h
Go to the documentation of this file.
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
 All Classes Files Functions Variables Typedefs Defines