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_conductor::oclass = NULL;
00020 CLASS* triplex_line_conductor::pclass = NULL;
00021
00022 triplex_line_conductor::triplex_line_conductor(MODULE *mod) : powerflow_library(mod)
00023 {
00024 if(oclass == NULL)
00025 {
00026 oclass = gl_register_class(mod,"triplex_line_conductor",sizeof(triplex_line_conductor),0x00);
00027 if (oclass==NULL)
00028 throw "unable to register class triplex_line_conductor";
00029 else
00030 oclass->trl = TRL_PROVEN;
00031
00032 if(gl_publish_variable(oclass,
00033 PT_double, "resistance[Ohm/mile]",PADDR(resistance),PT_DESCRIPTION,"resistance of cable in ohm/mile",
00034 PT_double, "geometric_mean_radius[ft]", PADDR(geometric_mean_radius),PT_DESCRIPTION,"geometric mean radius of the cable",
00035 PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),PT_DESCRIPTION,"amp ratings for the cable during continuous operation in summer",
00036 PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),PT_DESCRIPTION,"amp ratings for the cable during short term operation in summer",
00037 PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),PT_DESCRIPTION,"amp ratings for the cable during continuous operation in winter",
00038 PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),PT_DESCRIPTION,"amp ratings for the cable during short term operation in winter",
00039 NULL) < 1) GL_THROW("unable to publish triplex_line_conductor properties in %s",__FILE__);
00040 }
00041 }
00042
00043 int triplex_line_conductor::create(void)
00044 {
00045 int result = powerflow_library::create();
00046 resistance = 0.0;
00047 geometric_mean_radius = 0.0;
00048
00049 summer.continuous = winter.continuous = 202;
00050 summer.emergency = winter.emergency = 212.1;
00051
00052 return result;
00053 }
00054
00055 int triplex_line_conductor::isa(char *classname)
00056 {
00057 return strcmp(classname,"triplex_line_conductor")==0;
00058
00059 }
00060
00062
00064
00072 EXPORT int create_triplex_line_conductor(OBJECT **obj, OBJECT *parent)
00073 {
00074 try
00075 {
00076 *obj = gl_create_object(triplex_line_conductor::oclass);
00077 if (*obj!=NULL)
00078 {
00079 triplex_line_conductor *my = OBJECTDATA(*obj,triplex_line_conductor);
00080 gl_set_parent(*obj,parent);
00081 return my->create();
00082 }
00083 else
00084 return 0;
00085 }
00086 CREATE_CATCHALL(triplex_line_conductor);
00087 }
00088
00089 EXPORT TIMESTAMP sync_triplex_line_conductor(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00090 {
00091 return TS_NEVER;
00092 }
00093
00094 EXPORT int isa_triplex_line_conductor(OBJECT *obj, char *classname)
00095 {
00096 return OBJECTDATA(obj,triplex_line_conductor)->isa(classname);
00097 }
00098