User Tools

BEM - magnetic field computation

The field problem of a permanent magnet arrangement, according to [Jac83] 1) as the solution of the Poisson equation for a magnetostatic scalar potential to be formulated. The magnetization of the permanent magnets is assumed in good approximation as homogeneous and replaced by an equivalent magnetic surface charge. The distribution of surface charges and magnetic permeability in the computational domain is the source term of the Poisson equation. With an appropriate definition of boundary conditions, the magnetostatic field problem is described so fully.

For the numerical calculation of the Poisson equation the boundary element method (BEM) is used. This method does not need to be discretized as finite differences or finite element method, the entire computational volume, but only the surface of the computational domain. The method of boundary elements is therefore particularly suitable for field problems with open boundary conditions in an infinite computational domain. Another advantage of this method is the high accuracy over the above-mentioned volume methods, but are paid for with increased memory and computational effort has to.


The boundary element method (BEM), how we implemented it, can be used also for electrostatic field problems without space charges. However it has been primarily developed for magnetostatic field problems, i.e. magnetic fields from permanent magnet arrangements. Thus, we exemplarily show the application of the BEM field solver for a simple rectangular magnetron setup in this section.

First we have to define the geometric model using GMSH. Hereby some modeling constraints have to be taken into account slightly different to that of the DSMC and PIC-MC simulation respectively. From the meshed surface model a parameter file is created automatically which has to be adjusted manually. Finally the computation can be executed via a console command. In the following subsections these subsequent steps are described in more details.

Geometry modelling

We exemplarily take an simple planar magnetron setup and create a geometry model using GMSH. The end section of planar magnetron is seen in figure 1.

Exemplary PK750 magnetron layout (unbalanced)

Figure 1: Empirical magnetron layout from which we create a geometry and mesh model, respectively.

The first thing we have to do is to distinguish the number of domains, i.e. number of self-contained material areas. In the current case we have (i) vacuum, (ii) magnets and (iii) yoke. Unless you have magnets with different permeabilities, all magnets belong to the same domain. For each domain there is an interface to at least one other domain. Additionally, for the magnets we need an interface for the top surface, the bottom surface and the skin surface. The top and bottom surfaces will later on be assigned the north and south pole, so they have to be separated from the skin surfaces.

In our case we have six interfaces: (1) from the yoke to the vacuum, (2) from the magnet skin surfaces to the vacuum, (3) from the outer magnet top surface to the vacuum, (4) from the outer magnet bottom surface to the yoke, (5) from the inner magnet top surface to the vacuum and (6) from the inner magnet bottom surface to the yoke.

Now when we create the geometry model with GMSH we define one and only one geometrical surface for each interface. Thus, in our case the upper surface of the yoke has two “holes” for the bottom surfaces of the inner and the outer magnet as seen in figure 2.

Step 1: Create or load a geomtric surface model with GMSH.

Yoke Outer magnet Inner magnet Complete Magnetron

Figure 2: GMSH geometry models of planar magnetron.

When all geometric surface are defined they must be grouped accordantly and assigned to a string tag. Read the GMSH instructions on how to define physical surfaces from geometric surfaces. After the physical surface definition the geometric model can be meshed and saved. In short, there are the following general rules for setting up a magnetron geometry:

  • Magnets should always be constructed as a closed body.
  • If a magnet directly touches a yoke, there should be only one surface between the magnet and the yoke.

Parameter file settings

If a magnetic field computation is performed, there are always two different meshfiles required:

  • One meshfile for the magnetic arrangement itself, let's call it magnet.msh
  • Another meshfile, where the geometric region of interest is defined. This is the region, where the magnetic field vectors should be computed and where later on a plasma simulation will be performed. Let's call the second meshfile chamber.msh.

Step 1: Create a parameter file. To generate a parameter file for the BEM field solver first execute the command on the mesh-model for plasma simulation:

initpicmc chamber.msh 

whereas “chamber.msh” is the accordant mesh file to define the computation domain for plasma simulation and electric field computation, respectively (i.e. the second meshfile mentioned above). This command generates a parameter file named “chamber.par” in the same directory. All definitions regarding computation domain, cell spacing, cell resolution, number of subquads, etc., are defined within this parameter file. The region of interest for magnetic field should be the same computation domain and cartesian grid, respectively as for plasma simulation. Thus, by deriving parameter file for magnetic field computation from primary parameter file, twofold definition is avoided. Hence, you have to find the section where mesh files are defined and insert a chamberfor the magnetic mesh-model you want to use. The section looks like this:

MESHFILE = "chamber.msh";   # Name of mesh file for PICMC particle simulation
BEMMESH  = "";              # Name of mesh file for BEM b-Field solver

Insert the proper filename, e.g. magnet.msh in the empty quotes next to the BEMMESH tag. Remember that mesh files must be in same directory as parameter files. Now execute the command:

initbfield chamber.par

This command creates a template for the magnetic fieldsolver named chamber.bem in the same directory.

Step 2.0: Adjust parameter file.

The only parameters you have to adjust in chamber.bem are:

  1. The relative permeability of every domain, e.g. 1.05 for the magnets or 1000 for the yoke. These are the entries in the “Domains” array.
  2. The definitions for all surfaces defined in the magnetic mesh-model. This is the tricky part, because you have to connect interfaces surfaces manually by using the prober domain numbers. Also you have to define the magnetic remanence, if any, on the accordant surfaces. All surface definitions take place within the record entry “Codecs” in the parameter file.

Step 2.1: Set number of domains and domains' relative permeability, respectively.

The magnetron example from above section consists of three domains:

  1. The vacuum with a relative permeability of 1.0.
  2. The magnets with a relative permeability of 1.05 (found in the datasheet for the magnets).
  3. The yoke of ST37 steel with high relative permeability, i.e. we set it to 1000 which is sufficient.

These values are entered in the “Domains” array:

# Number of domains and relative permeability respectively
#          vacuum magnets yoke
#          0      1       2
Domains = [1,     1.05,   1000];

Every physical surface and codec defined in mesh-model, respectively is defined in the codecs section of the generated parameter file. For our example of a planar magnetron it looks like this:

Boundary Outer_Magnet_Top    = {icodec = 1; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Outer_Magnet_Bottom = {icodec = 2; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Inner_Magnet_Top    = {icodec = 3; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Inner_Magnet_Bottom = {icodec = 4; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Magnet_Skin         = {icodec = 5; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Yoke                = {icodec = 6; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};

By default every surface is an interface type which is valid for the magnetostatic field computation. Now step by step. Permanent magnets have a homogenous magnetization, resulting in a magnetic positive and negative pole, respectively. In our parameter file we define those poles by inserting either a positve or negative magnetic remanence value to accordant placeholder.

Step 2.2: Set “val”-parameter of accordant surfaces to signed magnetic remanence value, i.e. +1.41 and -1.41 in our case.

Boundary Outer_Magnet_Top    = {icodec = 1; type = "interface"; val = -1.41;  domain = 0; neighbourdomain = 0;};
Boundary Outer_Magnet_Bottom = {icodec = 2; type = "interface"; val =  1.41;  domain = 0; neighbourdomain = 0;};
Boundary Inner_Magnet_Top    = {icodec = 3; type = "interface"; val =  1.41;  domain = 0; neighbourdomain = 0;};
Boundary Inner_Magnet_Bottom = {icodec = 4; type = "interface"; val = -1.41;  domain = 0; neighbourdomain = 0;};
Boundary Magnet_Skin         = {icodec = 5; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};
Boundary Yoke                = {icodec = 6; type = "interface"; val =     0;  domain = 0; neighbourdomain = 0;};

The next and final step is to define the surface dependencies of the mesh-model, i.e. to which domain a surface belongs and which domain adjoins it. For this you have to know, that the counting start with 0 and not with 1. Take for example the surfaces of the inner magnet bar. The inner magnet surfaces belong to domain 1, i.e. the second entry in “Domains”-array. However, the bottom surface adjoins the yoke (domain 2) whereas the top and the skin surfaces adjoin the vacuum (domain 0).

Step 2.3: Set “domain”- and “neighbourdomain”-parameters to define accordant dependencies.

Boundary Outer_Magnet_Top    = {icodec = 1; type = "interface"; val = -1.41;  domain = 1; neighbourdomain = 0;};
Boundary Outer_Magnet_Bottom = {icodec = 2; type = "interface"; val =  1.41;  domain = 1; neighbourdomain = 2;};
Boundary Inner_Magnet_Top    = {icodec = 3; type = "interface"; val =  1.41;  domain = 1; neighbourdomain = 0;};
Boundary Inner_Magnet_Bottom = {icodec = 4; type = "interface"; val = -1.41;  domain = 1; neighbourdomain = 2;};
Boundary Magnet_Skin         = {icodec = 5; type = "interface"; val =     0;  domain = 1; neighbourdomain = 0;};
Boundary Yoke                = {icodec = 6; type = "interface"; val =     0;  domain = 2; neighbourdomain = 0;};

Step 3: Start computation. Now the mesh-model is fully defined for computation. To start the magnetic field computation with one process just enter:

rvmmpi -bem 1 chamber.par

Enter the accordant number of processes you want to use for compuation behind “-bem” tag. Computation becomes significantly faster if you use more than one process.

The magnetic field computation is performed in two steps. First, the Poisson equation is solved within the magnetic arrangement. Second, the actual magnetic field vectors are computed for each grid node within the region of interest. Both steps can be parallelized and thus considerably sped up by invoking multiple instances of bem.

Very important: During the first step, there is some output written which may look like follows:

 *** BEM B-Field Calculation ***
MASTER <- {BEM  1}:     [MESSAGE]        Matrix generation...
MASTER <- {BEM  1}:     [MESSAGE]        Number of elements: 4944
MASTER <- {BEM  1}:     [MESSAGE]        domain:   0 permeability:     1 elements:  4258
MASTER <- {BEM  1}:     [MESSAGE]        domain:   1 permeability:  1.05 elements:  3316
MASTER <- {BEM  1}:     [MESSAGE]        domain:   2 permeability:  1000 elements:  2314
MASTER <- {BEM 10}:     [MESSAGE]        domain:   2 checksum:  1.0319e-13
MASTER <- {BEM  6}:     [MESSAGE]        domain:   1 checksum: -5.0333e-13
MASTER <- {BEM  1}:     [MESSAGE]        domain:   0 checksum:  1.2566e+01
MASTER <- {BEM  1}:     [MESSAGE]        Matrix diagonalization...

Very important (continued): Please look carefully at the numbers given after checksum: These are angular sums of all domains and should equal either 1.2566e+01 (=4π, for the vacuum domain) or 0 (for all other domains). If there is a finite value between 0 and 4π instead, this is a certain sign, that there are some errors within the magnetic mesh file or the magnetic template definition. In this case, please check the direction of all normal vectors and the completeness of all surfaces with GMSH and check further if the magnetic template definition in chamber.bem is consistent. If the numbers of checksum are not either 4π or 0 (values in the 10-10 region due to round-off errors are ok), the result of the magnetic field computation will be erroneous.

Maximum model size

In principle the size of the magnetic field you can compute is only limited by your computing resources, more precisely your main memory (RAM). As a rule of thumb the memory needed is:

50 * (number of mesh elements)² bytes

e.g. for a model with 50000 elements you need about 125 GB of RAM. The simulation work and thus the required memory can be distributed to multiple computing nodes.


Validation against measurements

A PK750 magnetron in its strong and standard version has been measured by Von Ardenne Anlagentechnik (VAAT). The BEM compuation is compared with these measurements. The magnets used for the strong magnetron are VACODYM 510 HR from VAC Vakuumschmelze with a remanence of 1.40 T. Additonally we use different permeability values for the yoke material to check the effect of magnetic saturation on the results.

Parameter Setting Unit
Remanence (strong) 1.40 [T]
μr-Vacuum 1 [-]
μr-Magnets 1.05 [-]
μr-Yoke (ST 37 steel) 1000 [-]

Table 1: Parameter setting for the balanced magnetron setup with strong magnets.

Exemplary PK750 magnetron layout (unbalanced) FE mesh (balanced) for numerical field computation

Figure 1: Setup of an unbalanced PK750 magnetron. The values have been assigned to the FE mesh for the BEM compuation.

The results are in good aggreement with the measurements as seen in the pictures below. Discrepancies should rather be related to remanence deviations of the real magnets.

Bx-field at z = 10, 20 and 30 mm and y = 400 mm Bz-field at z = 10, 20 and 30 mm and y = 400 mm

Figure 2: Comparison of the BEM compuation results with the VAAT measurements of a strong, balanced PK750 magnetron.

Measured bxy-field at z = 20 mm BEM-computed bxy-field at z = 20 mm
Measured bz-field at z = 20 mm BEM-computed bz-field at z = 20 mm

Figure 3: Comparison of the BEM compuation results with the VAAT measurements of a strong, balanced PK750 magnetron.

Accuracy issues

Using invalid (constant) material parameters

For the materials' permeability we use constant values, e.g. μr = 1000 for ST 37 steel. This approximation is valid as long as the material is beyond magnetic saturation. If this is not the case the effective permeability is somewhere below of the unmagnetized state. This is still an uncertainty in our BEM calculations and should be resolved soon.

By-field in racetrack zone with µr-Yoke = 10 and 1000, respectively Magnetization curve of ST37 steel

Figure 1: BEM results for the balanced planar magnetron example with different permeability values for the yoke material.

Using low mesh resolution

If the region of interest is far away from the mesh, the mesh resolution itself is not crucial for the accuracy of the magnetic field solution. However, as seen below in certain cases the error may be small but not negligible.

Low mesh resolution High(er) mesh resolution

Figure 1: Magnetic potential and Dirichlet boundary conditions, respectively for different mesh resolutions.

Low mesh resolution High(er) mesh resolution

Figure 2: Magnetic field strength in y-direction resulting from the BEM for different mesh resolutions.

Jackson, JD:. Classical Electrodynamics, Walter de Gruyter, p. 223-227 (1983)