00001
00013 #include "pmsmDS.h"
00014 #include <uibuilder.h>
00015
00016 class UIpmsmIM: public UIbuilder {
00017 protected:
00018 static void tmp_set ( Setting &S, IMpmsm* IM ) {
00019
00020 IM->set_parameters ( S["Rs"], S["Ls"], 1.0e-6, 0.0, S["kp"], S["p"], \
00021 S["J"], 0.0 );
00022 };
00023 public:
00024 UIpmsmIM():UIbuilder("pmsm"){};
00025 bdmroot* build ( Setting &S ) const {
00026 IMpmsm* tmp;
00027
00028 if (S.exists("variant")){
00029 string var=S["variant"];
00030 if (var=="Stat"){tmp=new IMpmsmStat();}
00031 if (var=="Mf"){tmp=new IMpmsmStat();}
00032 } else {
00033 tmp= new IMpmsm();
00034 }
00035
00036 UIcall<IMpmsm*> ( S["params"], &tmp_set , tmp );
00037 return tmp;
00038 }
00039 };
00040 UIREGISTER ( UIpmsmIM );
00041
00042
00044 class UIpmsmDS: public UIbuilder {
00045 static void tmp_set ( Setting &S, pmsmDS* DS ) {
00046
00047 DS->set_parameters ( S["Rs"], S["Ls"], S["Fmag"], S["Bf"], S["p"], S["kp"], \
00048 S["J"], S["Uc"], S["DT"], 1.0e-6 );
00049 };
00050 public:
00051 UIpmsmDS() :UIbuilder ( "pmsmDS" ) {};
00052 bdmroot* build ( Setting &S ) const {
00053 pmsmDS* tmp = new pmsmDS ( );
00054
00055 UIcall<pmsmDS*> ( S["params"], &tmp_set , tmp );
00056
00057 if ( S.exists ( "profile" ) ) {
00058 tmp->set_profile ( S["tstep"],getvec ( S["profile"] ) );
00059 }
00060 else {
00061 tmp->set_profile ( 1.0, vec ( "1" ) );
00062 }
00063 return tmp;
00064 };
00065
00066 };
00067 UIREGISTER ( UIpmsmDS );