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