ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new-templateless/OOPSE/libmdtools/SimInfo.hpp
Revision: 851
Committed: Wed Nov 5 19:18:17 2003 UTC (20 years, 9 months ago) by mmeineke
File size: 6521 byte(s)
Log Message:
some work on trying to find the compression bug

File Contents

# Content
1 #ifndef __SIMINFO_H__
2 #define __SIMINFO_H__
3
4 #include "Atom.hpp"
5 #include "Molecule.hpp"
6 #include "AbstractClasses.hpp"
7 #include "MakeStamps.hpp"
8 #include "SimState.hpp"
9
10 #define __C
11 #include "fSimulation.h"
12 #include "fortranWrapDefines.hpp"
13 #include "GenericData.hpp"
14
15
16
17 class SimInfo{
18
19 public:
20
21 SimInfo();
22 ~SimInfo();
23
24 int n_atoms; // the number of atoms
25 Atom **atoms; // the array of atom objects
26
27 double tau[9]; // the stress tensor
28
29 int n_bonds; // number of bends
30 int n_bends; // number of bends
31 int n_torsions; // number of torsions
32 int n_oriented; // number of of atoms with orientation
33 int ndf; // number of actual degrees of freedom
34 int ndfRaw; // number of settable degrees of freedom
35 int ndfTrans; // number of translational degrees of freedom
36 int nZconstraints; // the number of zConstraints
37
38 int setTemp; // boolean to set the temperature at each sampleTime
39 int resetIntegrator; // boolean to reset the integrator
40
41 int n_dipoles; // number of dipoles
42
43
44 int n_exclude; // the # of pairs excluded from long range forces
45 Exclude** excludes; // the pairs themselves
46
47 int nGlobalExcludes;
48 int* globalExcludes; // same as above, but these guys participate in
49 // no long range forces.
50
51 int* identArray; // array of unique identifiers for the atoms
52 int* molMembershipArray; // map of atom numbers onto molecule numbers
53
54 int n_constraints; // the number of constraints on the system
55
56 int n_SRI; // the number of short range interactions
57
58 double lrPot; // the potential energy from the long range calculations.
59
60 double Hmat[3][3]; // the periodic boundry conditions. The Hmat is the
61 // column vectors of the x, y, and z box vectors.
62 // h1 h2 h3
63 // [ Xx Yx Zx ]
64 // [ Xy Yy Zy ]
65 // [ Xz Yz Zz ]
66 //
67 double HmatInv[3][3];
68
69 double boxL[3]; // The Lengths of the 3 column vectors of Hmat
70 double boxVol;
71 int orthoRhombic;
72
73
74 double dielectric; // the dielectric of the medium for reaction field
75
76
77 int usePBC; // whether we use periodic boundry conditions.
78 int useLJ;
79 int useSticky;
80 int useDipole;
81 int useReactionField;
82 int useGB;
83 int useEAM;
84
85
86 double dt, run_time; // the time step and total time
87 double sampleTime, statusTime; // the position and energy dump frequencies
88 double target_temp; // the target temperature of the system
89 double thermalTime; // the temp kick interval
90 double currentTime; // Used primarily for correlation Functions
91 double resetTime; // Use to reset the integrator periodically
92
93 int n_mol; // n_molecules;
94 Molecule* molecules; // the array of molecules
95
96 int nComponents; // the number of components in the system
97 int* componentsNmol; // the number of molecules of each component
98 MoleculeStamp** compStamps;// the stamps matching the components
99 LinkedMolStamp* headStamp; // list of stamps used in the simulation
100
101
102 char ensemble[100]; // the enesemble of the simulation (NVT, NVE, etc. )
103 char mixingRule[100]; // the mixing rules for Lennard jones/van der walls
104 BaseIntegrator *the_integrator; // the integrator of the simulation
105
106 char finalName[300]; // the name of the eor file to be written
107 char sampleName[300]; // the name of the dump file to be written
108 char statusName[300]; // the name of the stat file to be written
109
110 int seed; //seed for random number generator
111 // refreshes the sim if things get changed (load balanceing, volume
112 // adjustment, etc.)
113
114 void refreshSim( void );
115
116
117 // sets the internal function pointer to fortran.
118
119 void setInternal( setFortranSim_TD fSetup,
120 setFortranBox_TD fBox,
121 notifyFortranCutOff_TD fCut){
122 setFsimulation = fSetup;
123 setFortranBoxSize = fBox;
124 notifyFortranCutOffs = fCut;
125 }
126
127 int getNDF();
128 int getNDFraw();
129 int getNDFtranslational();
130
131 void setBox( double newBox[3] );
132 void setBoxM( double newBox[3][3] );
133 void getBoxM( double theBox[3][3] );
134 void scaleBox( double scale );
135
136 void setRcut( double theRcut );
137 void setDefaultRcut( double theRcut );
138 void setEcr( double theEcr );
139 void setDefaultEcr( double theEcr );
140 void setEcr( double theEcr, double theEst );
141 void setDefaultEcr( double theEcr, double theEst );
142 void checkCutOffs( void );
143
144 double getRcut( void ) { return rCut; }
145 double getRlist( void ) { return rList; }
146 double getEcr( void ) { return ecr; }
147 double getEst( void ) { return est; }
148 double getMaxCutoff( void ) { return maxCutoff; }
149
150 void setTime( double theTime ) { currentTime = theTime; }
151 void incrTime( double the_dt ) { currentTime += the_dt; }
152 void decrTime( double the_dt ) { currentTime -= the_dt; }
153 double getTime( void ) { return currentTime; }
154
155 void wrapVector( double thePos[3] );
156
157 void matMul3(double a[3][3], double b[3][3], double out[3][3]);
158 void matVecMul3(double m[3][3], double inVec[3], double outVec[3]);
159 void invertMat3(double in[3][3], double out[3][3]);
160 void transposeMat3(double in[3][3], double out[3][3]);
161 void printMat3(double A[3][3]);
162 void printMat9(double A[9]);
163 double matDet3(double m[3][3]);
164 double matTrace3(double m[3][3]);
165
166 void crossProduct3(double a[3],double b[3], double out[3]);
167 double dotProduct3(double a[3], double b[3]);
168 double length3(double a[3]);
169
170 SimState* getConfiguration( void ) { return myConfiguration; }
171
172 GenericData* getProperty(char* propName);
173 GenericData* getProperties() {return properties; }
174
175 int getSeed(void) { return seed; }
176 void setSeed(int theSeed) { seed = theSeed;}
177
178 private:
179
180 SimState* myConfiguration;
181
182 double origRcut, origEcr;
183 int boxIsInit, haveOrigRcut, haveOrigEcr;
184
185 double oldEcr;
186 double oldRcut;
187
188 double rList, rCut; // variables for the neighborlist
189 double ecr; // the electrostatic cutoff radius
190 double est; // the electrostatic skin thickness
191 double maxCutoff;
192
193 double distXY;
194 double distYZ;
195 double distZX;
196
197 void calcHmatInv( void );
198 void calcBoxL();
199 double calcMaxCutOff();
200
201
202 // private function to initialize the fortran side of the simulation
203 setFortranSim_TD setFsimulation;
204
205 setFortranBox_TD setFortranBoxSize;
206
207 notifyFortranCutOff_TD notifyFortranCutOffs;
208
209 //Addtional Properties of SimInfo
210 GenericData* properties;
211
212 };
213
214
215
216 #endif