ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-4/src/io/ZConsReader.cpp
Revision: 1832
Committed: Thu Dec 2 16:04:19 2004 UTC (19 years, 8 months ago) by tim
File size: 3957 byte(s)
Log Message:
still have two linking problem

File Contents

# User Rev Content
1 tim 1818 #include "constraints/ZconsData.hpp"
2 tim 1492 #include "io/ZConsReader.hpp"
3     #include "utils/simError.h"
4 tim 1818 namespace oopse {
5 gezelter 1490
6     ZConsReader::ZConsReader(SimInfo* info)
7     :istream(NULL){
8    
9     GenericData* data;
10 tim 1625 StringGenericData* filename;
11 gezelter 1490 this->info = info;
12    
13     //retrieve output filename of z force
14 tim 1701 data = info->getPropertyByName(ZCONSFILENAME_ID);
15 gezelter 1490 if(!data) {
16    
17    
18     sprintf( painCave.errMsg,
19     "ZConsReader error: If you use an ZConstraint\n"
20     " , you must set output filename of z-force.\n");
21     painCave.isFatal = 1;
22     simError();
23    
24     }
25     else{
26    
27 tim 1625 filename = dynamic_cast<StringGenericData*>(data);
28 gezelter 1490
29     if(!filename){
30    
31     sprintf( painCave.errMsg,
32     "ZConsReader error: Can not get property from SimInfo\n");
33     painCave.isFatal = 1;
34     simError();
35    
36     }
37     else{
38     zconsFileName = filename->getData();
39     }
40    
41     }
42    
43 tim 1832 istream = new std::ifstream(zconsFileName.c_str());
44 gezelter 1490
45     if (!istream){
46 tim 1830 std::cerr << "open " << filename << "error" << std::endl;
47 gezelter 1490 exit(1);
48     }
49    
50     readHeader();
51     }
52    
53 tim 1818 ZConsReader::ZConsReader(const std::string& filename){
54 tim 1832 istream = new std::ifstream(zconsFileName.c_str());
55 gezelter 1490
56     if (!istream){
57 tim 1830 std::cerr << "open " << filename << "error" << std::endl;
58 gezelter 1490 exit(1);
59     }
60    
61     readHeader();
62     }
63    
64     ZConsReader::~ZConsReader(){
65     istream->close();
66     }
67    
68     int ZConsReader::getNumZMol(){
69     return nZMol;
70     }
71    
72 tim 1826 std::vector<int> ZConsReader::getZConsIndex(){
73 gezelter 1490 return index;
74     }
75    
76 tim 1826 std::vector<double> ZConsReader::getZConsPos(){
77 gezelter 1490 return zconsPos;
78     }
79    
80     //double ZConsReader::getKRatio(){
81     // return kRatio;
82     //}
83    
84     double ZConsReader::getCurTime(){
85     return curTime;
86     }
87    
88 tim 1818 std::vector<double> ZConsReader::getCurZPos(){
89 gezelter 1490 return curZPos;
90     }
91    
92 tim 1818 std::vector<double> ZConsReader::getCurFZ(){
93 gezelter 1490 return curFZ;
94     }
95    
96     void ZConsReader::readHeader(){
97     const int MAXBUFFERSIZE = 2000;
98     char line[MAXBUFFERSIZE];
99     int zmolIndex;
100     float zmolPos;
101     int sscanfCount;
102    
103     istream->getline(line, MAXBUFFERSIZE);
104    
105     //skip the comment lines
106     while(line[0] == '#')
107     istream->getline(line, MAXBUFFERSIZE);
108    
109     sscanfCount = sscanf(line, "%d", &nZMol);
110    
111     if (sscanfCount != 1){
112 tim 1830 std::cerr << "ZConsReader Error : reading file error" << std::endl;
113 gezelter 1490 exit(1);
114     }
115    
116     for(int i = 0 ; i < nZMol; i++){
117    
118     istream->getline(line, MAXBUFFERSIZE);
119    
120     sscanfCount = sscanf(line, "%d\t%f", &zmolIndex, &zmolPos);
121     if (sscanfCount != 2){
122 tim 1830 std::cerr << "ZConsReader Error : reading file error" << std::endl;
123 gezelter 1490 exit(1);
124     }
125    
126     index.push_back(zmolIndex);
127     zconsPos.push_back(zmolPos);
128     }
129    
130     curZPos.resize(nZMol);
131     curFZ.resize(nZMol);
132     }
133    
134     void ZConsReader::readNextFrame(){
135     const int MAXBUFFERSIZE = 2000;
136     char line[MAXBUFFERSIZE];
137     int tempNZMol;
138     int sscanfCount;
139     int tempIndex;
140     float tempCurTime;
141     float tempFZ;
142     float tempCurZPos;
143     float tempZconsPos;
144    
145     istream->getline(line, MAXBUFFERSIZE);
146     sscanfCount = sscanf(line, "%f", &tempCurTime);
147     if (sscanfCount != 1){
148 tim 1830 std::cerr << "ZConsReader Error : reading file error" << std::endl;
149 gezelter 1490 exit(1);
150     }
151     curTime = tempCurTime;
152    
153     istream->getline(line, MAXBUFFERSIZE);
154     sscanfCount = sscanf(line, "%d", &tempNZMol);
155     if (sscanfCount != 1){
156 tim 1830 std::cerr << "ZConsReader Error : reading file error" << std::endl;
157 gezelter 1490 exit(1);
158     }
159    
160     if (tempNZMol != nZMol){
161 tim 1830 std::cerr << "ZConsReader Error: reading file error" << std::endl;
162 gezelter 1490 exit(1);
163     }
164    
165     for(int i = 0; i < nZMol; i++){
166     istream->getline(line, MAXBUFFERSIZE);
167     sscanfCount = sscanf(line, "%d\t%f\t%f\t%f", &tempIndex, &tempFZ, &tempCurZPos,&tempZconsPos);
168     if (sscanfCount != 4){
169 tim 1830 std::cerr << "ZConsReader Error : reading file error" << std::endl;
170 gezelter 1490 exit(1);
171     }
172    
173     index[i] = tempIndex;
174     curFZ[i] = tempFZ;
175     curZPos[i]= tempCurZPos;
176     zconsPos[i] = tempZconsPos;
177     }
178    
179     }
180    
181     bool ZConsReader::hasNextFrame(){
182     return istream->peek() != EOF ? true : false;
183     }
184    
185 tim 1818 }

Properties

Name Value
svn:executable *