00001 #include "ElectricalData.h"
00002 #include <iostream>
00003 #include <cassert>
00004 using namespace std;
00005
00009 ElectricalData::load_param_t::load_param_t():
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 Kpi(0.0),
00029 Kpc(0.0),
00030 Kp1(0.0),
00031 Kp2(0.0),
00032 npv1(0.0),
00033 npf1(0.0),
00034 npv2(0.0),
00035 npf2(0.0),
00036 Kqi(0.0),
00037 Kqc(0.0),
00038 Kq1(0.0),
00039 Kq2(0.0),
00040 nqv1(0.0),
00041 nqf1(0.0),
00042 nqv2(0.0),
00043 nqf2(0.0)
00044 {
00045 }
00046
00054 ElectricalData::genr_t::genr_t():
00055 Tspd1(10.0),
00056 Tspd2(1.0),
00057 Ef_max(5.0),
00058 Xd(0.0,1.0),
00059 M(5.0),
00060 R(1.0/0.05),
00061 Te(10.0),
00062 Vref(1.0),
00063 Agc(R),
00064 D(1.0),
00065 FreqTol(2.0),
00066 w0(0.0),
00067 Ef0(1.0),
00068 T0(0.0),
00069 Pm0(0.0),
00070 C0(0.0),
00071 Pe0(0.0)
00072 {
00073 }
00074
00075 void ElectricalData::buildAdmitMatrix(AdmittanceNetwork& Y)
00076 {
00077 for (vector<line_t>::const_iterator iter = getLines().begin();
00078 iter != getLines().end(); iter++)
00079 {
00080 int from = (*iter).from;
00081 int to = (*iter).to;
00082
00083 if ((*iter).tside < 0)
00084 {
00085 Y.add_line(from,to,(*iter).y);
00086 }
00087
00088 else
00089 {
00090 Y.add_line(from,to,(*iter).y,(*iter).turns,(*iter).phase_shift,(*iter).tside);
00091 }
00092
00093 Y.add_self(from,(*iter).B/2.0);
00094 Y.add_self(to,(*iter).B/2.0);
00095 }
00096 for (vector<unsigned>::const_iterator iter = getGenrs().begin();
00097 iter != getGenrs().end(); iter++)
00098 {
00099 Y.add_self(*iter,1.0/getGenrParams(*iter).Xd);
00100 }
00101 for (unsigned i = 0; i < getNodeCount(); i++)
00102 {
00103 Y.add_self(i,getAdmittance(i));
00104 }
00105
00106 for (unsigned i = 0; i < getNodeCount(); i++)
00107 {
00108 if (Y.get(i,i) == Complex(0.0,0.0))
00109 {
00110 for (int j = 0; j < getNodeCount(); j++)
00111 assert(Y.get(i,j) == Complex(0.0,0.0));
00112 cerr << "WARNING Node " << i+1 << " is disconnected" << endl;
00113 Y.add_self(i,Complex(1.0,0));
00114 }
00115 }
00116 }