SkillAgentSearch skills...

FEMM

Finite Element Method Magnetics: A Windows finite element solver for 2D and axisymmetric magnetic, electrostatic, heat flow, and current flow problems with graphical pre- and post-processors

Install / Use

/learn @cenit/FEMM
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

FEMM 4.2 22Oct2023

22Oct2023

  • Updated radiation boundary condition in thermal problems so that convective terms are also used, i.e. a combined radiation/convection/flux boundary can be modeled if desired. Convection bc also updated so that convection/flux can be modeled if desired.
  • Updated some low-level aspects how femm and the solvers are initialized to support programmatically hiding the main window while using pyfemm in Wine.
  • Patched triangle source code from: https://github.com/microsoft/vcpkg/tree/master/ports/triangle added for VS2022 compatibility. The VS2022 version of the solution points to the triangle64 directory which contains the patched code. However, the distribution executables were compiled with VS2008 using the source in the (unpatched) triangle directory for Wine compatibility.

25Jul2022

  • Fixed a bug where imaginary part of a conductor voltage in a current flow problems was ignored.

01Apr2022

  • Fixed bug where rotation of magnetic material is incorrect if the material is defined more than once.

01Mar2022

  • Changed installer for better silent operation

23Jan2022:

  • Fixed magnetic material property definitions for some SVG wire sizes

26Jun2021:

  • mi_setcomment and related ei_, hi_, and ci_ functions added to set the comment text in the problem definition.

26Jun2021:

  • Fixed energy integral for airgap boundary conditions. It didn't work correctly for time-harmonic problems (thanks Nicola Bianchi)
  • Fixed broken magnetic materials library entries for legacy NdFeB 40, M47 silicon steel.
  • Changed lua implementation of mi_probdef and friends so that an out-of-range Precision is clipped to the allowable range rather than throwing a cryptic error message.
  • Fixed SciFEMM to work with Scilab 6.1.0. SciFEMM bug with mi_getmaterial, ci_getmaterial, ei_getmaterial, and hi_getmaterial fixed.
  • Added retries to various "fopen" instances that could occasionally fail in long batch runs.
  • Changed formatting string for B-H points dialog to %.15g instead of %f so that precision of B-H curve points is not truncated.
  • Updated to compile with Visual Studio 2019. Improves solution speed on most problems.
  • Fixed OnDraw functions so that the operating system does not think that the program is non-responsive during the drawing of density plots for solutions with lots of elements.
  • Added log(|B|) density plot for magnetics problems.
  • Fixed vector plot problem in 22Jul2020 build inadvertently introduced by log(|B|) density plot
  • Changed all calls to Triangle to use the -j flag to "jettison vertices that are not part of the final triangulation from the output .node file". This gets rid of the spurious "singlarity flag tripped" and "can't solve the problem" messages that popped up due to orphaned nodes in the solution domain.

21Apr2019:

  • Start from previous solution for magnetics problems. To use this, specify a file name in "Previous Solution" edit box in the Problem Definition dialog. Specify the "Prev Type" to be "None". This works if the mesh has not changed from the last solution. Good rotating problems with the "sliding band" boundary connecting the rotor and stator. These problems often involve consideration of a sequence of problems with slightly different rotor angles and currents. The "sliding band" approach lets the rotor move without modifying the mesh.
  • Updated materials library for heat flow problems (thanks to Daniel Gheorghe)
  • Updated hard magnetic materials in magnetics materials library (thanks to Mike Devine). Includes new definitions for Sintered NdFeB, Bonded NdFeB, Sintered SmCo, and Alnico. See explanatory webpages on femm.info for sources and rationale.
  • Fixed precision in exported DXF so that no precision is lost in DXF exports.
  • Changed the algorithm that identifies limits for plotting flux density so that exterior regions (both Kelvin Transformation and IABC) are not considered. These exterior regions can have high flux densities that mask the flux density variations in the interior region of interest.

06Oct2018: (Test Build)

  • Fixed the cause of an occasional error that happens running many runs in Mathematica. Fkn.exe occasionally could not open a *.ans file to write over older results. The fix adds a retry if the file can't be opened.
  • Fixed a bug with the computation of the "sliding band" incremental torque integral. The "previous solution" used to calculate the integral was not obtained correctly.
  • For incremental runs, mesh temporary files never got deleted, leaving extra, spurious files hanging around. Code has been added to get rid of these files when they're not needed any more.

25Feb2018:

  • Added an "air gap boundary condition" that allows the rotor to be continuously moved without the mesh changing with rotor position. A number of new scripting functions have been added to calculate forces, torques, and field values of associated with an analytical solution in the air gap between the rotor and stator. Detailed examples to follow.
  • Added file-by-file smartmesh attribute along with scripting commands for each input file type (mi_smartmesh, ei_smartmesh, hi_smartmesh, ci_smartmesh) to turn smartmesh on or off for a particular file. The global smartmesh scripting function still works to turn smartmesh on or off across all problem types for a particular session.
  • Moved to console version of Triangle 1.6 made from directly compiling Triangle source rather than wrapping it with a dialog.

03Dec2017: (Test Build)

  • Fixed one more focus-stealing hole that took away focus during Lua script execution. As noted at https://tinyurl.com/y9uggja3 the OnInitDialog functions of triangle.exe, fkn.exe, belasolv.exe, csolv.exe, and hsolve.exe must return FALSE instead of TRUE, or else focus might be stolen.

24Nov2017: (Test Build)

  • Changed to Triangle 1.6 instead of Triangle 1.3. Version 1.6 is more robust and usually does not hang / crash if there are small angles in the input geometry.
  • In cases where Triangle previously hung (displaying an error message) when an error occurred, the program now terminates and indicates that an error has occurred. This is especially useful for Matlab/Octave scripts, which now get passed the error indication rather than having the script hang on the meshing error.
  • Fixed a number of additional instances of focus-stealing during script execution. This makes it possible to do other things while FEMM is running a long (Matlab/Octave or Mathematica) script.
  • Added a new optional parameter to openfemm in Matlab/Octave/Mathematica and Scilab scripting. openfemm(1) starts FEMM fully minimized.
  • Calls to the analysis (mi_analyze, etc.) assume the state of the main window. For example, if a scripting run is started minimized with openfemm(1), subsequent mi_analyze() calls will also be run minimized automatically.
  • Fixed SciFEMM interface so that it works with Scilab 6.0.0

24Sep2017: (Test Build)

  • Fixed mi_attachdefault, ei_attachdefault, hi_attachdefault, and ci_attachdefault functions, which didn't work correctly.

23Jun2016: (Test Build)

  • Fixed sign error with off-diagonal term in permeability tensor for incremental permeability problems.

14Jun2016: (Test Build)

  • Added a "frozen permeability" problem type that can be used to split up field contributions between various excitation sources for nonlinear DC problems. Also extends the "incremental permeability" formulation to DC problems. The DC incremental results can be used as part of a general time-transient solver, essentially providing the derivatives of flux linkage with respect to incremental changes in current and with respect to small changes in position / orientation of moving parts.
  • Dropped support for versions of Mathematica before version 5.0. Versions prior to 5.0 do not include .NET/Link for interprocess communications,

12Jan2016:

  • Fixed bug added in 01Nov2015 that messed up the reported permeability and field intensity for nonlinear time harmonic problems.

01Nov2015:

  • Adds "incremental permeability" AC solver. An example application for this functionality is the analysis of the frequency-dependent impedance of speaker drivers about the DC operating point established by the speaker's permanent magnet.
    • DC operating point specified as the "Previous Solution" in the problem definition or via the mi_setprevious(filename) command in Lua.
  • Adds 10% and 15% Copper Clad Aluminum magnet wire material types. The material definition is intended to provide accurate estimates of proximity and skin effect losses across a wide range of frequencies with a bulk wire model (i.e. not every turn has to be individually modeled).
  • Changes to some of the issues pointed out over the last couple years, e.g.
    • Change to InTriangle test to fix the issues that could occur if a specified point is exactly on the line between two elements
    • Lua command to programmatically turn off "smart mesh" with the smartmesh(state) Lua command. State is 0 for no "smart mesh" and 1 for "smart mesh". Function has the same name in the Matlab interface and is named SmartMesh in the Mathematica implementation
    • Fixed bug where "mo_zoom", "eo_zoom", etc. didn't work right
    • Fixed an issue where the right energy / flux linkage was not reported for wound coils in AC magnetic problems if the frequency is very small (e.g. <1μHz)
  • For increased compatibility with Mathematica 10, the Mathematica interface has been changed to use .NET/Link when it is available (instead of MathLink). .NET/Link invokes FEMM as an out-of-proc ActiveX server (the same way that FEMM communicates with Matlab).

15Nov2013:

  • Changed the way that errors are trapped in Matlab/Octave and Scilab implementations so that errors that would normally display as message boxe
View on GitHub
GitHub Stars95
CategoryDevelopment
Updated12d ago
Forks24

Languages

C++

Security Score

80/100

Audited on Mar 13, 2026

No findings