Skip to content

Current flow (v-formulation)

This page describes the available interactions and couplings for steady-state current flow using the electric scalar potential vv in Allsolve. The weak formulation is stated up front; the full derivation is at the end of this page.

The weak form solved by Allsolve is

βˆ«Ξ©β€…β€Š(βˆ’Οƒβˆ‡vβ‹…βˆ‡vβ€²)β€…β€ŠdΞ©+βˆ«Ξ“β€…β€Š(βˆ’Jβ‹…n)β€…β€Švβ€²β€…β€ŠdΞ“=0.\begin{align} \int_{\Omega}\; (-\sigma \nabla v \cdot \nabla v^{\prime})\; d \Omega + \int_{\Gamma}\; (-\boldsymbol{J} \cdot \boldsymbol{n})\; v^{\prime}\; d \Gamma = 0. \end{align}

where vv is the electric scalar potential, J=ΟƒE\boldsymbol{J} = \sigma \boldsymbol{E} the current density, and Οƒ\sigma the conductivity.

See Formulation derivation for the full strong-to-weak derivation.

Applies a fixed value to the electric scalar potential vv. Use this when you need to fix the electric potential at a node or within a region. This can be used to drive a potential difference between two capacitor plates.

How to use Provide an electric potential value in point or region in Volts
Example v=100v = 100 applies an electric scalar potential of 100β€…V100\:V to the specified region.
Unit Electric potential in Volts (V)

Applies a current density vector J\boldsymbol{J} as a source term to a region. Used to model externally driven current distributions, such as in coils, where the current is prescribed rather than solved for. Can be specified as a constant vector or a spatially varying field.

How to use You can use either the matrix editor or the expression editor. With the matrix editor, provide a 3Γ—1 matrix for a 3D problem (2Γ—1 for 2D, etc.). In the expression editor, write the direct expression.
Example [1000; 5000; 0] drives a current density of Jx=1000J_x = 1000 A/m^regdim, Jy=5000J_y = 5000 A/m^regdim and Jz=0J_z = 0 A/m^regdim to the specified region.
Unit Ampere/m^regdim. The regdim is the dimension of the target region (e.g., A/m^2 for surface targets).

Applies a lumped voltage VV or current II to a specific node or region. Unlike the Lump V/I Cut, this interaction does not require a cut surface and is used for simpler geometries where the domain is already simply connected. Commonly used to define electrode potentials or inject current into a conducting region.

How to use Specify the target curve. From Actuation mode, select either voltage, current or circuit coupling. Fill in the value.
Example I=100I = 100 applies 100 Amperes to the curve.
Unit Voltage in Volts (V) or current in Amperes (A)

Applies a lumped voltage VV or current II through a cut surface in the domain. In the electric potential formulation, cuts are required to make the domain simply connected, ensuring a unique solution for v. This interaction is used to drive current or voltage through conducting regions such as coils, without explicitly resolving the detailed field distribution inside the conductor.

How to use Specify the target curve (must be a closed boundary of some surface). From Actuation mode, select either voltage, current or circuit coupling. Fill in the value.
Example I=100I = 100 applies 100 Amperes through the cut surface. See also Lump I/V Cut in Induction motor.
Unit Current in Amperes (A) or voltage in Volts (V)

Imposes periodic boundary conditions on the electric potential vv between two boundaries. Reduces the computational domain size for geometrically symmetric or antisymmetric problems, avoiding the need to model the full geometry.

Example Periodicity follows the same principles, regardless of which physics module it belongs to. See how periodicity is used in magnetism as a reference: Periodicity in electric motors

Current flow supports all analysis types: Static, Harmonic, Multiharmonic, Transient, and Eigenmode.

See the full compatibility table in Simulations overview.

In the case of a non-zero constant current flow Ampere-Maxwell law states, that

βˆ‡Γ—H=J+βˆ‚Dβˆ‚t.\begin{align*} \nabla \times \boldsymbol{H} = \boldsymbol{J} + \frac{\partial \boldsymbol{D}}{\partial t}. \tag{1} \end{align*}

Taking the divergence of both sides we get

βˆ‡β‹…(βˆ‡Γ—H)=βˆ‡β‹…(J+βˆ‚Dβˆ‚t)\begin{align*} \nabla \cdot (\nabla \times \boldsymbol{H}) &= \nabla \cdot (\boldsymbol{J} + \frac{\partial \boldsymbol{D}}{\partial t}) \tag{2} \end{align*}

and

0=βˆ‡β‹…(J+βˆ‚Dβˆ‚t),\begin{align*} 0 &= \nabla \cdot (\boldsymbol{J} + \frac{\partial \boldsymbol{D}}{\partial t}), \tag{3} \end{align*}

since the divergence of a curl is zero.

Under the assumption of constant current flow (or approximating a slowly varying current), the time derivative of the electric displacement field βˆ‚Dβˆ‚t\frac{\partial \boldsymbol{D}}{\partial t} equals zero.

βˆ‡β‹…J=0\begin{align*} \nabla \cdot \boldsymbol{J} = 0 \tag{4} \end{align*}

This indicates that the current flow is non-divergent. We can write a current density using Ohm’s law in differential form as

J=ΟƒE,\begin{align*} \boldsymbol{J} &= \sigma \boldsymbol{E}, \tag{5} \end{align*}

where Οƒ\sigma is the conductivity of the material.

Thus we have

βˆ‡β‹…(ΟƒE)=0βˆ‡β‹…(βˆ’Οƒβˆ‡v)=0βˆ‡β‹…(Οƒβˆ‡v)=0\begin{align*} \nabla \cdot (\sigma \boldsymbol{E}) &= 0 \tag{6} \\[5pt] \nabla \cdot (- \sigma \nabla v) &= 0 \tag{7} \\[5pt] \nabla \cdot (\sigma \nabla v) &= 0 \tag{8} \\[5pt] \end{align*}

resulting in Laplace’s equation.

To obtain the weak form, multiply by the test function vβ€²v^{\prime} and integrate over the domain Ξ©\Omega:

βˆ«Ξ©β€…β€Š(βˆ‡β‹…(Οƒβˆ‡v))β€…β€Švβ€²β€…β€ŠdΞ©=0\begin{align*} \int_{\Omega}\; (\nabla \cdot (\sigma \nabla v))\; v^{\prime}\; d \Omega = 0 \tag{9} \end{align*}

Applying the Leibniz rule for nabla a operator we get

βˆ«Ξ©β€…β€Šβˆ‡β‹…(vβ€²β€…β€ŠΟƒβˆ‡v)β€…β€ŠdΞ©+βˆ«Ξ©β€…β€Šβˆ’(βˆ‡vβ€²β‹…Οƒβˆ‡v)β€…β€ŠdΞ©=0\begin{align*} \int_{\Omega}\; \nabla \cdot (v^{\prime}\; \sigma \nabla v)\; d \Omega + \int_{\Omega}\; -(\nabla v^{\prime} \cdot \sigma \nabla v)\; d \Omega = 0 \tag{10} \end{align*}

For the first term we can use the Divergence theorem

βˆ«Ξ“β€…β€Š(vβ€²β€…β€ŠΟƒβˆ‡v)β‹…nβ€…β€ŠdΞ“+βˆ«Ξ©β€…β€Šβˆ’(βˆ‡vβ€²β‹…Οƒβˆ‡v)β€…β€ŠdΞ©=0\begin{align*} \int_{\Gamma}\; (v^{\prime}\; \sigma \nabla v) \cdot \boldsymbol{n}\; d \Gamma + \int_{\Omega}\; -(\nabla v^{\prime} \cdot \sigma \nabla v)\; d \Omega = 0 \tag{11} \end{align*}

Rearranging the terms and using relation E=βˆ’βˆ‡v\boldsymbol{E} = - \nabla v we obtain

βˆ«Ξ©β€…β€Š(βˆ’Οƒβˆ‡vβ‹…βˆ‡vβ€²)β€…β€ŠdΞ©+βˆ«Ξ“β€…β€Šβˆ’ΟƒEβ‹…nβ€…β€Švβ€²β€…β€ŠdΞ“=0\begin{align*} \int_{\Omega}\; (-\sigma \nabla v \cdot \nabla v^{\prime})\; d \Omega + \int_{\Gamma}\; -\sigma \boldsymbol{E} \cdot \boldsymbol{n}\; v^{\prime}\; d \Gamma = 0 \tag{12} \end{align*}

Using relation J=ΟƒE\boldsymbol{J} = \sigma \boldsymbol{E} on the Neumann term results in the final weak formulation stated at the top of this page.