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* overhead_line_conductor::oclass = NULL;
00020 CLASS* overhead_line_conductor::pclass = NULL;
00021
00022 overhead_line_conductor::overhead_line_conductor(MODULE *mod) : powerflow_library(mod)
00023 {
00024 if(oclass == NULL)
00025 {
00026 oclass = gl_register_class(mod,"overhead_line_conductor",sizeof(overhead_line_conductor),0x00);
00027 if (oclass==NULL)
00028 throw "unable to register class overhead_line_conductor";
00029 else
00030 oclass->trl = TRL_PROVEN;
00031
00032 if(gl_publish_variable(oclass,
00033 PT_double, "geometric_mean_radius[ft]",PADDR(geometric_mean_radius),PT_DESCRIPTION, "radius of the conductor",
00034 PT_double, "resistance[Ohm/mile]",PADDR(resistance),PT_DESCRIPTION, "resistance in Ohms/mile of the conductor",
00035 PT_double, "diameter[in]",PADDR(cable_diameter), PT_DESCRIPTION, "Diameter of line for capacitance calculations",
00036 PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),PT_DESCRIPTION, "Continuous summer amp rating",
00037 PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),PT_DESCRIPTION, "Emergency summer amp rating",
00038 PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),PT_DESCRIPTION, "Continuous winter amp rating",
00039 PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),PT_DESCRIPTION, "Emergency winter amp rating",
00040 NULL) < 1) GL_THROW("unable to publish overhead_line_conductor properties in %s",__FILE__);
00041 }
00042 }
00043
00044 int overhead_line_conductor::create(void)
00045 {
00046 int result = powerflow_library::create();
00047
00048 cable_diameter = 0.0;
00049 geometric_mean_radius = resistance = 0.0;
00050 summer.continuous = winter.continuous = 1000;
00051 summer.emergency = winter.emergency = 2000;
00052
00053 return result;
00054 }
00055
00056 int overhead_line_conductor::init(OBJECT *parent)
00057 {
00058 return 1;
00059 }
00060
00061 int overhead_line_conductor::isa(char *classname)
00062 {
00063 return strcmp(classname,"overhead_line_conductor")==0;
00064 }
00065
00066
00068
00070
00078 EXPORT int create_overhead_line_conductor(OBJECT **obj, OBJECT *parent)
00079 {
00080 try
00081 {
00082 *obj = gl_create_object(overhead_line_conductor::oclass);
00083 if (*obj!=NULL)
00084 {
00085 overhead_line_conductor *my = OBJECTDATA(*obj,overhead_line_conductor);
00086 gl_set_parent(*obj,parent);
00087 return my->create();
00088 }
00089 else
00090 return 0;
00091 }
00092 CREATE_CATCHALL(overhead_line_conductor);
00093 }
00094
00095 EXPORT int init_overhead_line_conductor(OBJECT *obj)
00096 {
00097 try {
00098 overhead_line_conductor *my = OBJECTDATA(obj,overhead_line_conductor);
00099 return my->init(obj->parent);
00100 }
00101 INIT_CATCHALL(overhead_line_conductor);
00102 }
00103
00104 EXPORT TIMESTAMP sync_overhead_line_conductor(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00105 {
00106 return TS_NEVER;
00107 }
00108
00109 EXPORT int isa_overhead_line_conductor(OBJECT *obj, char *classname)
00110 {
00111 return OBJECTDATA(obj,overhead_line_conductor)->isa(classname);
00112 }
00113
00114