ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ReadWrite.hpp
Revision: 1078
Committed: Tue Mar 2 20:32:40 2004 UTC (20 years, 4 months ago) by tim
File size: 2501 byte(s)
Log Message:
add LARGEFILE_SOURCE64 macro to support large file

File Contents

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