I have several years of experience in developing efficient finite element analysis software for electrical machines. Click here to download the SMEKlib library for Matlab and Octave.
I do most of my development in Matlab, due to its inherent suitability for novel algorithm implementation and testing. Due to their vectorized implementation, my programs have computation times roughly on par with Fortran-based executables.
Below, you can find a brief description of my work along the years.
Established Methods
Obviously, I have had to implement several already well-established methods along the years:
Time-Stepping Analysis
Time-stepping (Crack-Nicolson, Backward Euler) analysis with nonlinear materials, eddy currents and motion. Most often used as reference solution in my work. Typically coupled with voltage-supplied circuit equations.
Matrix Assembly
Efficient assembly of the typical finite element matrices on Matlab. These matrices include the stiffness and mass matrices, along with the Jacobian for nonlinear analysis, and back-emf matrices for circuit coupling. The assembly is handled efficiently by extensive vectorization, with a 1.3-million-DoF stiffness matrix assembled in little over 1 second.
I also experimented with several kinds of shape functions (Lagrangian, vector-Lagrangian, Nedelec, Raviart-Thomas) and operators (div-div, div-curl, curl-curl, you name it), during my brief stint in least-squares FEM.
Motion and Mesh Coupling
I’ve implemented and used e.g. the following methods for modelling motion and coupling non-conforming meshes to each other
- Moving-band technique for motion
- Mortar coupling of non-conforming meshes (motive and stationary)
- Polynomial interpolation coupling of arbitrary order (motive and stationary)
- Sliding surface technique with harmonic weighing functions (efficient handling of rotation)
- Spectral modelling of the air-gap region (air-gap element, AGE)
I have used both the Lagrange multiplier approach and direct variable elimination with the mortar and interpolation approaches.
Writing C++ Extensions
To speed up computing a matrix Fourier series, I used the C++ library Eigen. The mex (Matlab Executable) implementation was up to 10x faster than the corresponding Matlab function, depending on problem size.
I’m currently working on C(++) implementations for the worst bottlenecks on my software, to further improve the competitiveness of my software.
Plotting and Post-Processing
Flux line and density plots. Loss computation.
Novel Approaches
I’ve been working on methods for light-weight computation of losses in stranded windings. My work includes the following.
Faster Time-Domain Analysis
I’m currently comparing the harmonic balance FEM and the Proper Generalized Decomposition (PGD) for faster steady-state analysis of electrical machines.
Two Thin-Conductor Models for Stranded Windings
These closely related methods are suitable for evaluating circulating currents and the associated losses in stranded winding. Any type of winding connection or packing is naturally handled. Both of the methods are based on a so-called thin-conductor model of the winding, yielding computational time reductions of 30-3000 x.
Published in IEEE Transactions on Magnetics.
Reduced Basis Modelling of Windings
Enables modelling all AC resistive losses in windings (skin effect, proximity effect, and circulating current losses) significantly faster compared to the traditional approaches.
Published in ICEM 2016. To be submitted to IEEE Transactions on Industry Applications. Extended work to be submitted to IEEE Transactions on Magnetics.
Circulating Currents in Random-Wound Machines
I modelled and estimated the statistical properties of circulating currents in random-wound high-speed induction motors. For the deterministic part of the problem, I used both the aforementioned thin-strand model and an extended circuit model. For stochastic analysis, I developed a sampling algorithm to model the uncertain winding process, and used it in conjunction with the Monte Carlo method.
Published in IEEE Transactions on Magnetics.
Effects of Material Degradation
Modelling the effects of material degradation due to punching of the electrical steel sheet. My work is mostly that of the instructor.
Uncertainty Quantification
Modelling random-wound windings. Due to the ultra-high stochastic dimensionality, Monte-Carlo analysis turned out to be the most promising approach.
However, I did experiment with different polynomial-chaos type approaches. I was able to form a series expansion for a random winding connection matrix, but the number of terms quickly became infeasible. PGD and tensor-based approaches, although efficient in simplified problems, suffered from convergence issues in realistic FEM settings.
Miscellaneous
Least-Squares FEM
I briefly experimented with least-squares FEM for analysis of electrical machines. None of the tested methods (plain LS-FEM, FOSLL) seemed to cope with well the sharp material property changes.
Computational Aspects of Modelling Winding Connections
Parametric assembly of winding connection matrices for typical winding types.