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
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),
00054 PT_double, "X_pu",PADDR(impedence)+8,
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),
00064 PT_double, "reactance[pu.ohm]",PADDR(impedence)+8,
00065 PT_complex, "impedance[pu.ohm]",PADDR(impedence),
00066
00067 NULL) < 1) GL_THROW("unable to publish properties in %s",__FILE__);
00068
00069
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
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