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 );