ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-2.0/src/io/ZConsReader.cpp
Revision: 1830
Committed: Thu Dec 2 05:17:10 2004 UTC (19 years, 7 months ago) by tim
File size: 3976 byte(s)
Log Message:
change endl to std::endl

File Contents

# Content
1 #include "constraints/ZconsData.hpp"
2 #include "io/ZConsReader.hpp"
3 #include "utils/simError.h"
4 namespace oopse {
5
6 ZConsReader::ZConsReader(SimInfo* info)
7 :istream(NULL){
8
9 GenericData* data;
10 StringGenericData* filename;
11 this->info = info;
12
13 //retrieve output filename of z force
14 data = info->getPropertyByName(ZCONSFILENAME_ID);
15 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 filename = dynamic_cast<StringGenericData*>(data);
28
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 istream = new ifstream(zconsFileName.c_str());
44
45 if (!istream){
46 std::cerr << "open " << filename << "error" << std::endl;
47 exit(1);
48 }
49
50 readHeader();
51 }
52
53 ZConsReader::ZConsReader(const std::string& filename){
54 istream = new ifstream(zconsFileName.c_str());
55
56 if (!istream){
57 std::cerr << "open " << filename << "error" << std::endl;
58 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 std::vector<int> ZConsReader::getZConsIndex(){
73 return index;
74 }
75
76 std::vector<double> ZConsReader::getZConsPos(){
77 return zconsPos;
78 }
79
80 //double ZConsReader::getKRatio(){
81 // return kRatio;
82 //}
83
84 double ZConsReader::getCurTime(){
85 return curTime;
86 }
87
88 std::vector<double> ZConsReader::getCurZPos(){
89 return curZPos;
90 }
91
92 std::vector<double> ZConsReader::getCurFZ(){
93 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 cout << line << std::endl;
106 //skip the comment lines
107 while(line[0] == '#')
108 istream->getline(line, MAXBUFFERSIZE);
109
110 sscanfCount = sscanf(line, "%d", &nZMol);
111
112 if (sscanfCount != 1){
113 std::cerr << "ZConsReader Error : reading file error" << std::endl;
114 exit(1);
115 }
116
117 for(int i = 0 ; i < nZMol; i++){
118
119 istream->getline(line, MAXBUFFERSIZE);
120
121 sscanfCount = sscanf(line, "%d\t%f", &zmolIndex, &zmolPos);
122 if (sscanfCount != 2){
123 std::cerr << "ZConsReader Error : reading file error" << std::endl;
124 exit(1);
125 }
126
127 index.push_back(zmolIndex);
128 zconsPos.push_back(zmolPos);
129 }
130
131 curZPos.resize(nZMol);
132 curFZ.resize(nZMol);
133 }
134
135 void ZConsReader::readNextFrame(){
136 const int MAXBUFFERSIZE = 2000;
137 char line[MAXBUFFERSIZE];
138 int tempNZMol;
139 int sscanfCount;
140 int tempIndex;
141 float tempCurTime;
142 float tempFZ;
143 float tempCurZPos;
144 float tempZconsPos;
145
146 istream->getline(line, MAXBUFFERSIZE);
147 sscanfCount = sscanf(line, "%f", &tempCurTime);
148 if (sscanfCount != 1){
149 std::cerr << "ZConsReader Error : reading file error" << std::endl;
150 exit(1);
151 }
152 curTime = tempCurTime;
153
154 istream->getline(line, MAXBUFFERSIZE);
155 sscanfCount = sscanf(line, "%d", &tempNZMol);
156 if (sscanfCount != 1){
157 std::cerr << "ZConsReader Error : reading file error" << std::endl;
158 exit(1);
159 }
160
161 if (tempNZMol != nZMol){
162 std::cerr << "ZConsReader Error: reading file error" << std::endl;
163 exit(1);
164 }
165
166 for(int i = 0; i < nZMol; i++){
167 istream->getline(line, MAXBUFFERSIZE);
168 sscanfCount = sscanf(line, "%d\t%f\t%f\t%f", &tempIndex, &tempFZ, &tempCurZPos,&tempZconsPos);
169 if (sscanfCount != 4){
170 std::cerr << "ZConsReader Error : reading file error" << std::endl;
171 exit(1);
172 }
173
174 index[i] = tempIndex;
175 curFZ[i] = tempFZ;
176 curZPos[i]= tempCurZPos;
177 zconsPos[i] = tempZconsPos;
178 }
179
180 }
181
182 bool ZConsReader::hasNextFrame(){
183 return istream->peek() != EOF ? true : false;
184 }
185
186 }

Properties

Name Value
svn:executable *