ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/SimInfo.hpp
Revision: 708
Committed: Wed Aug 20 22:23:34 2003 UTC (20 years, 10 months ago) by tim
File size: 6085 byte(s)
Log Message:
user can setup seed in bass file now, if he does not specify any value for
seed, oopse will take the value of seconds of system time as seed

File Contents

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