00001
00002
00003
00004 #ifndef _POWERFLOW_TEST_H
00005 #define _POWERFLOW_TEST_H
00006 #define VALIDATE_THRESHOLD .0002
00007
00008 #include "gridlabd.h"
00009
00010 #ifndef _NO_CPPUNIT
00011
00012 #include "test_framework.h"
00013
00014 #include "test_callbacks.h"
00015
00016
00017 #include "node.h"
00018 #include "link.h"
00019
00020 class powerflow_test_helper : public test_helper
00021 {
00022 protected:
00023 static void test_powerflow_link(class link_object *test_link, double tolerance,
00024 set phases1, set phases2, const complex bs_V2_in[3],
00025 const complex bs_I2_in[3], const complex bs_I1_out[3],
00026 const complex fs_V1_in[3], const complex fs_I2_in[3],
00027 const complex fs_V2_out[3])
00028 {
00029 node *src_node = create_object<node>("node");
00030 load *load_node = create_object<load>("load");
00031
00032 src_node->phases = phases1;
00033 load_node->phases = phases2;
00034 load_node->voltageA = bs_V2_in[0];
00035 load_node->voltageB = bs_V2_in[1];
00036 load_node->voltageC = bs_V2_in[2];
00037 load_node->currentA = bs_I2_in[0];
00038 load_node->currentB = bs_I2_in[1];
00039 load_node->currentC = bs_I2_in[2];
00040
00041 test_link->from = GETOBJECT(src_node);
00042 test_link->to = GETOBJECT(load_node);
00043
00044
00045 CPPUNIT_ASSERT(local_callbacks->init_objects() != FAILED);
00046
00047
00048 CPPUNIT_ASSERT(local_callbacks->setup_test_ranks() != FAILED);
00049
00050
00051 CPPUNIT_ASSERT(local_callbacks->sync_all(PC_PRETOPDOWN) != FAILED);
00052 CPPUNIT_ASSERT(local_callbacks->sync_all(PC_BOTTOMUP) != FAILED);
00053 complex I1test[3];
00054 I1test[0]=src_node->currentA;
00055 I1test[1]=src_node->currentB;
00056 I1test[2]=src_node->currentC;
00057
00058
00059 CPPUNIT_ASSERT((src_node->currentA - bs_I1_out[0]).IsZero(tolerance));
00060 CPPUNIT_ASSERT((src_node->currentB - bs_I1_out[1]).IsZero(tolerance));
00061 CPPUNIT_ASSERT((src_node->currentC - bs_I1_out[2]).IsZero(tolerance));
00062
00063 src_node->voltageA = fs_V1_in[0];
00064 src_node->voltageB = fs_V1_in[1];
00065 src_node->voltageC = fs_V1_in[2];
00066 load_node->currentA = fs_I2_in[0];
00067 load_node->currentB = fs_I2_in[1];
00068 load_node->currentC = fs_I2_in[2];
00069
00070 CPPUNIT_ASSERT(local_callbacks->sync_all(PC_POSTTOPDOWN) != FAILED);
00071
00072
00073 complex V2test[3];
00074 V2test[0]=load_node->voltageA ;
00075 V2test[1]=load_node->voltageB ;
00076 V2test[2]=load_node->voltageC ;
00077
00078 CPPUNIT_ASSERT((load_node->voltageA - fs_V2_out[0]).IsZero(tolerance));
00079 CPPUNIT_ASSERT((load_node->voltageB - fs_V2_out[1]).IsZero(tolerance));
00080 CPPUNIT_ASSERT((load_node->voltageC - fs_V2_out[2]).IsZero(tolerance));
00081 }
00082 };
00083
00084
00085 #include "regulator_test.h"
00086 #include "transformer_test.h"
00087 #include "overheadline_test.h"
00088 #include "undergroundline_test.h"
00089 #include "relay_test.h"
00090 #include "meter_test.h"
00091 #include "triplexline_test.h"
00092 #include "fuse_test.h"
00093
00094
00095
00096
00110
00111
00112
00113
00114
00115 CPPUNIT_TEST_SUITE_REGISTRATION(overhead_line_tests);
00116 CPPUNIT_TEST_SUITE_REGISTRATION(transformer_tests);
00117 CPPUNIT_TEST_SUITE_REGISTRATION(undergroundline_tests);
00118 CPPUNIT_TEST_SUITE_REGISTRATION(regulator_tests);
00119 CPPUNIT_TEST_SUITE_REGISTRATION(relay_tests);
00120 CPPUNIT_TEST_SUITE_REGISTRATION(meter_tests);
00121 CPPUNIT_TEST_SUITE_REGISTRATION(fuse_tests);
00122 CPPUNIT_TEST_SUITE_REGISTRATION(triplex_line_tests);
00123
00124
00125 #endif
00126 #endif