00001 #ifndef _UNDERGROUNDLINE_TEST_H
00002 #define _UNDERGROUNDLINE_TEST_H
00003
00004 #include "line.h"
00005
00006 #ifndef _NO_CPPUNIT
00007
00008 class undergroundline_tests : public test_helper
00009 {
00010 public:
00011 void setUp(){
00012 }
00013
00014 void tearDown(){
00015 local_callbacks->remove_objects();
00016 }
00017
00021 void test_underground_line_a_cn(){
00022 OBJECT *node1,*node2;
00023 OBJECT *ohl1;
00024
00025 complex* node1_phA_I_test = new complex(204.5,-18.431);
00026 complex* node2_phA_V_test = new complex(2345.9,-230.99);
00027
00028 CLASS *cl = get_class_by_name("node");
00029 node1 = gl_create_object(cl,sizeof(node));
00030 OBJECTDATA(node1,node)->create();
00031 cl = get_class_by_name("load");
00032 node2 = gl_create_object(cl,sizeof(load));
00033 OBJECTDATA(node2,load)->create();
00034 cl = get_class_by_name("underground_line");
00035 ohl1 = gl_create_object(cl,sizeof(underground_line));
00036 OBJECTDATA(ohl1,underground_line)->create();
00037
00038 OBJECTDATA(ohl1,underground_line)->from = node1;
00039 OBJECTDATA(ohl1,underground_line)->to = node2;
00040 OBJECTDATA(ohl1,underground_line)->length = 500;
00041
00042
00043
00044 OBJECTDATA(ohl1,underground_line)->phases = PHASE_A;
00045 OBJECTDATA(node1,node)->phases = PHASE_A;
00046 OBJECTDATA(node2,load)->phases = PHASE_A;
00047
00048 OBJECTDATA(node1,node)->phaseA_V = OBJECTDATA(node2,load)->phaseA_V = 2349.8;
00049 OBJECTDATA(node1,node)->phaseA_V.SetImag(-228.75);
00050 OBJECTDATA(node2,load)->phaseA_V.SetImag(-228.75);
00051 OBJECTDATA(node2,load)->phaseA_I.SetReal(204.5);
00052 OBJECTDATA(node2,load)->phaseA_I.SetImag(-18.431);
00053
00054
00055 cl = get_class_by_name("underground_line_conductor");
00056 OBJECT *ulc_a = gl_create_object(cl,sizeof(underground_line_conductor));
00057 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_diameter = 0.567;
00058 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_gmr = 0.0171;
00059 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_resistance = 0.41;
00060 OBJECTDATA(ulc_a,underground_line_conductor)->outer_diameter = 1.29;
00061 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_gmr = 0.00208;
00062 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_diameter = 0.0641;
00063 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_resistance = 14.8722;
00064 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_strands = 13;
00065
00066
00067 cl = get_class_by_name("line_spacing");
00068 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00069 OBJECTDATA(ls,line_spacing)->distance_AtoN = 0.0;
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 cl = get_class_by_name("line_configuration");
00083 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00084 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00085 lc->line_spacing = ls;
00086 lc->phaseA_conductor = ulc_a;
00087 lc->phaseB_conductor = 0;
00088 lc->phaseC_conductor = 0;
00089 lc->phaseN_conductor = 0;
00090
00091 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00092
00093
00094 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00095
00096
00097 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00098
00099
00100 local_callbacks->sync_all(PC_PRETOPDOWN);
00101 local_callbacks->sync_all(PC_BOTTOMUP);
00102
00103
00104 double rI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Re();
00105 double iI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Im();
00106
00107
00108 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00109 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00110
00111 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00112 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00113
00114
00115 OBJECTDATA(node1,node)->phaseA_V = 2367.6;
00116 OBJECTDATA(node1,node)->phaseA_V.SetImag(-220.05);
00117 local_callbacks->sync_all(PC_POSTTOPDOWN);
00118
00119
00120 double rV_2 = OBJECTDATA(node2,load)->phaseA_V.Re();
00121 double iV_2 = OBJECTDATA(node2,load)->phaseA_V.Im();
00122
00123 validate_re = 1 - (rV_2 <= node2_phA_V_test->Re() ? rV_2 / node2_phA_V_test->Re() : node2_phA_V_test->Re() /rV_2);
00124 validate_im = 1 - (iV_2 <= node2_phA_V_test->Im() ? iV_2 / node2_phA_V_test->Im() : node2_phA_V_test->Im() /iV_2);
00125 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00126 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00127
00128 }
00129
00130 void test_underground_line_b_cn(){
00131 OBJECT *node1,*node2;
00132 OBJECT *ohl1;
00133
00134 complex* node1_phB_I_test = new complex(39.716,-57.144);
00135 complex* node2_phB_V_test = new complex(-1360.5,2140);
00136
00137 CLASS *cl = get_class_by_name("node");
00138 node1 = gl_create_object(cl,sizeof(node));
00139 OBJECTDATA(node1,node)->create();
00140 cl = get_class_by_name("load");
00141 node2 = gl_create_object(cl,sizeof(load));
00142 OBJECTDATA(node2,load)->create();
00143 cl = get_class_by_name("underground_line");
00144 ohl1 = gl_create_object(cl,sizeof(underground_line));
00145 OBJECTDATA(ohl1,underground_line)->create();
00146
00147 OBJECTDATA(ohl1,underground_line)->from = node1;
00148 OBJECTDATA(ohl1,underground_line)->to = node2;
00149 OBJECTDATA(ohl1,underground_line)->length = 500;
00150
00151
00152 OBJECTDATA(ohl1,underground_line)->phases = PHASE_B;
00153 OBJECTDATA(node1,node)->phases = PHASE_B;
00154 OBJECTDATA(node2,load)->phases = PHASE_B;
00155
00156 OBJECTDATA(node1,node)->phaseB_V = OBJECTDATA(node2,load)->phaseB_V = -1362.2;
00157 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.6);
00158 OBJECTDATA(node2,load)->phaseB_V.SetImag(-2136.6);
00159 OBJECTDATA(node2,load)->phaseB_I.SetReal(39.716);
00160 OBJECTDATA(node2,load)->phaseB_I.SetImag(-57.144);
00161
00162
00163 cl = get_class_by_name("underground_line_conductor");
00164 OBJECT *ulc_b = gl_create_object(cl,sizeof(underground_line_conductor));
00165 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_diameter = 0.567;
00166 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_gmr = 0.0171;
00167 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_resistance = 0.41;
00168 OBJECTDATA(ulc_b,underground_line_conductor)->outer_diameter = 1.29;
00169 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_gmr = 0.00208;
00170 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_diameter = 0.0641;
00171 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_resistance = 14.8722;
00172 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_strands = 13;
00173
00174
00175 cl = get_class_by_name("line_spacing");
00176 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00177 OBJECTDATA(ls,line_spacing)->distance_BtoN = 0.0;
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190 cl = get_class_by_name("line_configuration");
00191 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00192 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00193 lc->line_spacing = ls;
00194 lc->phaseA_conductor = 0;
00195 lc->phaseB_conductor = ulc_b;
00196 lc->phaseC_conductor = 0;
00197 lc->phaseN_conductor = 0;
00198
00199 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00200
00201
00202 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00203
00204
00205 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00206
00207
00208 local_callbacks->sync_all(PC_PRETOPDOWN);
00209 local_callbacks->sync_all(PC_BOTTOMUP);
00210
00211
00212 double rI_1 = OBJECTDATA(node1,node)->get_phaseB_I_in().Re();
00213 double iI_1 = OBJECTDATA(node1,node)->get_phaseB_I_in().Im();
00214
00215
00216 double validate_re = 1 - (rI_1 <= node1_phB_I_test->Re() ? rI_1 / node1_phB_I_test->Re() : node1_phB_I_test->Re() /rI_1);
00217 double validate_im = 1 - (iI_1 <= node1_phB_I_test->Im() ? iI_1 / node1_phB_I_test->Im() : node1_phB_I_test->Im() /iI_1);
00218
00219 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00220 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00221
00222
00223 OBJECTDATA(node1,node)->phaseB_V = -1352.9;
00224 OBJECTDATA(node1,node)->phaseB_V.SetImag(2136.8);
00225 local_callbacks->sync_all(PC_POSTTOPDOWN);
00226
00227
00228 double rV_2 = OBJECTDATA(node2,load)->phaseB_V.Re();
00229 double iV_2 = OBJECTDATA(node2,load)->phaseB_V.Im();
00230
00231 validate_re = 1 - (rV_2 <= node2_phB_V_test->Re() ? rV_2 / node2_phB_V_test->Re() : node2_phB_V_test->Re() /rV_2);
00232 validate_im = 1 - (iV_2 <= node2_phB_V_test->Im() ? iV_2 / node2_phB_V_test->Im() : node2_phB_V_test->Im() /iV_2);
00233 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00234 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00235
00236 }
00237
00238 void test_underground_line_c_cn(){
00239 OBJECT *node1,*node2;
00240 OBJECT *ohl1;
00241
00242 complex* node1_phC_I_test = new complex(-46.035,115.21);
00243 complex* node2_phC_V_test = new complex(-1018.6,2102.2);
00244
00245 CLASS *cl = get_class_by_name("node");
00246 node1 = gl_create_object(cl,sizeof(node));
00247 OBJECTDATA(node1,node)->create();
00248 cl = get_class_by_name("load");
00249 node2 = gl_create_object(cl,sizeof(load));
00250 OBJECTDATA(node2,load)->create();
00251 cl = get_class_by_name("underground_line");
00252 ohl1 = gl_create_object(cl,sizeof(underground_line));
00253 OBJECTDATA(ohl1,underground_line)->create();
00254
00255 OBJECTDATA(ohl1,underground_line)->from = node1;
00256 OBJECTDATA(ohl1,underground_line)->to = node2;
00257 OBJECTDATA(ohl1,underground_line)->length = 500;
00258
00259
00260 OBJECTDATA(ohl1,underground_line)->phases = PHASE_C;
00261 OBJECTDATA(node1,node)->phases = PHASE_C;
00262 OBJECTDATA(node2,load)->phases = PHASE_C;
00263
00264 OBJECTDATA(node1,node)->phaseC_V = OBJECTDATA(node2,load)->phaseC_V = -1028.7;
00265 OBJECTDATA(node1,node)->phaseC_V.SetImag(2106.4);
00266 OBJECTDATA(node2,load)->phaseC_V.SetImag(2106.4);
00267 OBJECTDATA(node2,load)->phaseC_I.SetReal(-46.035);
00268 OBJECTDATA(node2,load)->phaseC_I.SetImag(115.21);
00269
00270
00271 cl = get_class_by_name("underground_line_conductor");
00272 OBJECT *ulc_c = gl_create_object(cl,sizeof(underground_line_conductor));
00273 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_diameter = 0.567;
00274 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_gmr = 0.0171;
00275 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_resistance = 0.41;
00276 OBJECTDATA(ulc_c,underground_line_conductor)->outer_diameter = 1.29;
00277 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_gmr = 0.00208;
00278 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_diameter = 0.0641;
00279 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_resistance = 14.8722;
00280 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_strands = 13;
00281
00282
00283 cl = get_class_by_name("line_spacing");
00284 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00285 OBJECTDATA(ls,line_spacing)->distance_CtoN = 0.0;
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298 cl = get_class_by_name("line_configuration");
00299 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00300 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00301 lc->line_spacing = ls;
00302 lc->phaseA_conductor = 0;
00303 lc->phaseB_conductor = 0;
00304 lc->phaseC_conductor = ulc_c;
00305 lc->phaseN_conductor = 0;
00306
00307 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00308
00309
00310 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00311
00312
00313 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00314
00315
00316 local_callbacks->sync_all(PC_PRETOPDOWN);
00317 local_callbacks->sync_all(PC_BOTTOMUP);
00318
00319
00320 double rI_1 = OBJECTDATA(node1,node)->get_phaseC_I_in().Re();
00321 double iI_1 = OBJECTDATA(node1,node)->get_phaseC_I_in().Im();
00322
00323
00324 double validate_re = 1 - (rI_1 <= node1_phC_I_test->Re() ? rI_1 / node1_phC_I_test->Re() : node1_phC_I_test->Re() /rI_1);
00325 double validate_im = 1 - (iI_1 <= node1_phC_I_test->Im() ? iI_1 / node1_phC_I_test->Im() : node1_phC_I_test->Im() /iI_1);
00326
00327 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00328 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00329
00330
00331 OBJECTDATA(node1,node)->phaseC_V = -1030.4;
00332 OBJECTDATA(node1,node)->phaseC_V.SetImag(2110.9);
00333 local_callbacks->sync_all(PC_POSTTOPDOWN);
00334
00335
00336 double rV_2 = OBJECTDATA(node2,load)->phaseC_V.Re();
00337 double iV_2 = OBJECTDATA(node2,load)->phaseC_V.Im();
00338
00339 validate_re = 1 - (rV_2 <= node2_phC_V_test->Re() ? rV_2 / node2_phC_V_test->Re() : node2_phC_V_test->Re() /rV_2);
00340 validate_im = 1 - (iV_2 <= node2_phC_V_test->Im() ? iV_2 / node2_phC_V_test->Im() : node2_phC_V_test->Im() /iV_2);
00341 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00342 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00343
00344 }
00345
00346
00347
00348 void test_underground_line_ab_cn(){
00349 OBJECT *node1,*node2;
00350 OBJECT *ohl1;
00351
00352 complex* node1_phA_I_test = new complex(204.5,-18.431);
00353 complex* node2_phA_V_test = new complex(2347.4,-225.7);
00354 complex* node1_phB_I_test = new complex(39.716,-57.144);
00355 complex* node2_phB_V_test = new complex(-1367.1,-2134.6);
00356
00357 CLASS *cl = get_class_by_name("node");
00358 node1 = gl_create_object(cl,sizeof(node));
00359 OBJECTDATA(node1,node)->create();
00360 cl = get_class_by_name("load");
00361 node2 = gl_create_object(cl,sizeof(load));
00362 OBJECTDATA(node2,load)->create();
00363 cl = get_class_by_name("underground_line");
00364 ohl1 = gl_create_object(cl,sizeof(underground_line));
00365 OBJECTDATA(ohl1,underground_line)->create();
00366
00367 OBJECTDATA(ohl1,underground_line)->from = node1;
00368 OBJECTDATA(ohl1,underground_line)->to = node2;
00369 OBJECTDATA(ohl1,underground_line)->length = 500;
00370
00371
00372 OBJECTDATA(ohl1,underground_line)->phases = PHASE_A|PHASE_B;
00373 OBJECTDATA(node1,node)->phases = PHASE_A|PHASE_B;
00374 OBJECTDATA(node2,load)->phases = PHASE_A|PHASE_B;
00375
00376 OBJECTDATA(node1,node)->phaseA_V = OBJECTDATA(node2,load)->phaseA_V = 2349.8;
00377 OBJECTDATA(node1,node)->phaseA_V.SetImag(-228.75);
00378 OBJECTDATA(node2,load)->phaseA_V.SetImag(-228.75);
00379 OBJECTDATA(node2,load)->phaseA_I.SetReal(204.5);
00380 OBJECTDATA(node2,load)->phaseA_I.SetImag(-18.431);
00381
00382 OBJECTDATA(node1,node)->phaseB_V = OBJECTDATA(node2,load)->phaseB_V = -1362.2;
00383 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.6);
00384 OBJECTDATA(node2,load)->phaseB_V.SetImag(-2136.6);
00385 OBJECTDATA(node2,load)->phaseB_I.SetReal(39.716);
00386 OBJECTDATA(node2,load)->phaseB_I.SetImag(-57.144);
00387
00388
00389 cl = get_class_by_name("underground_line_conductor");
00390 OBJECT *ulc_a = gl_create_object(cl,sizeof(underground_line_conductor));
00391 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_diameter = 0.567;
00392 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_gmr = 0.0171;
00393 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_resistance = 0.41;
00394 OBJECTDATA(ulc_a,underground_line_conductor)->outer_diameter = 1.29;
00395 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_gmr = 0.00208;
00396 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_diameter = 0.0641;
00397 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_resistance = 14.8722;
00398 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_strands = 13;
00399
00400 cl = get_class_by_name("underground_line_conductor");
00401 OBJECT *ulc_b = gl_create_object(cl,sizeof(underground_line_conductor));
00402 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_diameter = 0.567;
00403 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_gmr = 0.0171;
00404 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_resistance = 0.41;
00405 OBJECTDATA(ulc_b,underground_line_conductor)->outer_diameter = 1.29;
00406 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_gmr = 0.00208;
00407 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_diameter = 0.0641;
00408 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_resistance = 14.8722;
00409 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_strands = 13;
00410
00411
00412 cl = get_class_by_name("line_spacing");
00413 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00414 OBJECTDATA(ls,line_spacing)->distance_AtoN = 0.0;
00415 OBJECTDATA(ls,line_spacing)->distance_AtoB = 0.5;
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428 cl = get_class_by_name("line_configuration");
00429 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00430 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00431 lc->line_spacing = ls;
00432 lc->phaseA_conductor = ulc_a;
00433 lc->phaseB_conductor = ulc_b;
00434 lc->phaseC_conductor = 0;
00435 lc->phaseN_conductor = 0;
00436
00437 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00438
00439
00440 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00441
00442
00443 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00444
00445
00446 local_callbacks->sync_all(PC_PRETOPDOWN);
00447 local_callbacks->sync_all(PC_BOTTOMUP);
00448
00449
00450 double rI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Re();
00451 double iI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Im();
00452
00453
00454 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00455 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00456
00457 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00458 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00459
00460
00461 OBJECTDATA(node1,node)->phaseA_V = 2367.6;
00462 OBJECTDATA(node1,node)->phaseA_V.SetImag(-220.05);
00463 OBJECTDATA(node1,node)->phaseB_V = -1352.9;
00464 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.8);
00465 local_callbacks->sync_all(PC_POSTTOPDOWN);
00466
00467
00468 double rV_2 = OBJECTDATA(node2,load)->phaseA_V.Re();
00469 double iV_2 = OBJECTDATA(node2,load)->phaseA_V.Im();
00470
00471 validate_re = 1 - (rV_2 <= node2_phA_V_test->Re() ? rV_2 / node2_phA_V_test->Re() : node2_phA_V_test->Re() /rV_2);
00472 validate_im = 1 - (iV_2 <= node2_phA_V_test->Im() ? iV_2 / node2_phA_V_test->Im() : node2_phA_V_test->Im() /iV_2);
00473 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00474 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00475
00476 rV_2 = OBJECTDATA(node2,load)->phaseB_V.Re();
00477 iV_2 = OBJECTDATA(node2,load)->phaseB_V.Im();
00478 validate_re = 1 - (rV_2 <= node2_phB_V_test->Re() ? rV_2 / node2_phB_V_test->Re() : node2_phB_V_test->Re() /rV_2);
00479 validate_im = 1 - (iV_2 <= node2_phB_V_test->Im() ? iV_2 / node2_phB_V_test->Im() : node2_phB_V_test->Im() /iV_2);
00480 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00481 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00482
00483 }
00484
00485 void test_underground_line_bc_cn(){
00486 OBJECT *node1,*node2;
00487 OBJECT *ohl1;
00488
00489 complex* node1_phB_I_test = new complex(39.716,-57.144);
00490 complex* node2_phB_V_test = new complex(-1356.1,-2138);
00491 complex* node1_phC_I_test = new complex(-46.035,115.21);
00492 complex* node2_phC_V_test = new complex(-1023.4,2105.1);
00493
00494 CLASS *cl = get_class_by_name("node");
00495 node1 = gl_create_object(cl,sizeof(node));
00496 OBJECTDATA(node1,node)->create();
00497 cl = get_class_by_name("load");
00498 node2 = gl_create_object(cl,sizeof(load));
00499 OBJECTDATA(node2,load)->create();
00500 cl = get_class_by_name("underground_line");
00501 ohl1 = gl_create_object(cl,sizeof(underground_line));
00502 OBJECTDATA(ohl1,underground_line)->create();
00503
00504 OBJECTDATA(ohl1,underground_line)->from = node1;
00505 OBJECTDATA(ohl1,underground_line)->to = node2;
00506 OBJECTDATA(ohl1,underground_line)->length = 500;
00507
00508
00509 OBJECTDATA(ohl1,underground_line)->phases = PHASE_B|PHASE_C;
00510 OBJECTDATA(node1,node)->phases = PHASE_B|PHASE_C;
00511 OBJECTDATA(node2,load)->phases = PHASE_B|PHASE_C;
00512
00513 OBJECTDATA(node1,node)->phaseB_V = OBJECTDATA(node2,load)->phaseB_V = -1362.2;
00514 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.6);
00515 OBJECTDATA(node2,load)->phaseB_V.SetImag(-2136.6);
00516 OBJECTDATA(node2,load)->phaseB_I.SetReal(39.716);
00517 OBJECTDATA(node2,load)->phaseB_I.SetImag(-57.144);
00518 OBJECTDATA(node1,node)->phaseC_V = OBJECTDATA(node2,load)->phaseC_V = -1028.7;
00519 OBJECTDATA(node1,node)->phaseC_V.SetImag(2106.4);
00520 OBJECTDATA(node2,load)->phaseC_V.SetImag(2106.4);
00521 OBJECTDATA(node2,load)->phaseC_I.SetReal(-46.035);
00522 OBJECTDATA(node2,load)->phaseC_I.SetImag(115.21);
00523
00524
00525 cl = get_class_by_name("underground_line_conductor");
00526 OBJECT *ulc_b = gl_create_object(cl,sizeof(underground_line_conductor));
00527 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_diameter = 0.567;
00528 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_gmr = 0.0171;
00529 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_resistance = 0.41;
00530 OBJECTDATA(ulc_b,underground_line_conductor)->outer_diameter = 1.29;
00531 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_gmr = 0.00208;
00532 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_diameter = 0.0641;
00533 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_resistance = 14.8722;
00534 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_strands = 13;
00535
00536 OBJECT *ulc_c = gl_create_object(cl,sizeof(underground_line_conductor));
00537 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_diameter = 0.567;
00538 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_gmr = 0.0171;
00539 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_resistance = 0.41;
00540 OBJECTDATA(ulc_c,underground_line_conductor)->outer_diameter = 1.29;
00541 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_gmr = 0.00208;
00542 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_diameter = 0.0641;
00543 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_resistance = 14.8722;
00544 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_strands = 13;
00545
00546
00547 cl = get_class_by_name("line_spacing");
00548 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00549 OBJECTDATA(ls,line_spacing)->distance_BtoN = 0.0;
00550 OBJECTDATA(ls,line_spacing)->distance_BtoC = 0.5;
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563 cl = get_class_by_name("line_configuration");
00564 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00565 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00566 lc->line_spacing = ls;
00567 lc->phaseA_conductor = 0;
00568 lc->phaseB_conductor = ulc_b;
00569 lc->phaseC_conductor = ulc_c;
00570 lc->phaseN_conductor = 0;
00571
00572 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00573
00574
00575 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00576
00577
00578 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00579
00580
00581 local_callbacks->sync_all(PC_PRETOPDOWN);
00582 local_callbacks->sync_all(PC_BOTTOMUP);
00583
00584
00585 double rI_1 = OBJECTDATA(node1,node)->get_phaseB_I_in().Re();
00586 double iI_1 = OBJECTDATA(node1,node)->get_phaseB_I_in().Im();
00587
00588
00589 double validate_re = 1 - (rI_1 <= node1_phB_I_test->Re() ? rI_1 / node1_phB_I_test->Re() : node1_phB_I_test->Re() /rI_1);
00590 double validate_im = 1 - (iI_1 <= node1_phB_I_test->Im() ? iI_1 / node1_phB_I_test->Im() : node1_phB_I_test->Im() /iI_1);
00591
00592 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00593 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00594
00595
00596 OBJECTDATA(node1,node)->phaseB_V = -1352.88;
00597 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.8);
00598 OBJECTDATA(node1,node)->phaseC_V = -1030.46;
00599 OBJECTDATA(node1,node)->phaseC_V.SetImag(2110.809);
00600 local_callbacks->sync_all(PC_POSTTOPDOWN);
00601
00602
00603 double rV_2 = OBJECTDATA(node2,load)->phaseB_V.Re();
00604 double iV_2 = OBJECTDATA(node2,load)->phaseB_V.Im();
00605
00606 validate_re = 1 - (rV_2 <= node2_phB_V_test->Re() ? rV_2 / node2_phB_V_test->Re() : node2_phB_V_test->Re() /rV_2);
00607 validate_im = 1 - (iV_2 <= node2_phB_V_test->Im() ? iV_2 / node2_phB_V_test->Im() : node2_phB_V_test->Im() /iV_2);
00608 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00609 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00610
00611 rV_2 = OBJECTDATA(node2,load)->phaseC_V.Re();
00612 iV_2 = OBJECTDATA(node2,load)->phaseC_V.Im();
00613
00614 validate_re = 1 - (rV_2 <= node2_phC_V_test->Re() ? rV_2 / node2_phC_V_test->Re() : node2_phC_V_test->Re() /rV_2);
00615 validate_im = 1 - (iV_2 <= node2_phC_V_test->Im() ? iV_2 / node2_phC_V_test->Im() : node2_phC_V_test->Im() /iV_2);
00616 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00617 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00618
00619 }
00620
00621 void test_underground_line_ca_cn(){
00622 OBJECT *node1,*node2;
00623 OBJECT *ohl1;
00624
00625 complex* node1_phA_I_test = new complex(204.5,-18.431);
00626 complex* node2_phA_V_test = new complex(2351.4,-232.45);
00627 complex* node1_phC_I_test = new complex(-46.035,115.21);
00628 complex* node2_phC_V_test = new complex(-1028.6,2102.9);
00629
00630 CLASS *cl = get_class_by_name("node");
00631 node1 = gl_create_object(cl,sizeof(node));
00632 OBJECTDATA(node1,node)->create();
00633 cl = get_class_by_name("load");
00634 node2 = gl_create_object(cl,sizeof(load));
00635 OBJECTDATA(node2,load)->create();
00636 cl = get_class_by_name("underground_line");
00637 ohl1 = gl_create_object(cl,sizeof(underground_line));
00638 OBJECTDATA(ohl1,underground_line)->create();
00639
00640 OBJECTDATA(ohl1,underground_line)->from = node1;
00641 OBJECTDATA(ohl1,underground_line)->to = node2;
00642 OBJECTDATA(ohl1,underground_line)->length = 500;
00643
00644
00645 OBJECTDATA(ohl1,underground_line)->phases = PHASE_A|PHASE_C;
00646 OBJECTDATA(node1,node)->phases = PHASE_A|PHASE_C;
00647 OBJECTDATA(node2,load)->phases = PHASE_A|PHASE_C;
00648
00649 OBJECTDATA(node1,node)->phaseA_V = OBJECTDATA(node2,load)->phaseA_V = 2349.8;
00650 OBJECTDATA(node1,node)->phaseA_V.SetImag(-228.75);
00651 OBJECTDATA(node2,load)->phaseA_V.SetImag(-228.75);
00652 OBJECTDATA(node2,load)->phaseA_I.SetReal(204.5);
00653 OBJECTDATA(node2,load)->phaseA_I.SetImag(-18.431);
00654
00655 OBJECTDATA(node1,node)->phaseC_V = OBJECTDATA(node2,load)->phaseC_V = -1028.7;
00656 OBJECTDATA(node1,node)->phaseC_V.SetImag(2106.4);
00657 OBJECTDATA(node2,load)->phaseC_V.SetImag(2106.4);
00658 OBJECTDATA(node2,load)->phaseC_I.SetReal(-46.035);
00659 OBJECTDATA(node2,load)->phaseC_I.SetImag(115.21);
00660
00661
00662 cl = get_class_by_name("underground_line_conductor");
00663 OBJECT *ulc_a = gl_create_object(cl,sizeof(underground_line_conductor));
00664 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_diameter = 0.567;
00665 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_gmr = 0.0171;
00666 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_resistance = 0.41;
00667 OBJECTDATA(ulc_a,underground_line_conductor)->outer_diameter = 1.29;
00668 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_gmr = 0.00208;
00669 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_diameter = 0.0641;
00670 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_resistance = 14.8722;
00671 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_strands = 13;
00672
00673 cl = get_class_by_name("underground_line_conductor");
00674 OBJECT *ulc_c = gl_create_object(cl,sizeof(underground_line_conductor));
00675 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_diameter = 0.567;
00676 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_gmr = 0.0171;
00677 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_resistance = 0.41;
00678 OBJECTDATA(ulc_c,underground_line_conductor)->outer_diameter = 1.29;
00679 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_gmr = 0.00208;
00680 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_diameter = 0.0641;
00681 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_resistance = 14.8722;
00682 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_strands = 13;
00683
00684
00685 cl = get_class_by_name("line_spacing");
00686 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00687 OBJECTDATA(ls,line_spacing)->distance_AtoN = 0.0;
00688 OBJECTDATA(ls,line_spacing)->distance_AtoC = 1;
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701 cl = get_class_by_name("line_configuration");
00702 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00703 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00704 lc->line_spacing = ls;
00705 lc->phaseA_conductor = ulc_a;
00706 lc->phaseB_conductor = 0;
00707 lc->phaseC_conductor = ulc_c;
00708 lc->phaseN_conductor = 0;
00709
00710 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00711
00712
00713 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00714
00715
00716 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00717
00718
00719 local_callbacks->sync_all(PC_PRETOPDOWN);
00720 local_callbacks->sync_all(PC_BOTTOMUP);
00721
00722
00723 double rI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Re();
00724 double iI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Im();
00725
00726
00727 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00728 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00729
00730 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00731 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00732
00733
00734 OBJECTDATA(node1,node)->phaseA_V = 2367.6;
00735 OBJECTDATA(node1,node)->phaseA_V.SetImag(-220.05);
00736 OBJECTDATA(node1,node)->phaseC_V = -1030.4;
00737 OBJECTDATA(node1,node)->phaseC_V.SetImag(2110.9);
00738 local_callbacks->sync_all(PC_POSTTOPDOWN);
00739
00740
00741 double rV_2 = OBJECTDATA(node2,load)->phaseA_V.Re();
00742 double iV_2 = OBJECTDATA(node2,load)->phaseA_V.Im();
00743
00744 validate_re = 1 - (rV_2 <= node2_phA_V_test->Re() ? rV_2 / node2_phA_V_test->Re() : node2_phA_V_test->Re() /rV_2);
00745 validate_im = 1 - (iV_2 <= node2_phA_V_test->Im() ? iV_2 / node2_phA_V_test->Im() : node2_phA_V_test->Im() /iV_2);
00746 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00747 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00748
00749 rV_2 = OBJECTDATA(node2,load)->phaseC_V.Re();
00750 iV_2 = OBJECTDATA(node2,load)->phaseC_V.Im();
00751
00752 validate_re = 1 - (rV_2 <= node2_phC_V_test->Re() ? rV_2 / node2_phC_V_test->Re() : node2_phC_V_test->Re() /rV_2);
00753 validate_im = 1 - (iV_2 <= node2_phC_V_test->Im() ? iV_2 / node2_phC_V_test->Im() : node2_phC_V_test->Im() /iV_2);
00754 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00755 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00756 }
00757
00758 void test_underground_line_abc_cn(){
00759 OBJECT *node1,*node2;
00760 OBJECT *ohl1;
00761
00762 complex* node1_phA_I_test = new complex(204.5,-18.431);
00763 complex* node2_phA_V_test = new complex(2351,-220.05);
00764 complex* node1_phB_I_test = new complex(39.716,-57.144);
00765 complex* node2_phB_V_test = new complex(-1362.6,-2136.8);
00766 complex* node1_phC_I_test = new complex(-46.035,115.21);
00767 complex* node2_phC_V_test = new complex(-1029,2106.5);
00768
00769 CLASS *cl = get_class_by_name("node");
00770 node1 = gl_create_object(cl,sizeof(node));
00771 OBJECTDATA(node1,node)->create();
00772 cl = get_class_by_name("load");
00773 node2 = gl_create_object(cl,sizeof(load));
00774 OBJECTDATA(node2,load)->create();
00775 cl = get_class_by_name("underground_line");
00776 ohl1 = gl_create_object(cl,sizeof(underground_line));
00777 OBJECTDATA(ohl1,underground_line)->create();
00778
00779 OBJECTDATA(ohl1,underground_line)->from = node1;
00780 OBJECTDATA(ohl1,underground_line)->to = node2;
00781 OBJECTDATA(ohl1,underground_line)->length = 500;
00782
00783
00784 OBJECTDATA(ohl1,underground_line)->phases = PHASE_A|PHASE_B|PHASE_C;
00785 OBJECTDATA(node1,node)->phases = PHASE_A|PHASE_B|PHASE_C;
00786 OBJECTDATA(node2,load)->phases = PHASE_A|PHASE_B|PHASE_C;
00787
00788 OBJECTDATA(node1,node)->phaseA_V = OBJECTDATA(node2,load)->phaseA_V = 2349.8;
00789 OBJECTDATA(node1,node)->phaseA_V.SetImag(-228.75);
00790 OBJECTDATA(node2,load)->phaseA_V.SetImag(-228.75);
00791 OBJECTDATA(node2,load)->phaseA_I.SetReal(204.5);
00792 OBJECTDATA(node2,load)->phaseA_I.SetImag(-18.431);
00793
00794 OBJECTDATA(node1,node)->phaseB_V = OBJECTDATA(node2,load)->phaseB_V = -1362.2;
00795 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.6);
00796 OBJECTDATA(node2,load)->phaseB_V.SetImag(-2136.6);
00797 OBJECTDATA(node2,load)->phaseB_I.SetReal(39.716);
00798 OBJECTDATA(node2,load)->phaseB_I.SetImag(-57.144);
00799
00800 OBJECTDATA(node1,node)->phaseC_V = OBJECTDATA(node2,load)->phaseC_V = -1028.7;
00801 OBJECTDATA(node1,node)->phaseC_V.SetImag(2106.4);
00802 OBJECTDATA(node2,load)->phaseC_V.SetImag(2106.4);
00803 OBJECTDATA(node2,load)->phaseC_I.SetReal(-46.035);
00804 OBJECTDATA(node2,load)->phaseC_I.SetImag(115.21);
00805
00806
00807 cl = get_class_by_name("underground_line_conductor");
00808 OBJECT *ulc_a = gl_create_object(cl,sizeof(underground_line_conductor));
00809 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_diameter = 0.567;
00810 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_gmr = 0.0171;
00811 OBJECTDATA(ulc_a,underground_line_conductor)->conductor_resistance = 0.41;
00812 OBJECTDATA(ulc_a,underground_line_conductor)->outer_diameter = 1.29;
00813 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_gmr = 0.00208;
00814 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_diameter = 0.0641;
00815 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_resistance = 14.8722;
00816 OBJECTDATA(ulc_a,underground_line_conductor)->neutral_strands = 13;
00817
00818 cl = get_class_by_name("underground_line_conductor");
00819 OBJECT *ulc_b = gl_create_object(cl,sizeof(underground_line_conductor));
00820 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_diameter = 0.567;
00821 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_gmr = 0.0171;
00822 OBJECTDATA(ulc_b,underground_line_conductor)->conductor_resistance = 0.41;
00823 OBJECTDATA(ulc_b,underground_line_conductor)->outer_diameter = 1.29;
00824 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_gmr = 0.00208;
00825 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_diameter = 0.0641;
00826 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_resistance = 14.8722;
00827 OBJECTDATA(ulc_b,underground_line_conductor)->neutral_strands = 13;
00828
00829 cl = get_class_by_name("underground_line_conductor");
00830 OBJECT *ulc_c = gl_create_object(cl,sizeof(underground_line_conductor));
00831 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_diameter = 0.567;
00832 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_gmr = 0.0171;
00833 OBJECTDATA(ulc_c,underground_line_conductor)->conductor_resistance = 0.41;
00834 OBJECTDATA(ulc_c,underground_line_conductor)->outer_diameter = 1.29;
00835 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_gmr = 0.00208;
00836 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_diameter = 0.0641;
00837 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_resistance = 14.8722;
00838 OBJECTDATA(ulc_c,underground_line_conductor)->neutral_strands = 13;
00839
00840
00841 cl = get_class_by_name("line_spacing");
00842 OBJECT *ls = gl_create_object(cl,sizeof(line_spacing));
00843 OBJECTDATA(ls,line_spacing)->distance_AtoN = 0.0;
00844 OBJECTDATA(ls,line_spacing)->distance_AtoB = 0.5;
00845 OBJECTDATA(ls,line_spacing)->distance_AtoC = 1;
00846 OBJECTDATA(ls,line_spacing)->distance_BtoC = 0.5;
00847
00848 cl = get_class_by_name("line_configuration");
00849 OBJECT *line_config = gl_create_object(cl,sizeof(line_configuration));
00850 line_configuration *lc = OBJECTDATA(line_config,line_configuration);
00851 lc->line_spacing = ls;
00852 lc->phaseA_conductor = ulc_a;
00853 lc->phaseB_conductor = ulc_b;
00854 lc->phaseC_conductor = ulc_c;
00855 lc->phaseN_conductor = 0;
00856
00857 OBJECTDATA(ohl1,underground_line)->configuration = line_config;
00858
00859
00860 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00861
00862
00863 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00864
00865
00866 local_callbacks->sync_all(PC_PRETOPDOWN);
00867 local_callbacks->sync_all(PC_BOTTOMUP);
00868
00869
00870 double rI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Re();
00871 double iI_1 = OBJECTDATA(node1,node)->get_phaseA_I_in().Im();
00872
00873
00874 double validate_re = 1 - (rI_1 <= node1_phA_I_test->Re() ? rI_1 / node1_phA_I_test->Re() : node1_phA_I_test->Re() /rI_1);
00875 double validate_im = 1 - (iI_1 <= node1_phA_I_test->Im() ? iI_1 / node1_phA_I_test->Im() : node1_phA_I_test->Im() /iI_1);
00876
00877 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00878 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00879
00880
00881 OBJECTDATA(node1,node)->phaseA_V = 2367.6;
00882 OBJECTDATA(node1,node)->phaseA_V.SetImag(-220.05);
00883 OBJECTDATA(node1,node)->phaseB_V = -1352.9;
00884 OBJECTDATA(node1,node)->phaseB_V.SetImag(-2136.8);
00885 OBJECTDATA(node1,node)->phaseC_V = -1030.4;
00886 OBJECTDATA(node1,node)->phaseC_V.SetImag(2110.9);
00887 local_callbacks->sync_all(PC_POSTTOPDOWN);
00888
00889
00890 double rV_2 = OBJECTDATA(node2,load)->phaseA_V.Re();
00891 double iV_2 = OBJECTDATA(node2,load)->phaseA_V.Im();
00892
00893 validate_re = 1 - (rV_2 <= node2_phA_V_test->Re() ? rV_2 / node2_phA_V_test->Re() : node2_phA_V_test->Re() /rV_2);
00894 validate_im = 1 - (iV_2 <= node2_phA_V_test->Im() ? iV_2 / node2_phA_V_test->Im() : node2_phA_V_test->Im() /iV_2);
00895 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00896 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00897
00898 rV_2 = OBJECTDATA(node2,load)->phaseB_V.Re();
00899 iV_2 = OBJECTDATA(node2,load)->phaseB_V.Im();
00900 validate_re = 1 - (rV_2 <= node2_phB_V_test->Re() ? rV_2 / node2_phB_V_test->Re() : node2_phB_V_test->Re() /rV_2);
00901 validate_im = 1 - (iV_2 <= node2_phB_V_test->Im() ? iV_2 / node2_phB_V_test->Im() : node2_phB_V_test->Im() /iV_2);
00902 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00903 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00904
00905 rV_2 = OBJECTDATA(node2,load)->phaseC_V.Re();
00906 iV_2 = OBJECTDATA(node2,load)->phaseC_V.Im();
00907 validate_re = 1 - (rV_2 <= node2_phC_V_test->Re() ? rV_2 / node2_phC_V_test->Re() : node2_phC_V_test->Re() /rV_2);
00908 validate_im = 1 - (iV_2 <= node2_phC_V_test->Im() ? iV_2 / node2_phC_V_test->Im() : node2_phC_V_test->Im() /iV_2);
00909 CPPUNIT_ASSERT(validate_re < VALIDATE_THRESHOLD);
00910 CPPUNIT_ASSERT(validate_im < VALIDATE_THRESHOLD);
00911
00912 }
00913
00914
00915
00916
00917
00918
00919
00920
00921 CPPUNIT_TEST_SUITE(undergroundline_tests);
00922
00923
00924
00925
00926
00927
00928 CPPUNIT_TEST(test_underground_line_a_cn);
00929 CPPUNIT_TEST(test_underground_line_b_cn);
00930 CPPUNIT_TEST(test_underground_line_c_cn);
00931 CPPUNIT_TEST(test_underground_line_bc_cn);
00932 CPPUNIT_TEST(test_underground_line_ab_cn);
00933 CPPUNIT_TEST(test_underground_line_ca_cn);
00934 CPPUNIT_TEST(test_underground_line_abc_cn);
00935
00936 CPPUNIT_TEST_SUITE_END();
00937
00938 };
00939
00940
00941 #endif
00942 #endif