| 32 |   |     AimsunDS () : DS()  | 
                      
                        | 33 |   |     {  | 
                      
                        | 34 |   |         Dt=125;  | 
                      
                        | 35 |   |         Yrv=RV ( "{o_ua o_ub o_ia o_ib t_ua t_ub o_om o_th Mz }" );  | 
                      
                        | 36 |   |                 ytsize = Yrv._dsize();  | 
                      
                        | 37 |   |                 Drv = Yrv;  | 
                      
                        | 38 |   |     }  | 
                      
                        | 39 |   |     void set_parameters ( double Rs0, double Ls0, double Fmag0, double Bf0, double p0, double kp0, double J0, double Uc0, double DT0, double dt0 )  | 
                      
                        | 40 |   |     {  | 
                      
                        | 41 |   |         pmsmsim_set_parameters ( Rs0, Ls0, Fmag0, Bf0, p0, kp0, J0, Uc0, DT0, dt0 );  | 
                      
                        | 42 |   |     }  | 
                      
                        | 43 |   |     //! parse options: "modelu" => opt_modu=true;  | 
                      
                        | 44 |   |     void set_options ( string &opt )  | 
                      
                        | 45 |   |     {  | 
                      
                        | 46 |   |         opt_modu = ( opt.find ( "modelu" ) !=string::npos );  | 
                      
                        | 47 |   |     }  | 
                      
                        | 48 |   |     void getdata ( vec &dt ) const  | 
                      
                        | 49 |   |     {  | 
                      
                        | 50 |   |         dt.set_subvector(0,vec ( KalmanObs,6 ));  | 
                      
                        | 51 |   |         dt(6)=x[2];  | 
                      
                        | 52 |   |         dt(7)=x[3];  | 
                      
                        | 53 |   |         dt(8)=x[8];  | 
                      
                        | 54 |   |     }  | 
                      
                        | 55 |   |     void write ( vec &ut ) {}  | 
                      
                      
                        |   | 35 |     AimsunDS ();  | 
                      
            
                      
                        | 57 |   |     void step()  | 
                      
                        | 58 |   |     {  | 
                      
                        | 59 |   |         static int ind=0;  | 
                      
                        | 60 |   |         static double dW; // increase of W  | 
                      
                        | 61 |   |         static double Ww; // W  | 
                      
                        | 62 |   |         static double Mz; // W  | 
                      
                        | 63 |   |         if ( t>=dt_prof*ind )  | 
                      
                        | 64 |   |         {  | 
                      
                        | 65 |   |             ind++;  | 
                      
                        | 66 |   |             // check omega profile and set dW  | 
                      
                        | 67 |   |                         if ( ind <2 && profileWw.length() ==1 )  | 
                      
                        | 68 |   |                         {  | 
                      
                        | 69 |   |                                 Ww=profileWw ( 0 );  | 
                      
                        | 70 |   |                                 dW=0.0;  | 
                      
                        | 71 |   |                         }  | 
                      
                        | 72 |   |                         if ( ind<profileWw.length() )  | 
                      
                        | 73 |   |             {  | 
                      
                        | 74 |   |                     dW = profileWw ( ind )-profileWw ( ind-1 );  | 
                      
                        | 75 |   |                     dW *=125e-6/dt_prof;  | 
                      
                        | 76 |   |             }  | 
                      
                        | 77 |   |             else  | 
                      
                        | 78 |   |             {  | 
                      
                        | 79 |   |                 dW = 0;  | 
                      
                        | 80 |   |             }  | 
                      
                        | 81 |   |             // Check Mz profile and set Mz  | 
                      
                        | 82 |   |             if ( ind<profileMz.length() )  | 
                      
                        | 83 |   |             {  | 
                      
                        | 84 |   |                 //sudden increase  | 
                      
                        | 85 |   |                 Mz = profileMz(ind);  | 
                      
                        | 86 |   |             }  | 
                      
                        | 87 |   |             else  | 
                      
                        | 88 |   |             {  | 
                      
                        | 89 |   |                 Mz = 0;  | 
                      
                        | 90 |   |             }  | 
                      
                        | 91 |   |         }  | 
                      
                        | 92 |   |         Ww += dW;  | 
                      
                        | 93 |   |         //Simulate Dt seconds!  | 
                      
                        | 94 |   |         for ( int i=0; i<Dt; i++ )  | 
                      
                        | 95 |   |         {  | 
                      
                        | 96 |   |             pmsmsim_step ( Ww , Mz);  | 
                      
                        | 97 |   |         }  | 
                      
                        | 98 |   | //              for ( int i=0;i<Dt;i++ ) {      pmsmsim_noreg_step ( Ww , Mz);}  | 
                      
                      
                        |   | 37 |     //! Get measurements and signal plans from ELS3 controllers  | 
                      
                        |   | 38 |     void getdata ( vec &dt ) const;  |