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 CLASS* triplex_line_configuration::oclass = NULL;
00020 CLASS* triplex_line_configuration::pclass = NULL;
00021
00022 triplex_line_configuration::triplex_line_configuration(MODULE *mod) : line_configuration(mod)
00023 {
00024 if(oclass == NULL)
00025 {
00026 pclass = line_configuration::oclass;
00027
00028 oclass = gl_register_class(mod,"triplex_line_configuration",sizeof(triplex_line_configuration),0x00);
00029 if (oclass==NULL)
00030 throw "unable to register class triplex_line_configuration";
00031 else
00032 oclass->trl = TRL_PROVEN;
00033
00034 if(gl_publish_variable(oclass,
00035 PT_object, "conductor_1",PADDR(phaseA_conductor),PT_DESCRIPTION,"conductor type for phase 1",
00036 PT_object, "conductor_2",PADDR(phaseB_conductor),PT_DESCRIPTION,"conductor type for phase 2",
00037 PT_object, "conductor_N",PADDR(phaseC_conductor),PT_DESCRIPTION,"conductor type for phase N",
00038 PT_double, "insulation_thickness[in]", PADDR(ins_thickness),PT_DESCRIPTION,"thickness of insulation around cabling",
00039 PT_double, "diameter[in]",PADDR(diameter),PT_DESCRIPTION,"total diameter of cable",
00040 PT_object, "spacing",PADDR(line_spacing),PT_DESCRIPTION,"defines the line spacing configuration",
00041 PT_complex, "z11[Ohm/mile]",PADDR(impedance11),PT_DESCRIPTION,"phase 1 self-impedance, used for direct entry of impedance values",
00042 PT_complex, "z12[Ohm/mile]",PADDR(impedance12),PT_DESCRIPTION,"phase 1-2 induced impedance, used for direct entry of impedance values",
00043 PT_complex, "z21[Ohm/mile]",PADDR(impedance21),PT_DESCRIPTION,"phase 2-1 induced impedance, used for direct entry of impedance values",
00044 PT_complex, "z22[Ohm/mile]",PADDR(impedance22),PT_DESCRIPTION,"phase 2 self-impedance, used for direct entry of impedance values",
00045 PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),PT_DESCRIPTION,"amp rating in summer, continuous",
00046 PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),PT_DESCRIPTION,"amp rating in summer, short term",
00047 PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),PT_DESCRIPTION,"amp rating in winter, continuous",
00048 PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),PT_DESCRIPTION,"amp rating in winter, short term",
00049 NULL) < 1) GL_THROW("unable to publish properties in %s",__FILE__);
00050 }
00051 }
00052
00053 int triplex_line_configuration::create(void)
00054 {
00055 int result = line_configuration::create();
00056 phaseA_conductor = NULL;
00057 phaseB_conductor = NULL;
00058 phaseC_conductor = NULL;
00059 phaseN_conductor = NULL;
00060 ins_thickness = 0.0;
00061 diameter = 0.0;
00062 line_spacing = NULL;
00063 summer.continuous = winter.continuous = 1000;
00064 summer.emergency = winter.emergency = 2000;
00065 return result;
00066 }
00067
00068 int triplex_line_configuration::isa(char *classname)
00069 {
00070 return strcmp(classname,"triplex_line_configuration")==0 || line_configuration::isa(classname);
00071 }
00073
00075
00083 EXPORT int create_triplex_line_configuration(OBJECT **obj, OBJECT *parent)
00084 {
00085 try
00086 {
00087 *obj = gl_create_object(triplex_line_configuration::oclass);
00088 if (*obj!=NULL)
00089 {
00090 triplex_line_configuration *my = OBJECTDATA(*obj,triplex_line_configuration);
00091 gl_set_parent(*obj,parent);
00092 return my->create();
00093 }
00094 else
00095 return 0;
00096 }
00097 CREATE_CATCHALL(triplex_line_configuration);
00098 }
00099 EXPORT TIMESTAMP sync_triplex_line_configuration(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00100 {
00101 return TS_NEVER;
00102 }
00103
00104 EXPORT int isa_triplex_line_configuration(OBJECT *obj, char *classname)
00105 {
00106 return OBJECTDATA(obj,triplex_line_configuration)->isa(classname);
00107 }
00108