00001
00010 #include <stdlib.h>
00011 #include <stdio.h>
00012 #include <errno.h>
00013 #include <math.h>
00014 #include <iostream>
00015 using namespace std;
00016
00017 #include "line.h"
00018
00019
00021
00023
00024 CLASS* line_configuration::oclass = NULL;
00025 CLASS* line_configuration::pclass = NULL;
00026
00027 line_configuration::line_configuration(MODULE *mod) : powerflow_library(mod)
00028 {
00029 if(oclass == NULL)
00030 {
00031 oclass = oclass = gl_register_class(mod,"line_configuration",sizeof(line_configuration),0x00);
00032 if (oclass==NULL)
00033 throw "unable to register class line_configuration";
00034 else
00035 oclass->trl = TRL_PROVEN;
00036
00037 if(gl_publish_variable(oclass,
00038 PT_object, "conductor_A",PADDR(phaseA_conductor),
00039 PT_object, "conductor_B",PADDR(phaseB_conductor),
00040 PT_object, "conductor_C",PADDR(phaseC_conductor),
00041 PT_object, "conductor_N",PADDR(phaseN_conductor),
00042 PT_object, "spacing",PADDR(line_spacing),
00043 PT_complex, "z11[Ohm/mile]",PADDR(impedance11),
00044 PT_complex, "z12[Ohm/mile]",PADDR(impedance12),
00045 PT_complex, "z13[Ohm/mile]",PADDR(impedance13),
00046 PT_complex, "z21[Ohm/mile]",PADDR(impedance21),
00047 PT_complex, "z22[Ohm/mile]",PADDR(impedance22),
00048 PT_complex, "z23[Ohm/mile]",PADDR(impedance23),
00049 PT_complex, "z31[Ohm/mile]",PADDR(impedance31),
00050 PT_complex, "z32[Ohm/mile]",PADDR(impedance32),
00051 PT_complex, "z33[Ohm/mile]",PADDR(impedance33),
00052 PT_double, "c11[nF/mile]",PADDR(capacitance11),
00053 PT_double, "c12[nF/mile]",PADDR(capacitance12),
00054 PT_double, "c13[nF/mile]",PADDR(capacitance13),
00055 PT_double, "c21[nF/mile]",PADDR(capacitance21),
00056 PT_double, "c22[nF/mile]",PADDR(capacitance22),
00057 PT_double, "c23[nF/mile]",PADDR(capacitance23),
00058 PT_double, "c31[nF/mile]",PADDR(capacitance31),
00059 PT_double, "c32[nF/mile]",PADDR(capacitance32),
00060 PT_double, "c33[nF/mile]",PADDR(capacitance33),
00061 PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),PT_DESCRIPTION,"amp rating in summer, continuous",
00062 PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),PT_DESCRIPTION,"amp rating in summer, short term",
00063 PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),PT_DESCRIPTION,"amp rating in winter, continuous",
00064 PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),PT_DESCRIPTION,"amp rating in winter, short term",
00065 NULL) < 1) GL_THROW("unable to publish line_configuration properties in %s",__FILE__);
00066 }
00067 }
00068
00069 int line_configuration::create(void)
00070 {
00071
00072 phaseA_conductor = NULL;
00073 phaseB_conductor = NULL;
00074 phaseC_conductor = NULL;
00075 phaseN_conductor = NULL;
00076 line_spacing = NULL;
00077 impedance11 = impedance12 = impedance13 = impedance21 = impedance22 = impedance23 = impedance31 = impedance32 = impedance33 = complex(0,0);
00078 capacitance11 = capacitance12 = capacitance13 = capacitance21 = capacitance22 = capacitance23 = capacitance31 = capacitance32 = capacitance33 = 0.0;
00079 summer.continuous = winter.continuous = 1000;
00080 summer.emergency = winter.emergency = 2000;
00081 return 1;
00082 }
00083
00084 int line_configuration::isa(char *classname)
00085 {
00086 return strcmp(classname,"line_configuration")==0;
00087 }
00088
00090
00092
00100 EXPORT int create_line_configuration(OBJECT **obj, OBJECT *parent)
00101 {
00102 try
00103 {
00104 *obj = gl_create_object(line_configuration::oclass);
00105 if (*obj!=NULL)
00106 {
00107 line_configuration *my = OBJECTDATA(*obj,line_configuration);
00108 gl_set_parent(*obj,parent);
00109 return my->create();
00110 }
00111 else
00112 return 0;
00113 }
00114 CREATE_CATCHALL(line_configuration);
00115 }
00116 EXPORT TIMESTAMP sync_line_configuration(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00117 {
00118 return TS_NEVER;
00119 }
00120
00121 EXPORT int isa_line_configuration(OBJECT *obj, char *classname)
00122 {
00123 return strcmp(classname,"line_configuration") == 0;
00124 }
00125