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: 1832
Committed: Thu Dec 2 16:04:19 2004 UTC (19 years, 7 months ago) by tim
File size: 3957 byte(s)
Log Message:
still have two linking problem

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 std::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 std::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 //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 std::cerr << "ZConsReader Error : reading file error" << std::endl;
113 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 std::cerr << "ZConsReader Error : reading file error" << std::endl;
123 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 std::cerr << "ZConsReader Error : reading file error" << std::endl;
149 exit(1);
150 }
151 curTime = tempCurTime;
152
153 istream->getline(line, MAXBUFFERSIZE);
154 sscanfCount = sscanf(line, "%d", &tempNZMol);
155 if (sscanfCount != 1){
156 std::cerr << "ZConsReader Error : reading file error" << std::endl;
157 exit(1);
158 }
159
160 if (tempNZMol != nZMol){
161 std::cerr << "ZConsReader Error: reading file error" << std::endl;
162 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 std::cerr << "ZConsReader Error : reading file error" << std::endl;
170 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 }

Properties

Name Value
svn:executable *