ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ReadWrite.hpp
Revision: 1074
Committed: Mon Mar 1 20:01:50 2004 UTC (20 years, 4 months ago) by tim
File size: 2445 byte(s)
Log Message:
Adding zsub, a program which can be used to replace atom type for zconstraint into OOPSE

File Contents

# Content
1 #ifndef __READWRITE_H__
2 #define __READWRITE_H__
3
4 #include <iostream>
5 #include <fstream>
6
7 #include <string.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <sys/types.h>
12 #include <sys/stat.h>
13
14
15 #include "Atom.hpp"
16 #include "SimInfo.hpp"
17 #include "Thermo.hpp"
18
19 using namespace std;
20
21 class FilePos{
22
23 public:
24 FilePos(){
25 myPos = NULL;
26 next = NULL;
27 }
28 FilePos( fpos_t* thePos ) {
29 myPos = thePos;
30 next = NULL;
31 }
32 ~FilePos(){
33 if( next != NULL ) delete next;
34 if( myPos != NULL ) delete myPos;
35 }
36
37 void add( fpos_t *thePos ){
38 if( next != NULL )
39 next->add( thePos );
40 else
41 next = new FilePos( thePos );
42 }
43
44 FilePos &operator=(fpos_t *thePos){ myPos = thePos; return *this; }
45
46 void setPos( fpos_t *thePos ){ myPos = thePos; }
47 fpos_t *getPos( void ){ return myPos; }
48
49 FilePos* getNext( void ) { return next; }
50 private:
51
52 fpos_t *myPos;
53 FilePos* next;
54
55 };
56
57 class DumpWriter{
58
59 public:
60 DumpWriter( SimInfo* the_entry_plug );
61 ~DumpWriter();
62
63 void writeDump( double currentTime );
64 void writeFinal( double currentTime);
65 void writeFrame( vector<ofstream*>& outFile, double finalTime );
66
67 #ifdef IS_MPI
68 void update();
69 #endif
70
71 private:
72
73 #ifdef IS_MPI
74 void sortByGlobalIndex();
75 #endif
76
77 SimInfo* entry_plug;
78 ofstream dumpFile;
79
80 #ifdef IS_MPI
81 vector<pair<int, int> > indexArray;
82 #endif
83 };
84
85 class StatWriter{
86
87 public:
88 StatWriter( SimInfo* the_entry_plug );
89 ~StatWriter();
90
91 void writeStat( double currentTime );
92
93 private:
94
95 SimInfo* entry_plug;
96 ofstream outFile;
97 char outName[500];
98 Thermo* tStats;
99
100 };
101
102 class InitializeFromFile{
103
104 public:
105 InitializeFromFile( char *in_name );
106 ~InitializeFromFile();
107
108 void readInit( SimInfo* the_entry_plug );
109
110 private:
111 char* parseDumpLine(char* line, int atomIndex);
112 char* parseCommentLine(char* line, SimInfo* entry_plug);
113 FILE *c_in_file;
114 char c_in_name[500];
115 SimInfo* simnfo;
116 };
117
118 class DumpReader{
119
120 public:
121 DumpReader(const char *in_name );
122 ~DumpReader();
123
124 int getNframes();
125 void scanFile( void );
126
127 void getNextFrame() {}
128 void readFrame(SimInfo* the_simnfo, int whichFrame);
129
130 private:
131
132 void readSet( int whichFrame );
133 char* parseDumpLine(char* line, int atomIndex);
134 char* parseCommentLine(char* line, double &time, double boxMat[9] );
135 FILE *inFile;
136 char inName[500];
137 bool isScanned;
138 int nFrames;
139
140 FilePos** frameStart;
141 FilePos* headFP;
142
143 SimInfo *simnfo;
144 };
145
146
147
148 #endif