powerflow/overhead_line_conductor.cpp

Go to the documentation of this file.
00001 
00009 #include <stdlib.h>
00010 #include <stdio.h>
00011 #include <errno.h>
00012 #include <math.h>
00013 #include <iostream>
00014 using namespace std;
00015 
00016 #include "line.h"
00017 
00018 CLASS* overhead_line_conductor::oclass = NULL;
00019 CLASS* overhead_line_conductor::pclass = NULL;
00020 overhead_line_conductor *overhead_line_conductor::defaults = NULL;
00021 
00022 overhead_line_conductor::overhead_line_conductor(MODULE *mod)
00023 {
00024     if(oclass == NULL)
00025     {
00026         oclass = gl_register_class(mod,"overhead_line_conductor",0x00);
00027         if(oclass == NULL)
00028             GL_THROW("unable to register overhead_line_conductor class implemented by %s",__FILE__);
00029         
00030         if(gl_publish_variable(oclass,
00031            PT_double, "geometric_mean_radius[in]",PADDR(geometric_mean_radius),
00032            PT_double, "resistance[ohm/mile]",PADDR(resistance),
00033            PT_double, "rating.summer.continuous[A]", PADDR(summer.continuous),
00034            PT_double, "rating.summer.emergency[A]", PADDR(summer.emergency),
00035            PT_double, "rating.winter.continuous[A]", PADDR(winter.continuous),
00036            PT_double, "rating.winter.emergency[A]", PADDR(winter.emergency),
00037             NULL) < 1) GL_THROW("unable to publish overhead_line_conductor properties in %s",__FILE__);
00038         
00039         // Set up defaults
00040         defaults = this;
00041         geometric_mean_radius = resistance = 0.0;
00042         summer.continuous = winter.continuous = 1000;
00043         summer.emergency = winter.emergency = 2000;
00044     }
00045 }
00046 
00047 int overhead_line_conductor::create(void)
00048 {
00049     memcpy(this,defaults,sizeof(overhead_line_conductor));
00050     return 1;
00051 }
00052 
00053 int overhead_line_conductor::isa(char *classname)
00054 {
00055     return strcmp(classname,"overhead_line_conductor")==0;
00056 }
00057 
00058 
00060 // IMPLEMENTATION OF CORE LINKAGE: overhead_line_conductor
00062 
00070 EXPORT int create_overhead_line_conductor(OBJECT **obj, OBJECT *parent)
00071 {
00072     try
00073     {
00074         *obj = gl_create_object(overhead_line_conductor::oclass,sizeof(overhead_line_conductor));
00075         if (*obj!=NULL)
00076         {
00077             overhead_line_conductor *my = OBJECTDATA(*obj,overhead_line_conductor);
00078             gl_set_parent(*obj,parent);
00079             return my->create();
00080         }
00081     }
00082     catch (char *msg)
00083     {
00084         gl_error("create_overhead_line_conductor: %s", msg);
00085     }
00086     return 0;
00087 }
00088 EXPORT TIMESTAMP sync_overhead_line_conductor(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00089 {
00090     return TS_NEVER;
00091 }
00092 
00093 EXPORT int isa_overhead_line_conductor(OBJECT *obj, char *classname)
00094 {
00095     return OBJECTDATA(obj,overhead_line_conductor)->isa(classname);
00096 }
00097 
00098 

GridLAB-DTM Version 1.0
An open-source project initiated by the US Department of Energy