1 | /*! |
---|
2 | \file |
---|
3 | \brief UserInfo for pmsm related objects |
---|
4 | \author Vaclav Smidl. |
---|
5 | |
---|
6 | ----------------------------------- |
---|
7 | BDM++ - C++ library for Bayesian Decision Making under Uncertainty |
---|
8 | |
---|
9 | Using IT++ for numerical operations |
---|
10 | ----------------------------------- |
---|
11 | */ |
---|
12 | |
---|
13 | #include "pmsmDS.h" |
---|
14 | #include <uibuilder.h> |
---|
15 | |
---|
16 | class UIpmsmIM: public UIbuilder { |
---|
17 | protected: |
---|
18 | static void tmp_set ( Setting &S, IMpmsm* IM ) { |
---|
19 | //set_parameters( Rs0, Ls0, dt0, Ypm0, kp0, p0, J0, Mz0 ) |
---|
20 | IM->set_parameters ( S["Rs"], S["Ls"], 125e-6, S["Fmag"], S["kp"], S["p"], \ |
---|
21 | S["J"], 0.0 ); |
---|
22 | }; |
---|
23 | public: |
---|
24 | UIpmsmIM():UIbuilder("pmsmIM"){}; |
---|
25 | bdmroot* build ( Setting &S ) const { |
---|
26 | IMpmsm* tmp; |
---|
27 | //Switch to variants |
---|
28 | if (S.exists("variant")){ |
---|
29 | string var=S["variant"]; |
---|
30 | if (var=="Stat"){tmp=new IMpmsmStat;} |
---|
31 | if (var=="Mf"){tmp=new IMpmsmStat;} |
---|
32 | } else { |
---|
33 | tmp= new IMpmsm; |
---|
34 | } |
---|
35 | //Set parameters (recursively) |
---|
36 | UIcall<IMpmsm*> ( S["params"], &tmp_set , tmp ); |
---|
37 | return tmp; |
---|
38 | } |
---|
39 | }; |
---|
40 | UIREGISTER ( UIpmsmIM ); |
---|
41 | |
---|
42 | //! UI for pmsm observation model |
---|
43 | class UIpmsmOM: public UIbuilder { |
---|
44 | public: |
---|
45 | UIpmsmOM():UIbuilder("pmsmOM"){}; |
---|
46 | bdmroot* build ( Setting &S ) const { |
---|
47 | return new OMpmsm; |
---|
48 | } |
---|
49 | }; |
---|
50 | UIREGISTER ( UIpmsmOM ); |
---|
51 | |
---|
52 | |
---|
53 | |
---|
54 | //!UI for pmsmDS, |
---|
55 | class UIpmsmDS: public UIbuilder { |
---|
56 | static void tmp_set ( Setting &S, pmsmDS* DS ) { |
---|
57 | //pmsmsim_set_parameters (( Rs0, Ls0, Fmag0, Bf0, p0, kp0, J0, Uc0, DT0, dt0); |
---|
58 | DS->set_parameters ( S["Rs"], S["Ls"], S["Fmag"], S["Bf"], S["p"], S["kp"], \ |
---|
59 | S["J"], S["Uc"], S["DT"], 1.0e-6 ); |
---|
60 | }; |
---|
61 | public: |
---|
62 | UIpmsmDS() :UIbuilder ( "pmsmDS" ) {}; |
---|
63 | bdmroot* build ( Setting &S ) const { |
---|
64 | pmsmDS* tmp = new pmsmDS ( ); |
---|
65 | //Calling function tmp->tmp_set |
---|
66 | UIcall<pmsmDS*> ( S["params"], &tmp_set , tmp ); |
---|
67 | // |
---|
68 | if ( S.exists ( "profile" ) ) { |
---|
69 | tmp->set_profile ( S["tstep"],getvec ( S["profile"] ) ); |
---|
70 | } |
---|
71 | else { |
---|
72 | tmp->set_profile ( 1.0, vec ( "1" ) ); |
---|
73 | } |
---|
74 | return tmp; |
---|
75 | }; |
---|
76 | |
---|
77 | }; |
---|
78 | UIREGISTER ( UIpmsmDS ); |
---|