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 GL_THROW("unable to register line_configuration class implemented by %s",__FILE__);
00034
00035 if(gl_publish_variable(oclass,
00036 PT_object, "conductor_A",PADDR(phaseA_conductor),
00037 PT_object, "conductor_B",PADDR(phaseB_conductor),
00038 PT_object, "conductor_C",PADDR(phaseC_conductor),
00039 PT_object, "conductor_N",PADDR(phaseN_conductor),
00040 PT_object, "spacing",PADDR(line_spacing),
00041 PT_complex, "z11[Ohm/mile]",PADDR(impedance11),
00042 PT_complex, "z12[Ohm/mile]",PADDR(impedance12),
00043 PT_complex, "z13[Ohm/mile]",PADDR(impedance13),
00044 PT_complex, "z21[Ohm/mile]",PADDR(impedance21),
00045 PT_complex, "z22[Ohm/mile]",PADDR(impedance22),
00046 PT_complex, "z23[Ohm/mile]",PADDR(impedance23),
00047 PT_complex, "z31[Ohm/mile]",PADDR(impedance31),
00048 PT_complex, "z32[Ohm/mile]",PADDR(impedance32),
00049 PT_complex, "z33[Ohm/mile]",PADDR(impedance33),
00050 NULL) < 1) GL_THROW("unable to publish line_configuration properties in %s",__FILE__);
00051 }
00052 }
00053
00054 int line_configuration::create(void)
00055 {
00056
00057 phaseA_conductor = NULL;
00058 phaseB_conductor = NULL;
00059 phaseC_conductor = NULL;
00060 phaseN_conductor = NULL;
00061 line_spacing = NULL;
00062 impedance11 = impedance12 = impedance13 = impedance21 = impedance22 = impedance23 = impedance31 = impedance32 = impedance33 = complex(0,0);
00063
00064 return 1;
00065 }
00066
00067 int line_configuration::isa(char *classname)
00068 {
00069 return strcmp(classname,"line_configuration")==0;
00070 }
00071
00073
00075
00083 EXPORT int create_line_configuration(OBJECT **obj, OBJECT *parent)
00084 {
00085 try
00086 {
00087 *obj = gl_create_object(line_configuration::oclass);
00088 if (*obj!=NULL)
00089 {
00090 line_configuration *my = OBJECTDATA(*obj,line_configuration);
00091 gl_set_parent(*obj,parent);
00092 return my->create();
00093 }
00094 }
00095 catch (const char *msg)
00096 {
00097 gl_error("create_line_configuration: %s", msg);
00098 }
00099 return 0;
00100 }
00101 EXPORT TIMESTAMP sync_line_configuration(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00102 {
00103 return TS_NEVER;
00104 }
00105
00106 EXPORT int isa_line_configuration(OBJECT *obj, char *classname)
00107 {
00108 return strcmp(classname,"line_configuration") == 0;
00109 }
00110