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"], 125e-6, S["Fmag"], S["kp"], S["p"], \
00021 S["J"], 0.0 );
00022 };
00023 public:
00024 UIpmsmIM():UIbuilder("pmsmIM"){};
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
00043 class UIpmsmOM: public UIbuilder {
00044 public:
00045 UIpmsmOM():UIbuilder("pmsmOM"){};
00046 bdmroot* build ( Setting &S ) const {
00047 return new OMpmsm;
00048 }
00049 };
00050 UIREGISTER ( UIpmsmOM );
00051
00052
00053
00055 class UIpmsmDS: public UIbuilder {
00056 static void tmp_set ( Setting &S, pmsmDS* DS ) {
00057
00058 DS->set_parameters ( S["Rs"], S["Ls"], S["Fmag"], S["Bf"], S["p"], S["kp"], \
00059 S["J"], S["Uc"], S["DT"], 1.0e-6 );
00060 };
00061 public:
00062 UIpmsmDS() :UIbuilder ( "pmsmDS" ) {};
00063 bdmroot* build ( Setting &S ) const {
00064 pmsmDS* tmp = new pmsmDS ( );
00065
00066 UIcall<pmsmDS*> ( S["params"], &tmp_set , tmp );
00067
00068 if ( S.exists ( "profile" ) ) {
00069 tmp->set_profile ( S["tstep"],getvec ( S["profile"] ) );
00070 }
00071 else {
00072 tmp->set_profile ( 1.0, vec ( "1" ) );
00073 }
00074 return tmp;
00075 };
00076
00077 };
00078 UIREGISTER ( UIpmsmDS );