powerflow/transformer_configuration.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 "transformer.h"
00017 
00019 // transformer_configuration CLASS FUNCTIONS
00021 CLASS* transformer_configuration::oclass = NULL;
00022 CLASS* transformer_configuration::pclass = NULL;
00023 transformer_configuration *transformer_configuration::defaults = NULL;
00024 
00025 transformer_configuration::transformer_configuration(MODULE *mod)
00026 {
00027     if(oclass == NULL)
00028     {
00029         oclass = gl_register_class(mod,"transformer_configuration",PC_BOTTOMUP|PC_POSTTOPDOWN);
00030         if(oclass == NULL)
00031             GL_THROW("unable to register object class implemented by %s",__FILE__);
00032         
00033         if(gl_publish_variable(oclass,
00034             PT_enumeration,"connect_type",PADDR(connect_type),
00035                 PT_KEYWORD,"UNKNOWN",UNKNOWN,
00036                 PT_KEYWORD,"WYE_WYE",WYE_WYE,
00037                 PT_KEYWORD,"DELTA_DELTA",DELTA_DELTA,
00038                 PT_KEYWORD,"DELTA_GWYE",DELTA_GWYE,
00039                 PT_KEYWORD,"SINGLE_PHASE",SINGLE_PHASE,
00040                 PT_KEYWORD,"SINGLE_PHASE_CENTER_TAPPED",SINGLE_PHASE_CENTER_TAPPED,
00041             PT_enumeration,"install_type",PADDR(install_type),
00042                 PT_KEYWORD,"POLETOP",POLETOP,
00043                 PT_KEYWORD,"PADMOUNT",PADMOUNT,
00044                 PT_KEYWORD,"VAULT",VAULT,
00045             
00047             PT_double, "V_primary", PADDR(V_primary),
00048             PT_double, "V_secondary",PADDR(V_secondary),
00049             PT_int32, "kVA_rating",PADDR(kVA_rating),
00050             PT_int32, "phaseA_kVA_rating",PADDR(phaseA_kVA_rating),
00051             PT_int32, "phaseB_kVA_rating",PADDR(phaseB_kVA_rating),
00052             PT_int32, "phaseC_kVA_rating",PADDR(phaseC_kVA_rating),
00053             PT_double, "R_pu",PADDR(impedence), //  was R_pu
00054             PT_double, "X_pu",PADDR(impedence)+8,   //  was X_pu
00055 
00057             PT_double, "V_primary", PADDR(V_primary),
00058             PT_double, "V_secondary",PADDR(V_secondary),
00059             PT_int32, "kVA_rating",PADDR(kVA_rating),
00060             PT_int32, "phaseA_rating[kVA]",PADDR(phaseA_kVA_rating),
00061             PT_int32, "phaseB_rating[kVA]",PADDR(phaseB_kVA_rating),
00062             PT_int32, "phaseC_rating[kVA]",PADDR(phaseC_kVA_rating),
00063             PT_double, "resistance[pu.ohm]",PADDR(impedence),   // was R_pu
00064             PT_double, "reactance[pu.ohm]",PADDR(impedence)+8,  // was X_pu
00065             PT_complex, "impedance[pu.ohm]",PADDR(impedence),
00066 
00067             NULL) < 1) GL_THROW("unable to publish properties in %s",__FILE__);
00068             
00069         // Set up defaults
00070         memset(this,0,sizeof(transformer_configuration));
00071         defaults = this;
00072         connect_type = UNKNOWN;
00073     }
00074 }
00075 
00076 int transformer_configuration::isa(char *classname)
00077 {
00078     return strcmp(classname,"transformer_configuration")==0;
00079 }
00080 
00081 int transformer_configuration::create(void)
00082 {
00083     memcpy(this,defaults,sizeof(transformer_configuration));
00084     return 1;
00085 }
00086 
00088 // IMPLEMENTATION OF CORE LINKAGE: transformer_configuration
00090 
00098 EXPORT int create_transformer_configuration(OBJECT **obj, OBJECT *parent)
00099 {
00100     try
00101     {
00102         *obj = gl_create_object(transformer_configuration::oclass,sizeof(transformer_configuration));
00103         if (*obj!=NULL)
00104         {
00105             transformer_configuration *my = OBJECTDATA(*obj,transformer_configuration);
00106             gl_set_parent(*obj,parent);
00107             return my->create();
00108         }
00109     }
00110     catch (char *msg)
00111     {
00112         gl_error("create_transformer_configuration: %s", msg);
00113     }
00114     return 1;
00115 }
00116 
00117 EXPORT TIMESTAMP sync_transformer_configuration(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass)
00118 {
00119     return TS_NEVER;
00120 }
00121 
00122 EXPORT int isa_transformer_configuration(OBJECT *obj, char *classname)
00123 {
00124     return OBJECTDATA(obj,transformer_configuration)->isa(classname);
00125 }
00126 

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