Introduction to Electrostatic FEA with BELA

David Meeker


March 26, 2003


BELA (“Basic Electrostatic Analysis”) is a software package for the finite element analysis of 2D planar and axisymmetric problems in electrostatics.  The objective of this document is to get new users “up and running” with the program via a set of step-by-step example problems.


Many thanks to Kostadin Brandisky of the Technical University of Sofia for developing the example problems used in this tutorial.

The idea of and format for this tutorial have been shamelessly cribbed from Ian Stokes-Rees’ excellent tutorial, “Introduction to FEA with FEMM.”

Software Availability

The software can be obtained from the BELA homepage located at:

There is a mailing list related to BELA and its sister program FEMM, for the solution of magnetics problems, with a homepage at:

Installation requires Windows (Win95 or later) and approximately 4 megs of hard drive space.   It may be possible to run BELA under Wine on Linux machines, but mileage may vary. Computation time is reasonable for most problems, even on older Pentium systems. The number of elements that can be used in a model is not limited, although the quantity of elements used affects the computation time. Finally, the 2D model to be analyzed can be designed in a CAD program and imported to BELA in DXF format, but only 2D lines, arcs, and points will be translated.

Basic Introduction: Example 1

This will take you through a step by step process of analyzing a capacitor with a square cross-section.  Users should first refer to the BELA user’s manual regarding the general interface (i.e. keyboard and mouse controls).

 This example, as shown below in Figure 1, the outer square has 4 cm size and the inner square has  2cm size.  The geometry extends for 100 cm in the “into-the-page” direction. The dielectric between the plates is air.  We seek to build the problem, analyze it, and determine the capacitance.



Figure 1:  Square Cross-Section Capacitor


Because of the symmetry, only one quarter of the device need be modeled.  The finished model will look as pictured below in Figure 2 when ready for analysis.

Figure 2:  Completed Example 1 in beladraw preprocessor.

The steps required to create this model are as follows:

1.      Create model

Start the preprocessor, BELADRAW, by selecting the beladraw entry placed in the BELA section of your start menu.  After the program starts, select "nodes" from the tool bar (this is the farthest button on the left with a small black box: ) and place 6 nodes for the corner of a box (at, for example, (0,1), (1,1), (1,0) ,(2,0),(2,2) and (0,2)).  One can place nodes either by moving the mouse pointer to the desired location and pressing the left mouse button, or by pressing the <TAB> key and manually entering the point coordinates via a popup dialog.

Select "lines" from the tool bar (second button from the left with a blue line: ). To select a node to be the endpoint of a line, click near each desired endpoint with the left mouse button. Select connect the points as pictured in Figure 2 using this mouse endpoint selection approach.

2.      Add materials to the model

Select "Properties|Materials" off of the main menu. In the dialog that appears, click the “Add Material” button.  A dialog will pop up with edit boxes for the various material properties.  Change the name of the property from “New Material” to “air.”  By default the permittivity of a new material is 1, which is what we require for air. Press the “OK” button to complete the creation of the material.

3.      Define materials for each region

Now click on "Block Labels" (the tool bar button with green circles ), and place a block label in the middle of the solution domain, between the inner and outer squares. Like node points, block labels can be placed either by a click on the left mouse button, or via the <TAB> dialog.

Right click on the block label node for the outer box so that the node turns red, denoting that it is selected. Press space to "open" the selected block label. A dialog will pop up containing the properties assigned to the selected label. Set the "Block type" to "Air".  Uncheck the "Let Triangle choose Mesh Size" checkbox and enter "0.025" for the "Mesh size". The mesh size parameter defines a constraint on the largest possible elements size allowed in the associated section. The mesh generator attempts to fill the region with nearly equilateral triangles in which the sides are approximately the same length as the specified "Mesh size" parameter. When the "Let Triangle choose Mesh Size" box is checked, the mesh generator is free to pick its own element size, usually resulting in a somewhat coarse mesh. 

Define Conductor voltages

Select "Properties|Conductors" from the menu bar, then click on the "Add Property" button. Replace the name "New Conductor" with "zero".  Select the “Prescribed Voltage” radio button.  Enter a 0 as the value in the associated edit box and Hit “OK”. You have just defined a conductor that is fixed a voltage of 0V, but you have yet to assign this condition to a particular part of the model.

Repeat the above process but instead name the new boundary condition "one" and apply enter a prescribed voltage value of 1.

Select "lines" from the toolbar then right click on the each of the two segments belonging to the inner conductor. When a segment turns red, you have selected it. Now press space bar and the "Segment Properties" window will appear. From the “In Conductor” drop box change the selection from “<None>” to “one”. Repeat this process for the outer conductor, but set the conductor type to "zero".

(N.B. for arcs or segments with a prescribed voltage, it is permissible to define a “Fixed Voltage” boundary condition in lieu of defining a fixed-voltage conductor property.  The advantage of defining the boundaries as conductors, rather than simple boundary conditions, is that charge on the conductor is calculated automatically in the solver.)

4.      Set Problem Characteristics

Select "Problem" from the menu bar.  In the dialog that appears, make sure the problem type is “planar”.  Set the length units to “Centimeters” and set the “depth” parameter to 100. The default solver precision of 10-8 (i.e. solution determined to single precision accuracy) generally need not be modified.  If desired, a descriptive commend can be added in the “Comment” edit box.

5.      Generate Mesh and Run FEA

Now save the file and click on the toolbar button with yellow mesh: . This action generates a triangular mesh for your problem. If the mesh spacing seems to fine or too coarse you can select block labels or line segments and adjust the mesh size defined in the properties of each object.  When you are satisfied with the mesh, click on the "turn the crank" button  to run the FEA algorithm over your model.

Processing status information will be displayed in a dialog box while the solver runs. If the progress bars do not seem to be moving then you should probably cancel the calculation. This can occur if insufficient boundary conditions have been specified. For this particular problem, the calculations should be completed in less than a second (although the solution time is highly dependent on the speed of the machine running the analysis). There is no confirmation for when the calculations are completed, the status window just disappears when the processing is finished.

6.      Display Results

Click on the glasses icon to start the postprocessor, BELAVIEW. The solution will then be displayed, as pictured in Figure 3.  By default, a color density plot of voltage is displayed when the postprocessor starts.  If desired, the default behaviors can be changed via the Edit|Preferences selection on the main menu of both the preprocessor and postprocessor.

The charge on each conductor can then be determined by selecting View|Conductor Props off of the postprocessor main menu.  A dialog will then appear that displays the voltage and total charge for each defined conductor.  For the “one” conductor, the reported charge is 2.26835e-011 Coulombs.  One can use the fact that charge is equal to the product of capacitance and voltage difference to determine the capacitance of the system.  Since only ¼ of the total geometry is modeled, the total charge is 9.0734e-011 Coulombs.  In this case the voltage drop is 1 V, implying that the total capacitance is 90.734 pF.

Figure 3:  Solution to Example 1 rendered in the belaview postprocessor.

For comparison, a “back of the envelope” estimate of capacitance (see squarecap.htm) yields a capacitance of 94.4 pF.  The analytical solution to this problem (not derived here) is 90.615 pF.

From this basic introduction you should have gained the following principles:

·         How to create your model space using nodes and lines.

·         How to add material types to your model and how to assign them to regions.

·         How to specify the finite element mesh size.

·         How to define conductor properties for your model.

·         How to apply conductor properties to line segments in the model.

·         How to run the mesh generator and solver.

·         How to run the postprocessor and display the resulting charge and voltage on each conductor.

A completed version of this example problem is available as bdemo1.fee

Additional Concepts in BELA: Example 2

You will now create a model of a capacitor consisting of two conducting spheres at equal and opposite voltages sitting in an unbounded region.  This is an example of an axisymmetric system, and a special “open” boundary condition will be used to mimic the behavior of an unbounded domain.

The arrangement of spheres is pictured in Figure 4.  Two spheres, each 25 meters in diameter, are separated by a center-to-center distance of 70 meters.  The top sphere is at a potential of 100 Volts, and the bottom sphere is at a potential of -100 Volts.

Due to symmetry considerations, only one sphere need be model.  The line of symmetry between the two spheres is then fixed at 0 Volts to account for the effects of the second sphere.

We will use the “Asymptotic Boundary Condition” method (as described in the Appendix to the BELA manual) to mimic an unbounded geometry.  To apply this boundary condition, the finite element problem domain must be spherical (or circular for a 2D planar problem). When finished the modeled domain will look as pictured in Figure 5.

Figure 5:  Example 2 geometry shown in belaview preprocessor.

1.      First set the "Problem" properties to axisymmetric, and units of meters. Since the problem is axisymmetric, no Depth entry is required, and that edit box is grayed-out. In this case, the vertical axis is the axis of rotation for the problem.  The r axis runs horizontally, and the z axis runs vertically.

2.      Change the "Grid Size"  to 10, meaning each dot represents a 10 meter increment, and select snap-to-grid by pushing in the  toolbar icon. Snap-to-grid allows points and block labels to be placed exactly on grid points using clicks of the left mouse button.

3.      Select View|Keyboard.  This selection pops up a dialog allowing you to enter the size of the view via the keyboard.  In this dialog, specify the lower-left corner of the screen to be at 0,0 and the upper right corner to be at (150,150). A view is then picked that contains the prescribed area as is best possible.

4.      Place a nodes at (r,z) = (0,0), (0,10), and (0,60), (0,150) and (150,0) (refer to the left side of the status bar at the bottom of the screen for a read-out of the current mouse pointer position).

5.      Connect lines from (0,0) to (0,10)and from (0,60) to (0,150).  These lines are located along the axis of rotation for this axisymmetric problem.  Also draw a line from (0,0) to (150,0), along the axis of symmetry between the two spheres.

6.      Select the arc toolbar button . Select the (0,10) point (bottom point), then select the (0,60) point (top point). When the dialog box comes up, enter "180" for "Arc Angle" and “1” for “Max. Segment, Degrees”.  The circles are ultimately represented as many-sided polygons, and the “Max. Segment” parameter prescribes the biggest arc that is allowed to be spanned by any one side of the polygon.  A 1 degree constraint represents a fairly fine discretization—the default is 10 degrees.  In belaview, all arcs are drawn counter clockwise, so this will draw the half-circle defining the outside of one of the conducting spheres.

7.      Now select the (150,0) point followed by the (0,150) point, and enter "90" for "Arc Angle" and “1” for “Max. Segment”.  This arc will be the exterior boundary of the finite element solution domain.

8.      Deselect "snap-to-grid," switch to “block label” mode (by pressing), and place a block label (green node) inside the closed region between the outer surface of the conducting sphere and the arc representing the exterior boundary

9.      Add "Air" to the model’s materials using the "Properties|Materials" main menu selection, as described in Example 1.

10.  Select "Properties|Conductors" from the menu and create a conductor named “+100V” with a prescribed voltage of 100 Volts (procedure as described above in Example 1).

11.  Create a fixed voltage boundary for the line of symmetry.  Do this by selecting “Properties|Boundary” off of the main menu.  Click the “Add Property” button and make a property named “zero” that has a prescribed voltage of 0.

12.  Add a second block label that will be used as the condition on the exterior boundary.  Rename your new boundary "open_bc" and change the "BC Type" to "Mixed". Given that the system under analysis is close to the center of an arc (usually either a full or half circle), "c0 coefficient" can be set to () where r is the radius of the arc in meters. In this case, you can let the program do the most of the appropriate calculations by entering the string:


into the edit box for the c0 coefficient (the c1 coefficient should be zero).  The quantity eo has been predefined to contain the permeability of free space in SI units, and we are exploting the fact that the contents of every edit in BELA box gets parsed by the Lua scripting language, enabling formulas to be entered in any edit box in which a numerical value is required.

13.  Select the quarter-circle arc representing the exterior boundary by right clicking on or near it (the "Arc" toolbar button must also be depressed). Press space and assign the boundary condition to be "open_bc".

14.  Select the half-circle representing the surface of one of the conducting spheres.  Press space and assign “+100V” as the conductor for property for this surface.

15.  Switching to Segment mode, assign the “zero” boundary condition to the line of symmetry at z=0.

16.  In Block Mode, select the block label inside the domain by right clicking with the mouse near the green node. Change the "Block type" to Air and the "Mesh size" to 1.

17.  Now generate the mesh, perform the calculation, and activate belaview to display the resulting voltages, all in the same way as described in Example 1.  The resulting solution should look as pictured in Figure 6.

Figure 6:  Solution to Example 2 as rendered in belaview.

Note that the vertical side of the semi-circle boundary (along the radial axis) does not have any boundary condition assigned—an “insulated” boundary condition is defined to the axis of rotation in axisymmetric problems by default. Also note how the equipotential lines radiate through the outer arc boundary as if heading to infinity. This is due to the use of an impedance boundary condition on the outer boundary, which closely mimics the behavior of the spheres in unbounded free space.

Using  View|Conductor Props to obtain the charge on the sphere yields 4.477e-007 Coulombs from the BELA model.

Force on the sphere can also be evaluated. Switch to the block postprocessor mode by press the block  button. To select the surface of the conducting sphere for force integration, click on the sphere’s surface with the right mouse button.  When a conductor is selected, it is rendered in red. (In other problems in which force on a volume, rather than a surface, is desired, the volume can be selected with a left mouse button click). Then, press the integral toolbar button  and select “Force via weighted stress tensor” from the drop list in the dialog that appears. This is probably the most accurate way to determine forces in BELA on objects that are completely surrounded by air.  The resulting force on the top sphere is -4.731e-007 N from the BELA model.

For comparison, a closed-form solution for the voltage profile in the Example 2 problem is derived in the companion document, sphere.htm. Stored charge and force on the top sphere can be deduced from the closed-form voltage profile.  From the closed-form solution, a charge of 4.475e-007 Coulombs and a force of -4.727e-007 Newtons can be obtained on the upper sphere. Both of these values are in very close agreement with the finite element results.

For comparison purposes, it is interesting to re-run the analysis with the “zero” boundary condition applied to the exterior boundary. With a "Zero" outer boundary, the ground is at a finite distance, rather than being located at infinity.  In this case, the charge is 4.58913e-007 Coulombs—the presence of the artificial boundary slightly elevates the capacitance of the system.

From this second example, you should have gained the following additional principles:

·         How to define circles and arcs in belaview.

·         How to create an “open” boundary condition for the analysis of an unbounded problem.

·         How to run compute force on a conductor.

A completed version of this example problem is available as bdemo2.fee


The finite element solutions to some fairly simple problems in electrostatics have been presented in a step-by-step fashion. Hopefully, these examples will allow you to apply the program to practical problems with more complicated geometries.