Skip to content

Commit d273604

Browse files
author
Bruce J Palmer
committed
Fixed up some issues with the export module so that it produces better output.
1 parent d106da0 commit d273604

File tree

6 files changed

+94
-99
lines changed

6 files changed

+94
-99
lines changed

src/export/base_export.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class BaseExport
170170
std::vector<text_line> lines;
171171
int nlines = hi-lo+1;
172172
lines.resize(nlines);
173-
NGA_Get(g_txt,&lo,&hi,&lines[0],&one);
173+
if (nlines > 0) NGA_Get(g_txt,&lo,&hi,&lines[0],&one);
174174
for (i=0; i<nlines; i++) {
175175
fout << lines[i].text << std::endl;
176176
}

src/export/data_blocks/export_gen33.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class ExportGen33
103103
sprintf(ptr," %f,",rval);
104104
ptr += strlen(ptr);
105105
ival = 0;
106-
data->getValue(GENERATOR_BUSNUMBER,&ival,j);
106+
data->getValue(GENERATOR_IREG,&ival,j);
107107
sprintf(ptr,"%d,",ival);
108108
ptr += strlen(ptr);
109109
rval = 100.0;

src/export/data_blocks/export_load33.hpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class ExportLoad33
6464
int i, j;
6565
char buf[MAX_STRING_SIZE];
6666
std::vector<text_line> text_data;
67+
double pl, ql;
6768
for (i=0; i<nbus; i++) {
6869
if (p_network->getActiveBus(i)) {
6970
data = p_network->getBusData(i).get();
@@ -98,13 +99,14 @@ class ExportLoad33
9899
sprintf(ptr," %d,",ival);
99100
ptr += strlen(ptr);
100101
rval = 0.0;
101-
data->getValue(LOAD_PL,&rval,j);
102-
sprintf(ptr," %f,",rval);
102+
data->getValue(LOAD_PL,&pl,j);
103+
sprintf(ptr," %f,",pl);
103104
ptr += strlen(ptr);
104105
rval = 0.0;
105-
data->getValue(LOAD_QL,&rval,j);
106-
sprintf(ptr," %f,",rval);
106+
data->getValue(LOAD_QL,&ql,j);
107+
sprintf(ptr," %f,",ql);
107108
ptr += strlen(ptr);
109+
if (pl == 0.0 && ql == 0.0) continue;
108110
rval = 0.0;
109111
data->getValue(LOAD_IP,&rval,j);
110112
sprintf(ptr," %f,",rval);

src/export/data_blocks/export_xform33.hpp

+45-76
Original file line numberDiff line numberDiff line change
@@ -114,99 +114,67 @@ class ExportXform33
114114
data->getValue(TRANSFORMER_MAG2,&rval,j);
115115
sprintf(ptr," %f,",rval);
116116
ptr += strlen(ptr);
117-
118-
// No default for this value
119-
data->getValue(BRANCH_RATING_A,&rval,j);
120-
sprintf(ptr," %f,",rval);
121-
ptr += strlen(ptr);
122-
rval = 0.0;
123-
data->getValue(BRANCH_RATING_B,&rval,j);
124-
sprintf(ptr," %f,",rval);
117+
ival = 2;
118+
data->getValue(TRANSFORMER_NMETR,&ival,j);
119+
sprintf(ptr," %d,",ival);
125120
ptr += strlen(ptr);
126-
rval = 0.0;
127-
data->getValue(BRANCH_RATING_C,&rval,j);
128-
sprintf(ptr," %f,",rval);
121+
ival = 1;
122+
sprintf(ptr," \' \',");
129123
ptr += strlen(ptr);
130-
rval = 0.0;
131-
data->getValue(BRANCH_SHUNT_ADMTTNC_G1,&rval,j);
132-
sprintf(ptr," %f,",rval);
124+
data->getValue(BRANCH_STATUS,&ival,j);
125+
sprintf(ptr," %d,",ival);
133126
ptr += strlen(ptr);
127+
ival = 1;
128+
data->getValue(BRANCH_O1,&ival,j);
134129
rval = 0.0;
135-
data->getValue(BRANCH_SHUNT_ADMTTNC_B1,&rval,j);
136-
sprintf(ptr," %f,",rval);
130+
data->getValue(BRANCH_F1,&rval,j);
131+
sprintf(ptr," %d, %f,",ival,rval);
137132
ptr += strlen(ptr);
133+
ival = 0;
134+
data->getValue(BRANCH_O2,&ival,j);
138135
rval = 0.0;
139-
data->getValue(BRANCH_SHUNT_ADMTTNC_G2,&rval,j);
140-
sprintf(ptr," %f,",rval);
136+
data->getValue(BRANCH_F2,&rval,j);
137+
sprintf(ptr," %d, %f,",ival,rval);
141138
ptr += strlen(ptr);
139+
ival = 0;
140+
data->getValue(BRANCH_O3,&ival,j);
142141
rval = 0.0;
143-
data->getValue(BRANCH_SHUNT_ADMTTNC_B2,&rval,j);
144-
sprintf(ptr," %f,",rval);
145-
ptr += strlen(ptr);
146-
ival = 1;
147-
data->getValue(BRANCH_STATUS,&ival,j);
148-
sprintf(ptr,"%d,",ival);
149-
ptr += strlen(ptr);
150-
ival = 1;
151-
data->getValue(BRANCH_METER,&ival,j);
152-
sprintf(ptr,"%d,",ival);
142+
data->getValue(BRANCH_F3,&rval,j);
143+
sprintf(ptr," %d, %f,",ival,rval);
153144
ptr += strlen(ptr);
145+
ival = 0;
146+
data->getValue(BRANCH_O4,&ival,j);
154147
rval = 0.0;
155-
data->getValue(BRANCH_LENGTH,&rval,j);
156-
sprintf(ptr," %f",rval);
148+
data->getValue(BRANCH_F4,&rval,j);
149+
sprintf(ptr," %d, %f,",ival,rval);
157150
ptr += strlen(ptr);
158-
bool endline = false;
159-
if (data->getValue(BRANCH_O1,&ival,j) &&
160-
data->getValue(BRANCH_F1,&rval,j)) {
161-
sprintf(ptr,", %d, %f",ival,rval);
162-
ptr += strlen(ptr);
163-
} else {
164-
sprintf(ptr,"\n");
165-
ptr += strlen(ptr);
166-
endline = true;
167-
}
168-
if (data->getValue(BRANCH_O2,&ival,j) &&
169-
data->getValue(BRANCH_F2,&rval,j)) {
170-
sprintf(ptr,", %d, %f",ival,rval);
171-
ptr += strlen(ptr);
172-
} else if (!endline) {
173-
sprintf(ptr,"\n");
174-
ptr += strlen(ptr);
175-
endline = true;
176-
}
177-
if (data->getValue(BRANCH_O3,&ival,j) &&
178-
data->getValue(BRANCH_F3,&rval,j)) {
179-
sprintf(ptr,", %d, %f",ival,rval);
180-
ptr += strlen(ptr);
181-
} else if (!endline) {
182-
sprintf(ptr,"\n");
183-
ptr += strlen(ptr);
184-
endline = true;
185-
}
186151
// VECGRP just defaults to 12 blanks
187-
if (data->getValue(BRANCH_O4,&ival,j) &&
188-
data->getValue(BRANCH_F4,&rval,j)) {
189-
sprintf(ptr,", %d, %f, ' '\n",ival,rval);
190-
ptr += strlen(ptr);
191-
} else if (!endline) {
192-
sprintf(ptr,"\n");
193-
ptr += strlen(ptr);
194-
endline = true;
195-
}
152+
sprintf(ptr,"\' \'\n");
153+
ptr += strlen(ptr);
154+
196155
// Second line
197156
rval = 0.0;
198-
data->getValue(TRANSFORMER_R1_2,&rval,j);
157+
if (!data->getValue(TRANSFORMER_R1_2,&rval,j)) {
158+
data->getValue(BRANCH_R,&rval,j);
159+
}
199160
sprintf(ptr,"%f,",rval);
200161
ptr += strlen(ptr);
201-
data->getValue(TRANSFORMER_X1_2,&rval,j);
162+
if (!data->getValue(TRANSFORMER_X1_2,&rval,j)) {
163+
data->getValue(BRANCH_X,&rval,j);
164+
}
202165
sprintf(ptr," %f,",rval);
203166
ptr += strlen(ptr);
204-
data->getValue(TRANSFORMER_SBASE1_2,&rval,j);
167+
if (!data->getValue(TRANSFORMER_SBASE1_2,&rval,j)) {
168+
data->getValue(CASE_SBASE,&rval);
169+
}
205170
sprintf(ptr," %f,\n",rval);
206171
ptr += strlen(ptr);
172+
207173
// Third line
208174
rval = 1.0;
209-
data->getValue(TRANSFORMER_WINDV1,&rval,j);
175+
if (!data->getValue(TRANSFORMER_WINDV1,&rval,j)) {
176+
data->getValue(BRANCH_TAP,&rval,j);
177+
}
210178
sprintf(ptr,"%f,",rval);
211179
ptr += strlen(ptr);
212180
rval = 0.0;
@@ -237,19 +205,19 @@ class ExportXform33
237205
data->getValue(TRANSFORMER_CONT1,&ival,j);
238206
sprintf(ptr," %d,",ival);
239207
ptr += strlen(ptr);
240-
rval = 0.0;
208+
rval = 1.1;
241209
data->getValue(TRANSFORMER_RMA,&rval,j);
242210
sprintf(ptr," %f,",rval);
243211
ptr += strlen(ptr);
244-
rval = 0.0;
212+
rval = 0.9;
245213
data->getValue(TRANSFORMER_RMI,&rval,j);
246214
sprintf(ptr," %f,",rval);
247215
ptr += strlen(ptr);
248-
rval = 0.0;
216+
rval = 1.1;
249217
data->getValue(TRANSFORMER_VMA,&rval,j);
250218
sprintf(ptr," %f,",rval);
251219
ptr += strlen(ptr);
252-
rval = 0.0;
220+
rval = 0.9;
253221
data->getValue(TRANSFORMER_VMI,&rval,j);
254222
sprintf(ptr," %f,",rval);
255223
ptr += strlen(ptr);
@@ -273,14 +241,15 @@ class ExportXform33
273241
data->getValue(TRANSFORMER_CNXA,&rval,j);
274242
sprintf(ptr," %f\n",rval);
275243
ptr += strlen(ptr);
244+
276245
// Fourth line
277246
rval = 1.0;
278247
data->getValue(TRANSFORMER_WINDV2,&rval,j);
279248
sprintf(ptr,"%f,",rval);
280249
ptr += strlen(ptr);
281250
rval = 0.0;
282251
data->getValue(TRANSFORMER_NOMV1,&rval,j);
283-
sprintf(ptr," %f\n",rval);
252+
sprintf(ptr," %f",rval);
284253
ptr += strlen(ptr);
285254
// Finish up
286255
text_line text;

src/parser/PTI23_parser.hpp

+39-15
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ class PTI23_parser : public BasePTIParser<_network>
230230
std::getline(input, line);
231231
std::getline(input, line);
232232
std::getline(input, line);
233+
double pl,ql,bl,gl;
233234

234235
while(test_end(line)) {
235236
std::vector<std::string> split_line;
@@ -260,13 +261,26 @@ class PTI23_parser : public BasePTIParser<_network>
260261
if (nstr > 1) data->addValue(BUS_TYPE, atoi(split_line[1].c_str()));
261262

262263
// BUS_SHUNT_GL "GL" float
263-
if (nstr > 4) data->addValue(BUS_SHUNT_GL, atof(split_line[4].c_str()));
264-
if (nstr > 4) data->addValue(BUS_SHUNT_GL, atof(split_line[4].c_str()),0);
264+
gl = 0.0;
265+
if (nstr > 4) {
266+
gl = atof(split_line[4].c_str());
267+
}
265268

266269
// BUS_SHUNT_BL "BL" float
267-
if (nstr > 5) data->addValue(BUS_SHUNT_BL, atof(split_line[5].c_str()));
268-
if (nstr > 5) data->addValue(BUS_SHUNT_BL, atof(split_line[5].c_str()),0);
269-
data->addValue(SHUNT_BUSNUMBER,o_idx);
270+
bl = 0.0;
271+
if (nstr > 5) {
272+
bl = atof(split_line[5].c_str());
273+
}
274+
if (gl != 0.0 || bl != 0.0) {
275+
data->addValue(BUS_SHUNT_GL, atof(split_line[4].c_str()));
276+
data->addValue(BUS_SHUNT_GL, atof(split_line[4].c_str()),0);
277+
data->addValue(BUS_SHUNT_BL, atof(split_line[5].c_str()));
278+
data->addValue(BUS_SHUNT_BL, atof(split_line[5].c_str()),0);
279+
data->addValue(SHUNT_BUSNUMBER,o_idx);
280+
int ival = 1;
281+
data->addValue(SHUNT_NUMBER,ival);
282+
data->addValue(SHUNT_ID, "1 ", 0);
283+
}
270284

271285
// BUS_ZONE "ZONE" integer
272286
if (nstr > 11) data->addValue(BUS_ZONE, atoi(split_line[11].c_str()));
@@ -284,18 +298,28 @@ class PTI23_parser : public BasePTIParser<_network>
284298
if (nstr > 6) data->addValue(BUS_OWNER, atoi(split_line[6].c_str()));
285299

286300
// LOAD_PL "PL" float
287-
if (nstr > 2) data->addValue(LOAD_PL, atof(split_line[2].c_str()));
288-
if (nstr > 2) data->addValue(LOAD_PL, atof(split_line[2].c_str()),0);
289-
std::string tmp(" 1");
290-
if (nstr > 2) data->addValue(LOAD_ID,tmp.c_str(),0);
301+
pl = 0.0;
302+
if (nstr > 2) {
303+
pl = atof(split_line[2].c_str());
304+
}
291305

292306
// LOAD_QL "QL" float
293-
if (nstr > 3) data->addValue(LOAD_QL, atof(split_line[3].c_str()));
294-
if (nstr > 3) data->addValue(LOAD_QL, atof(split_line[3].c_str()),0);
295-
int ival = 1;
296-
data->addValue(LOAD_NUMBER,ival);
297-
data->addValue(LOAD_STATUS,ival,0);
298-
data->addValue(LOAD_BUSNUMBER,o_idx);
307+
ql = 0.0;
308+
if (nstr > 3) {
309+
ql = atof(split_line[3].c_str());
310+
}
311+
if (pl != 0.0 || ql != 0.0) {
312+
data->addValue(LOAD_PL, atof(split_line[2].c_str()));
313+
data->addValue(LOAD_PL, atof(split_line[2].c_str()),0);
314+
std::string tmp(" 1");
315+
data->addValue(LOAD_ID,tmp.c_str(),0);
316+
data->addValue(LOAD_QL, atof(split_line[3].c_str()));
317+
data->addValue(LOAD_QL, atof(split_line[3].c_str()),0);
318+
int ival = 1;
319+
data->addValue(LOAD_NUMBER,ival);
320+
data->addValue(LOAD_STATUS,ival,0);
321+
data->addValue(LOAD_BUSNUMBER,o_idx);
322+
}
299323

300324
index++;
301325
std::getline(input, line);

src/utilities/string_utils.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ class StringUtils {
124124
if (ntok2 == std::string::npos) ntok2 = clean_tag.length();
125125
tag = clean_tag.substr(ntok1,ntok2-ntok1);
126126
if (tag.length() == 1) {
127-
clean_tag = " ";
128-
clean_tag.append(tag);
127+
clean_tag = tag;
128+
clean_tag.append(" ");
129129
} else {
130130
clean_tag = tag;
131131
}

0 commit comments

Comments
 (0)