EM Solvers - what does everyone use? - Page 1
Forum section: electronics / rf-microwave

author: mikeb1279
author_rank: Contributor
timestamp: May 25, 2025, 11:42:45 pm
content: Hi All,Wondering what everyone uses (for personal projects, not commercial) as EM solvers for HF simulations (microwave to mm waves). It seems the mesh count limitation on Ansys HFSS and Microwave CST student/free versions makes them pretty much unusable for anything. I'm not complaining about this, I get that these are for profit companies with staff and bills to pay, but they don't seem to have a personal paid version either? Just contact us for commercial license package solutions.....Is my only choice OpenEMS? Or do people have other things they use?

author: rf-fil
author_rank: Regular Contributor
timestamp: May 26, 2025, 12:41:02 am
content: This bugs me too.For a limited case where I just want to find out the parasitics , I have tried FastHenry / FastCap, etc fromhttps://www.fastfieldsolvers.com/,which are free. It took a bit of effort to figure out but was accurate.Then there is Sonnet for planar structures like PCBs. Great tool that does one thing really well. Not free, but cheaper than the big tools like CST or ADS, last time I got quotes.

author: Weston
author_rank: Regular Contributor
timestamp: May 26, 2025, 05:05:12 am
content: I have made pretty good use of openEMS. The examples included in the install are useful for learning. I also found this project on GitHub to be a good reference:https://github.com/toammann/Multilayer_SMA2MicrostripBeyond openEMS I know of Meep and Palace. I only know they both exist, I have not talked to anyone actually using themhttps://meep.readthedocs.io/en/stable/https://awslabs.github.io/palace/stable/All these are FDTD solvers and may perform slowly on some classes of problems (high Q filters).There is also Elmer, which is FEM based:https://www.elmerfem.org/blog/general/application-fields-of-elmer/All of these tools have bad or non-existant UI's.Sam Aldhaher posts a lot about open source simulation tools. I think I remember him posting about Elmer before? His latest work is on using Blender as a front end for FastHenry, which is pretty niftyhttps://x.com/samerps

author: EggertEnjoyer123
author_rank: Frequent Contributor
timestamp: May 26, 2025, 07:10:49 am
content: OpenEMS seems to work well, but the learning curve is extremely steep.If you have any questions I could probably help since I've been using it for a while. The hardest parts are manually meshing the nets, dealing with connectivity issues (sometimes things look connected in CAD but aren't), and figuring out the ports (do not use lumped ports for microstrips)

author: mikeb1279
author_rank: Contributor
timestamp: May 26, 2025, 10:48:05 am
content: Thanks for your input everyone. At this point, I am really just looking to use it to check some Faraday/EM shielding designs as opposed to circuit/PCB design.I will have a bit of a look at Sonnet and if no joy there I will continue with OpenEMS.I do actually find it a little funny that in the days of people trying to flog you a SaaS product to do literally everything, one of the few pieces of software I want I can't actually get

author: rf-fil
author_rank: Regular Contributor
timestamp: May 27, 2025, 03:40:19 am
content: Quote from: mikeb1279 on May 26, 2025, 10:48:05 amIKR.. If Keysight made a pay-as-you-go cloud version of ADS, they could make some good money. Lots of people can't justify the full cost if we'd just use the tool a few times per year.

author: CatalinaWOW
author_rank: Super Contributor
timestamp: May 27, 2025, 04:11:46 am
content: Not my field, but it appears that FreeCAD in the FEM workbench has the basic tools to do this. At the very least it can solve for static fields and with appropriate boundary conditions on currents and potentials should give some clues.I have only done a tiny bit of FEM work in FreeCAD but it appears to be satisfactory and has no size limitations beyond your machinery and patience. And is totally free.Might be worth looking at.

author: mikeb1279
author_rank: Contributor
timestamp: June 26, 2025, 06:35:24 am
content: Sorry to raise this thread from the dead a bit. I ended up combining a few of the ideas, I got a FreeCAD add-in to generate the start of the octave script for openEMS and then just adjusted the output as necessary.The goal is to generate a far field plane wave originating at one end of the mesh (the green box below) to pass over the mesh and measure the E-field at different points. As a start, I’m just trying to get the E-field generated by the plane wave to be reasonably constant along the mesh before I add CAD objects. The source I am using is a plane wave excite as below:start = [0, 0, -71];stop = [10, 10, -70];# START EXCITATION OPTION 1k_dir = [0, 0, 1]; # Moving along z-axisE_dir = [0, 200, 0]; # E-y polarized field 200 V/mCSX = AddPlaneWaveExcite(CSX, 'plane_wave', k_dir, E_dir, f0);CSX = AddBox(CSX, 'plane_wave', 0, start, stop);# END EXCITATION OPTION 1So based on this, I would be expecting a plane wave to be moving in z direction with an initial field strength of 200 V/m (nearly entirely E-y) and a final value roughly the same (I am sure there will be some PML losses or something like that somewhere along the way). I however get this:-69mm probe on z plane:-5mm probe on z plane:+4mm probe on z plane:I have attached my octave/matlab script to this post (as zip, apparently .m is not supported file type). Any ideas as to what I am doing wrong would be appreciated…….

author: EggertEnjoyer123
author_rank: Frequent Contributor
timestamp: June 26, 2025, 07:26:59 am
content: Did you use SetGaussExcite?The way OpenEMS works is by putting in a signal with large bandwidth (such as a Gaussian pulse), and then measuring the result. Then the Fourier Transform is done to go from the time domain result to the frequency domain. After that, it is easy to get all the S parameters for example by dividing the output signal by the input signal for all the frequency bins. Another way to think about it is that you can easily get the frequency response of a system from the impulse response. Do not use the Dirac Excitation though! I wasted so much time figuring out why my simulation didn't converge, and the reason was because the Dirac excitation generates frequencies in the THz region which leads to the simulation not converging.Try using SetSinusExcite instead.

author: mikeb1279
author_rank: Contributor
timestamp: June 27, 2025, 09:25:23 am
content: I am indeed using SetGaussExcite. I will change it to SetSinusExcite and re-run when I get back to my desktop later in the weekend. Thanks