# MagnetostaticResults

Magnetostatic solution and derived quantities

## Description

A `MagnetostaticResults` object contains the magnetic potential, magnetic field, magnetic flux density, and mesh values in a form convenient for plotting and postprocessing.

The magnetic potential, magnetic field, and magnetic flux density are calculated at the nodes of the triangular or tetrahedral mesh generated by `generateMesh`. Magnetic potential values at the nodes appear in the `MagneticPotential` property. Magnetic field values at the nodes appear in the `MagneticField` property. Magnetic flux density values at the nodes appear in the `MagneticFluxDensity` property.

To interpolate the magnetic potential, magnetic field, and magnetic flux density to a custom grid, such as the one specified by `meshgrid`, use the `interpolateMagneticPotential`, `interpolateMagneticField`, and `interpolateMagneticFlux` functions.

## Creation

Solve a magnetostatic problem using the `solve` function. This function returns a solution as a `MagnetostaticResults` object.

## Properties

expand all

Magnetic potential values at nodes, returned as a vector for a 2-D problem or an `FEStruct` object for a 3-D problem. The properties of this object contain the components of the magnetic potential at nodes.

Magnetic field values at nodes, returned as an `FEStruct` object. The properties of this object contain the components of the magnetic field at nodes.

Magnetic flux density values at nodes, returned as an `FEStruct` object. The properties of this object contain the components of the magnetic flux density at nodes.

Finite element mesh, returned as an `FEMesh` object. For details, see FEMesh Properties. For a 3-D model, the mesh must be linear.

## Object Functions

 `interpolateMagneticPotential` Interpolate magnetic potential in magnetostatic result at arbitrary spatial locations `interpolateMagneticField` Interpolate magnetic field in magnetostatic result at arbitrary spatial locations `interpolateMagneticFlux` Interpolate magnetic flux density in magnetostatic result at arbitrary spatial locations

## Examples

collapse all

Solve a 2-D electromagnetic problem on a geometry representing a plate with a hole in its center. Plot the resulting magnetic potential and field distribution.

Create an electromagnetic model for magnetostatic analysis.

`emagmodel = createpde("electromagnetic","magnetostatic");`

Import and plot the geometry representing a plate with a hole.

```importGeometry(emagmodel,"PlateHolePlanar.stl"); pdegplot(emagmodel,"EdgeLabels","on")```

Specify the vacuum permeability value in the SI system of units.

`emagmodel.VacuumPermeability = 1.2566370614e-6;`

Specify the relative permeability of the material.

`electromagneticProperties(emagmodel,"RelativePermeability",5000);`

Apply the magnetic potential boundary conditions on the edges framing the rectangle and the circle.

```electromagneticBC(emagmodel,"MagneticPotential",0,"Edge",1:4); electromagneticBC(emagmodel,"MagneticPotential",0.01,"Edge",5);```

Specify the current density for the entire geometry.

`electromagneticSource(emagmodel,"CurrentDensity",0.5);`

Generate the mesh.

`generateMesh(emagmodel);`

Solve the model.

`R = solve(emagmodel)`
```R = MagnetostaticResults with properties: MagneticPotential: [1218x1 double] MagneticField: [1x1 FEStruct] MagneticFluxDensity: [1x1 FEStruct] Mesh: [1x1 FEMesh] ```

Plot the magnetic potential and field.

```pdeplot(emagmodel,"XYData",R.MagneticPotential, ... "FlowData",[R.MagneticField.Hx ... R.MagneticField.Hy]) axis equal```

Solve a 3-D electromagnetic problem on a geometry representing a plate with a hole in its center. Plot the resulting magnetic potential and field distribution.

Create an electromagnetic model for magnetostatic analysis.

`emagmodel = createpde("electromagnetic","magnetostatic");`

Import and plot the geometry representing a plate with a hole.

```importGeometry(emagmodel,"PlateHoleSolid.stl"); pdegplot(emagmodel,"FaceLabels","on","FaceAlpha",0.3)```

Specify the vacuum permeability value in the SI system of units.

`emagmodel.VacuumPermeability = 1.2566370614e-6;`

Specify the relative permeability of the material.

`electromagneticProperties(emagmodel,"RelativePermeability",5000);`

Apply the magnetic potential boundary conditions on the side faces and the face bordering the hole.

```electromagneticBC(emagmodel,"MagneticPotential",[0;0;0],"Face",3:6); electromagneticBC(emagmodel,"MagneticPotential",[0;0;0.01],"Face",7);```

Specify the current density for the entire geometry.

`electromagneticSource(emagmodel,"CurrentDensity",[0;0;0.5]);`

Generate the mesh.

`generateMesh(emagmodel);`

Solve the model.

`R = solve(emagmodel)`
```R = MagnetostaticResults with properties: MagneticPotential: [1x1 FEStruct] MagneticField: [1x1 FEStruct] MagneticFluxDensity: [1x1 FEStruct] Mesh: [1x1 FEMesh] ```

Plot the z-component of the magnetic potential.

`pdeplot3D(emagmodel,"ColormapData",R.MagneticPotential.Az)`

Plot the magnetic field.

```pdeplot3D(emagmodel,"FlowData",[R.MagneticField.Hx ... R.MagneticField.Hy ... R.MagneticField.Hz])```

Use a solution obtained by performing a DC conduction analysis to specify current density for a magnetostatic model.

Create an electromagnetic model for DC conduction analysis.

`emagmodel = createpde("electromagnetic","conduction");`

Import and plot a geometry representing a plate with a hole.

```gm = importGeometry(emagmodel,"PlateHoleSolid.stl"); pdegplot(gm,"FaceLabels","on","FaceAlpha",0.3)```

Specify the conductivity of the material.

`electromagneticProperties(emagmodel,"Conductivity",6e4);`

Apply the voltage boundary conditions on the left, right, top, and bottom faces of the plate.

`electromagneticBC(emagmodel,"Voltage",0,"Face",3:6);`

Specify the surface current density on the face bordering the hole.

`electromagneticBC(emagmodel,"SurfaceCurrentDensity",100,"Face",7);`

Generate the mesh.

`generateMesh(emagmodel);`

Solve the model.

`R = solve(emagmodel);`

Change the analysis type of the model to magnetostatic.

`emagmodel.AnalysisType = "magnetostatic";`

This model already has a quadratic mesh that you generated for the DC conduction analysis. For a 3-D magnetostatic model, the mesh must be linear. Generate a new linear mesh. The `generateMesh` function creates a linear mesh by default if the model is 3-D and magnetostatic.

`generateMesh(emagmodel);`

Specify the vacuum permeability value in the SI system of units.

`emagmodel.VacuumPermeability = 1.2566370614e-6;`

Specify the relative permeability of the material.

`electromagneticProperties(emagmodel,"RelativePermeability",5000);`

Apply the magnetic potential boundary conditions on the side faces and the face bordering the hole.

```electromagneticBC(emagmodel,"MagneticPotential",[0;0;0],"Face",3:6); electromagneticBC(emagmodel,"MagneticPotential",[0;0;0.01],"Face",7);```

Specify the current density for the entire geometry using the DC conduction solution.

`electromagneticSource(emagmodel,"CurrentDensity",R);`

Solve the model.

`Rmagnetostatic = solve(emagmodel);`

Plot the x- and z-components of the magnetic potential.

`pdeplot3D(emagmodel,"ColormapData",Rmagnetostatic.MagneticPotential.Ax)`

`pdeplot3D(emagmodel,"ColormapData",Rmagnetostatic.MagneticPotential.Az)`

Solve a magnetostatic model of a copper square with a permanent neodymium magnet in its center.

Create the unit square geometry with a circle in its center.

```L = 0.8; r = 0.25; sq = [3 4 -L L L -L -L -L L L]'; circ = [1 0 0 r 0 0 0 0 0 0]'; gd = [sq,circ]; sf = "sq + circ"; ns = char('sq','circ'); ns = ns'; g = decsg(gd,sf,ns);```

Plot the geometry with the face and edge labels.

`pdegplot(g,"FaceLabels","on","EdgeLabels","on")`

Create a magnetostatic model and include the geometry in the model.

```emagmodel = createpde("electromagnetic","magnetostatic"); geometryFromEdges(emagmodel,g);```

Specify the vacuum permeability value in the SI system of units.

`emagmodel.VacuumPermeability = 1.2566370614e-6;`

Specify the relative permeability of the copper for the square.

```electromagneticProperties(emagmodel,"Face",1, ... "RelativePermeability",1);```

Specify the relative permeability of the neodymium for the circle.

```electromagneticProperties(emagmodel,"Face",2, ... "RelativePermeability",1.05);```

Specify the magnetization magnitude for the neodymium magnet.

`M = 1e6;`

Specify magnetization on the circular face in the positive x-direction. Magnetization for a 2-D model is a column vector of two elements.

```dir = [1;0]; electromagneticSource(emagmodel,"Face",2,"Magnetization",M*dir);```

Apply the magnetic potential boundary conditions on the edges framing the square.

`electromagneticBC(emagmodel,"Edge",1:4,"MagneticPotential",0);`

Generate the mesh with finer meshing near the edges of the circle.

```generateMesh(emagmodel,"Hedge",{5:8,0.007}); figure pdemesh(emagmodel)```

Solve the model, and find the resulting magnetic fields B and H. Here, $\mathit{B}=\mu \mathit{H}+{\mu }_{0}\mathit{M}$, where $\mu$ is the absolute magnetic permeability of the material, ${\mu }_{0}$ is the vacuum permeability, and $\mathit{M}$ is the magnetization.

```R = solve(emagmodel); Bmag = sqrt(R.MagneticFluxDensity.Bx.^2 + R.MagneticFluxDensity.By.^2); Hmag = sqrt(R.MagneticField.Hx.^2 + R.MagneticField.Hy.^2);```

Plot the magnetic field B.

```figure pdeplot(emagmodel,"XYData",Bmag, ... "FlowData",[R.MagneticFluxDensity.Bx ... R.MagneticFluxDensity.By])```

Plot the magnetic field H.

```figure pdeplot(emagmodel,"XYData",Hmag, ... "FlowData",[R.MagneticField.Hx R.MagneticField.Hy])```

## Version History

Introduced in R2021a