.. _emagEvalSimpleAir: =================================== **Air-gap field and force density** =================================== .. role:: red The numerical field calculation based on the finite element method encounters recognition and discretization errors. Combined methods are known to describe geometrically simple sub-range of the machine, e.g. the air gap relevant for force calculation, analytically based on the numerically calculated vector potentials at the edges [1]. The force calculated based on the Maxwell stress will still depend on discretization, but not on local influences, such as the chosen calculation path through the elements and the shape of these elements [2]. The analytical evaluation also allows to directly specify the amplitudes of the air gap induction waves and the radial force waves. According to [1], in two-dimensional problems in the air-gap of an electric machine, the magnetic vector potential A = (0,0,Az) is described by the Laplace equation in polar coordinates (r,φ): thus .. image:: form_4.png The general harmonic solution exists: .. image:: form_5.png The Fourier coefficients A, B, D, C can be determined when the vector potentials Ai are known at nodes M1 and M2 on the boundaries of a superelement having an inner radius R1 and an outer radius R2 ; see Abb. 1 and references [1,2,3]. .. image:: BNP_example.png The FEMAG script language provides the following routines for calculating the air-gap field and derived values according to the method described above. The following prerequisites are met: * Arrangement in the polar reference system (r-phi-system) * Area with constant permeability * Superelement defined by a closed node chain (see :any:`objects` ) * Ring or ring segment (usually the air-gap) bounded by outer and inner circular node-chains that have constant radii and the same centre. **Literatur** ------------- [1] Chao, B. and Chen, S. X. and Liu, Z. J. and Low, T. S.: Electromagnetic field analysis in rotational electric machines using finite element-analytical hybrid method. In: IEEE Transactions on Maggnetics 30 (Nov. 1994) No. 6, pp. 4314–4316 [2] Chao, B. and Liu, Z. J. and Low, T. S.: Analysis of unbalanced-magnetic-pulls in hard disk drive spindle motors using a hybrid method. IEEE Transactions on Magnetics 32 (1996), No. 5, pp. 4308-4310 [3] Low, T. S. and Bi, C. and Liu, Z. J.: A hybrid technique for electromagnetic torque and force analysis of electric machines. COMPEL: The International Journal for Computation and Mathematics in Electrical and Electronic Engineering 16 (January 1997), No. 3, pp. 191-205 [4] Krotsch, J.: Numerisch-analytische Berechnung des Luftspaltfeldes - Realisierung und Anwendung an Beispielen, FEMAG-Anwendertreffen 2015, Leutkirch **Command description** ----------------------- .. admonition:: Function: *N, stat* = evalBNP_fourcoeff(*x, y*) Calculation of the Fourier coefficients of the harmonic solution of Laplace's equation to describe the field variation in the superelement addressed by the point (x,y), starting from the vector potentials of the boundary nodes of the superelement. Usually, the superelement corresponds to the air gap of an electric machine. (BNP = Boundary Node potential). **Parameter** :red:`x,y` Coordinates of test point in global units **Return value** | :red:`N` Number of Fourier coefficients (= largest ordinal) | :red:`stat` Status of the execution (0 = error; 1 = no error) .. note:: The return variables do not need to be specified in full when the call is made, but always in the order defined above. Example:: N = evalBNP_fourcoeff(x,y) or :: N,stat = evalBNP_fourcoeff(x,y) .. admonition:: Function: *Az, gamma, stat* = evalBNP_Avecpot(*r, n*) Returns the amplitude Az and the Fourier angle gamma of the nᵗʰ harmonic vector-potential component along the perimeter with radius r. **Parameter** | :red:`r` Radius in global units; R1 < r < R2 | :red:`n` Harmonic order **Return values** | :red:`Az` Amplitude of the vector-potential component of harmonic order n at radius r | :red:`gamma` Phase-angle of the vector-potential component | :red:`stat` Status of the execution (0 = error; 1 = no error) Example:: Az = evalBNP_Avecpot(r,n) printf("Amplitude der %d-ten Ordnung: %g",n,Az) .. admonition:: Function: *az, stat* = evalBNP_vecpot(*r, phi*) Returns the vector potential *az* at the point *r, phi* within the superelement (air-gap). **Parameter** | :red:`r` Radius in global units; R1 < r < R2 | :red:`phi` Azimuthal angle of test point [rad] **Return value** | :red:`az` Vector potential at the point (r,phi) | :red:`stat` Status of the execution (0 = error; 1 = no error) .. admonition:: Function: *ABrad, ABphi, gBrad, gBphi, stat* = evalBNP_Ainduc(*r, n*) Returns the amplitudes *ABrad*, *ABphi* and the Fourier angles *gBrad* or *gBphi* of the *nᵗʰ* space-harmonic component of the flux-density distribution along the circumference with radius *r*. **Parameter** | :red:`r` Radius in global units, with R1 < r < R2 | :red:`n` Azimuthal angle of test point [rad] **Return value** | :red:`ABrad` Amplitude of the nᵗʰ space-harmonic component of radial flux-density [T] | :red:`ABphi` Amplitude of the nᵗʰ space-harmonic component of tangential flux-density [T] | :red:`gBrad` Phase angle of the nᵗʰ space-harmonic component of radial flux-density [rad] | :red:`gBphi` Phase angle of the nᵗʰ space-harmonic component of tangential flux-density [rad] | :red:`stat` Status of the execution (0 = error; 1 = no error) .. admonition:: Function: Brad, Bphi, stat = evalBNP_induc(r, phi) Returns the radial component Brad and the tangential component Bphi of the flux-density at point r, phi. **Parameter** | :red:`r` Radius in global units, with R1 < r < R2 | :red:`phi` Azimuthal angle of test point [rad] **Return value** | :red:`Brad` Radial component of flux-density [T] at the point (r,phi) | :red:`Bphi` Tangential component of flux-density [T] at the point (r,phi) | :red:`stat` Status of the execution (0 = error; 1 = no error) .. admonition:: Function: *Afrad, Afphi, gfrad, gfphi, stat* = evalBNP_Aforcedens(*r, n*) Returns the amplitudes Afrad, Afphi and the Fourier phase-angles gfrad or gfphi of the force-density wave (‘Maxwell voltage’) of the space-harmonic order number n along the perimeter with radius r. **Parameter** | :red:`r` Radius in global units; R1 < r < R2 | :red:`n` Harmonic order **Return values** | :red:`Afrad` Amplitude of the nᵗʰ space-harmonic component of the radial component of the force-density wave along the perimeter with radius r [N/m²] | :red:`Afphi` Amplitude of the nᵗʰ space-harmonic component of the tangential component of the force-density wave along the perimeter with radius r [N/m²] | :red:`gfrad` Phase-angle of the nᵗʰ space-harmonic component of the radial component of the force-density wave [rad] | :red:`gfphi` Phase-angle of the nᵗʰ space-harmonic component of the tangential component of the force-density wave [rad] | :red:`stat` Status of the execution (0 = error; 1 = no error) .. admonition:: Function: *frad, fphi, stat* = evalBNP_forcedens(*r, phi*) Returns the radial component frad and the circumferential component fphi of the force density (Maxwell stress) at point (r,phi). **Parameter** | :red:`r` Radius in global units; R1 < r < R2 | :red:`phi` Azimuthal angle of test point [rad] **Return value** | :red:`frad` Radial component of force density at the point (r,phi) [N/m²] | :red:`fphi` Tangential component of force density at the point (r,phi) [N/m²] | :red:`stat` Status of the execution (0 = error; 1 = no error) .. admonition:: Function: *T, Fx, Fy, stat* = evalBNP_forcetorq( ) Returns the torque T and the resulting forces Fx and Fy exerted on the area enclosed by the superelement (usually the air-gap). The forces are always calculated, regardless of the model domain. **Return value** | :red:`T` Total torque for the whole machine length [Nm] | :red:`Fx` x-component of the total force for the whole machine length [N] | :red:`Fy` y-component of the total force for the whole machine length [N] | :red:`stat` Status of the execution (0 = error; 1 = no error) **Example:** ------------ This script fragment performs a linear finite element analysis, calculates the air-gap field sizes based on the edge potentials of the air-gap, outputs them as distribution and amplitude spectra in files. The forces and torque are calculated vs. the rotor rotation position and also output in a file. :: file1=io.open("BNP_ForceTorque.txt","w+") for i=1,90 do calc_field_single(1,actual,0.01) -- lineare FEA r = 34.2 x,y = pd2c(r,0.5) Nk = evalBNP_fourcoeff(x,y) -- Harmonische Lösung der PDGL im Luftspalt if (i==1) then -- Ausgabe Verteilungen für die Ausgangslage file2=io.open("BNP_Distr.txt","w+") for j=0,360 do phi = j/180*math.pi Az = evalBNP_vecpot(r,phi) Br,Bt = evalBNP_induc(r,phi) fr,ft = evalBNP_forcedens(r,phi) file2:write(string.format(" end io.close(file2) file2=io.open("BNP_Four.txt","w+") -- Ausgabe des Amplitudenspektrumf für die Ausgangslage for j=0,Nk do AAz = evalBNP_Avecpot(r,j) ABr,ABt = evalBNP_Ainduc(r,j) Afr,Aft = evalBNP_Aforcedens(r,j) file2:write(string.format(" end io.close(file2) end phi=dphi*i -- Ausgabe des Drehmoments und der Kräfte über der Drehstellung M,Fx,Fy = evalBNP_forcetorq() file:write(string.format(" rotate(r,1.0,inside,increment) -- Drehung des Rotos end io.close(file1) For a full running sample script, see the script example :any:`exampleAir`.