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* underground_line_conductor::oclass = NULL;
00020 CLASS* underground_line_conductor::pclass = NULL;
00021
00022 underground_line_conductor::underground_line_conductor(MODULE *mod) : powerflow_library(mod)
00023 {
00024 if(oclass == NULL)
00025 {
00026 oclass = gl_register_class(mod,"underground_line_conductor",sizeof(underground_line_conductor),0x00);
00027 if(oclass == NULL)
00028 GL_THROW("unable to register underground_line_conductor class implemented by %s",__FILE__);
00029
00030 if(gl_publish_variable(oclass,
00031 PT_double, "outer_diameter[in]",PADDR(outer_diameter),
00032 PT_double, "conductor_gmr[ft]", PADDR(conductor_gmr),
00033 PT_double, "conductor_diameter[in]",PADDR(conductor_diameter),
00034 PT_double, "conductor_resistance[Ohm/mile]",PADDR(conductor_resistance),
00035 PT_double, "neutral_gmr[ft]",PADDR(neutral_gmr),
00036 PT_double, "neutral_diameter[in]",PADDR(neutral_diameter),
00037 PT_double, "neutral_resistance[Ohm/mile]",PADDR(neutral_resistance),
00038 PT_int16, "neutral_strands",PADDR(neutral_strands),
00039 PT_double, "shield_gmr[ft]",PADDR(shield_gmr),
00040 PT_double, "shield_resistance[Ohm/mile]",PADDR(shield_resistance),
00041 PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),
00042 PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),
00043 PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),
00044 PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),
00045 NULL) < 1) GL_THROW("unable to publish underground_line_conductor properties in %s",__FILE__);
00046 }
00047 }
00048 int underground_line_conductor::create(void)
00049 {
00050 int result = powerflow_library::create();
00051 outer_diameter = conductor_gmr = conductor_diameter = 0.0;
00052 conductor_resistance = neutral_gmr = neutral_diameter = 0.0;
00053 neutral_resistance = shield_gmr = 0.0;
00054 neutral_strands = 0;
00055 shield_resistance = 0.0;
00056 summer.continuous = winter.continuous = 1000;
00057 summer.emergency = winter.emergency = 2000;
00058 return result;
00059 }
00060
00061 int underground_line_conductor::isa(char *classname)
00062 {
00063 return strcmp(classname,"underground_line_conductor")==0;
00064 }
00065
00066
00068
00070
00078 EXPORT int create_underground_line_conductor(OBJECT **obj, OBJECT *parent)
00079 {
00080 try
00081 {
00082 *obj = gl_create_object(underground_line_conductor::oclass);
00083 if (*obj!=NULL)
00084 {
00085 underground_line_conductor *my = OBJECTDATA(*obj,underground_line_conductor);
00086 gl_set_parent(*obj,parent);
00087 return my->create();
00088 }
00089 }
00090 catch (const char *msg)
00091 {
00092 gl_error("create_underground_line_conductor: %s", msg);
00093 }
00094 return 0;
00095 }
00096
00097 EXPORT TIMESTAMP sync_underground_line_conductor(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00098 {
00099 return TS_NEVER;
00100 }
00101
00102 EXPORT int isa_underground_line_conductor(OBJECT *obj, char *classname)
00103 {
00104 return OBJECTDATA(obj,underground_line_conductor)->isa(classname);
00105 }
00106