Verification of Biot-Savart law

General discussion about Elmer
Post Reply
Posts: 7
Joined: 11 Jun 2021, 11:00
Antispam: Yes

Verification of Biot-Savart law

Post by FFF »

Dear Elmer comunity,

I am trying to verify the Biot savart law for a circular current loop with three different models.

2D-axi -> here I can provide the already compiled mesh
3D-full -> The data file is too lare to upload it here. So I included the hdf file of Salome where the mesh must be compiled and exported to unv. Via elmergrid the native elmer mesh file can be generated. If there is any issue by doing so please let me know.
3D-halve -> like the 3D-full case the meshdata is too large.

(548.66 KiB) Downloaded 19 times
Because of the limited number of attachments, the figures I name below are included in the subfolders of respectively.

The analytic solution is given by:

$mu0=4*pi*1.0e-7 ! permeability of vacuum
$r=0.01 !Radius of current loop in meter
$h=0 !height along centerline in meter
$I=1.1 !excitation current in A
$B=(mu0*I*r^2)/(2*(r^2+h^2)^(3/2))!analytical solution of magnetic field along the centerline

See also BiotSavart_cir.png
(28.8 KiB) Not downloaded yet
I have 5 Questions about my implementations and would be very happy If someone could help me in answering them:

Questions according the 3D-halve simulation.

My solver does converge, but the distribution of the B-Field does not coincide with my expectations (see Output3D-halve.PNG).

1. How can I fix this problem?
I believe I am messing up the BC for this model.
For example, when I implement:
AV {e} = 0
Is this equivalent to setting the three vector potentials equal to zero (please see below)
AV {e} 1=0
AV {e} 2=0
AV {e} 3=0

Questions According the 2D-axi simulation

I use the Saveline solver to post process the data. Here I recognize that my included range-distance from 0 to 0.04 is processed at the end of a bunch of data along the whole geometrical edge in the model. Now I manually delete all provided entities except for my defined range (see Fig BiotSavart-cir2DaxisCutData.png). The output of the raw data can be seen in Fig. BiotSavart-cir_2Daxis_RawData.png

2. How can I save only the data as I specify it in the sif?

3. How do I know which solver is used if no solver (i.e. Linear System Solver = Iterative) is explicit inserted in Procedure = "MagnetoDynamics" "MagnetoDynamicsCalcFields"? When is it important to specify the solver and when can I skip the information?

4. Now I calculate the field only at one point by defining h=0 explicit in the model and generating it in the savescalar model. Is there a way to include this as a variable containing different heights and exporting the point data equally to the saveline-solver points? In the figures I did this with octave, but I am curious if this is possible also within the procedure of elmer?

Questions for the 3D-full model:

5. When I use the saveline solver and 100 entities I get the distribution as depicted in Fig. BiotSavart-cir3D-full_100Datapoints.png when I save only 20 datapoints the results do not show this behavior as depicted in Fig. BiotSavart-cir3D-full_20Datapoints.png
How can I solve this issue?

I would be very tankful if anybody could help me!

Best regards,

Site Admin
Posts: 4173
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland

Re: Verification of Biot-Savart law

Post by raback »

Hi Felix

1) BCs for AV {e} i = 0, i=1,2,3 and AV {e} = 0 are not quite the same. The reason is that there really is no components 1,2,3 in the model. There are only edge degrees of freedom. Hence the affect of setting AV {e} is that is edge degree of freedom is nullified, whereas when you give this component-wise there is some inner magic involving projection of cartesian components to the edge degree of feedom. Note also that there is absolutely no way of setting normal component on the surface anyway. So if you know that your vector potential should be zero, just say AV {e} = 0.

2) Remove "Save Line" from BC 2.

3) Usually it is always good idea to give linear system settings. The are some built-in default values mainly for trivial equations. No harm is done if you give the method, e.g. idrs, bicgstabl, gcr etc.

4) Maybe "Save Coordinates" of SaveScalars.

5) You just have a lucky fluke with the divisions. Generally you have two types of postprocessed fields. The nodal ones are obtained by solving a linear system for B=curl(A), for example. This is continuous over elements but for some quantities you would like to see discontinuities. For those fields you have the option of elemental fields which are really DG (discontinuous galerkin) fields solved separately for each element. For lowest order edge elements the result is piecewise constant. So what you're seeing is this. You can affects this by choosing "Discontinuous Bodies = True" in VTU output which averages the elemental fields within each body so that discontinuities are only conserved at the interfaces. This often gives the best aesthetics.

Post Reply