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

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