From 24b7d8282a45649ea26b89146a37810085c6d96e Mon Sep 17 00:00:00 2001
From: Maxime Graulich <maxime.graulich@gmail.com>
Date: Wed, 3 Jul 2013 11:16:21 +0000
Subject: [PATCH] Files used in native code are now in a zip file

---
 contrib/mobile/Android/res/raw/bh_pro         |  59 --
 .../Android/res/raw/machine_magstadyn_a_pro   | 938 ------------------
 .../mobile/Android/res/raw/magnet_data_pro    |  16 -
 contrib/mobile/Android/res/raw/magnet_geo     |  93 --
 contrib/mobile/Android/res/raw/magnet_pro     |  69 --
 .../mobile/Android/res/raw/magnetostatics_pro | 209 ----
 contrib/mobile/Android/res/raw/models.zip     | Bin 0 -> 23732 bytes
 .../Android/res/raw/pmsm_8p_circuit_pro       | 123 ---
 contrib/mobile/Android/res/raw/pmsm_data_geo  | 104 --
 contrib/mobile/Android/res/raw/pmsm_geo       |  95 --
 contrib/mobile/Android/res/raw/pmsm_geo_pro   | 211 ----
 contrib/mobile/Android/res/raw/pmsm_pro       | 211 ----
 contrib/mobile/Android/res/raw/pmsm_rotor_geo | 163 ---
 .../mobile/Android/res/raw/pmsm_stator_geo    | 215 ----
 .../src/org/geuz/onelab/ModelList.java        |   2 +-
 .../src/org/geuz/onelab/SplashScreen.java     |  46 +-
 16 files changed, 17 insertions(+), 2537 deletions(-)
 delete mode 100644 contrib/mobile/Android/res/raw/bh_pro
 delete mode 100644 contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_data_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_geo
 delete mode 100644 contrib/mobile/Android/res/raw/magnet_pro
 delete mode 100644 contrib/mobile/Android/res/raw/magnetostatics_pro
 create mode 100644 contrib/mobile/Android/res/raw/models.zip
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_data_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_geo_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_pro
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_rotor_geo
 delete mode 100644 contrib/mobile/Android/res/raw/pmsm_stator_geo

diff --git a/contrib/mobile/Android/res/raw/bh_pro b/contrib/mobile/Android/res/raw/bh_pro
deleted file mode 100644
index 1458d87c83..0000000000
--- a/contrib/mobile/Android/res/raw/bh_pro
+++ /dev/null
@@ -1,59 +0,0 @@
-Function{
-  // nu = 100. + 10. * exp ( 1.8 * b * b )
-  // analytical
-  nu_1a[] = 100. + 10. * Exp[1.8*SquNorm[$1]] ;
-  dnudb2_1a[] = 18. * Exp[1.8*SquNorm[$1]] ;
-  h_1a[] = nu_1a[$1]*$1 ;
-  dhdb_1a[] = TensorDiag[1,1,1] * nu_1a[$1#1] + 2*dnudb2_1a[#1] * SquDyadicProduct[#1]  ;
-  dhdb_1a_NL[] = 2*dnudb2_1a[$1] * SquDyadicProduct[$1]  ;
-
-  // interpolated
-  Mat1_h = {
-    0.0000e+00, 5.5023e+00, 1.1018e+01, 1.6562e+01, 2.2149e+01, 2.7798e+01, 3.3528e+01,
-    3.9363e+01, 4.5335e+01, 5.1479e+01, 5.7842e+01, 6.4481e+01, 7.1470e+01, 7.8906e+01,
-    8.6910e+01, 9.5644e+01, 1.0532e+02, 1.1620e+02, 1.2868e+02, 1.4322e+02, 1.6050e+02,
-    1.8139e+02, 2.0711e+02, 2.3932e+02, 2.8028e+02, 3.3314e+02, 4.0231e+02, 4.9395e+02,
-    6.1678e+02, 7.8320e+02, 1.0110e+03, 1.3257e+03, 1.7645e+03, 2.3819e+03, 3.2578e+03,
-    4.5110e+03, 6.3187e+03, 8.9478e+03, 1.2802e+04, 1.8500e+04, 2.6989e+04, 3.9739e+04,
-    5.9047e+04, 8.8520e+04, 1.3388e+05, 2.0425e+05, 3.1434e+05, 4.8796e+05, 7.6403e+05
-  } ;
-  Mat1_b = {
-    0.0000e+00, 5.0000e-02, 1.0000e-01, 1.5000e-01, 2.0000e-01, 2.5000e-01, 3.0000e-01,
-    3.5000e-01, 4.0000e-01, 4.5000e-01, 5.0000e-01, 5.5000e-01, 6.0000e-01, 6.5000e-01,
-    7.0000e-01, 7.5000e-01, 8.0000e-01, 8.5000e-01, 9.0000e-01, 9.5000e-01, 1.0000e+00,
-    1.0500e+00, 1.1000e+00, 1.1500e+00, 1.2000e+00, 1.2500e+00, 1.3000e+00, 1.3500e+00,
-    1.4000e+00, 1.4500e+00, 1.5000e+00, 1.5500e+00, 1.6000e+00, 1.6500e+00, 1.7000e+00,
-    1.7500e+00, 1.8000e+00, 1.8500e+00, 1.9000e+00, 1.9500e+00, 2.0000e+00, 2.0500e+00,
-    2.1000e+00, 2.1500e+00, 2.2000e+00, 2.2500e+00, 2.3000e+00, 2.3500e+00, 2.4000e+00
-  } ;
-  Mat1_b2 = {
-    0.0000e+00, 2.5000e-03, 1.0000e-02, 2.2500e-02, 4.0000e-02, 6.2500e-02, 9.0000e-02,
-    1.2250e-01, 1.6000e-01, 2.0250e-01, 2.5000e-01, 3.0250e-01, 3.6000e-01, 4.2250e-01,
-    4.9000e-01, 5.6250e-01, 6.4000e-01, 7.2250e-01, 8.1000e-01, 9.0250e-01, 1.0000e+00,
-    1.1025e+00, 1.2100e+00, 1.3225e+00, 1.4400e+00, 1.5625e+00, 1.6900e+00, 1.8225e+00,
-    1.9600e+00, 2.1025e+00, 2.2500e+00, 2.4025e+00, 2.5600e+00, 2.7225e+00, 2.8900e+00,
-    3.0625e+00, 3.2400e+00, 3.4225e+00, 3.6100e+00, 3.8025e+00, 4.0000e+00, 4.2025e+00,
-    4.4100e+00, 4.6225e+00, 4.8400e+00, 5.0625e+00, 5.2900e+00, 5.5225e+00, 5.7600e+00
-  } ;
-  Mat1_nu = {
-    1.1005e+02, 1.1005e+02, 1.1018e+02, 1.1041e+02, 1.1075e+02, 1.1119e+02, 1.1176e+02,
-    1.1247e+02, 1.1334e+02, 1.1440e+02, 1.1568e+02, 1.1724e+02, 1.1912e+02, 1.2139e+02,
-    1.2416e+02, 1.2752e+02, 1.3165e+02, 1.3671e+02, 1.4297e+02, 1.5076e+02, 1.6050e+02,
-    1.7275e+02, 1.8829e+02, 2.0810e+02, 2.3356e+02, 2.6651e+02, 3.0947e+02, 3.6589e+02,
-    4.4056e+02, 5.4014e+02, 6.7397e+02, 8.5528e+02, 1.1028e+03, 1.4436e+03, 1.9164e+03,
-    2.5777e+03, 3.5104e+03, 4.8366e+03, 6.7381e+03, 9.4870e+03, 1.3494e+04, 1.9385e+04,
-    2.8118e+04, 4.1172e+04, 6.0854e+04, 9.0779e+04, 1.3667e+05, 2.0764e+05, 3.1835e+05
-  } ;
-
-  Mat1_nu_b2  = ListAlt[Mat1_b2, Mat1_nu] ;
-  nu_1[] = InterpolationLinear[$1]{List[Mat1_nu_b2]} ;
-  dnudb2_1[] = dInterpolationLinear[$1]{List[Mat1_nu_b2]} ;
-  h_1[] = nu_1[(SquNorm[$1])] * $1 ;
-  dhdb_1[] = TensorDiag[1,1,1] * nu_1[SquNorm[$1]#1] + 2*dnudb2_1[#1] * SquDyadicProduct[$1]  ;
-}
-
-
-
-
-
-
diff --git a/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro b/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
deleted file mode 100644
index f58a22b84a..0000000000
--- a/contrib/mobile/Android/res/raw/machine_magstadyn_a_pro
+++ /dev/null
@@ -1,938 +0,0 @@
-Group {
-  DefineGroup[ DomainM, DomainB, DomainS ];
-  DefineGroup[ DomainL, DomainNL, Dummy ];
-  DefineGroup[ Rotor_Inds, Rotor_IndsP, Rotor_IndsN, Rotor_Magnets, Rotor_Bars ];
-  DefineGroup[ Surf_bn0, Rotor_Bnd_MBaux] ;
-  DefineGroup[ Resistance_Cir, Inductance_Cir, Capacitance_Cir, DomainZt_Cir, DomainSource_Cir ];
-}
-
-Function{
-
-  DefineConstant[ Flag_Cir, Flag_NL, Flag_ParkTransformation ];
-  DefineConstant[ Term_vxb ];
-  DefineConstant[ AxialLength        = {1, Visible 0},
-                  FillFactor_Winding = {1, Visible 0},
-                  Factor_R_3DEffects = {1, Visible 0},
-                  SymmetryFactor     = {1, Visible 0} ];
-
-  Flag_Symmetry = (SymmetryFactor==1) ? 0 : 1 ;
-
-  DefineConstant[ Nb_max_iter        = {20, Visible 0},
-                  relaxation_factor  = {1, Visible 0},
-                  stop_criterion     = {1e-5, Visible 0},
-                  reltol             = {1e-7, Visible 0},
-                  abstol             = {1e-5, Visible 0} ];
-
-  DefineConstant[ II, VV, pA, pB, pC, Ie, ID, IQ, I0 ];
-  DefineFunction[ br, js, Resistance, Inductance, Capacitance ];
-  DefineFunction[ Theta_Park, Theta_Park_deg, RotorPosition, RotorPosition_deg ] ;
-
-
-  DefineConstant[ Flag_SrcType_Rotor = {0, Visible 0} ];
-
-  DefineConstant[ Clean_Results = { 1, Choices {0,1},
-    Label "Remove previous result files",
-    Path "Input/1", Visible 1 } ] ;
-
-  DefineConstant[ Flag_SaveAllSteps = {0, Label "Save all time steps",
-      Path "Input/0", Choices {0,1}} ];
-
-  DefineConstant[ my_output={"Output/40T_rotor", Visible 0}];
-
-}
-
-Include "bh.pro"; // nonlinear BH caracteristic of magnetic material
-
-Group {
-
-  Inds = Region[ {Stator_Inds, Rotor_Inds} ] ;
-
-  DomainB = Region[ {Inds} ] ;
-  DomainM = Region[ {Rotor_Magnets} ] ;
-
-  Stator  = Region[{ StatorC, StatorCC }] ;
-  Rotor   = Region[{ RotorC,  RotorCC }] ;
-
-  Rotor_Moving = Region[{ Rotor, Rotor_Air, Rotor_Airgap, Rotor_Inds, Rotor_Bnd_MBaux} ] ; // Use in ChangeOfCoordinates
-
-  MB  = MovingBand2D[ MovingBand_PhysicalNb, Stator_Bnd_MB, Rotor_Bnd_MB, SymmetryFactor] ;
-  Air = Region[{ Rotor_Air, Rotor_Airgap, Stator_Air, Stator_Airgap, MB } ] ;
-  Inds = Region[{ Rotor_Inds, Stator_Inds } ] ;
-
-  DomainV = Region[{}]; // Speed considered either with term v/\b
-  If(Term_vxb) // or not dynamics in time domain + mechanics
-    DomainV = Region[{ RotorC }];
-  EndIf
-
-  DomainCC = Region[{ Air, Inds, StatorCC, RotorCC }];
-  DomainC  = Region[{ StatorC, RotorC }];
-  Domain  = Region[{ DomainCC, DomainC }] ;
-
-  If(Flag_NL)
-    DomainNL = Region[ {Stator_Fe, Rotor_Fe } ];
-    DomainL  = Region[ {Domain,-DomainNL} ];
-  EndIf
-
-  DomainKin = #1234 ; // Dummy region number for mechanical equation
-  DomainDummy = #12345 ; // Dummy region number for mechanical equation
-}
-
-Function {
-  mu0 = 4.e-7 * Pi ;
-
-  sigma_al = 3.72e7 ; // conductivity of aluminum [S/m]
-  sigma_cu = 5.9e7  ; // conductivity of copper [S/m]
-
-  nu [#{Air, Inds, Stator_Al, Rotor_Al, Stator_Cu, Rotor_Cu, Rotor_Magnets, Rotor_Bars}]  = 1. / mu0 ;
-
-  If(!Flag_NL)
-    nu [#{Stator_Fe, Rotor_Fe }]  = 1 / (mur_fe * mu0) ;
-  EndIf
-  If(Flag_NL)
-   nu [#{Stator_Fe, Rotor_Fe }] = nu_1a[$1] ;
-  EndIf
-  dhdb_NL [ DomainNL ] = dhdb_1a_NL[$1];
-
-  sigma[#{Rotor_Fe}] = sigma_fe ;
-  sigma[#{Rotor_Al, Stator_Al}] = sigma_al ;
-  sigma[#{Rotor_Cu, Stator_Cu}] = sigma_cu ;
-  sigma[#{Inds}] = sigma_cu ;
-
-  rho[] = 1/sigma[] ;
-
-  Rb[] = Factor_R_3DEffects*AxialLength*FillFactor_Winding*NbWires[]^2/SurfCoil[]/sigma[] ;
-  Resistance[#{Stator_Inds, Rotor_Inds}] = Rb[] ;
-
-  T = 1/Freq ; // Fundamental period in s
-
-  Idir[#{Stator_IndsP, Rotor_IndsP}] =  1 ;
-  Idir[#{Stator_IndsN, Rotor_IndsN}] = -1 ;
-
-  // Functions for Park transformation
-  Idq0[] = Vector[ ID, IQ, I0 ] ;
-  Pinv[] = Tensor[ Sin[Theta_Park[]],        Cos[Theta_Park[]],        1,
-                   Sin[Theta_Park[]-2*Pi/3], Cos[Theta_Park[]-2*Pi/3], 1,
-                   Sin[Theta_Park[]+2*Pi/3], Cos[Theta_Park[]+2*Pi/3], 1 ];
-
-  P[] = 2/3 * Tensor[ Sin[Theta_Park[]], Sin[Theta_Park[]-2*Pi/3], Sin[Theta_Park[]+2*Pi/3],
-                      Cos[Theta_Park[]], Cos[Theta_Park[]-2*Pi/3], Cos[Theta_Park[]+2*Pi/3],
-                      1/2, 1/2, 1/2 ] ;
-
-  Iabc[]     = Pinv[] * Idq0[] ;
-  Flux_dq0[] = P[] * Vector[#11, #22, #33] ;
-
-  If(Flag_ParkTransformation)
-    II = 1 ;
-    IA[] = CompX[ Iabc[] ] ;
-    IB[] = CompY[ Iabc[] ] ;
-    IC[] = CompZ[ Iabc[] ] ;
-  EndIf
-  If(!Flag_ParkTransformation)
-    IA[] = F_Sin_wt_p[]{2*Pi*Freq, pA} ;
-    IB[] = F_Sin_wt_p[]{2*Pi*Freq, pB} ;
-    IC[] = F_Sin_wt_p[]{2*Pi*Freq, pC} ;
-
-    js[PhaseA] = II * NbWires[]/SurfCoil[] * IA[] * Idir[] * Vector[0, 0, 1] ;
-    js[PhaseB] = II * NbWires[]/SurfCoil[] * IB[] * Idir[] * Vector[0, 0, 1] ;
-    js[PhaseC] = II * NbWires[]/SurfCoil[] * IC[] * Idir[] * Vector[0, 0, 1] ;
-  EndIf
-
-  Velocity[] = wr*XYZ[]/\Vector[0,0,1] ;
-
-  // Maxwell stress tensor
-  T_max[] = ( SquDyadicProduct[$1] - SquNorm[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ;
-  T_max_cplx[] = ( TensorV[CompX[$1]*Conj[$1],CompY[$1]*Conj[$1],CompZ[$1]*Conj[$1]] - $1*Conj[$1] * TensorDiag[0.5, 0.5, 0.5] ) / mu0 ; // Check if valid
-
-
-  AngularPosition[] = (Atan2[$Y,$X]#7 >= 0.)? #7 : #7+2*Pi ;
-
-  RotatePZ[] = Rotate[ Vector[$X,$Y,$Z], 0, 0, $1 ] ;//Watch out: Do not use XYZ[]!
-
-  // Kinematics
-  Inertia = 8.3e-3 ; //87
-  Friction[] = 0 ;
-
-  Fmag[] = #55 ; // Computed in postprocessing
-}
-
-//-------------------------------------------------------------------------------------
-
-Jacobian {
-  { Name Vol; Case { { Region All ; Jacobian Vol; } } }
-}
-
-Integration {
-  { Name I1 ; Case {
-      { Type Gauss ;
-        Case {
-          { GeoElement Triangle   ; NumberOfPoints  6 ; }
-	  { GeoElement Quadrangle ; NumberOfPoints  4 ; }
-	  { GeoElement Line       ; NumberOfPoints  13 ; }
-        }
-      }
-    }
-  }
-}
-
-//-------------------------------------------------------------------------------------
-
-Constraint {
-
-  { Name MVP_2D ;
-    Case {
-      { Region Surf_Inf ; Type Assign; Value 0. ; }
-      { Region Surf_bn0 ; Type Assign; Value 0. ; }
-
-      If(Flag_Symmetry)
-        { Region Surf_cutA1; SubRegion Region[{Surf_Inf,Surf_bn0}]; Type Link;
-          RegionRef Surf_cutA0; SubRegionRef Region[{Surf_Inf,Surf_bn0}];
-          Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; }
-        { Region Surf_cutA1; Type Link; RegionRef Surf_cutA0;
-          Coefficient (NbrPoles%2)?-1:1 ; Function RotatePZ[-NbrPoles*2*Pi/NbrPolesTot]; }
-
-        //For the moving band
-        For k In {1:SymmetryFactor-1}
-        { Region Rotor_Bnd_MB~{k+1} ; SubRegion Rotor_Bnd_MB~{(k!=SymmetryFactor-1)?k+2:1}; Type Link;
-          RegionRef Rotor_Bnd_MB_1; SubRegionRef Rotor_Bnd_MB_2;
-          Coefficient ((NbrPoles%2)?-1:1)^(k); Function RotatePZ[-k*NbrPoles*2*Pi/NbrPolesTot]; }
-        EndFor
-
-      EndIf
-    }
-  }
-
-  { Name Current_2D ;
-    Case {
-      If(Flag_SrcType_Stator==1)
-        { Region PhaseA     ; Value II*Idir[] ; TimeFunction IA[]; }
-        { Region PhaseB     ; Value II*Idir[] ; TimeFunction IB[]; }
-        { Region PhaseC     ; Value II*Idir[] ; TimeFunction IC[]; }
-      EndIf
-      If(Flag_SrcType_Rotor==1)
-        { Region Rotor_Inds ; Value Ie*Idir[] ; }
-      EndIf
-    }
-  }
-
-  { Name Voltage_2D ;
-    Case {
-      { Region RotorC  ; Value 0. ; } // Not needed if Global equation not in formulation
-      { Region StatorC ; Value 0. ; } // Not needed if Global equation not in formulation
-    }
-  }
-
-  { Name Current_Cir ;
-    Case {
-      If(Flag_Cir && Flag_SrcType_Stator==1)
-        { Region Input1  ; Value II  ; TimeFunction IA[]; }
-        { Region Input2  ; Value II  ; TimeFunction IB[]; }
-        { Region Input3  ; Value II  ; TimeFunction IC[]; }
-      EndIf
-    }
-  }
-
-  { Name Voltage_Cir ; // Example induction machine
-    Case {
-      If(Flag_Cir && Flag_SrcType_Stator==2 && !Flag_NL)
-        { Region Input1  ; Value VV  ; TimeFunction IA[]; }
-        { Region Input2  ; Value VV  ; TimeFunction IB[]; }
-        { Region Input3  ; Value VV  ; TimeFunction IC[]; }
-      EndIf
-      If(Flag_Cir && Flag_SrcType_Stator==2 && Flag_NL)
-        { Region Input1  ; Value VV  ; TimeFunction IA[]*Frelax[]; }
-        { Region Input2  ; Value VV  ; TimeFunction IB[]*Frelax[]; }
-        { Region Input3  ; Value VV  ; TimeFunction IC[]*Frelax[]; }
-      EndIf
-    }
-  }
-
-
-  //Kinetics
-  { Name CurrentPosition ;
-    Case {
-      { Region DomainKin ; Type Init ; Value 0.#66 ; }
-    }
-  }
-
-  { Name CurrentVelocity ;
-    Case {
-      { Region DomainKin ; Type Init ; Value wr ; } // wr in [0,1200] rad/s
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-FunctionSpace {
-
-  { Name Hcurl_a_2D ; Type Form1P ;
-    BasisFunction {
-      { Name se1 ; NameOfCoef ae1 ; Function BF_PerpendicularEdge ;
-        Support Region[{ Domain, Rotor_Bnd_MBaux }] ; Entity NodesOf [ All ] ; }
-   }
-    Constraint {
-      { NameOfCoef ae1 ; EntityType NodesOf ; NameOfConstraint MVP_2D ; }
-    }
-  }
-
-  // Gradient of Electric scalar potential (2D)
-  { Name Hregion_u_Mag_2D ; Type Form1P ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ur ; Function BF_RegionZ ;
-        Support DomainC ; Entity DomainC ; }
-    }
-    GlobalQuantity {
-      { Name U ; Type AliasOf        ; NameOfCoef ur ; }
-      { Name I ; Type AssociatedWith ; NameOfCoef ur ; }
-    }
-    Constraint {
-      { NameOfCoef U ; EntityType GroupsOfNodesOf ; NameOfConstraint Voltage_2D ; }
-      { NameOfCoef I ; EntityType GroupsOfNodesOf ; NameOfConstraint Current_2D ; }
-    }
-  }
-
-  { Name Hregion_i_Mag_2D ; Type Vector ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_RegionZ ;
-        Support DomainB ; Entity DomainB ; }
-    }
-    GlobalQuantity {
-      { Name Ib ; Type AliasOf        ; NameOfCoef ir ; }
-      { Name Ub ; Type AssociatedWith ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef Ub ; EntityType Region ; NameOfConstraint Voltage_2D ; }
-      { NameOfCoef Ib ; EntityType Region ; NameOfConstraint Current_2D ; }
-    }
-  }
-
-  { Name Hregion_Z ; Type Scalar ; // Circuit equations
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainZt_Cir ; Entity DomainZt_Cir ; }
-    }
-    GlobalQuantity {
-      { Name Iz ; Type AliasOf        ; NameOfCoef ir ; }
-      { Name Uz ; Type AssociatedWith ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef Uz ; EntityType Region ; NameOfConstraint Voltage_Cir ; }
-      { NameOfCoef Iz ; EntityType Region ; NameOfConstraint Current_Cir ; }
-    }
-  }
-
-  // For use in Mechanical equation
-  { Name Position ; Type Scalar ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainKin ; Entity DomainKin ; }
-    }
-    GlobalQuantity {
-      { Name P ; Type AliasOf  ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef P ; EntityType Region ; NameOfConstraint CurrentPosition ; }
-    }
-  }
-
-
-  { Name Velocity ; Type Scalar ;
-    BasisFunction {
-      { Name sr ; NameOfCoef ir ; Function BF_Region ;
-        Support DomainKin ; Entity DomainKin ; } }
-    GlobalQuantity {
-      { Name V ; Type AliasOf ; NameOfCoef ir ; }
-    }
-    Constraint {
-      { NameOfCoef V ; EntityType Region ; NameOfConstraint CurrentVelocity ; }
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-Formulation {
-
-  { Name MagSta_a_2D ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local  ; NameOfSpace Hcurl_a_2D ; }
-
-      { Name ir ; Type Local  ; NameOfSpace Hregion_i_Mag_2D ; }
-      { Name Ub ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ub] ; }
-      { Name Ib ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ib] ; }
-
-      { Name Uz ; Type Global ; NameOfSpace Hregion_Z [Uz] ; }
-      { Name Iz ; Type Global ; NameOfSpace Hregion_Z [Iz] ; }
-    }
-
-    Equation {
-      Galerkin { [ nu[{d a}] * Dof{d a}  , {d a} ] ;
-        In Domain ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ;
-        In DomainNL ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin {  [  0*Dof{d a} , {d a} ]  ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1
-        In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; }
-
-      Galerkin { [ -nu[] * br[] , {d a} ] ;
-        In DomainM ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-        In DomainS ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -NbWires[]/SurfCoil[] * Dof{ir} , {a} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { DtDof [ AxialLength * NbWires[]/SurfCoil[] * Dof{a} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{Ub}/SymmetryFactor, {Ib} ] ; In DomainB ; }
-      Galerkin { [ Rb[]/SurfCoil[]* Dof{ir} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-
-      // GlobalTerm { [ Resistance[]  * Dof{Ib} , {Ib} ] ; In DomainB ; }
-      // The above term can replace:
-      // Galerkin{ [ NbWires[]/SurfCoil[] / sigma[] * NbWires[]/SurfCoil[] * Dof{ir}, {ir} ]
-      // if we have an estimation of the resistance of DomainB, via e.g. measurements
-
-      If(Flag_Cir)
-	GlobalTerm { NeverDt[ Dof{Uz}                , {Iz} ] ; In Resistance_Cir ; }
-        GlobalTerm { NeverDt[ Resistance[] * Dof{Iz} , {Iz} ] ; In Resistance_Cir ; }
-
-	GlobalTerm { [ 0. * Dof{Iz} , {Iz} ] ; In DomainSource_Cir ; }
-        GlobalTerm { [ 0. * Dof{Uz} , {Iz} ] ; In DomainZt_Cir ; }
-
-        GlobalEquation {
-          Type Network ; NameOfConstraint ElectricalCircuit ;
-          { Node {Iz}; Loop {Uz}; Equation {Uz}; In DomainZt_Cir ; }
-          { Node {Ib}; Loop {Ub}; Equation {Ub}; In DomainB ; }
-         }
-      EndIf
-    }
-  }
-
-  { Name MagDyn_a_2D ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local  ; NameOfSpace Hcurl_a_2D ; }
-      { Name ur ; Type Local  ; NameOfSpace Hregion_u_Mag_2D ; }
-      { Name I  ; Type Global ; NameOfSpace Hregion_u_Mag_2D [I] ; }
-      { Name U  ; Type Global ; NameOfSpace Hregion_u_Mag_2D [U] ; }
-
-      { Name ir ; Type Local  ; NameOfSpace Hregion_i_Mag_2D ; }
-      { Name Ub ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ub] ; }
-      { Name Ib ; Type Global ; NameOfSpace Hregion_i_Mag_2D [Ib] ; }
-
-      { Name Uz ; Type Global ; NameOfSpace Hregion_Z [Uz] ; }
-      { Name Iz ; Type Global ; NameOfSpace Hregion_Z [Iz] ; }
-    }
-    Equation {
-      Galerkin { [ nu[{d a}] * Dof{d a}  , {d a} ] ;
-        In Domain ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { JacNL [ dhdb_NL[{d a}] * Dof{d a} , {d a} ] ;
-        In DomainNL ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin {  [  0*Dof{d a} , {d a} ]  ; // DO NOT REMOVE!!! - Keeping track of Dofs in auxiliary line of MB if Symmetry=1
-        In Rotor_Bnd_MBaux; Jacobian Vol; Integration I1; }
-
-      Galerkin { [ -nu[] * br[] , {d a} ] ;
-        In DomainM ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { DtDof[ sigma[] * Dof{a} , {a} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { [ sigma[] * Dof{ur}, {a} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -sigma[] * (Velocity[] *^ Dof{d a}) , {a} ] ;
-        In DomainV ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-        In DomainS ; Jacobian Vol ; Integration I1 ; }
-
-      Galerkin { DtDof[ sigma[] * Dof{a} , {ur} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { [ sigma[] * Dof{ur} , {ur} ] ;
-        In DomainC ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{I} , {U} ] ; In DomainC ; }
-
-      Galerkin { [ -NbWires[]/SurfCoil[] * Dof{ir} , {a} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      Galerkin { DtDof [ AxialLength * NbWires[]/SurfCoil[] * Dof{a} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; }
-      GlobalTerm { [ Dof{Ub}/SymmetryFactor , {Ib} ] ; In DomainB ; }
-      Galerkin { [ Rb[]/SurfCoil[]* Dof{ir} , {ir} ] ;
-        In DomainB ; Jacobian Vol ; Integration I1 ; } // Resistance term
-
-      // GlobalTerm { [ Resistance[]  * Dof{Ib} , {Ib} ] ; In DomainB ; }
-      // The above term can replace the resistance term:
-      // if we have an estimation of the resistance of DomainB, via e.g. measurements
-      // which is better to account for the end windings...
-
-      If(Flag_Cir)
-	GlobalTerm { NeverDt[ Dof{Uz}                , {Iz} ] ; In Resistance_Cir ; }
-        GlobalTerm { NeverDt[ Resistance[] * Dof{Iz} , {Iz} ] ; In Resistance_Cir ; }
-
-	GlobalTerm { [ Dof{Uz}                      , {Iz} ] ; In Inductance_Cir ; }
-	GlobalTerm { DtDof [ Inductance[] * Dof{Iz} , {Iz} ] ; In Inductance_Cir ; }
-
-	GlobalTerm { NeverDt[ Dof{Iz}        , {Iz} ] ; In Capacitance_Cir ; }
-	GlobalTerm { DtDof [ Capacitance[] * Dof{Uz} , {Iz} ] ; In Capacitance_Cir ; }
-
-	GlobalTerm { [ 0. * Dof{Iz} , {Iz} ] ; In DomainZt_Cir ; }
-        GlobalTerm { [ 0. * Dof{Uz} , {Iz} ] ; In DomainZt_Cir ; }
-
-        GlobalEquation {
-          Type Network ; NameOfConstraint ElectricalCircuit ;
-          { Node {I};  Loop {U};  Equation {I};  In DomainC ; }
-          { Node {Ib}; Loop {Ub}; Equation {Ub}; In DomainB ; }
-          { Node {Iz}; Loop {Uz}; Equation {Uz}; In DomainZt_Cir ; }
-         }
-      EndIf
-    }
-  }
-
-
- //--------------------------------------------------------------------------
-  // Mechanics
-  //--------------------------------------------------------------------------
-  { Name Mechanical ; Type FemEquation ;
-    Quantity {
-      { Name V ; Type Global ; NameOfSpace Velocity [V] ; } // velocity
-      { Name P ; Type Global ; NameOfSpace Position [P] ; } // position
-    }
-    Equation {
-      GlobalTerm { DtDof [ Inertia * Dof{V} , {V} ] ; In DomainKin ; }
-      GlobalTerm { [ Friction[] * Dof{V} , {V} ] ; In DomainKin ; }
-      GlobalTerm { [             -Fmag[] , {V} ] ; In DomainKin ; }
-
-      GlobalTerm { DtDof [ Dof{P} , {P} ] ; In DomainKin ; }
-      GlobalTerm {       [-Dof{V} , {P} ] ; In DomainKin ; }
-    }
-  }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-Resolution {
-
-  { Name TimeDomain ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-    }
-    Operation {
-      CreateDir["res/"];
-      If[ Clean_Results==1 ]{
-        DeleteFile["res/temp.dat"];
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-        DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"];
-        DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"];
-      }
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      InitSolution[A] ;
-      If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; }
-      If[!Flag_NL]{
-        Generate[A] ; Solve[A] ;
-      }
-      Else{
-        //IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor]
-        // { GenerateJac[A] ; SolveJac[A] ; }
-        IterativeLoopN[ Nb_max_iter, relaxation_factor,
-                        System { {A, reltol, abstol, Solution MeanL2Norm}} ]
-          { GenerateJac[A] ; SolveJac[A] ; }
-      }
-      SaveSolution[A] ;
-      PostOperation[Get_LocalFields] ;
-      PostOperation[Get_GlobalQuantities] ;
-    }
-  }
-
-  { Name TimeDomain_Loop ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-    }
-    Operation {
-      CreateDir["res/"];
-      If[ Clean_Results==1 ]{
-        DeleteFile["res/temp.dat"];
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-        DeleteFile["res/Flux_a.dat"]; DeleteFile["res/Flux_b.dat"]; DeleteFile["res/Flux_c.dat"];
-        DeleteFile["res/Flux_d.dat"]; DeleteFile["res/Flux_q.dat"]; DeleteFile["res/Flux_0.dat"];
-      }
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      InitSolution[A] ;
-      TimeLoopTheta[time0, timemax, delta_time, 1.]{ // Euler implicit (1) -- Crank-Nicolson (0.5)
-        If[Flag_ParkTransformation && Flag_SrcType_Stator==1]{ PostOperation[ThetaPark_IABC] ; }
-        If[!Flag_NL]{
-	  Generate[A]; Solve[A];
-        }
-        Else{
-          // IterativeLoop[Nb_max_iter, stop_criterion, relaxation_factor] {
-            //  GenerateJac[A] ; SolveJac[A] ; }
-          IterativeLoopN[
-            Nb_max_iter, relaxation_factor, System { {A, reltol, abstol, Solution MeanL2Norm}} ]{
-            GenerateJac[A] ; SolveJac[A] ; }
-        }
-        SaveSolution[A];
-
-        PostOperation[Get_LocalFields] ;
-        If[ $TimeStep > 1 ]{
-          PostOperation[Get_GlobalQuantities] ;
-        }
-        ChangeOfCoordinates[ NodesOf[Rotor_Moving], RotatePZ[delta_theta]] ;
-        MeshMovingBand2D[MB] ;
-      }
-    }
-  }
-
-  { Name FrequencyDomain ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; Type ComplexValue ; Frequency Freq ; }
-    }
-    Operation {
-      If[ Clean_Results==1 && wr == 0.]{
-        DeleteFile["res/Tr.dat"]; DeleteFile["res/Ts.dat"]; DeleteFile["res/Tmb.dat"];
-        DeleteFile["res/Ua.dat"]; DeleteFile["res/Ub.dat"]; DeleteFile["res/Uc.dat"];
-        DeleteFile["res/Ia.dat"]; DeleteFile["res/Ib.dat"]; DeleteFile["res/Ic.dat"];
-      }
-      SetTime[wr];
-      InitMovingBand2D[MB] ;
-      MeshMovingBand2D[MB] ;
-      Generate[A] ; Solve[A] ; SaveSolution[A];
-      PostOperation[Map_LocalFields] ;
-      PostOperation[Torque_Emf_Flux] ;
-    }
-  }
-
-  /*
-  { Name  MagDyn_Kin ;
-    System {
-      { Name A ; NameOfFormulation MagDyn_a_2D ; }
-      { Name M ; NameOfFormulation Mechanical ; }
-    }
-    Operation {
-      ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[theta0] ] ; // Initial position (supposing initial mesh with angleR=0)
-      InitMovingBand2D[MB] ; MeshMovingBand2D[MB] ;
-
-      InitSolution[A] ; SaveSolution[A] ;
-      InitSolution[M] ; SaveSolution[M] ;
-
-      TimeLoopTheta[time0, timemax, delta_time, 1.]{
-	Generate[A] ; Solve[A] ;  SaveSolution[A] ;
-        PostOperation[MagDyn_a_2D] ;
-
-        Generate[M] ; Solve[M] ; SaveSolution[M] ;
-        PostOperation[Mechanical] ;
-
-        ChangeOfCoordinates [ NodesOf[Rotor_Moving], RotatePZ[#77-#66] ] ;
-        Evaluate[ #77#66 ] ; //Keep track of previous angular position
-        MeshMovingBand2D[MB] ;
-      }
-    }
-  }
-  */
-
-}
-
-//-----------------------------------------------------------------------------------------------
-
-PostProcessing {
-
- { Name MagSta_a_2D ; NameOfFormulation MagSta_a_2D ;
-   PostQuantity {
-     { Name a ; Value { Term { [  {a} ]   ; In Domain ; Jacobian Vol ; } } }
-     { Name az ; Value { Term { [  CompZ[{a}] ]   ; In Domain ; Jacobian Vol ; } } }
-     { Name b  ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name boundary  ; Value { Term { [ {d a} ] ; In Dummy ; Jacobian Vol ; } } }
-     { Name br  ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } }
-
-     { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ;
-           In Inds  ; Jacobian Vol ; Integration I1 ; } } }
-     { Name Force_vw ; Value {
-         Integral { Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB];
-           Jacobian Vol ; Integration I1 ; } } }
-
-     { Name Torque_Maxwell ;  Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ]*2*Pi*AxialLength/SurfaceArea[]  ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; } } }
-
-     { Name Torque_vw ; Value {
-         Integral { Type Global ;
-           [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB];
-           Jacobian Vol ; Integration I1 ; } } }
-
-     { Name U ; Value {
-         Term { [ {Ub} ]  ; In DomainB ; }
-         Term { [ {Uz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name I ; Value {
-         Term { [ {Ib} ]  ; In DomainB ; }
-         Term { [ {Iz} ]  ; In DomainZt_Cir ; }
-     } }
-
-   }
- }
-
- { Name MagDyn_a_2D ; NameOfFormulation MagDyn_a_2D ;
-   PostQuantity {
-     { Name a  ; Value { Term { [ {a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name az ; Value { Term { [ CompZ[{a}] ] ; In Domain ; Jacobian Vol ; } } }
-
-     { Name b  ; Value { Term { [ {d a} ] ; In Domain ; Jacobian Vol ; } } }
-     { Name boundary  ; Value { Term { [ 1 ] ; In Dummy ; Jacobian Vol ; } } } // Dummy quantity
-     { Name b_radial  ; Value { Term { [ {d a}* Vector[  Cos[AngularPosition[]#4], Sin[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } }
-     { Name b_tangent ; Value { Term { [ {d a}* Vector[ -Sin[AngularPosition[]#4], Cos[#4], 0.] ] ; In Domain ; Jacobian Vol ; } } }
-
-     { Name js ; Value { Term { [ js[] ] ; In DomainS ; Jacobian Vol ; } } }
-     { Name br ; Value { Term { [ br[] ] ; In DomainM ; Jacobian Vol ; } } }
-
-     { Name j  ; Value {
-         Term { [ -sigma[]*(Dt[{a}]+{ur}) ]        ; In DomainC ; Jacobian Vol ; }
-         Term { [  sigma[]*(Velocity[] *^ {d a}) ] ; In DomainV ; Jacobian Vol ; }
-       }
-     }
-     { Name ir ; Value { Term { [ {ir} ] ; In Inds ; Jacobian Vol ; } } }
-
-     { Name jz ; Value {
-         Term { [ CompZ[-sigma[]*(Dt[{a}]+{ur})] ]       ; In DomainC ; Jacobian Vol ; }
-         Term { [ CompZ[ sigma[]*(Velocity[]*^{d a}) ] ] ; In DomainV ; Jacobian Vol ; }
-       }
-     }
-
-     { Name rhoj2 ;
-       Value {
-         Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}] ] ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; }
-         Term { [ sigma[]*SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ] ; In DomainV ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA  ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB  ; Jacobian Vol ; }
-         Term { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC  ; Jacobian Vol ; }
-       }
-     }
-
-     { Name JouleLosses ;
-       Value {
-         Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ]   ; In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ sigma[] * SquNorm[ Dt[{a}]+{ur}-Velocity[]*^{d a} ] ]   ; In DomainV ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IA[]*{ir} ] ] ; In PhaseA  ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IB[]*{ir} ] ] ; In PhaseB  ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ 1./sigma[]*SquNorm[ IC[]*{ir} ] ] ; In PhaseC  ; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name Flux ; Value { Integral { [ SymmetryFactor*AxialLength*Idir[]*NbWires[]/SurfCoil[]* CompZ[{a}] ] ;
-           In Inds  ; Jacobian Vol ; Integration I1 ; } } }
-
-     { Name Force_vw ; // Force computation by Virtual Works
-       Value {
-         Integral {
-           Type Global ; [ 0.5 * nu[] * VirtualWork [{d a}] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name Torque_vw ; Value { // Torque computation via Virtual Works
-         Integral { Type Global ;
-           [ CompZ[ 0.5 * nu[] * XYZ[] /\ VirtualWork[{d a}] ] * AxialLength ];
-           In ElementsOf[Rotor_Airgap, OnOneSideOf Rotor_Bnd_MB]; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-
-     { Name Torque_Maxwell ; // Torque computation via Maxwell stress tensor
-       Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; }
-       }
-     }
-
-     { Name Torque_Maxwell_cplx ; // Torque computation via Maxwell stress tensor
-       Value {
-         Integral {
-           [ CompZ [ XYZ[] /\ (T_max_cplx[{d a}] * XYZ[]) ] * 2*Pi*AxialLength/SurfaceArea[] ] ;
-           In Domain ; Jacobian Vol  ; Integration I1; }
-       }
-     }
-
-     { Name ComplexPower ; // S = P + i*Q
-       Value {
-         Integral { [ Complex[ sigma[]*SquNorm[Dt[{a}]+{ur}], nu[]*SquNorm[{d a}] ] ] ;
-           In Region[{DomainC,-DomainV}] ; Jacobian Vol ; Integration I1 ; }
-         Integral { [ Complex[ sigma[]*SquNorm[Dt[{a}]+{ur}-Velocity[]*^{d a}], nu[]*SquNorm[{d a}] ] ] ;
-           In DomainV ; Jacobian Vol ; Integration I1 ; }
-       }
-     }
-
-     { Name U ; Value {
-         Term { [ {U} ]   ; In DomainC ; }
-         Term { [ {Ub} ]  ; In DomainB ; }
-         Term { [ {Uz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name I ; Value {
-         Term { [ {I} ]   ; In DomainC ; }
-         Term { [ {Ib} ]  ; In DomainB ; }
-         Term { [ {Iz} ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name S ; Value {
-         Term { [ {U}*Conj[{I}] ]    ; In DomainC ; }
-         Term { [ {Ub}*Conj[{Ib}] ]  ; In DomainB ; }
-         Term { [ {Uz}*Conj[{Iz}] ]  ; In DomainZt_Cir ; }
-     } }
-
-     { Name Velocity  ; Value {
-         Term { [ Velocity[] ] ; In Domain ; Jacobian Vol ; }
-       }
-     }
-
-     // For getting the value of some functions:
-     { Name RotorPosition_deg ; Value { Term { Type Global; [ RotorPosition_deg[] ] ; In DomainDummy ; } } }
-     { Name Theta_Park_deg    ; Value { Term { Type Global; [ Theta_Park_deg[] ] ; In DomainDummy ; } } }
-     { Name IA  ; Value { Term { Type Global; [ IA[] ] ; In DomainDummy ; } } }
-     { Name IB  ; Value { Term { Type Global; [ IB[] ] ; In DomainDummy ; } } }
-     { Name IC  ; Value { Term { Type Global; [ IC[] ] ; In DomainDummy ; } } }
-
-     { Name Flux_d  ; Value { Term { Type Global; [ CompX[Flux_dq0[]] ] ; In DomainDummy ; } } }
-     { Name Flux_q  ; Value { Term { Type Global; [ CompY[Flux_dq0[]] ] ; In DomainDummy ; } } }
-     { Name Flux_0  ; Value { Term { Type Global; [ CompZ[Flux_dq0[]] ] ; In DomainDummy ; } } }
-   }
- }
-
- { Name Mechanical ; NameOfFormulation Mechanical ;
-   PostQuantity {
-     { Name P ; Value { Term { [ {P} ]  ; In DomainKin ; } } } //Position
-     { Name V ; Value { Term { [ {V} ]  ; In DomainKin ; } } } //Velocity
-     { Name Vrpm ; Value { Term { [ {V}*30/Pi ]  ; In DomainKin ; } } } //Velocity in rpm
-   }
- }
-
-}
-
-//-----------------------------------------------------------------------------------------------
-//-----------------------------------------------------------------------------------------------
-
-If (Flag_ParkTransformation)
-PostOperation ThetaPark_IABC UsingPost MagDyn_a_2D {
-  Print[ RotorPosition_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]],
-         SendToServer "Output/1RotorPosition", Color "LightYellow" ];
-  Print[ Theta_Park_deg, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]],
-         SendToServer "Output/1Theta_Park", Color "LightYellow" ];
-  Print[ IA, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IA", Color "Pink" ];
-  Print[ IB, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IB", Color "Yellow" ];
-  Print[ IC, OnRegion DomainDummy, Format Table, LastTimeStepOnly, File StrCat[Dir, StrCat["temp",ExtGnuplot]], SendToServer "Output/2IC", Color "LightGreen"  ];
-}
-EndIf
-PostOperation Get_LocalFields UsingPost MagDyn_a_2D {
-  Print[ ir, OnElementsOf Stator_Inds, File StrCat[Dir, StrCat["ir_stator",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ ir, OnElementsOf Rotor_Inds,  File StrCat[Dir, StrCat["ir_rotor",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  //Print[ br,  OnElementsOf #{DomainM}, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ b,  OnElementsOf Domain, File StrCat[Dir, StrCat["b",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ boundary, OnElementsOf Dummy,  File StrCat[Dir, StrCat["bnd",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps] ;
-  Print[ az, OnElementsOf Domain, File StrCat[Dir, StrCat["a",ExtGmsh]], LastTimeStepOnly, AppendTimeStepToFileName Flag_SaveAllSteps ] ;
-}
-
-PostOperation Get_GlobalQuantities UsingPost MagDyn_a_2D {
-  If(!Flag_Cir)
-  If(!Flag_ParkTransformation)
-    Print[ I, OnRegion PhaseA_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion PhaseB_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion PhaseC_pos, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-  EndIf
-
-  Print[ U, OnRegion PhaseA_pos, Format Table,
-         File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-  Print[ U, OnRegion PhaseB_pos, Format Table,
-         File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-  Print[ U, OnRegion PhaseC_pos, Format Table,
-         File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-  If(Flag_Cir && Flag_SrcType_Stator==2)
-    Print[ I, OnRegion Input1, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion Input2, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion Input3, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-    Print[ U, OnRegion Input1, Format Table,
-           File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-    Print[ U, OnRegion Input2, Format Table,
-           File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-    Print[ U, OnRegion Input3, Format Table,
-           File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-  If(Flag_Cir && Flag_SrcType_Stator==0)
-    Print[ I, OnRegion R1, Format Table,
-           File > StrCat[Dir, StrCat["Ia",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IA", Color "Pink" ];
-    Print[ I, OnRegion R2, Format Table,
-           File > StrCat[Dir, StrCat["Ib",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IB", Color "Yellow" ];
-    Print[ I, OnRegion R3, Format Table,
-           File > StrCat[Dir, StrCat["Ic",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2IC", Color "LightGreen" ];
-    Print[ U, OnRegion R1, Format Table,
-           File > StrCat[Dir, StrCat["Ua",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/30UA", Color "Pink" ];
-    Print[ U, OnRegion R2, Format Table,
-           File > StrCat[Dir, StrCat["Ub",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/31UB", Color "Yellow" ];
-    Print[ U, OnRegion R3, Format Table,
-           File > StrCat[Dir, StrCat["Uc",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/32UC", Color "LightGreen" ];
-  EndIf
-
-
-  Print[ I, OnRegion RotorC, Format Table,
-         File > StrCat[Dir, StrCat["Irotor",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/2Ir", Color "LightYellow" ];
-
-  Print[ Torque_Maxwell[Rotor_Airgap], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Tr",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer my_output, Color "LightYellow" ];
-  Print[ Torque_Maxwell[Stator_Airgap], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Ts",ExtGnuplot]], LastTimeStepOnly, Store 55, SendToServer "Output/41T_stator", Color "LightYellow" ];
-  Print[ Torque_Maxwell[MB], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Tmb",ExtGnuplot]], LastTimeStepOnly, Store 56, SendToServer "Output/42T_mb", Color "LightYellow" ];
-  //Print[ Torque_vw, OnRegion NodesOf[Rotor_Bnd_MB], Format RegionValue,
-  //       File > StrCat[Dir, StrCat["Tr_vw",ExtGnuplot]], LastTimeStepOnly, Store 54, SendToServer "Output/1T_rotor_vw" ];
-
-  If(Flag_SrcType_Stator)
-  Print[ Flux[PhaseA], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_a",ExtGnuplot]], LastTimeStepOnly, Store 11, SendToServer "Output/50Flux_a",  Color "Pink" ];
-  Print[ Flux[PhaseB], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_b",ExtGnuplot]], LastTimeStepOnly, Store 22, SendToServer "Output/51Flux_b",  Color "Yellow" ];
-  Print[ Flux[PhaseC], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["Flux_c",ExtGnuplot]], LastTimeStepOnly, Store 33, SendToServer "Output/52Flux_c", Color "LightGreen"];
-
-  If(Flag_ParkTransformation && Flag_SrcType_Stator)
-    Print[ Flux_d, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_d",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/60Flux_d", Color "LightYellow" ];
-    Print[ Flux_q, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_q",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/61Flux_q", Color "LightYellow" ];
-    Print[ Flux_0, OnRegion DomainDummy, Format TimeTable,
-           File > StrCat[Dir, StrCat["Flux_0",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/62Flux_0", Color "LightYellow" ];
-  EndIf
-  EndIf
-}
-
-
-PostOperation Joule_Losses UsingPost MagDyn_a_2D {
-  Print[ JouleLosses[Rotor], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["P",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor" ];
-  Print[ JouleLosses[Rotor_Fe], OnGlobal, Format TimeTable,
-         File > StrCat[Dir, StrCat["P_Fe",ExtGnuplot]], LastTimeStepOnly, SendToServer "Output/3P_rotor_fe" ];
-}
-
-/*
-PostOperation Mechanical UsingPost Mechanical {
-  Print[ P, OnRegion DomainKin, File > StrCat[Dir, StrCat["P", ExtGnuplot]],
-         Format Table, Store 77, LastTimeStepOnly, SendToServer "Output/3Position"] ;
-  Print[ V, OnRegion DomainKin, File > StrCat[Dir, StrCat["V", ExtGnuplot]],
-         Format Table, LastTimeStepOnly, SendToServer "Output/4Velocity"] ;
-}
-*/
diff --git a/contrib/mobile/Android/res/raw/magnet_data_pro b/contrib/mobile/Android/res/raw/magnet_data_pro
deleted file mode 100644
index 3e0a76ce52..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_data_pro
+++ /dev/null
@@ -1,16 +0,0 @@
-
-DefineConstant[ Val_Rint = {0.15, Min 0.2, Max 1, Step 0.1,
-                            Path "Parameters/Geometry/1",
-                            Label "Internal shell radius (m)"} ];
-
-DefineConstant[ Val_Rext = {0.25, Min Val_Rint, Max 0.5, Step 0.1,
-                            Path "Parameters/Geometry/2",
-                            Label "External shell radius (m)"}];
-
-AIR = 100;
-AIR_INF = 101;
-AIR_GAP = 102;
-MAGNET = 103;
-CORE = 104;
-LINE_INF = 105;
-LINE_X = 106;
diff --git a/contrib/mobile/Android/res/raw/magnet_geo b/contrib/mobile/Android/res/raw/magnet_geo
deleted file mode 100644
index c0c7815711..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_geo
+++ /dev/null
@@ -1,93 +0,0 @@
-Include "magnet_data.pro";
-
-DefineConstant[ h = {0.14, Min 0.1, Max 0.2, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Core height (m)"} ] ;
-
-DefineConstant[ l = {0.14, Min 0.05, Max 0.2, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Core width (m)"} ] ;
-
-DefineConstant[ d = {0.03, Min 0.01, Max 0.05, Step 0.002,
-                     Path "Parameters/Geometry",
-                     Label "Core tickness (m)"} ] ;
-
-DefineConstant[ e = {5e-3, Min 5e-4, Max d, Step 1e-3,
-                     Path "Parameters/Geometry",
-                     Label "Air gap (m)", Highlight "LightYellow"} ] ;
-
-DefineConstant[ ha = {0.03, Min 0.01, Max 0.1, Step 0.01,
-                     Path "Parameters/Geometry",
-                     Label "Magnet height (m)"} ] ;
-
-lc0 = d / 5 ;
-lc1 = e / 2 ;
-lc2 = (Val_Rext - Val_Rint) / 8. ;
-
-Point(1) = {0, 0, 0, lc0};
-Point(2) = {-l/2, 0, 0, lc0};
-Point(3) = {-l/2, h/2, 0, lc0};
-Point(4) = {l/2, 0, 0, lc1};
-Point(5) = {l/2, h/2, 0, lc0};
-Point(6) = {-l/2, ha/2, 0, lc0};
-Point(7) = {-l/2+d, ha/2, 0, lc0};
-Point(8) = {-l/2+d, 0, 0, lc0};
-Point(9) = {l/2-d, 0, 0, lc1};
-Point(10) = {l/2-d, h/2-d, 0, lc0};
-Point(11) = {-l/2+d, h/2-d, 0, lc0};
-Point(12) = {l/2, e/2, 0, lc1};
-Point(13) = {l/2-d, e/2, 0, lc1};
-
-Point(30) = {Val_Rint, 0, 0, lc2};
-Point(31) = {Val_Rext, 0, 0, lc2};
-Point(32) = {0, Val_Rint, 0, lc2};
-Point(33) = {0, Val_Rext, 0, lc2};
-Point(34) = {-Val_Rext, 0, 0, lc2};
-Point(35) = {-Val_Rint, 0, 0, lc2};
-
-Line(1) = {34, 35};
-Line(2) = {35, 2};
-Line(3) = {2, 8};
-Line(4) = {8, 1};
-Line(5) = {1, 9};
-Line(6) = {9, 4};
-Line(7) = {4, 30};
-Line(8) = {30, 31};
-Line(9) = {2, 6};
-Line(10) = {6, 3};
-Line(11) = {3, 5};
-Line(12) = {5, 12};
-Line(13) = {12, 4};
-Line(14) = {9, 13};
-Line(15) = {13, 10};
-Line(16) = {10, 11};
-Line(17) = {11, 7};
-Line(18) = {7, 8};
-Line(19) = {7, 6};
-Line(20) = {13, 12};
-Circle(21) = {35, 1, 32};
-Circle(22) = {32, 1, 30};
-Circle(23) = {34, 1, 33};
-Circle(24) = {33, 1, 31};
-
-Line Loop(25) = {21, 22, 8, -24, -23, 1};
-Plane Surface(26) = {25};
-Line Loop(27) = - {22, -7, -13, -12, -11, -10, -9, -2, 21};
-Plane Surface(28) = {27};
-Line Loop(29) = - {11, 12, -20, 15, 16, 17, 19, 10};
-Plane Surface(30) = {29};
-Line Loop(31) = {19, -9, 3, -18};
-Plane Surface(32) = {31};
-Line Loop(33) = - {20, 13, -6, 14};
-Plane Surface(34) = {33};
-Line Loop(35) = {15, 16, 17, 18, 4, 5, 14};
-Plane Surface(36) = {35};
-
-// physical entities (for which elements will be saved)
-Physical Surface(AIR) = {28, 36};
-Physical Surface(AIR_INF) = {26};
-Physical Surface(AIR_GAP) = {34};
-Physical Surface(MAGNET) = {32};
-Physical Surface(CORE) = {30};
-Physical Line(LINE_INF) = {23, 24};
-Physical Line(LINE_X) = {1:8};
diff --git a/contrib/mobile/Android/res/raw/magnet_pro b/contrib/mobile/Android/res/raw/magnet_pro
deleted file mode 100644
index a18c7cdf4f..0000000000
--- a/contrib/mobile/Android/res/raw/magnet_pro
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-   To solve the problem
-   with scalar potential, type 'getdp test -solve MagSta_phi -pos phi'
-   with vector potential, type 'getdp test -solve MagSta_a -pos a'
-*/
-
-Include "magnet_data.pro";
-
-Group {
-  // AIR, AIR_INF, etc. are variables defined in core.txt, and correspond to the
-  // tags of physical regions in the mesh
-  Air     = Region[ AIR ];
-  AirInf  = Region[ AIR_INF ];
-  Core    = Region[ CORE ];
-  AirGap  = Region[ AIR_GAP ];
-  Magnet  = Region[ MAGNET ];
-
-  // These are the generic group names that are used in "Magnetostatics.pro"
-  Domain_S = Region[ {} ] ;
-  Domain_Inf = Region[ AirInf ] ;
-  Domain_M   = Region[ Magnet ] ;
-  Domain_Mag = Region[ {Air, Core, AirGap} ] ;
-  Dirichlet_a_0   = Region[ LINE_INF ] ;
-  Dirichlet_phi_0 = Region[ {LINE_X, LINE_INF} ] ;
-}
-
-Function {
-  mu0 = 4.e-7 * Pi ;
-
-  // DefineConstant is used to define a default value for murCore; this value
-  // can be changed interactively by the ONELAB server
-  DefineConstant[ murCore = {200., Min 1, Max 1000, Step 10,
-                             Label "Core relative permeability",
-                             Path "Parameters/Materials"} ];
-
-  nu [ Region[{Air, AirInf, AirGap, Magnet}] ] = 1. / mu0 ;
-  nu [ Core ]  = 1. / (murCore * mu0) ;
-
-  mu [ Region[{Air, AirInf, AirGap, Magnet}] ] = mu0 ;
-  mu [ Core ]  = murCore * mu0;
-
-  DefineConstant[ Hc = {920000, Label "Magnet coercive field (A/m)",
-                        Path "Parameters/Materials"} ];
-  hc [ Magnet ] = Vector[0., Hc, 0.] ;
-}
-
-Include "magnetostatics.pro"
-
-eps = 1.e-5 ;
-
-Printf[ "murCore: %f",murCore ] ;
-
-PostOperation {
-  { Name phi ; NameOfPostProcessing MagSta_phi;
-    Operation {
-      Print[ phi, OnElementsOf Domain, File "phi.pos" ] ;
-      Print[ b, OnElementsOf Domain, File "b_phi.pos" ] ;
-      Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_phi.txt", Format Table ] ;
-    }
-  }
-  { Name a ; NameOfPostProcessing MagSta_a;
-    Operation {
-      Print[ a, OnElementsOf Domain, File "a.pos"] ;
-      Print[ b, OnElementsOf Domain, File "b_a.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "h_a.pos" ] ;
-      Print[ b, OnLine {{-0.07,eps,0}{0.09,eps,0}} {500}, File "b_a.txt" , Format Table ] ;
-    }
-  }
-}
diff --git a/contrib/mobile/Android/res/raw/magnetostatics_pro b/contrib/mobile/Android/res/raw/magnetostatics_pro
deleted file mode 100644
index 4c9c07d5c5..0000000000
--- a/contrib/mobile/Android/res/raw/magnetostatics_pro
+++ /dev/null
@@ -1,209 +0,0 @@
-Group {
-  // Input groups:
-  DefineGroup[ Domain_M = {{}, Label "Permanent magnets",
-                           Path "Regions/0Sources"},
-               Domain_S = {{}, Label "Inductor (imposed j_s)",
-                           Path "Regions/0Sources"},
-               Domain_Inf = {{}, Label "Infinite domain (spherical shell)",
-                             Path "Regions/0Special regions", Closed "1"},
-               Domain_Mag = {{}, Label "Passive magnetic regions",
-                             Path "Regions/Other regions"},
-               Dirichlet_phi_0 = {{}, Label "h_t = 0", Closed "1",
-                                  Path "Regions/0Boundary conditions"},
-               Dirichlet_a_0 = {{}, Label "b_n = 0",
-                                Path "Regions/0Boundary conditions"} ];
-
-  DefineGroup[ Domain = {{Domain_Mag, Domain_M, Domain_S, Domain_Inf},
-                         Label "Computational domain", Path "Regions", Visible 0} ];
-}
-
-Function{
-  // Input constants:
-  DefineConstant[ Val_Rint, Val_Rext // interior/exterior radius of Domain_Inf
-                  ];
-
-  // Input functions:
-  DefineFunction[ mu, // magnetic permeability
-                  nu, // magnetic reluctivity
-                  hc, // coercive magnetic field
-                  js // source current density
-                  ];
-
-  // remove this: only for demo
-  //DefineConstant[ hcx = {0, Label "Coercive field h_x", Path "Sources"}];
-  //DefineConstant[ hcy = {1000, Label "Coercive field h_y", Path "Sources"}];
-  //hc[] = Vector[hcx,hcy,0];
-  //mu[] = 4*Pi*10^-7;
-  //nu[] = 1/mu[];
-}
-
-Jacobian {
-  { Name JVol ;
-    Case {
-      { Region Domain_Inf ; Jacobian VolSphShell{Val_Rint, Val_Rext} ; }
-      { Region All ; Jacobian Vol ; }
-    }
-  }
-}
-
-Integration {
-  { Name I1 ;
-    Case {
-      { Type Gauss ;
-        Case {
-	  { GeoElement Triangle ; NumberOfPoints 4 ; }
-	  { GeoElement Quadrangle  ; NumberOfPoints 4 ; }
-	}
-      }
-    }
-  }
-}
-
-
-/* --------------------------------------------------------------------------
-   MagSta_phi : Magnetic scalar potential phi formulation
-   -------------------------------------------------------------------------- */
-
-Constraint {
-  { Name phi ;
-    Case {
-      { Region Dirichlet_phi_0 ; Value 0. ; }
-    }
-  }
-}
-
-FunctionSpace {
-  { Name Hgrad_phi ; Type Form0 ;
-    BasisFunction {
-      { Name sn ; NameOfCoef phin ; Function BF_Node ;
-        Support Domain ; Entity NodesOf[ All ] ; }
-    }
-    Constraint {
-      { NameOfCoef phin ; EntityType NodesOf ; NameOfConstraint phi ; }
-    }
-  }
-}
-
-Formulation {
-  { Name MagSta_phi ; Type FemEquation ;
-    Quantity {
-      { Name phi ; Type Local ; NameOfSpace Hgrad_phi ; }
-    }
-    Equation {
-      Galerkin { [ - mu[] * Dof{d phi} , {d phi} ] ;
-                 In Domain ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ - mu[] * hc[] , {d phi} ] ;
-                 In Domain_M ; Jacobian JVol ; Integration I1 ; }
-    }
-  }
-}
-
-Resolution {
-  { Name MagSta_phi ;
-    System {
-      { Name A ; NameOfFormulation MagSta_phi ; }
-    }
-    Operation {
-      Generate[A] ; Solve[A] ; SaveSolution[A] ;
-    }
-  }
-}
-
-PostProcessing {
-  { Name MagSta_phi ; NameOfFormulation MagSta_phi ;
-    Quantity {
-      { Name b   ; Value { Local { [ - mu[] * {d phi} ] ; In Domain ; Jacobian JVol ; }
-                           Local { [ - mu[] * hc[] ]    ; In Domain_M ; Jacobian JVol ; } } }
-      { Name h   ; Value { Local { [ - {d phi} ]        ; In Domain ; Jacobian JVol ; } } }
-      { Name phi ; Value { Local { [ {phi} ]            ; In Domain ; Jacobian JVol ; } } }
-    }
-  }
-}
-
-PostOperation {
-  { Name MagSta_phi ; NameOfPostProcessing MagSta_phi;
-    Operation {
-      Print[ b, OnElementsOf Domain, File "MagSta_phi_b.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "MagSta_phi_h.pos" ] ;
-      Print[ phi, OnElementsOf Domain, File "MagSta_phi_phi.pos" ] ;
-    }
-  }
-}
-
-/* --------------------------------------------------------------------------
-   MagSta_a : Magnetic vector potential a formulation (2D)
-   -------------------------------------------------------------------------- */
-
-Constraint {
-  { Name a ;
-    Case {
-      { Region Dirichlet_a_0 ; Value 0. ; }
-    }
-  }
-}
-
-FunctionSpace {
-
-  { Name Hcurl_a ; Type Form1P ;
-    BasisFunction {
-      { Name se ; NameOfCoef ae ; Function BF_PerpendicularEdge ;
-        Support Domain ; Entity NodesOf[ All ] ; }
-    }
-    Constraint {
-      { NameOfCoef ae ; EntityType NodesOf ; NameOfConstraint a ; }
-    }
-  }
-
-}
-
-Formulation {
-  { Name MagSta_a ; Type FemEquation ;
-    Quantity {
-      { Name a  ; Type Local ; NameOfSpace Hcurl_a ; }
-    }
-    Equation {
-      Galerkin { [ nu[] * Dof{d a} , {d a} ] ;
-                 In Domain ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ hc[] , {d a} ] ;
-                 In Domain_M ; Jacobian JVol ; Integration I1 ; }
-
-      Galerkin { [ -js[] , {a} ] ;
-                 In Domain_S ; Jacobian JVol ; Integration I1 ; }
-    }
-  }
-}
-
-Resolution {
-  { Name MagSta_a ;
-    System {
-      { Name A ; NameOfFormulation MagSta_a ; }
-    }
-    Operation {
-      Generate[A] ; Solve[A] ; SaveSolution[A];
-    }
-  }
-}
-
-PostProcessing {
-  { Name MagSta_a ; NameOfFormulation MagSta_a ;
-    Quantity {
-      { Name a ; Value { Local { [ CompZ[{a}] ]   ; In Domain ; Jacobian JVol ; } } }
-      { Name b ; Value { Local { [ {d a} ]        ; In Domain ; Jacobian JVol ; } } }
-      { Name a ; Value { Local { [ {a} ]          ; In Domain ; Jacobian JVol ; } } }
-      { Name h ; Value { Local { [ nu[] * {d a} ] ; In Domain ; Jacobian JVol ; }
-                         Local { [ hc[] ]         ; In Domain_M ; Jacobian JVol ; } } }
-    }
-  }
-}
-
-PostOperation {
-  { Name MagSta_a ; NameOfPostProcessing MagSta_a;
-    Operation {
-      Print[ b, OnElementsOf Domain, File "MagSta_a_b.pos" ] ;
-      Print[ h, OnElementsOf Domain, File "MagSta_a_h.pos" ] ;
-      Print[ a, OnElementsOf Domain, File "MagSta_a_a.pos" ] ;
-    }
-  }
-}
diff --git a/contrib/mobile/Android/res/raw/models.zip b/contrib/mobile/Android/res/raw/models.zip
new file mode 100644
index 0000000000000000000000000000000000000000..de8f6ff724bec17b9e76ab05fdbd88d6f17e3578
GIT binary patch
literal 23732
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
F{{j_7i|qga

literal 0
HcmV?d00001

diff --git a/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro b/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
deleted file mode 100644
index 37e1ac3756..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_8p_circuit_pro
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// Circuit for Permanent Magnet Synchronous Generator - cbmag
-//
-
-Group{
-  // Dummy numbers for circuit definition
-  R1 = #55551 ;
-  R2 = #55552 ;
-  R3 = #55553 ;
-
-  Input1 = #10001 ;
-  Input2 = #10002 ;
-  Input3 = #10003 ;
-  Input4 = #10004 ;
-
-  Resistance_Cir  = Region[{R1, R2, R3}];
-  DomainZ_Cir = Region[ {Resistance_Cir} ];
-
-  DomainSource_Cir = Region[ {} ] ;
-  If(Flag_SrcType_Stator>1)
-    DomainSource_Cir += Region[ {Input1, Input2, Input3} ] ;
-  EndIf
-
-  DomainZt_Cir    = Region[ {DomainZ_Cir, DomainSource_Cir} ];
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-  // Open circuit - load - short circuit
-  DefineConstant[ ZR = {200,
-      Choices{1e-8, 200, 1e8}, Label "Load resistance",  Path "Input/", Highlight "AliceBlue"} ];
-  Resistance[#{R1, R2, R3}]  = ZR ;
-}
-
-// --------------------------------------------------------------------------
-
-Constraint {
-
-  If (SymmetryFactor<8)
-    If(Flag_SrcType_Stator==0)
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Stator_Ind_Ap ; Branch {100,102} ; }
-          { Region Stator_Ind_Am ; Branch {103,102} ; }
-          { Region R1            ; Branch {103,100} ; }
-        }
-        Case Circuit2 {
-          { Region Stator_Ind_Bp ; Branch {200,202} ; }
-          { Region Stator_Ind_Bm ; Branch {203,202} ; }
-          { Region R2            ; Branch {203,200} ; }
-        }
-        Case Circuit3 {
-          { Region Stator_Ind_Cp ; Branch {300,302} ; }
-          { Region Stator_Ind_Cm ; Branch {303,302} ; }
-          { Region R3            ; Branch {303,300} ; }
-        }
-      }
-    EndIf
-    If (Flag_SrcType_Stator==2)
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Input1        ; Branch {100,101} ; }
-          { Region Stator_Ind_Ap ; Branch {101,102} ; }
-          { Region Stator_Ind_Am ; Branch {103,102} ; }
-          { Region R1            ; Branch {103,100} ; }
-        }
-        Case Circuit2 {
-          { Region Input2        ; Branch {200,201} ; }
-          { Region Stator_Ind_Bp ; Branch {201,202} ; }
-          { Region Stator_Ind_Bm ; Branch {203,202} ; }
-          { Region R2            ; Branch {203,200} ; }
-        }
-        Case Circuit3 {
-          { Region Input3        ; Branch {300,301} ; }
-          { Region Stator_Ind_Cp ; Branch {301,302} ; }
-          { Region Stator_Ind_Cm ; Branch {303,302} ; }
-          { Region R3            ; Branch {303,300} ; }
-        }
-      }
-    EndIf
-  EndIf
-
-  If(SymmetryFactor==8)
-    If(Flag_SrcType_Stator==0) // Only one physical region in geo allow per branch
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region PhaseA        ; Branch {100,102} ; }
-          { Region R1            ; Branch {102,100} ; }
-        }
-        Case Circuit2 {
-          { Region PhaseB        ; Branch {200,202} ; }
-          { Region R2            ; Branch {202,200} ; }
-        }
-        Case Circuit3 {
-          { Region PhaseC        ; Branch {300,302} ; }
-          { Region R3            ; Branch {302,300} ; }
-        }
-      }
-    EndIf
-    If(Flag_SrcType_Stator==2) // Only one physical region in geo allow per branch
-      { Name ElectricalCircuit ; Type Network ;
-        Case Circuit1 {
-          { Region Input1        ; Branch {100,101} ; }
-          { Region PhaseA        ; Branch {101,102} ; }
-          { Region R1            ; Branch {102,100} ; }
-        }
-        Case Circuit2 {
-          { Region Input2        ; Branch {200,201} ; }
-          { Region PhaseB        ; Branch {201,202} ; }
-          { Region R2            ; Branch {202,200} ; }
-        }
-        Case Circuit3 {
-          { Region Input3        ; Branch {300,301} ; }
-          { Region PhaseC        ; Branch {302,301} ; }
-          { Region R3            ; Branch {302,300} ; }
-        }
-      }
-    EndIf
-  EndIf
-}
-
diff --git a/contrib/mobile/Android/res/raw/pmsm_data_geo b/contrib/mobile/Android/res/raw/pmsm_data_geo
deleted file mode 100644
index c2760986cf..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_data_geo
+++ /dev/null
@@ -1,104 +0,0 @@
-// Permanent magnet synchronous machine
-// Example of Prof. Dr. Mauricio Valencia Ferreira da Luz (Florianopolis, August 23, 2010)
-
-// Modified and customised for Onelab by Ruth V. Sabariego (February, 2013)
-
-mm = 1e-3 ;
-deg2rad = Pi/180 ;
-
-DefineConstant[ NbrPoles = { 1, Choices {1="1",
-                                         2="2",
-                                         4="4",
-                                         8="8"},
-                             Label "Number of poles in FE model",
-                             Path "Input/1", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ InitialRotorAngle_deg = {7.5, Label "Start rotor angle", Path "Input/20", Highlight "AliceBlue"} ];
-
-//--------------------------------------------------------------------------------
-
-InitialRotorAngle = InitialRotorAngle_deg*deg2rad ; // initial rotor angle, 0 if aligned
-
-AxialLength = 35*mm ;
-
-//------------------------------------------------
-//------------------------------------------------
-NbrPolesTot = 8 ; // number of poles in complete cross-section
-
-SymmetryFactor = NbrPolesTot/NbrPoles ;
-Flag_Symmetry = (SymmetryFactor==1)?0:1 ;
-
-NbrSectTot = NbrPolesTot ; // number of "rotor teeth"
-NbrSect = NbrSectTot*NbrPoles/NbrPolesTot ; // number of "rotor teeth" in FE model
-//--------------------------------------------------------------------------------
-
-//------------------------------------------------
-// Stator
-//------------------------------------------------
-NbrSectTotStator  = 24; // number of stator teeth
-NbrSectStator   = NbrSectTotStator*NbrPoles/NbrPolesTot; // number of stator teeth in FE model
-//--------------------------------------------------------------------------------
-
-lm = 2.352*mm ; // magnet height
-Th_magnet = 32.67 *deg2rad ;  // angle in degrees 0 < Th_magnet < 45
-
-//--------------------------------------------------------------------------------
-
-rRext = 25.6*mm;
-rR1 = 10.5*mm;
-rR2 = (rRext-lm); //23.243e-03;
-rR3 = (rRext-0.7389*lm); //23.862e-03;
-rR4 = (rRext-0.72278*lm); //23.9e-03;
-rR5 = rRext; //25.6e-03;
-
-rS1 = 26.02*mm;
-rS2 = 26.62*mm;
-rS3 = 26.96*mm;
-rS4 = 38.16*mm;
-rS5 = 38.27*mm;
-rS6 = 40.02*mm;
-rS7 = 46.00*mm;
-
-Gap = rS1-rR5;
-
-rB1  = rR5+Gap/3;
-rB1b = rB1;
-rB2  = rR5+Gap*2/3;
-
-
-A0 =  45 * deg2rad ; // with this choice, axis A of stator is at 30 degrees with regard to horizontal axis
-A1 =   0 * deg2rad ; // Rotor initial aligned position, current position in angRot
-
-// ----------------------------------------------------
-// Numbers for physical regions in .geo and .pro files
-// ----------------------------------------------------
-// Rotor
-ROTOR_FE     = 1000 ;
-ROTOR_AIR    = 1001 ;
-ROTOR_AIRGAP = 1002 ;
-ROTOR_MAGNET = 1010 ; // Index for first Magnet (1/8 model->1; full model->8)
-
-ROTOR_BND_MOVING_BAND = 1100 ; // Index for first line (1/8 model->1; full model->8)
-ROTOR_BND_A0 = 1200 ;
-ROTOR_BND_A1 = 1201 ;
-SURF_INT     = 1202 ;
-
-// Stator
-STATOR_FE     = 2000 ;
-STATOR_AIR    = 2001 ;
-STATOR_AIRGAP = 2002 ;
-
-STATOR_BND_MOVING_BAND = 2100 ;// Index for first line (1/8 model->1; full model->8)
-STATOR_BND_A0          = 2200 ;
-STATOR_BND_A1          = 2201 ;
-
-STATOR_IND = 2300 ; //Index for first Ind (1/8 model->3; full model->24)
-STATOR_IND_AP = STATOR_IND + 1 ; STATOR_IND_BM = STATOR_IND + 2 ;STATOR_IND_CP = STATOR_IND + 3 ;
-STATOR_IND_AM = STATOR_IND + 4 ; STATOR_IND_BP = STATOR_IND + 5 ;STATOR_IND_CM = STATOR_IND + 6 ;
-
-SURF_EXT = 3000 ; // outer boundary
-
-
-MOVING_BAND = 9999 ;
-
-NICEPOS = 111111 ;
diff --git a/contrib/mobile/Android/res/raw/pmsm_geo b/contrib/mobile/Android/res/raw/pmsm_geo
deleted file mode 100644
index efade112ec..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_geo
+++ /dev/null
@@ -1,95 +0,0 @@
-Include "pmsm_data.geo";
-
-Mesh.Algorithm = 1;
-Geometry.CopyMeshingMethod = 1;
-
-Mesh.CharacteristicLengthFactor = 1.5 ;
-
-
-// Mesh characteristic lengths
-s = 0.4 ;
-pR1=(rR2-rR1)/6.*s;
-pR2=(rR2-rR1)/6.*s;
-
-pS1=(rS7-rS1)/7.*s;
-pS2=(rS7-rS1)/12.*s;
-pS3=(rS6-rS3)/10.*s;
-
-NbrDivMB = 2*Ceil[2*Pi*rRext/8/pR1]; //1/8 Moving band
-
-//--------------------------------------------------------------------------------
-//--------------------------------------------------------------------------------
-
-cen = newp ; Point(cen)={0,0,0,pR1};
-nicepos_rotor[] = {};
-nicepos_stator[] = {};
-
-Include "pmsm_rotor.geo";
-Include "pmsm_stator.geo";
-
-
-// For nice visualisation...
-Mesh.Light = 0 ;
-//Mesh.SurfaceFaces = 1; Mesh.SurfaceEdges=0;
-
-Hide { Point{ Point '*' }; }
-Hide { Line{ Line '*' }; }
-Show { Line{ nicepos_rotor[], nicepos_stator[] }; }
-
-Physical Line(NICEPOS) = { nicepos_rotor[], nicepos_stator[] };
-
-//For post-processing...
-View[0].Light = 0;
-View[0].NbIso = 25; // Number of intervals
-View[0].IntervalsType = 1;
-
-DefineConstant[ Flag_AddInfo = {0, Choices{0,1},
-                               Label "Add info about phases and axis",
-                               Path "Input/1"} ];
-
-For i In {PostProcessing.NbViews-1 : 0 : -1}
-  If(StrFind(View[i].Attributes, "tmp"))
-    Delete View[i];
-  EndIf
-EndFor
-
-If(Flag_AddInfo)
-  rr = 1.25 * rS3 ;
-  For k In {0:NbrPoles-1}
-    xa[] += rr*Cos(1*Pi/24+k*Pi/4) ; ya[] += rr*Sin(1*Pi/24+k*Pi/4) ;
-    xb[] += rr*Cos(3*Pi/24+k*Pi/4) ; yb[] += rr*Sin(3*Pi/24+k*Pi/4) ;
-    xc[] += rr*Cos(5*Pi/24+k*Pi/4) ; yc[] += rr*Sin(5*Pi/24+k*Pi/4) ;
-  EndFor
-
-  // Adding some axes
-  rr0 = 0.3 * rS7 ;
-  rr1 = 1.3 * rS7 ;
-  th_d = InitialRotorAngle ;
-  th_q = th_d + 22.5 * deg2rad ;
-
-  th_a = 30 * deg2rad ;
-  th_b = (30 + 120/4) * deg2rad ;
-  th_c = (30 + 240/4) * deg2rad ;
-
-  ff = 0.9;
-
-  xd[0] = rr0*Cos(th_d) ;    yd[0] = rr0*Sin(th_d) ;
-  xd[1] = ff*rr1*Cos(th_d) ; yd[1] = ff*rr1*Sin(th_d) ;
-  xq[0] = rr0*Cos(th_q) ;    yq[0] = rr0*Sin(th_q) ;
-  xq[1] = ff*rr1*Cos(th_q) ; yq[1] = ff*rr1*Sin(th_q) ;
-
-  xaa[0] = rr0*Cos(th_a) ; yaa[0] = rr0*Sin(th_a) ;
-  xaa[1] = rr1*Cos(th_a) ; yaa[1] = rr1*Sin(th_a) ;
-  xbb[0] = rr0*Cos(th_b) ; ybb[0] = rr0*Sin(th_b) ;
-  xbb[1] = rr1*Cos(th_b) ; ybb[1] = rr1*Sin(th_b) ;
-  xcc[0] = rr0*Cos(th_c) ; ycc[0] = rr0*Sin(th_c) ;
-  xcc[1] = rr1*Cos(th_c) ; ycc[1] = rr1*Sin(th_c) ;
-
-
-  Include "info_view.geo";
-
-EndIf
-
-
-
-
diff --git a/contrib/mobile/Android/res/raw/pmsm_geo_pro b/contrib/mobile/Android/res/raw/pmsm_geo_pro
deleted file mode 100644
index 225b29dd4f..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_geo_pro
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-// Permanent Magnet Synchronous Generator
-//
-
-Include "pmsm_data.geo";
-
-DefineConstant[ Flag_NL = {0,
-    Choices{ 0="Linear",
-             1="Nonlinear BH curve"},
-    Label "Fe magnetic law",
-    Path "Input/3", Highlight "Blue"} ] ;
-
-DefineConstant[ Flag_SrcType_Stator = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Stator",
-    Path "Input/4", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ Flag_SrcType_Rotor = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Rotor",
-    Path "Input/5", Highlight "Blue", Visible 0} ] ;
-
-DefineConstant[ Flag_Cir = {!Flag_SrcType_Stator, Choices{0,1},
-    Label "Use circuit in Stator", ReadOnly 1, Visible 0} ] ;
-
-Group {
-  Stator_Fe     = #STATOR_FE ;
-  Stator_Al     = #{};
-  Stator_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Al     = #{};
-  Rotor_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND ;
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Air    = #ROTOR_AIR ;
-  Rotor_Airgap = #ROTOR_AIRGAP ;
-
-  Rotor_Bnd_A0 = #ROTOR_BND_A0 ;
-  Rotor_Bnd_A1 = #ROTOR_BND_A1 ;
-
-  MovingBand_PhysicalNb = #MOVING_BAND ;  // Fictitious number for moving band, not in the geo file
-  Surf_Inf = #SURF_EXT ;
-  Surf_bn0 = #SURF_INT ;
-  Surf_cutA0 = #{STATOR_BND_A0, ROTOR_BND_A0};
-  Surf_cutA1 = #{STATOR_BND_A1, ROTOR_BND_A1};
-
-  Dummy = #NICEPOS;
-
-  nbMagnets = NbrPolesTot/SymmetryFactor ;
-  For k In {1:nbMagnets}
-    Rotor_Magnet~{k} = Region[ (ROTOR_MAGNET+k-1) ];
-    Rotor_Magnets += Region[ Rotor_Magnet~{k} ];
-  EndFor
-
-  nbInds = (Flag_Symmetry) ? NbrPoles*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ;
-  Printf("NbrPoles=%g, nbInds=%g SymmetryFactor=%g", NbrPoles, nbInds, SymmetryFactor);
-
-  Stator_Ind_Ap = #{};              Stator_Ind_Am = #{STATOR_IND_AM};
-  Stator_Ind_Bp = #{};              Stator_Ind_Bm = #{STATOR_IND_BM};
-  Stator_Ind_Cp = #{STATOR_IND_CP}; Stator_Ind_Cm = #{};
-  If(NbrPoles > 1)
-    Stator_Ind_Ap += #STATOR_IND_AP;
-    Stator_Ind_Bp += #STATOR_IND_BP;
-    Stator_Ind_Cm += #STATOR_IND_CM;
-  EndIf
-
-  PhaseA = Region[{ Stator_Ind_Ap, Stator_Ind_Am }];
-  PhaseB = Region[{ Stator_Ind_Bp, Stator_Ind_Bm }];
-  PhaseC = Region[{ Stator_Ind_Cp, Stator_Ind_Cm }];
-
-  // Provisional: Just one physical region for nice graph in Onelab
-  PhaseA_pos = Region[{ Stator_Ind_Am }];
-  PhaseB_pos = Region[{ Stator_Ind_Bm }];
-  PhaseC_pos = Region[{ Stator_Ind_Cp }];
-
-  Stator_IndsP = Region[{ Stator_Ind_Ap, Stator_Ind_Bp, Stator_Ind_Cp }];
-  Stator_IndsN = Region[{ Stator_Ind_Am, Stator_Ind_Bm, Stator_Ind_Cm }];
-
-  Stator_Inds = Region[ {PhaseA, PhaseB, PhaseC} ] ;
-  Rotor_Inds  = Region[ {} ] ;
-
-  StatorC  = Region[{ }] ;
-  StatorCC = Region[{ Stator_Fe }] ;
-  RotorC   = Region[{ }] ;
-  RotorCC  = Region[{ Rotor_Fe, Rotor_Magnets }] ;
-
-  // Moving band:  with or without symmetry, these BND lines must be complete
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND;
-  For k In {1:SymmetryFactor}
-    Rotor_Bnd_MB~{k} = Region[ (ROTOR_BND_MOVING_BAND+k-1) ];
-    Rotor_Bnd_MB += Region[ Rotor_Bnd_MB~{k} ];
-  EndFor
-  Rotor_Bnd_MBaux = Region[ {Rotor_Bnd_MB, -Rotor_Bnd_MB~{1}}];
-
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-
-  mur_fe = 1000 ;
-  sigma_fe = 0 ;
-
-  NbrPhases = 3 ;
-  NbrPolePairs = NbrPolesTot/2 ;
-
-  DefineConstant[ b_remanent = { 1.2, Label "Remanent induction", Path "Input/3", Highlight "AliceBlue"} ] ;
-  // For a radial remanent b
-  For k In {1:nbMagnets}
-    br[ Rotor_Magnet~{k} ] = (-1)^(k-1) * b_remanent * Vector[ Cos[Atan2[Y[],X[]]], Sin[Atan2[Y[],X[]]], 0 ];
-  EndFor
-
-  Inominal = 3.9 ; // Nominal current
-  Tnominal = 2.5 ; // Nominal torque
-
-  //Data for modeling a stranded inductor
-  NbWires[]  = 104 ; // Number of wires per slot
-  // STATOR_IND_AM comprises all the slots in that phase, we need thus to divide by the number of slots
-  nbSlots[] = Ceil[nbInds/NbrPhases/2] ;
-  SurfCoil[] = SurfaceArea[]{STATOR_IND_AM}/nbSlots[] ;//All inductors have the same surface
-
-  FillFactor_Winding = 0.5 ; // percentage of Cu in the surface coil side, smaller than 1
-  Factor_R_3DEffects = 1.5 ; // bigger than Adding 50% of resistance
-
-  DefineConstant[ rpm = { 500,
-                          Label "speed in rpm",
-                          Path "Input/7", Highlight "AliceBlue"} ]; // speed in rpm
-  wr = rpm/60*2*Pi ; // speed in rad_mec/s
-
-  // supply at fixed position
-  DefineConstant[ Freq = {wr*NbrPolePairs/(2*Pi), ReadOnly 1,
-                          Path "Output/1", Highlight "LightYellow" } ];
-  Omega = 2*Pi*Freq ;
-  T = 1/Freq ;
-
-  DefineConstant[ thetaMax_deg = { 180, Label "End rotor angle (loop)",
-      Path "Input/21", Highlight "AliceBlue" } ];
-
-  theta0   = InitialRotorAngle + 0. ;
-  thetaMax = thetaMax_deg * deg2rad ; // end rotor angle (used in doing a loop)
-
-  DefineConstant[ NbTurns  = { (thetaMax-theta0)/(2*Pi), Label "Number of revolutions",
-      Path "Input/24", Highlight "LightGrey", ReadOnly 1} ];
-
-  DefineConstant[ delta_theta_deg = { 1., Label "step in degrees",
-      Path "Input/22", Highlight "AliceBlue"} ];
-
-  delta_theta = delta_theta_deg * deg2rad ;
-
-  time0 = 0 ; // at initial rotor position
-  delta_time = delta_theta/wr;
-  timemax = thetaMax/wr;
-
-  DefineConstant[ NbSteps = { Ceil[(timemax-time0)/delta_time], Label "Number of steps",
-      Path "Input/23", Highlight "LightGrey", ReadOnly 1} ];
-
-  RotorPosition[] = InitialRotorAngle + $Time * wr ;
-  RotorPosition_deg[] = RotorPosition[]*180/Pi;
-
-  Flag_ParkTransformation = 1 ;
-  Theta_Park[] = ((RotorPosition[] + Pi/8) - Pi/6) * NbrPolePairs; // electrical degrees
-  Theta_Park_deg[] = Theta_Park[]*180/Pi;
-
-  DefineConstant[ ID = { 0, Path "Input/60", Label "Id stator current", Highlight "AliceBlue"},
-    IQ = { Inominal, Path "Input/61", Label "Iq stator current", Highlight "AliceBlue"},
-    I0 = { 0, Visible 0} ] ;
-
-  If(Flag_SrcType_Stator==0)
-    UndefineConstant["Input/60ID"];
-    UndefineConstant["Input/61IQ"];
-  EndIf
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Dir="res/";
-ExtGmsh     = ".pos";
-ExtGnuplot  = ".dat";
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-If(Flag_SrcType_Stator==1)
-    UndefineConstant["Input/ZR"];
-EndIf
-
-If(Flag_Cir)
-  Include "pmsm_8p_circuit.pro" ;
-EndIf
-Include "machine_magstadyn_a.pro" ;
-
-DefineConstant[ ResolutionChoices    = {"TimeDomain_Loop", Path "GetDP/1"} ];
-DefineConstant[ PostOperationChoices = {"Map_LocalFields", Path "GetDP/2"} ];
-DefineConstant[ ComputeCommand       = {"-solve -v 1 -v2", Path "GetDP/9"} ];
diff --git a/contrib/mobile/Android/res/raw/pmsm_pro b/contrib/mobile/Android/res/raw/pmsm_pro
deleted file mode 100644
index b9ee5ce16a..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_pro
+++ /dev/null
@@ -1,211 +0,0 @@
-//
-// Permanent Magnet Synchronous Generator
-//
-
-Include "pmsm_data.geo";
-
-DefineConstant[ Flag_NL = {0,
-    Choices{ 0="Linear",
-             1="Nonlinear BH curve"},
-    Label "Fe magnetic law",
-    Path "Input/3", Highlight "Blue"} ] ;
-
-DefineConstant[ Flag_SrcType_Stator = {1,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Stator",
-    Path "Input/4", Highlight "Blue", Visible 1} ] ;
-
-DefineConstant[ Flag_SrcType_Rotor = {0,
-    Choices{ 0="None",
-      1="Current" },
-    Label "Source Type in Rotor",
-    Path "Input/5", Highlight "Blue", Visible 0} ] ;
-
-DefineConstant[ Flag_Cir = {!Flag_SrcType_Stator, Choices{0,1},
-    Label "Use circuit in Stator", ReadOnly 1, Visible 0} ] ;
-
-Group {
-  Stator_Fe     = #STATOR_FE ;
-  Stator_Al     = #{};
-  Stator_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Al     = #{};
-  Rotor_Cu     = #{};
-  Stator_Air    = #STATOR_AIR ;
-  Stator_Airgap = #STATOR_AIRGAP ;
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND ;
-  Stator_Bnd_A0 = #STATOR_BND_A0 ;
-  Stator_Bnd_A1 = #STATOR_BND_A1 ;
-
-  Rotor_Fe     = #ROTOR_FE ;
-  Rotor_Air    = #ROTOR_AIR ;
-  Rotor_Airgap = #ROTOR_AIRGAP ;
-
-  Rotor_Bnd_A0 = #ROTOR_BND_A0 ;
-  Rotor_Bnd_A1 = #ROTOR_BND_A1 ;
-
-  MovingBand_PhysicalNb = #MOVING_BAND ;  // Fictitious number for moving band, not in the geo file
-  Surf_Inf = #SURF_EXT ;
-  Surf_bn0 = #SURF_INT ;
-  Surf_cutA0 = #{STATOR_BND_A0, ROTOR_BND_A0};
-  Surf_cutA1 = #{STATOR_BND_A1, ROTOR_BND_A1};
-
-  Dummy = #NICEPOS;
-
-  nbMagnets = NbrPolesTot/SymmetryFactor ;
-  For k In {1:nbMagnets}
-    Rotor_Magnet~{k} = Region[ (ROTOR_MAGNET+k-1) ];
-    Rotor_Magnets += Region[ Rotor_Magnet~{k} ];
-  EndFor
-
-  nbInds = (Flag_Symmetry) ? NbrPoles*NbrSectTotStator/NbrPolesTot : NbrSectTotStator ;
-  Printf("NbrPoles=%g, nbInds=%g SymmetryFactor=%g", NbrPoles, nbInds, SymmetryFactor);
-
-  Stator_Ind_Ap = #{};              Stator_Ind_Am = #{STATOR_IND_AM};
-  Stator_Ind_Bp = #{};              Stator_Ind_Bm = #{STATOR_IND_BM};
-  Stator_Ind_Cp = #{STATOR_IND_CP}; Stator_Ind_Cm = #{};
-  If(NbrPoles > 1)
-    Stator_Ind_Ap += #STATOR_IND_AP;
-    Stator_Ind_Bp += #STATOR_IND_BP;
-    Stator_Ind_Cm += #STATOR_IND_CM;
-  EndIf
-
-  PhaseA = Region[{ Stator_Ind_Ap, Stator_Ind_Am }];
-  PhaseB = Region[{ Stator_Ind_Bp, Stator_Ind_Bm }];
-  PhaseC = Region[{ Stator_Ind_Cp, Stator_Ind_Cm }];
-
-  // Provisional: Just one physical region for nice graph in Onelab
-  PhaseA_pos = Region[{ Stator_Ind_Am }];
-  PhaseB_pos = Region[{ Stator_Ind_Bm }];
-  PhaseC_pos = Region[{ Stator_Ind_Cp }];
-
-  Stator_IndsP = Region[{ Stator_Ind_Ap, Stator_Ind_Bp, Stator_Ind_Cp }];
-  Stator_IndsN = Region[{ Stator_Ind_Am, Stator_Ind_Bm, Stator_Ind_Cm }];
-
-  Stator_Inds = Region[ {PhaseA, PhaseB, PhaseC} ] ;
-  Rotor_Inds  = Region[ {} ] ;
-
-  StatorC  = Region[{ }] ;
-  StatorCC = Region[{ Stator_Fe }] ;
-  RotorC   = Region[{ }] ;
-  RotorCC  = Region[{ Rotor_Fe, Rotor_Magnets }] ;
-
-  // Moving band:  with or without symmetry, these BND lines must be complete
-  Stator_Bnd_MB = #STATOR_BND_MOVING_BAND;
-  For k In {1:SymmetryFactor}
-    Rotor_Bnd_MB~{k} = Region[ (ROTOR_BND_MOVING_BAND+k-1) ];
-    Rotor_Bnd_MB += Region[ Rotor_Bnd_MB~{k} ];
-  EndFor
-  Rotor_Bnd_MBaux = Region[ {Rotor_Bnd_MB, -Rotor_Bnd_MB~{1}}];
-
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Function {
-
-  mur_fe = 1000 ;
-  sigma_fe = 0 ;
-
-  NbrPhases = 3 ;
-  NbrPolePairs = NbrPolesTot/2 ;
-
-  DefineConstant[ b_remanent = { 1.2, Label "Remanent induction", Path "Input/3", Highlight "AliceBlue"} ] ;
-  // For a radial remanent b
-  For k In {1:nbMagnets}
-    br[ Rotor_Magnet~{k} ] = (-1)^(k-1) * b_remanent * Vector[ Cos[Atan2[Y[],X[]]], Sin[Atan2[Y[],X[]]], 0 ];
-  EndFor
-
-  Inominal = 3.9 ; // Nominal current
-  Tnominal = 2.5 ; // Nominal torque
-
-  //Data for modeling a stranded inductor
-  NbWires[]  = 104 ; // Number of wires per slot
-  // STATOR_IND_AM comprises all the slots in that phase, we need thus to divide by the number of slots
-  nbSlots[] = Ceil[nbInds/NbrPhases/2] ;
-  SurfCoil[] = SurfaceArea[]{STATOR_IND_AM}/nbSlots[] ;//All inductors have the same surface
-
-  FillFactor_Winding = 0.5 ; // percentage of Cu in the surface coil side, smaller than 1
-  Factor_R_3DEffects = 1.5 ; // bigger than Adding 50% of resistance
-
-  DefineConstant[ rpm = { 500,
-                          Label "speed in rpm",
-                          Path "Input/7", Highlight "AliceBlue"} ]; // speed in rpm
-  wr = rpm/60*2*Pi ; // speed in rad_mec/s
-
-  // supply at fixed position
-  DefineConstant[ Freq = {wr*NbrPolePairs/(2*Pi), ReadOnly 1,
-                          Path "Output/1", Highlight "LightYellow" } ];
-  Omega = 2*Pi*Freq ;
-  T = 1/Freq ;
-
-  DefineConstant[ thetaMax_deg = { 180, Label "End rotor angle (loop)",
-      Path "Input/21", Highlight "AliceBlue" } ];
-
-  theta0   = InitialRotorAngle + 0. ;
-  thetaMax = thetaMax_deg * deg2rad ; // end rotor angle (used in doing a loop)
-
-  DefineConstant[ NbTurns  = { (thetaMax-theta0)/(2*Pi), Label "Number of revolutions",
-      Path "Input/24", Highlight "LightGrey", ReadOnly 1} ];
-
-  DefineConstant[ delta_theta_deg = { 1., Label "step in degrees",
-      Path "Input/22", Highlight "AliceBlue"} ];
-
-  delta_theta = delta_theta_deg * deg2rad ;
-
-  time0 = 0 ; // at initial rotor position
-  delta_time = delta_theta/wr;
-  timemax = thetaMax/wr;
-
-  DefineConstant[ NbSteps = { Ceil[(timemax-time0)/delta_time], Label "Number of steps",
-      Path "Input/23", Highlight "LightGrey", ReadOnly 1} ];
-
-  RotorPosition[] = InitialRotorAngle + $Time * wr ;
-  RotorPosition_deg[] = RotorPosition[]*180/Pi;
-
-  Flag_ParkTransformation = 1 ;
-  Theta_Park[] = ((RotorPosition[] + Pi/8) - Pi/6) * NbrPolePairs; // electrical degrees
-  Theta_Park_deg[] = Theta_Park[]*180/Pi;
-
-  DefineConstant[ ID = { 0, Path "Input/60", Label "Id stator current", Highlight "AliceBlue"},
-    IQ = { Inominal, Path "Input/61", Label "Iq stator current", Highlight "AliceBlue"},
-    I0 = { 0, Visible 0} ] ;
-
-  If(Flag_SrcType_Stator==0)
-    UndefineConstant["Input/60ID"];
-    UndefineConstant["Input/61IQ"];
-  EndIf
-}
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-Dir="res/";
-ExtGmsh     = ".pos";
-ExtGnuplot  = ".dat";
-
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-// --------------------------------------------------------------------------
-
-If(Flag_SrcType_Stator==1)
-    UndefineConstant["Input/ZR"];
-EndIf
-
-If(Flag_Cir)
-  Include "pmsm_8p_circuit.pro" ;
-EndIf
-Include "machine_magstadyn_a.pro" ;
-
-DefineConstant[ ResolutionChoices    = {"TimeDomain_Loop", Path "GetDP/1"} ];
-DefineConstant[ PostOperationChoices = {"Map_LocalFields", Path "GetDP/2"} ];
-DefineConstant[ ComputeCommand       = {"-solve -v 1 -v2", Path "GetDP/9"} ];
diff --git a/contrib/mobile/Android/res/raw/pmsm_rotor_geo b/contrib/mobile/Android/res/raw/pmsm_rotor_geo
deleted file mode 100644
index c051cf1a6d..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_rotor_geo
+++ /dev/null
@@ -1,163 +0,0 @@
-//--------------------------------------------------------------------------------
-// Rotor PMSM
-//--------------------------------------------------------------------------------
-A = InitialRotorAngle-45/2*deg2rad + A1; // with Theta_Park
-
-sinA = Sin(A); cosA = Cos(A);
-pntR[]+=newp; Point(newp)={rR1*cosA, rR1*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR2*cosA, rR2*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR4*cosA, rR4*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rR5*cosA, rR5*sinA, 0, pR1};
-pntR[]+=newp; Point(newp)={rB1*cosA, rB1*sinA, 0, pR2};
-
-For k In {0:#pntR[]-2}
- linR0[]+=newl; Line(newl) = {pntR[k], pntR[k+1]};
-EndFor
-
-Transfinite Line{linR0[0]} = Ceil[(rR2-rR1)/pR1] ;
-Transfinite Line{linR0[1]} = Ceil[(rR4-rR2)/pR1] ;
-Transfinite Line{linR0[2]} = Ceil[(rR5-rR4)/pR1] ;
-Transfinite Line{linR0[3]} = Ceil[(rB1-rR5)/pR1] ;
-
-For k In {0:#linR0[]-1}
- linR1[] += Rotate {{0, 0, 1}, {0, 0, 0}, A0+A1} { Duplicata{Line{linR0[k]};} };
-EndFor
-
-AA[] = {(A0-Th_magnet)/2+A1, Th_magnet, (A0-Th_magnet)/2+A1} ;
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-
-surfint[]=cirR[{0,1,2}] ; // boundary conditions
-
-pMagnet[] = Rotate {{0, 0, 1}, {0, 0, 0}, AA[0]} { Duplicata{Point{pntR[1]};} };
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{pMagnet[0]}; };
-pMagnet[] += lin[0];
-cirR[] += lin[1] ;
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[2]}; };
-cirR[]+=lin[1]; pMagnet[] += lin[0];
-pMagnet[] += Rotate {{0, 0, 1}, {0, 0, 0}, AA[1]} { Duplicata{Point{lin[0]};} };
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{pMagnet[3]}; };
-cirR[]+=lin[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[0]} { Point{pntR[3]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[1]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, AA[2]} { Point{lin[0]}; };
-cirR[]+=lin[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0+A1} { Point{pntR[4]}; };
-cirR[]+=lin[1];
-
-linR2[] = Rotate {{0, 0, 1}, {0, 0, 0}, (A0-Th_magnet)/2+A1} { Duplicata{Line{linR0[{1,2}]};} };
-linR3[] = Rotate {{0, 0, 1}, {0, 0, 0},-(A0-Th_magnet)/2+A1} { Duplicata{Line{linR1[{1,2}]};} };
-
-// surfaces rotor
-Line Loop(newll) = {linR0[{0,1}], cirR[4], -linR2[0], cirR[3], linR3[0], cirR[5], -linR1[{1,0}], -cirR[{2,1,0}]};
-srotor[0]=news; Plane Surface(srotor[0]) = {newll-1};
-
-Line Loop(newl) = {linR2[1], cirR[7], -linR3[{1,0}], -cirR[3], linR2[0]};
-smagnet[0]=news; Plane Surface(smagnet[0]) = {newll-1};
-
-nn = #cirR[]-1 ;
-Line Loop(newll) = {cirR[{nn-5}], linR2[1], -cirR[{nn-3}], -linR0[2]};
-sairrotor[]+=news; Plane Surface(news) = {newll-1};
-Line Loop(newll) = {cirR[{nn-4}], linR1[2], -cirR[{nn-1}], -linR3[1]};
-sairrotor[]+=news; Plane Surface(news) = {newll-1};
-
-Line Loop(newll) = {linR0[3], cirR[nn], -linR1[3], -cirR[{nn-1:nn-3:-1}]};
-sairrotormb[]+=news; Plane Surface(news) = {newll-1};
-
-// -------------------------------------------------------------------------------
-// Moving band == AirGap rotor side
-// -------------------------------------------------------------------------------
-Transfinite Line{cirR[nn]} = NbrDivMB+1 ;
-
-//Filling the gap for the whole 2*Pi
-lineMBrotor[]=cirR[{nn}];
-For k In {1:NbrPolesTot-1}
-  lineMBrotoraux[]+=Rotate {{0, 0, 1}, {0, 0, 0}, k*A0} { Duplicata{Line{lineMBrotor[]};} };
-EndFor
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-If(SymmetryFactor<8)
-// FULL MODEL ==> Rotation of NbrPolesTot*Pi/4
-// For simplicity: rotating first the interior and exterior boundaries
-
-  If (SymmetryFactor>1)
-    For k In {0:#linR1[]-1}
-      linR1_[] += Rotate {{0, 0, 1}, {0, 0, 0}, 2*Pi/SymmetryFactor-Pi/4} { Duplicata{Line{linR1[k]};} };
-    EndFor
-    linR1[] = linR1_[];
-  EndIf
-
-  For k In {1:NbrPoles-1}
-    surfint[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{surfint[{0:2}]};} };
-  EndFor
-  For k In {1:NbrPoles-1}
-    srotor[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{srotor[0]};} };
-    smagnet[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{smagnet[0]};} };
-    sairrotor[]  += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairrotor[{0,1}]};} };
-    sairrotormb[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairrotormb[0]};} };
-  EndFor
-EndIf
-
-
-// -------------------------------------------------------------------------------
-// Physical regions
-// -------------------------------------------------------------------------------
-
-Physical Surface(ROTOR_FE)     = {srotor[]};     // Rotor
-Physical Surface(ROTOR_AIR)    = {sairrotor[]};  // AirRotor
-Physical Surface(ROTOR_AIRGAP) = {sairrotormb[]};// AirRotor for possible torque computation with Maxwell stress tensor
-
-NN = (Flag_Symmetry)?NbrPoles:NbrPolesTot;
-For k In {0:NN-1}
-  Physical Surface(ROTOR_MAGNET+k) = {smagnet[k]}; // Magnets
-EndFor
-
-Physical Line(SURF_INT) = {surfint[]}; // SurfInt
-
-
-If(Flag_Symmetry)  //Lines for symmetry link
-  Physical Line(ROTOR_BND_A0)  = linR0[];
-  Physical Line(ROTOR_BND_A1)  = linR1[];
-EndIf
-
-lineMBrotor[] += lineMBrotoraux[] ;
-If(!Flag_Symmetry)
-  Physical Line(ROTOR_BND_MOVING_BAND)  = {lineMBrotor[]};
-EndIf
-If(Flag_Symmetry)
-  nr = #lineMBrotor[];
-  nnp = nr/(NbrPolesTot/NbrSect) ;
-  For k In {1:Floor[NbrPolesTot/NbrSect]}
-    kk= ((k*nnp-1) > nr) ? nr-1 : k*nnp-1 ;
-    Physical Line(ROTOR_BND_MOVING_BAND+k-1) = lineMBrotor[{(k-1)*nnp:kk}] ;
-  EndFor
-  k1 = Floor[NbrPolesTot/NbrSect];
-  k2 = Ceil[NbrPolesTot/NbrSect];
-  If (k2 > k1)
-    Physical Line(ROTOR_BND_MOVING_BAND+k2-1) = lineMBrotor[{(k2-1)*nnp:#lineMBrotor[]-1}] ;
-  EndIf
-EndIf
-
-// For nice visualisation...
-linRotor[]  = CombinedBoundary{Surface{srotor[]};};
-linMagnet[] = Boundary{Surface{smagnet[]};};
-
-nicepos_rotor[] += { linRotor[], linMagnet[] };
-
-Color SteelBlue {Surface{srotor[]};}
-Color SkyBlue {Surface{sairrotor[], sairrotormb[]};}
-Color Orchid {Surface{smagnet[{0:#smagnet[]-1:2}]};}
-If(#smagnet[]>1)
-Color Purple {Surface{smagnet[{1:#smagnet[]-1:2}]};}
-EndIf
diff --git a/contrib/mobile/Android/res/raw/pmsm_stator_geo b/contrib/mobile/Android/res/raw/pmsm_stator_geo
deleted file mode 100644
index e928a4a055..0000000000
--- a/contrib/mobile/Android/res/raw/pmsm_stator_geo
+++ /dev/null
@@ -1,215 +0,0 @@
-// -------------------------------------------------------------------------------
-// Moving band == AirGap stator side
-// -------------------------------------------------------------------------------
-pntG[]+=newp; Point(newp) = {rB2, 0., 0., pS1}; // aligned with the stator
-circ[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0} { Point{pntG[0]}; };
-pntG[]+=circ[0];
-lineMBstator[]=circ[1];
-Transfinite Line{lineMBstator[0]} = NbrDivMB+1 ;
-
-//Filling the gap for the whole 2*Pi
-For k In {1:NbrPolesTot-1}
-  lineMBstatoraux[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*A0} { Duplicata{Line{lineMBstator[0]};} };
-EndFor
-
-// -------------------------------------------------------------------------------
-// Stator
-// -------------------------------------------------------------------------------
-
-pntS[] = newp; Point(newp)={rS1, 0, 0, pS1};
-linS[] = newl; Line(newl) = {pntG[0], pntS[0]};
-linS[]+= Rotate {{0, 0, 1}, {0, 0, 0}, A0} { Duplicata{Line{linS[0]};} };
-
-pntS[]+=newp; Point(newp)={rS7,0,0,pS2};
-points[]=Boundary{Line{linS[1]};};
-pntS[]+=points[1];
-
-lin[] = Extrude {{0, 0, 1}, {0, 0, 0}, A0} { Point{pntS[1]}; };
-cirS[]= lin[1]; pntS[]+=lin[0];
-
-linS[]+=newl; Line(newl) = {pntS[0], pntS[1]};
-linS[]+=newl; Line(newl) = {pntS[2], pntS[3]};
-
-// -------------------------------------------------------------------------------
-// Slots
-// -------------------------------------------------------------------------------
-
-A2 = 0.0;
-AA[]=deg2rad*{2.77+A2, 4.0+A2, 5.52+A2, 5.56+A2, 5.65+A2, 9.35+A2, 9.44+A2, 9.48+A2, 11+A2, 12.23+A2} ;
-
-For k In {0:#AA[]-1}
-  cosAA[]+=Cos(AA[k]); sinAA[]+=Sin(AA[k]);
-EndFor
-
-pntSlot[]+=newp; Point(newp)={rS5*cosAA[0], rS5*sinAA[0], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS3*cosAA[1], rS3*sinAA[1], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS1*cosAA[2], rS1*sinAA[2], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS2*cosAA[3], rS2*sinAA[3], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS4*cosAA[3], rS4*sinAA[3], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS6*cosAA[4], rS6*sinAA[4], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS6*cosAA[5], rS6*sinAA[5], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS4*cosAA[6], rS4*sinAA[6], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS2*cosAA[6], rS2*sinAA[6], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS1*cosAA[7], rS1*sinAA[7], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS3*cosAA[8], rS3*sinAA[8], 0., pS3};
-pntSlot[]+=newp; Point(newp)={rS5*cosAA[9], rS5*sinAA[9], 0., pS3};
-
-// air slot 1
-linASlot[]+=newl ; Line(newl)={pntSlot[2], pntSlot[3]};
-linASlot[]+=newl ; Line(newl)={pntSlot[3], pntSlot[1]};
-linASlot[]+=newl ; Circle(newl)={pntSlot[1], cen, pntSlot[10]};
-linASlot[]+=newl ; Line(newl)={pntSlot[10], pntSlot[8]};
-linASlot[]+=newl ; Line(newl)={pntSlot[8], pntSlot[9]};
-linASlot[]+=newl ; Circle(newl)={pntSlot[9], cen, pntSlot[2]};
-
-Line Loop(newll) = {linASlot[]};
-sairslot[] += news ; Plane Surface(sairslot[0]) = {newll-1};
-
-// coil slot 1
-linSlot[]+=newl ; Line(newl)={pntSlot[1], pntSlot[0]};
-linSlot[]+=newl ; Circle(newl)= {pntSlot[0], pntSlot[4], pntSlot[5]};
-linSlot[]+=newl ; Line(newl)={pntSlot[5], pntSlot[6]};
-linSlot[]+=newl ; Circle(newl)={pntSlot[6], pntSlot[7],pntSlot[11]};
-linSlot[]+=newl ; Line(newl)={pntSlot[11], pntSlot[10]};
-
-Line Loop(newll) = {-linASlot[2],linSlot[]};
-sslot[] += news ; Plane Surface(sslot[0]) = {newll-1};
-
-// slots 2 and 3
-A2 = 15*deg2rad;
-
-pntSlot0[0] = pntSlot[2];
-pntSlot1[0] = pntSlot[9];
-For k In{1:2}
-  pntSlot0[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Point{pntSlot0[k-1]};} };
-  pntSlot1[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Point{pntSlot1[k-1]};} };
-EndFor
-
-For k In{1:2}
-  sslot[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Surface{sslot[k-1]};} };
-  sairslot[] += Rotate {{0, 0, 1}, {0, 0, 0}, A2} { Duplicata{Surface{sairslot[k-1]};} };
-EndFor
-
-cSlot[]+=newl; Circle(newl) = {pntS[0], cen, pntSlot[2]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[0], cen, pntSlot0[1]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[1], cen, pntSlot0[2]};
-cSlot[]+=newl; Circle(newl) = {pntSlot1[2], cen, pntS[2]};
-
-linesslot0[] = CombinedBoundary{ Surface{ sslot[0], sairslot[0] } ;};
-linesslot1[] = CombinedBoundary{ Surface{ sslot[1], sairslot[1] } ;};
-linesslot2[] = CombinedBoundary{ Surface{ sslot[2], sairslot[2] } ;};
-
-Line Loop(newll) = {-lineMBstator[0],linS[0], cSlot[0],-linesslot0[{4}],
-                    cSlot[1],-linesslot1[{9}],
-                    cSlot[2],-linesslot2[{9}], cSlot[3], -linS[1]};
-sairgapS[0]=news; Plane Surface(sairgapS[0]) = {newll-1};
-
-linesslot0[] -= linesslot0[{4}];
-linesslot1[] -= linesslot1[{9}];
-linesslot2[] -= linesslot2[{9}];
-Line Loop(newll) = { cSlot[0], linesslot0[],
-                     cSlot[1], linesslot1[],
-                     cSlot[2], linesslot2[],
-                     cSlot[3], linS[3], -cirS[0], -linS[2]};
-sstator[0]=news; Plane Surface(sstator[0]) = {newll-1};
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-
-auxlink[]=linS[{1,3}]; // A1
-
-If(SymmetryFactor<8)
-  // FULL MODEL ==> Rotation of NbrPolesTot*Pi/4
-  // For simplicity: rotating the interior and exterior boundaries
-
- If (SymmetryFactor>1)
-    For k In {0:#auxlink[]-1}
-      auxlink_[] += Rotate {{0, 0, 1}, {0, 0, 0}, 2*Pi/SymmetryFactor-Pi/4} { Duplicata{Line{auxlink[k]};} };
-    EndFor
-    auxlink[] = auxlink_[];
-  EndIf
-
-  For k In {1:NbrPoles-1}
-    cirS[] += Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Line{cirS[{0}]};} };
-  EndFor
-  For k In {1:NbrPoles-1}
-    sstator[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sstator[0]};} };
-    sairgapS[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairgapS[0]};} };
-    sairslot[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sairslot[{0:2}]};} };
-    sslot[]+= Rotate {{0, 0, 1}, {0, 0, 0}, k*Pi/4} { Duplicata{ Surface{sslot[{0:2}]};} };
-  EndFor
-EndIf
-
-
-
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-// Physical regions
-// -------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------
-
-Physical Surface(STATOR_FE)     = {sstator[]};  // Stator
-Physical Surface(STATOR_AIR)    = {sairslot[]}; // AirStator
-Physical Surface(STATOR_AIRGAP) = {sairgapS[]}; // AirStator for possible torque computation with Maxwell stress tensor
-
-NN = (Flag_Symmetry)?NbrSectStator:NbrSectTotStator;
-//For k In {0:NN-1}
-//  Physical Surface(STATOR_IND+k) = {sslot[k]}; //Inds
-//EndFor
-
-Physical Surface(STATOR_IND_AM) = {sslot[{0:NN-1:6}]};
-Physical Surface(STATOR_IND_CP) = {sslot[{1:NN-1:6}]};
-Physical Surface(STATOR_IND_BM) = {sslot[{2:NN-1:6}]};
-If(NbrSectStator>2)
-  Physical Surface(STATOR_IND_AP) = {sslot[{3:NN-1:6}]};
-  Physical Surface(STATOR_IND_CM) = {sslot[{4:NN-1:6}]};
-  Physical Surface(STATOR_IND_BP) = {sslot[{5:NN-1:6}]};
-EndIf
-
-Color Pink         {Surface{ sslot[{0:NN-1:6}] };} // A-
-Color ForestGreen  {Surface{ sslot[{1:NN-1:6}] };} // C+
-Color PaleGoldenrod{Surface{ sslot[{2:NN-1:6}] };} // B-
-If (#sslot[]>=6)
-Color Red        {Surface{ sslot[{3:NN-1:6}] };} // A+
-Color SpringGreen{Surface{ sslot[{4:NN-1:6}] };} // C-
-Color Gold       {Surface{ sslot[{5:NN-1:6}] };} // B+
-EndIf
-
-
-Physical Line(SURF_EXT) = {cirS[]}; // SurfExt
-
-If(Flag_Symmetry) //Lines for symmetry link
-  Physical Line(STATOR_BND_A0) = linS[{0,2}];
-  Physical Line(STATOR_BND_A1) = auxlink[] ;
-EndIf
-
-
-lineMBstator[] += lineMBstatoraux[] ;
-If(!Flag_Symmetry)
-  Physical Line(STATOR_BND_MOVING_BAND) = {lineMBstator[]};
-EndIf
-If(Flag_Symmetry)
-ns = #lineMBstator[];
-nns = ns/SymmetryFactor ;
-For k In {1:SymmetryFactor}
-  kk= ((k*nns-1) > ns) ? ns-1 : k*nns-1 ;
-  Physical Line(STATOR_BND_MOVING_BAND+k-1) = {lineMBstator[{(k-1)*nns:kk}]};
-EndFor
-  k1 = Floor[NbrPolesTot/NbrSect];
-  k2 = Ceil[NbrPolesTot/NbrSect];
-  If (k2 > k1)
-    Physical Line(STATOR_BND_MOVING_BAND+k2-1) = lineMBstator[{(k2-1)*nns:#lineMBstator[]-1}] ;
-  EndIf
-EndIf
-
-
-// For nice visualisation...
-linStator[] = CombinedBoundary{Surface{sstator[]};};
-linSlot[] = CombinedBoundary{Surface{sslot[]};};
-
-nicepos_stator[] += {linStator[],linSlot[] };
-
-Color SteelBlue {Surface{sstator[]};}
-Color SkyBlue {Surface{sairslot[],sairgapS[]};}
-
-
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
index 87f177f177..1f0a1c6d81 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelList.java
@@ -41,7 +41,7 @@ public class ModelList extends Activity {
     	ListView list = new ListView(this);
     	Button loadSD = new Button(this);
     	loadSD.setText(R.string.button_open_external_file);
-    	loadSD.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
+    	loadSD.setLayoutParams(new ListView.LayoutParams(LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT));
     	loadSD.setOnClickListener(new View.OnClickListener() {
 			
 			public void onClick(View v) {
diff --git a/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java b/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
index 21c8bb7261..56653765f1 100644
--- a/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
+++ b/contrib/mobile/Android/src/org/geuz/onelab/SplashScreen.java
@@ -1,9 +1,10 @@
 package org.geuz.onelab;
 
+import java.io.BufferedInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
 import android.app.Activity;
 import android.content.Context;
@@ -59,34 +60,19 @@ public class SplashScreen extends Activity{
      */
     private void loadNative()
     {
-    	for( Field f : R.raw.class.getFields()) {
-    		try {
-				int Msh = f.getInt(null), i;
-				String androidName = getResources().getResourceEntryName(Msh);
-				StringBuilder tmp = new StringBuilder(androidName);
-				tmp.setCharAt(androidName.lastIndexOf('_'), '.');
-				String nativeName = tmp.toString();
-				/*if(new File(getFilesDir().toString()+"/"+nativeName).exists()){
-					//TODO check if the files are the same
-					continue;
-				}*/
-				InputStream mshFile = getResources().openRawResource(Msh);
-		    	
-		    	FileOutputStream outputStream = openFileOutput(nativeName, Context.MODE_WORLD_READABLE);
-		    	byte[] buffer = new byte[2048];
-		    	
-		    	while ((i = mshFile.read(buffer, 0, buffer.length)) > 0) 
+    	try {
+    		ZipInputStream zipStream = new ZipInputStream(new BufferedInputStream(getResources().openRawResource(R.raw.models)));
+			ZipEntry entry;
+		     while ((entry = zipStream.getNextEntry()) != null) {
+				FileOutputStream outputStream = openFileOutput(entry.getName(), Context.MODE_PRIVATE);
+				byte[] buffer = new byte[2048];
+				for (int i = zipStream.read(buffer, 0, buffer.length); i > 0;i = zipStream.read(buffer, 0, buffer.length)) 
 					outputStream.write(buffer,0,i);
-
-			} catch (IllegalArgumentException e) {
-				Log.e("Load files", "Error " + e.toString());
-				
-			} catch (IllegalAccessException e) {
-				Log.e("Load files", "Error " + e.toString());
-				
-			} catch (IOException e) {
-				Log.e("Load files", "Error " + e.toString());
-			}
-    	}
+				Log.d("Load files", "Add " + entry.getName() + " from the zip file");
+		     }
+		     zipStream.close();
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
     }
 }
-- 
GitLab