JHarmonic
Inspiration
Computational Electromagnetics has been my long standing passion. I feel that EM has always been mystical, sort of like witchcraft and forgive me if you will for the triviality of my decription but I consider computational electromagnetics to be a way to demystify this witch-craft.
So why JEM? In my limited undergraduate knowledge, I have observed that most people have heard about FEM despite not knowing what it is as opposed to MOM or FDTD and hence I believed that FEM was applicable or favoured in more areas of engineering than the others. So I decided to start learning computational EM with FEM.
About
JEM is an FEM solver written completely in Java without any 3rd party libraries. Everything, from meshing to heatmaps was coded from scratch. FEM(Finite Element Method) is a numerical technique for solving PDE's and ODE's when analytical approaches are not possible. In our case, this mostly concerns the Laplace and Poisson equations which help us to construct a potential surface when the boundary conditions are known.
FEM was preceeded by two approaches, the Ritz method based on minimizing a functional and the Galerkin method based on minimizing the residual. Both employ a subdomain basis functions to represent the unknown solution and converge on it iteratively during the minimization process. In FEM, the surface is first discretized by choosing the appropriate basis functions, in our case its the triangle for 2D and eventually tetrahedron for 3D primarily because tesselations created using these structures lead to the most minimal discretization errors hence are generally more accurate. Once the surface has been discretized, the potentials at the nodes of the triangle elements are used to fill in the FEM matrix (stiffness matrix) and these are hence used to compute the potential at any point within the triangle element. Consequently, smaller the triangles lesser is the inaccuracies due to interpolation. The interpolation is linear in the case of FEM and usually just involves a plane described by the potentials at the 3 nodes.
Usage
1.Click on the "Launch Now" icon below to try the JEM software. The jar is self-signed so you might have to add an exception for running jar's from "https://1sand0s-adi.github.io" in you Java control panel (search for Configure Java in your taskbar and go to security).
2.Start by first drawing the lattice where everything is supposed to be placed.
3.Next, click on "Regular Delaunay" to discretize the surface with Delaunay Triangulation by choosing points at regular intervals.
4.Assign boundary conditions, excitations etc by first clicking on "select", then dragging the cursor over the concerned nodes(chosen nodes appear inside a green rectangle) and clicking on "assign" to assign potentials.
5.The potentials vary sinusoidally, I haven't changed this or made it user preferential.
6.After assigning the potentials, click on "epsilon" and repeat procedure 4 bu in this case the rectangle must cover the elements instead of the nodes.
7.Finally, click on simulate.
YouTube Tutorial
For a detailed tutorial, development log, check the YouTube link below
Home
Usage
References